В этой статье обсуждается использование gRPC, Rest API, Swagger, Protobuf, и при помощи этого всего создаётся веб-сервер.
Уверен, будет полезно
План статьи:
├╼
Протокол Protobuf├╼
Фреймворк gRPC├╼
Плагин gRPC-Gateway├╼
Описываем proto файлы├╼
Генерируем код├╼
Валидация данных├╼
OpenAPI (Swagger)├╼
Плагин Buf╰╼
Запускаем gRPC и REST сервер@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
Библиотека пользовательских интерфейсов для терминала с богатыми интерактивными виджетами, написанная на Go.
go get github.com/rivo/tview@master
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
GoDS (Go Data Structures) — это Go библиотека, в которой собраны реализации разных алгоритмов и структур данных, таких как список, множество, стек, дерево, очередь
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
modd
: go install github.com/cortesi/modd/cmd/modd@latest
(пакет будет скачен в
~/golang/packages/bin
, как обычно)# Проверка всех тестов при первой запуске
**/*.go {
prep: go test @dirmods
}
# Автоматическая компиляция проекта при изменении файлов
# Исключает все тестовые файлы *_test.go
**/*.go !**/*_test.go {
prep: go build -o ./bin ./cmd/main.go
daemon +sigterm: ./bin
}
При первом запуске
modd
пакета будут проверены все имеющиеся тесты. Далее уже идет непосредственно настройки слежения за изменением файлов.В данном случае мы следим за изменением всех файлов с расширением
.go
, кроме тестовых. При изменении содержимого какого либо go
-файла будет происходить перекомпиляция всего проекта.prep: go build -o ./bin ./cmd/main.go
мы говорим, чтобы компилировался файл ./cmd/main.go
, а результат его компиляции был помещен в каталоге ./bin
.daemon +sigterm: ./bin
мы автоматически запускаем скомпилированный файл, в результате чего отобразится актуальный результат.modd
Иногда могут возникнуть случаи при которых вы будете ожидать перекомпиляцию, но она не произойдет. Например, при какой-либо серьезной ошибки в программе. Решается очевидным образом:
Ctrl + C
и по новой запускаем modd
.@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🎊 Выпущены версии Go 1.22.3 и 1.21.10!
📣 Анонс: https://groups.google.com/g/golang-announce/c/wkkO4P9stm0
📦 Загрузить: https://go.dev/dl/#go1.22.3
#golang
@Golang_google
📣 Анонс: https://groups.google.com/g/golang-announce/c/wkkO4P9stm0
📦 Загрузить: https://go.dev/dl/#go1.22.3
#golang
@Golang_google
quic-go — это Go-реализация протокола QUIC.
QUIC позволяет мультиплексировать несколько потоков данных между двумя компьютерами, работая поверх протокола UDP, и содержит возможности шифрования, эквивалентные TLS и SSL. Имеет более низкую задержку соединения и передачи, чем TCP.
Хорошо переносит потерю части пакетов путём выравнивания границ криптографических блоков по границам пакетов. В протокол заложена возможность прямой (упреждающей) коррекции ошибок на уровне пакетов, но на практике она отключена.
quic-go поддерживает HTTP/3, включая QPACK и HTTP Datagrams.
В дополнение к этим базовым RFC, quic-go также реализует и другие RFC.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Веб-инструмент для просмотра журналов в режиме реального времени.
Транслируйте любое содержимое в веб-интерфейс с автоматически сгенерированными фильтрами.
Вы можете взять бинарник logdy, направить вывод логов в него, и вы получите на выходе веб-интерфейс, для удобной работы и фильтрации логов.
$ brew install logdy
#backend #golang.
▪Github: https://github.com/logdyhq/logdy-core
▪Demo: https://demo.logdy.dev/
▪Инструмент: https://logdy.dev/
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
brew tap anchore/grype
brew install grype
Работает с Syft, мощным инструментом SBOM (software bill of materials) для контейнерных образов и файловых систем.
▪GitHub
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Обычный подход в написании теста для компонента состоит из следующего:
Такой подход приводит к тому, что в тестах фиксируется внутренняя работа компонента, хотя все, что мы хотим проверить - это, что компонент делает то что нужно, без разницы как он это делает внутри
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
—
go install github.com/xyproto/algernon@latest
algernon — это веб-сервер со встроенной поддержкой QUIC, HTTP/2, Lua, Teal, Markdown, Pongo2, HyperApp, Amber, Sass(SCSS), GCSS, JSX, Ollama (LLMs), BoltDB (встроенный, хранит БД в файле, как SQLite), Redis, PostgreSQL, MariaDB/MySQL, MSSQL
Помимо этого algernon предоставляет ограничение скорости, плавное отключение, плагины, настройка прав доступа.
Все в одном небольшом исполняемом файле.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM