Используйте структурированный логгер Go (slog) с контекстом. Добавляйте и извлекайте логгер из контекста. Добавляйте атрибуты в контекст. Автоматически считывайте любые пользовательские значения из контекста, такие как OpenTelemetry TraceID
https://github.com/veqryn/slog-context
👉 @GolangPortal
https://github.com/veqryn/slog-context
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - veqryn/slog-context: Use golang structured logging (slog) with context. Add and retrieve logger to and from context. Add…
Use golang structured logging (slog) with context. Add and retrieve logger to and from context. Add attributes to context. Automatically read any custom context values, such as OpenTelemetry TraceI...
❤4👍3👎1
Шифрование и дешифрование в Go: практическое руководство
https://dev.to/shrsv/encryption-and-decryption-in-go-a-hands-on-guide-3bcl
👉 @GolangPortal
В этом руководстве мы подробно разберём, как работает шифрование и дешифрование в Go, на практике — с примерами кода, которые можно собрать и запустить. Мы охватим базовые темы: от симметричного до асимметричного шифрования, с понятными объяснениями и чистым кодом.
https://dev.to/shrsv/encryption-and-decryption-in-go-a-hands-on-guide-3bcl
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4
Простой загрузчик конфигураций для Go, который читает и отслеживает изменения из файла, переменных окружения, флагов командной строки и облачных провайдеров (AWS, Azure, GCP).
https://github.com/nil-go/konf
👉 @GolangPortal
https://github.com/nil-go/konf
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍2
Ты неправильно пишешь HTTP-обработчики
Большинство Go-разработчиков пишут обработчики, которые не возвращают ошибки (стандартный способ) — они просто логируют их или вызывают
Но гораздо чище давать обработчику возможность возвращать ошибку и обрабатывать её централизованно. Это делает код более удобным для тестирования, читаемым и сопровождаемым. Вот компактный способ, как это реализовать:
👉 @GolangPortal
Большинство Go-разработчиков пишут обработчики, которые не возвращают ошибки (стандартный способ) — они просто логируют их или вызывают
http.Error прямо внутри. Но гораздо чище давать обработчику возможность возвращать ошибку и обрабатывать её централизованно. Это делает код более удобным для тестирования, читаемым и сопровождаемым. Вот компактный способ, как это реализовать:
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍5
Хорошая статья: 20 приёмов оптимизации производительности в Go, которые я усвоил на собственных ошибках
Автор делится практическими трюками по повышению производительности Go-приложений, проверенными в боевых условиях, с объяснениями причин и примерами кода
https://leapcell.medium.com/20-go-performance-tricks-i-learned-the-hard-way-3e879ff40dc2
👉 @GolangPortal
Автор делится практическими трюками по повышению производительности Go-приложений, проверенными в боевых условиях, с объяснениями причин и примерами кода
https://leapcell.medium.com/20-go-performance-tricks-i-learned-the-hard-way-3e879ff40dc2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5
Красивая и функционально насыщенная библиотека командной строки для Go, которая упрощает создание эффектных терминальных приложений
https://github.com/alperdrsnn/clime
👉 @GolangPortal
https://github.com/alperdrsnn/clime
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤3😁1
Статья объясняет, что современные ОС и Go разделяют два типа времени: wall clock (реальное системное время, которое может синхронизироваться или скакать) и monotonic clock (монотонное время, которое только идёт вперёд и не подвержено корректировкам).
В Go
https://victoriametrics.com/blog/go-time-monotonic-wall-clock/
👉 @GolangPortal
В Go
time.Now() возвращает структуру time.Time, содержащую оба значения, что позволяет правильно измерять интервалы и избегать багов, связанных с изменением системного времениhttps://victoriametrics.com/blog/go-time-monotonic-wall-clock/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍6
Я уже какое-то время работаю с пакетом errors, но только недавно заметил, что в нём есть сентинил ErrUnsupported (начиная с Go 1.21).
Он используется, когда операция не может быть выполнена, потому что она не поддерживается.
Ты когда-нибудь использовал ErrUnsupported?
Полезно
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤2
Использование конструктора запросов dbx в Go для гибких SQL-запросов
Если вам нужен лёгкий и гибкий конструктор запросов в Go без погружения в магию ORM, dbx — отличный выбор. Он позволяет писать SQL-подобные запросы с привязками
👉 @GolangPortal
Если вам нужен лёгкий и гибкий конструктор запросов в Go без погружения в магию ORM, dbx — отличный выбор. Он позволяет писать SQL-подобные запросы с привязками
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤7👎4
Персональный, приватный аналог ngrok — но заточен специально для продакшн-использования и приватных сетей
https://github.com/SyneHQ/rabbit.go
👉 @GolangPortal
https://github.com/SyneHQ/rabbit.go
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - SyneHQ/rabbit.go: Bidirectional TCP tunnel written in go
Bidirectional TCP tunnel written in go. Contribute to SyneHQ/rabbit.go development by creating an account on GitHub.
👍5❤2
Реализация ротации логов в Go: особенности logrus, zap и slog
В большинстве существующих логирующих библиотек, включая стандартную библиотеку
В этой статье мы рассмотрим несколько популярных логгеров, таких как
🔹 Читать
👉 @GolangPortal
В большинстве существующих логирующих библиотек, включая стандартную библиотеку
log/slog из Go, обычно предусмотрена поддержка ротации и разделения лог-файлов. Однако эти возможности не идут «из коробки» — их необходимо явно настраивать.В этой статье мы рассмотрим несколько популярных логгеров, таких как
logrus, zap и официальную библиотеку slog. Мы разберем ключевые архитектурные решения в этих библиотеках и обсудим, как именно они позволяют настраивать ротацию и разделение логовPlease open Telegram to view this post
VIEW IN TELEGRAM
❤6👍5
Пакет
https://github.com/resend/resend-go
👉 @GolangPortal
resend-go предоставляет удобный способ отправки email-сообщений в Go-приложениях через Resend APIhttps://github.com/resend/resend-go
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3
В этом видео автор делится шестью своими любимыми инструментами для разработки на Go, которые, как он считает, должен попробовать каждый.
Он рассказывает о таких утилитах, как sqlc, goose, goreleaser, go-blueprint, godotenv и air
Смотреть на YouTube
👉 @GolangPortal
Он рассказывает о таких утилитах, как sqlc, goose, goreleaser, go-blueprint, godotenv и air
Смотреть на YouTube
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3❤1😁1
В Go каждая переменная и каждый импорт в коде должны использоваться — иначе компилятор выбросит ошибку. Это помогает ускорить компиляцию, но бывают случаи, когда хочется обойти это поведение. В таких ситуациях в качестве заглушки можно использовать пустой идентификатор (
👉 @GolangPortal
_)Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍6
Logging in Go with Slog: A Practitioner’s Guide
Практическое руководство по работе с встроенным пакетом
https://www.dash0.com/guides/logging-in-go-with-slog
👉 @GolangPortal
Практическое руководство по работе с встроенным пакетом
log/slog (доступен с Go 1.21), от основ до продвинутых подходов структурированного логирования. Вы научитесь создавать информативные и полезные логи, которые упростят отладку и мониторинг приложенийhttps://www.dash0.com/guides/logging-in-go-with-slog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤6
Этот сайт, отличное место для изучения паттернов конкурентности в Go: https://concurrency.rocks
Концепция простая, но интерфейс — стильный и хорошо продуманный. Ещё круче то, что всё работает на Go с использованием WebAssembly, так что сервер вообще не нужен
👉 @GolangPortal
Концепция простая, но интерфейс — стильный и хорошо продуманный. Ещё круче то, что всё работает на Go с использованием WebAssembly, так что сервер вообще не нужен
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20🔥8👍6🏆1
Чанкер от Plakar
Разрабы из Plakar выпустили пакет
В статье рассказывается, как работает пакет и как его использовать
🔹 Читать
👉 @GolangPortal
Разрабы из Plakar выпустили пакет
go-cdc-chunkers — инструмент для контентно-зависимого разбиения данных на фрагменты переменного размера. Он устойчив к сдвигам и изменениям, отлично подходит для дедупликации, дельта-кодирования, отслеживания изменений и других задачВ статье рассказывается, как работает пакет и как его использовать
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥2
CLI-инструмент на Go для работы с базами данных | SQLite, libSQL, PostgreSQL, MySQL, MariaDB
https://github.com/gigagrug/schema
👉 @GolangPortal
https://github.com/gigagrug/schema
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍3
Используй
👉 @GolangPortal
sync.Once для однократной инициализации значения. Например, при загрузке переменных окружения можно воспользоваться sync.Once, чтобы гарантировать, что переменные будут загружены только один раз, а затем считывались из памяти при каждом обращенииPlease open Telegram to view this post
VIEW IN TELEGRAM
❤13👍8
Эффективная конкурентность в Go с использованием
В языке программирования Go горутины и каналы — это ключевые концепции при работе с конкурентностью. Они помогают решать множество задач, связанных с параллельным выполнением.
В этой статье основное внимание уделяется конструкции
🔹 Читать
👉 @GolangPortal
selectВ языке программирования Go горутины и каналы — это ключевые концепции при работе с конкурентностью. Они помогают решать множество задач, связанных с параллельным выполнением.
В этой статье основное внимание уделяется конструкции
select, которая служит мостом для координации нескольких каналов.Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3
Вышел релиз-кандидат Go 1.25 RC3
• Репортите баги: https://go.dev/issue/new
• Анонс: https://groups.google.com/g/golang-announce/c/sTNnwCTjr1Y/m/tdIX-dDUAgAJ
• Скачать: https://go.dev/dl/#go1.25rc3
👉 @GolangPortal
• Репортите баги: https://go.dev/issue/new
• Анонс: https://groups.google.com/g/golang-announce/c/sTNnwCTjr1Y/m/tdIX-dDUAgAJ
• Скачать: https://go.dev/dl/#go1.25rc3
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥4