В этой статье обсуждается использование 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
🔥25👍11❤4🤬1
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
👍39🔥9❤4🤩4
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
👍37❤5🔥5
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
🤔17👍14🔥4🤬4❤3
🎊 Выпущены версии 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
👍20❤9🔥4
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
🔥22👍14❤5
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
👍20❤7🤔4🔥2
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
👍18❤5🔥2
Обычный подход в написании теста для компонента состоит из следующего:
Такой подход приводит к тому, что в тестах фиксируется внутренняя работа компонента, хотя все, что мы хотим проверить - это, что компонент делает то что нужно, без разницы как он это делает внутри
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤔4❤3😱3🤬3🔥2
—
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
👍15🔥6❤3😁3
mockery предоставляет возможность легко генерировать моки для интерфейсов Golang с помощью пакета
stretchr/testify/mock
mockery избавляет от шаблонного кодирования, необходимого для использования моков
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥3❤2