—
go get github.com/cilium/ebpf
ebpf-go - это библиотека на чистом Go, которая предоставляет утилиты для загрузки, компиляции и отладки программ eBPF
ebpf-go имеет минимум внешних зависимостей и предназначена для использования в длительно работающих процессах
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой статье научимся генерировать Protobuf файлы через плагин Buf. Настроим зависимости сторонних proto нотаций, такие как googleapis, grpc-gateway и protovalidate.
├╼
Подготовительные работы├╼
Установка зависимостей├╼
Структура api├╼
Генерируем код╰╼
Запускаем gRPC и REST сервер@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
—
go install goa.design/goa/v3/cmd/goa@v3
Goa использует такой подход к созданию сервисов — позволяет описать дизайн API сервиса с помощью простого DSL языка Go.
Goa расширяется с помощью плагинов, например, плагин
goakit
генерирует код, использующий библиотеку Go kit
.Goa DSL состоит из Go-функций, поэтому его можно легко развивать.
Для распространения можно использовать естественный механизм импорта в Go, что очень удобно.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
git clone "https://github.com/caddyserver/caddy.git"
cd caddy/cmd/caddy/
go build
Быстрый и расширяемый многоплатформенный веб-сервер HTTP/1-2-3 с автоматическим HTTPS
Также Caddy предоставляет полнофункциональный пакет PKI для создания собственной полностью автоматизированной внутренней PKI и частных центров сертификации.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
—
curl -fsSL https://get.jetify.com/devbox | bash
Devbox не требует использование Docker или Nix.
Всё начинается с определения списка пакетов, необходимых для проекта, а Devbox создает изолированную, воспроизводимую среду с установленными пакетами.
Devbox работает аналогично пакетному менеджеру вроде yarn — за исключением того, что пакеты, которыми он управляет, находятся на уровне операционной системы (как если установить их с помощью brew или apt-get)
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
PTerm позволяет отображать графики, прогресс-бары, таблицы, текстовый ввод, меню выбора и многое другое.
Очень настраиваемый и на 100% кроссплатформенный.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Компилятор Go не просто черный ящик, который берет на входе код и выдает бинарник. Он скорее похож на хорошо отлаженный конвейер, где каждый этап выполняет свою роль.
Классически, компилятор делится на две большие части: frontend, который занимается пониманием и анализом вашего кода, и backend, который отвечает за генерацию машинного кода.
В части фронтенда исходный код проходит через несколько этапов. Лексический анализ разбивает ваш код на токены, как если бы вы разрезали строку на слова и знаки пунктуации. Синтаксический анализ берет эти токены и строит из них абстрактное синтаксическое дерево (AST).
Подробнее об этом и не только — в этом туториале:
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
—
curl -O https://raw.githubusercontent.com/keploy/keploy/main/keploy.sh && source keploy.sh
Keploy — это ориентированный на разработчиков инструмент для тестирования API, который создает тесты вместе со встроенными моками быстрее, чем юнит-тесты.
Keploy не только записывает вызовы API, но и записывает вызовы базы данных и воспроизводит их во время тестирования.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
—
brew install buildkit
BuildKit — это набор инструментов для сборки из исходного кода эффективным, простым и повторяемым способом.
BuildKit состоит из службы
buildkitd
и клиента buildctl
. В то время как клиент buildctl
доступен для Linux, macOS и Windows, buildkitd
в настоящее время доступен только для Linux (и Windows, но с ограничениями)@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
golang-standards/project-layout
, чтобы обеспечить хорошую организацию кода.golang-standards/project-layout
. Это помогает упорядочить код и логически разделить различные компоненты проекта.Main-пакет
— В корневом каталоге проекта будет находиться main-файл, откуда начинается выполнение приложения.
Пакеты слоев
— В проекте реализованы различные пакеты, представляющие различные слои архитектуры Clean Architecture. Каждый слой имеет свою ответственность и взаимодействует только с ближайшими соседями.
Entity
— В этом пакете определены основные сущности приложения, представляющие основные бизнес-объекты и правила.
Use Cases
— Этот пакет содержит реализацию различных use cases (использование случаев), предоставляя основные бизнес-сценарии и операции над сущностями.
Repositories
— Здесь определены интерфейсы репозиториев, которые служат для взаимодействия с хранилищами данных. Реализация репозиториев находится в более низких уровнях, чтобы соблюдать принцип инверсии зависимостей.
...ну и ещё некоторые папки и репозитории
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
—
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/tigera-operator.yaml
Calico — это сетевое решение на Go для обеспечения безопасности, которое позволяет рабочим нагрузкам Kubernetes и другим рабочим нагрузкам выдерживаться параллельно.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM