37.1K subscribers
1.46K photos
34 videos
5 files
1.62K links
加入频道
👣 Кодогенерация Protobuf файлов используя плагин Buf

В этой статье научимся генерировать 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
👣 Goa позволяет ускорить разработку Go API

go install goa.design/goa/v3/cmd/goa@v3

Goa использует такой подход к созданию сервисов — позволяет описать дизайн API сервиса с помощью простого DSL языка Go.
Goa расширяется с помощью плагинов, например, плагин goakit генерирует код, использующий библиотеку Go kit.

Goa DSL состоит из Go-функций, поэтому его можно легко развивать.
Для распространения можно использовать естественный механизм импорта в Go, что очень удобно.

🖥 GitHub
🟡 Доки

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Caddy — расширяемая серверная платформа, которая по умолчанию использует TLS

git clone "https://github.com/caddyserver/caddy.git"
cd caddy/cmd/caddy/
go build


Быстрый и расширяемый многоплатформенный веб-сервер HTTP/1-2-3 с автоматическим HTTPS
Также Caddy предоставляет полнофункциональный пакет PKI для создания собственной полностью автоматизированной внутренней PKI и частных центров сертификации.

🖥 GitHub
🟡 Доки

@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
👣 Devbox — CLI-инструмент на Go, позволяющий создавать изолированные, воспроизводимые среды разработки, которые работают в любом месте

curl -fsSL https://get.jetify.com/devbox | bash

Devbox не требует использование Docker или Nix.
Всё начинается с определения списка пакетов, необходимых для проекта, а Devbox создает изолированную, воспроизводимую среду с установленными пакетами.

Devbox работает аналогично пакетному менеджеру вроде yarn — за исключением того, что пакеты, которыми он управляет, находятся на уровне операционной системы (как если установить их с помощью brew или apt-get)

🖥 GitHub
🟡 Доки

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 PTerm — Go-модуль для современного вывода в консоль

PTerm позволяет отображать графики, прогресс-бары, таблицы, текстовый ввод, меню выбора и многое другое.
Очень настраиваемый и на 100% кроссплатформенный.

🖥 GitHub

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Кратко про то, как устроен компилятор Go

Компилятор 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
👣 Keploy — open-source инструмент на Go для быстрого создания тестового покрытия

curl -O https://raw.githubusercontent.com/keploy/keploy/main/keploy.sh && source keploy.sh

Keploy — это ориентированный на разработчиков инструмент для тестирования API, который создает тесты вместе со встроенными моками быстрее, чем юнит-тесты.

Keploy не только записывает вызовы API, но и записывает вызовы базы данных и воспроизводит их во время тестирования.

🖥 GitHub
🟡 Доки

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
👣 buildkit — инструментарий для сборки, не зависящий от Dockerfile, с эффективным использованием кэша

brew install buildkit

BuildKit — это набор инструментов для сборки из исходного кода эффективным, простым и повторяемым способом.

BuildKit состоит из службы buildkitd и клиента buildctl. В то время как клиент buildctl доступен для Linux, macOS и Windows, buildkitd в настоящее время доступен только для Linux (и Windows, но с ограничениями)

🖥 GitHub

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Чистая архитектура на Go

Проект "architecture_golang" на GitHub представляет собой реализацию "Чистой архитектуры" на Go. В этом проекте использованы принципы и структура, представленные в репозитории 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
👣 Calico — решение на Go для обеспечения безопасности сетей и не только

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/tigera-operator.yaml

Calico — это сетевое решение на Go для обеспечения безопасности, которое позволяет рабочим нагрузкам Kubernetes и другим рабочим нагрузкам выдерживаться параллельно.

🖥 GitHub
🟡 Доки

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 CasaOS — простая и легковесная open-source ОС на Go

curl -fsSL https://get.casaos.io | sudo bash

Проект CasaOS был основан с целью создания простой облачной ОС на базе экосистемы Docker.

Особенности CasaOS:
— CasaOS пытается совместить возможности публичного облака с управляемостю и конфиденциальностью полностью локальной инфраструктуры

— CasaOS можно развернуть на любой совместимой машине с помощью всего 1 строки кода

🖥 GitHub

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM