37.1K subscribers
1.46K photos
33 videos
5 files
1.62K links
加入频道
👣 Развертывание приложения Go на своем сервере через Github Actions

В какой то момент разработки мы приходим к том, что нам нужно развернуть наше приложение на реальном сервере. Самый простой и долгий способ: собирать приложение локально, передавать на сервер по SFTP, затем по SSH рестартовать службу приложения (предварительно написанную для systemd). Хотелось бы меньше действий, щелкнул по кнопке и все само развернулось (CI/DI). Для этого можно написать свой сервис, найти готовое ПО типа Jenkins или использовать CI/DI от Github, который называется GitHub Actions. Рассмотрим вариант с GitHub Actions как самый быстрый в реализации.

Разворачивать будем приложение написанное на Go. Считаем, что арендованный VPS у нас уже есть.

▶️ Поехали

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Создание сервера Golang с gRPC и Rest API при помощи Swagger

В этой статье обсуждается использование 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
👣 Rich Interactive Widgets for Terminal UIs

Библиотека пользовательских интерфейсов для терминала с богатыми интерактивными виджетами, написанная на Go.

go get github.com/rivo/tview@master


Github

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 GoDS — Go-реализация разных структур данных и алгоритмов

GoDS (Go Data Structures) — это Go библиотека, в которой собраны реализации разных алгоритмов и структур данных, таких как список, множество, стек, дерево, очередь

🖥 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 является компилируемым языком программирования. Вследствие чего необходимо запускать компиляцию всякий раз, когда хочется посмотреть, как это отразилось на программе.

Чтобы автоматизировать это, можно использовать пакет modd:
go install github.com/cortesi/modd/cmd/modd@latest

(пакет будет скачен в ~/golang/packages/bin, как обычно)

Далее в корне проекта создадим файл modd.conf со следующим содержимым:
# Проверка всех тестов при первой запуске
**/*.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
👣 Реализация QUIC на чистом Go

quic-go — это Go-реализация протокола QUIC.

QUIC позволяет мультиплексировать несколько потоков данных между двумя компьютерами, работая поверх протокола UDP, и содержит возможности шифрования, эквивалентные TLS и SSL. Имеет более низкую задержку соединения и передачи, чем TCP.

Хорошо переносит потерю части пакетов путём выравнивания границ криптографических блоков по границам пакетов. В протокол заложена возможность прямой (упреждающей) коррекции ошибок на уровне пакетов, но на практике она отключена.

quic-go поддерживает HTTP/3, включая QPACK и HTTP Datagrams.

В дополнение к этим базовым RFC, quic-go также реализует и другие RFC.

🖥 GitHub
🟡 Доки

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Logdy - terminal logs in web browser

Веб-инструмент для просмотра журналов в режиме реального времени.

Транслируйте любое содержимое в веб-интерфейс с автоматически сгенерированными фильтрами.


Вы можете взять бинарник 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
💻 Grype — сканер уязвимостей на Go для образов контейнеров и файловых систем


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