Простой загрузчик конфигураций для 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
Используй
👉 @GolangPortal
errors.Is и errors.As для проверки ошибок. Эти функции работают с обёрнутыми ошибками, позволяя получить доступ к исходной ошибкеPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍6🌚2