Образы контейнеров
Довольно часто можно встретить практику, когда статически слинкованный бинарник на Go просто кладут в образ, собранный
- нет rootfs-лейаута
- отсутствуют CA-сертификаты
- нет базы данных часовых поясов
Решение? Использовать distroless-базу вместо этого
Подробнее о проблеме и одном из возможных решений:
🔹 Building Container Images FROM Scratch: 6 Pitfalls That Are Often Overlooked
🔹 What's Inside Distroless Container Images: Taking a Closer Look
👉 @GolangPortal
FROM scratch стоит ли так делать? 🤔Довольно часто можно встретить практику, когда статически слинкованный бинарник на Go просто кладут в образ, собранный
FROM scratch. Но у такого подхода есть ряд подводных камней:- нет rootfs-лейаута
- отсутствуют CA-сертификаты
- нет базы данных часовых поясов
Решение? Использовать distroless-базу вместо этого
Подробнее о проблеме и одном из возможных решений:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍7🔥4👎2
Лог-ориентированная база данных реального времени на Go, реплицирующаяся как шина сообщений для ИИ и периферийных вычислений
GitHub: unisondb
👉 @GolangPortal
GitHub: unisondb
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥2
Построение конвейера «производитель–потребитель» в Go с использованием горутин и каналов
Статья рассказывает, как с помощью языковых механизмов Go (горутин и каналов) построить конвейер «производитель–потребитель», чтобы параллельно обрабатывать тяжёлые CPU-задачи и при этом безопасно записывать результаты в базу данных без конкуренции за запись
Читайте здесь
👉 @GolangPortal
Статья рассказывает, как с помощью языковых механизмов Go (горутин и каналов) построить конвейер «производитель–потребитель», чтобы параллельно обрабатывать тяжёлые CPU-задачи и при этом безопасно записывать результаты в базу данных без конкуренции за запись
Читайте здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤8🔥2
Веб-инструмент на Go для удобного и уверенного управления конфигурациями Traefik
GitHub: traefikr
👉 @GolangPortal
GitHub: traefikr
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍3🔥3
Терминальный клиент для HTTP/GraphQL/gRPC с поддержкой SSH-туннелей, WebSocket, SSE, workflows, профилирования, OpenAPI и сравнения ответов
GitHub: resterm
👉 @GolangPortal
GitHub: resterm
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍7🤔1
Интересная статья: «миллионе способов словить data race в Go»
Автор разбирает разные паттерны, на которых легко поймать data race в Go, и даёт практичные советы, как избежать этих проблем в реальном коде
👉 @GolangPortal
Автор разбирает разные паттерны, на которых легко поймать data race в Go, и даёт практичные советы, как избежать этих проблем в реальном коде
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3
Самостоятельно развёртываемая файловая менеджмент-система на Go с поддержкой нескольких облачных хранилищ
GitHub: cloudreve
👉 @GolangPortal
GitHub: cloudreve
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2😁2
Каналы в Go легко использовать неправильно, если не знать правил:
- Отправка в канал вызывает панику, если канал закрыт в любой момент до фактического завершения отправки, даже если закрытие произошло после начала отправки, но до её завершения.
- Чтение из закрытого канала никогда не приводит к панике.
- Закрытие nil-канала или уже закрытого канала вызывает панику.
Эти правила подсказывают простую модель владения:
Сторона, которая “владеет” жизненным циклом канала (обычно отправитель), должна быть единственной, кто имеет право закрывать канал, и должна сделать это ровно один раз, после того как все отправки завершены.
Потребители обычно не должны вызывать close.
Если у вас несколько отправителей, им нужно координироваться так, чтобы только один из них фактически выполнял закрытие. Обычный паттерн - обернуть close(ch) в sync.Once или направить все отправки через одну горутину, которая и становится единственным закрывающим, когда знает, что больше значений не будет.
👉 @GolangPortal
- Отправка в канал вызывает панику, если канал закрыт в любой момент до фактического завершения отправки, даже если закрытие произошло после начала отправки, но до её завершения.
- Чтение из закрытого канала никогда не приводит к панике.
- Закрытие nil-канала или уже закрытого канала вызывает панику.
Эти правила подсказывают простую модель владения:
Сторона, которая “владеет” жизненным циклом канала (обычно отправитель), должна быть единственной, кто имеет право закрывать канал, и должна сделать это ровно один раз, после того как все отправки завершены.
Потребители обычно не должны вызывать close.
Если у вас несколько отправителей, им нужно координироваться так, чтобы только один из них фактически выполнял закрытие. Обычный паттерн - обернуть close(ch) в sync.Once или направить все отправки через одну горутину, которая и становится единственным закрывающим, когда знает, что больше значений не будет.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤8🔥3
Принято! Go 1.26 введёт метрики по состояниям горутин: выполняются, ожидают, в системных вызовах и т.д.
Разработчики смогут использовать их для раннего выявления проблем без необходимости полной трассировки
Подробнее тут
👉 @GolangPortal
Разработчики смогут использовать их для раннего выявления проблем без необходимости полной трассировки
Подробнее тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37❤6🔥3
Если вы серьёзно занимаетесь Go, вам нужно подтянуть свой скилл в тестировании.
Эти слайды от со-основателя HashiCorp — одно из лучших материалов для изучения:
https://speakerdeck.com/mitchellh/advanced-testing-with-go
👉 @GolangPortal
Эти слайды от со-основателя HashiCorp — одно из лучших материалов для изучения:
https://speakerdeck.com/mitchellh/advanced-testing-with-go
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍3👎2
Лёгкое, self-hosted приложение для личных финансов с удобным интерфейсом и мощным функционалом для бухгалтерского учёта.
Бэкенд на Go
GitHub: ezbookkeeping
👉 @GolangPortal
Бэкенд на Go
GitHub: ezbookkeeping
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍7❤4👀1
Изучите эволюцию стратегий кеширования в разработке ПО, чтобы понять, как разные подходы помогают повысить производительность и снизить задержки в ваших приложениях.
В этой статье – детальное погружение в мир кеширования:
https://maypok86.github.io/otter/blog/cache-evolution/
👉 @GolangPortal
В этой статье – детальное погружение в мир кеширования:
https://maypok86.github.io/otter/blog/cache-evolution/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4🔥3
При выполнении запросов к базе данных в Go используйте
👉 @GolangPortal
& в rows.Scan(), чтобы передавать адреса, а не значения.Scan() нужно иметь возможность записывать данные напрямую в поля вашей структурыPlease open Telegram to view this post
VIEW IN TELEGRAM
❤9👍3😁2👎1
Современный, готовый к продакшену Go REST API для аутентификации и авторизации, включающий социальный логин, верификацию email, работу с JWT и интеграцию с Redis
https://github.com/gjovanovicst/golang-auth-api
👉 @GolangPortal
https://github.com/gjovanovicst/golang-auth-api
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤2🔥2
Принято! В Go 1.26 появится
Никакого reflection. Никаких рантайм-паник. Лаконичный код. Это мощно✌️
https://antonz.org/accepted/errors-astype/
👉 @GolangPortal
errors.AsType – современная, типобезопасная альтернатива громоздкому errors.As.Никакого reflection. Никаких рантайм-паник. Лаконичный код. Это мощно
https://antonz.org/accepted/errors-astype/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤24👍8
Упрощает конфигурацию Go-приложений через переменные окружения. В локальной разработке можно использовать файл .env с парами ключ/значение. В продакшене значения подтягиваются из secret manager.
GitHub: dotconfig
👉 @GolangPortal
GitHub: dotconfig
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔1
Вышли Go 1.25.5 и 1.24.11!
- Безопасность: Включают патчи для уязвимостей в crypto/x509 (CVE-2025-61729, CVE-2025-61727).
- Анонс: https://groups.google.com/g/golang-announce/c/8FJoBkPddm4/m/kYpVlPw1CQAJ
- Скачать: https://go.dev/dl/#go1.25.5
👉 @GolangPortal
- Безопасность: Включают патчи для уязвимостей в crypto/x509 (CVE-2025-61729, CVE-2025-61727).
- Анонс: https://groups.google.com/g/golang-announce/c/8FJoBkPddm4/m/kYpVlPw1CQAJ
- Скачать: https://go.dev/dl/#go1.25.5
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍6🔥2