Открытое решение для мониторинга событий безопасности во время выполнения и реагирования на инциденты в контейнеризированных средах
GitHub: runtime-radar
👉 @GolangPortal
GitHub: runtime-radar
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4🤔2🔥1😁1
Интересная статья о реализации виртуального списка с переменной высотой строк для UI-библиотеки на Go
https://judi.systems/shirei/blog/virtual-list/
👉 @GolangPortal
https://judi.systems/shirei/blog/virtual-list/
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤2👍2
5 шаблонов проектирования API на Go, которые решают твои самые серьёзные проблемы (2025)
Что если бы ты мог устранить 80% повторяющихся проблем в своих Go-API проектах всего пятью продуманными архитектурными решениями? Давай разберём шаблоны проектирования, которые позволяют это сделать.
Читайте здесь
👉 @GolangPortal
Что если бы ты мог устранить 80% повторяющихся проблем в своих Go-API проектах всего пятью продуманными архитектурными решениями? Давай разберём шаблоны проектирования, которые позволяют это сделать.
Читайте здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4👎2
Go вчера исполнилось 16 лет 🥳 🥳
Анализ последнего Developer Ecosystem Survey показывает, как за это время эволюционировали фреймворки, инструменты и практики разработки в экосистеме golang, и в каком направлении язык развивается в 2025 году
👉 @GolangPortal
Анализ последнего Developer Ecosystem Survey показывает, как за это время эволюционировали фреймворки, инструменты и практики разработки в экосистеме golang, и в каком направлении язык развивается в 2025 году
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19🎉11👍4🔥3🏆1
Образы контейнеров
Довольно часто можно встретить практику, когда статически слинкованный бинарник на 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