Golang Portal
7.9K subscribers
404 photos
26 videos
7 files
438 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Golang-разработчика

Связь: @devmangx
Download Telegram
Используйте структурированный логгер Go (slog) с контекстом. Добавляйте и извлекайте логгер из контекста. Добавляйте атрибуты в контекст. Автоматически считывайте любые пользовательские значения из контекста, такие как OpenTelemetry TraceID

https://github.com/veqryn/slog-context

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3👎1
Шифрование и дешифрование в Go: практическое руководство

В этом руководстве мы подробно разберём, как работает шифрование и дешифрование в Go, на практике — с примерами кода, которые можно собрать и запустить. Мы охватим базовые темы: от симметричного до асимметричного шифрования, с понятными объяснениями и чистым кодом.


https://dev.to/shrsv/encryption-and-decryption-in-go-a-hands-on-guide-3bcl

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84
Простой загрузчик конфигураций для Go, который читает и отслеживает изменения из файла, переменных окружения, флагов командной строки и облачных провайдеров (AWS, Azure, GCP).

https://github.com/nil-go/konf

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍2
Ты неправильно пишешь HTTP-обработчики

Большинство Go-разработчиков пишут обработчики, которые не возвращают ошибки (стандартный способ) — они просто логируют их или вызывают http.Error прямо внутри.

Но гораздо чище давать обработчику возможность возвращать ошибку и обрабатывать её централизованно. Это делает код более удобным для тестирования, читаемым и сопровождаемым. Вот компактный способ, как это реализовать:

👉 @GolangPortal
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍105
Красивая и функционально насыщенная библиотека командной строки для Go, которая упрощает создание эффектных терминальных приложений

https://github.com/alperdrsnn/clime

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥103😁1
Статья объясняет, что современные ОС и Go разделяют два типа времени: wall clock (реальное системное время, которое может синхронизироваться или скакать) и monotonic clock (монотонное время, которое только идёт вперёд и не подвержено корректировкам).

В Go time.Now() возвращает структуру time.Time, содержащую оба значения, что позволяет правильно измерять интервалы и избегать багов, связанных с изменением системного времени

https://victoriametrics.com/blog/go-time-monotonic-wall-clock/

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍6
Я уже какое-то время работаю с пакетом errors, но только недавно заметил, что в нём есть сентинил ErrUnsupported (начиная с Go 1.21).

Он используется, когда операция не может быть выполнена, потому что она не поддерживается.

Ты когда-нибудь использовал ErrUnsupported?


Полезно ✌️

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍162
Использование конструктора запросов dbx в Go для гибких SQL-запросов

Если вам нужен лёгкий и гибкий конструктор запросов в Go без погружения в магию ORM, dbx — отличный выбор. Он позволяет писать SQL-подобные запросы с привязками

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍177👎4
Персональный, приватный аналог ngrok — но заточен специально для продакшн-использования и приватных сетей

https://github.com/SyneHQ/rabbit.go

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52
Реализация ротации логов в Go: особенности logrus, zap и slog

В большинстве существующих логирующих библиотек, включая стандартную библиотеку log/slog из Go, обычно предусмотрена поддержка ротации и разделения лог-файлов. Однако эти возможности не идут «из коробки» — их необходимо явно настраивать.

В этой статье мы рассмотрим несколько популярных логгеров, таких как logrus, zap и официальную библиотеку slog. Мы разберем ключевые архитектурные решения в этих библиотеках и обсудим, как именно они позволяют настраивать ротацию и разделение логов

🔹Читать

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍5
Пакет resend-go предоставляет удобный способ отправки email-сообщений в Go-приложениях через Resend API

https://github.com/resend/resend-go

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93
В этом видео автор делится шестью своими любимыми инструментами для разработки на Go, которые, как он считает, должен попробовать каждый.

Он рассказывает о таких утилитах, как sqlc, goose, goreleaser, go-blueprint, godotenv и air

Смотреть на YouTube

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍31😁1
В Go каждая переменная и каждый импорт в коде должны использоваться — иначе компилятор выбросит ошибку. Это помогает ускорить компиляцию, но бывают случаи, когда хочется обойти это поведение. В таких ситуациях в качестве заглушки можно использовать пустой идентификатор (_)

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍6
Logging in Go with Slog: A Practitioner’s Guide

Практическое руководство по работе с встроенным пакетом log/slog (доступен с Go 1.21), от основ до продвинутых подходов структурированного логирования. Вы научитесь создавать информативные и полезные логи, которые упростят отладку и мониторинг приложений

https://www.dash0.com/guides/logging-in-go-with-slog

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍106
Этот сайт, отличное место для изучения паттернов конкурентности в Go: https://concurrency.rocks

Концепция простая, но интерфейс — стильный и хорошо продуманный. Ещё круче то, что всё работает на Go с использованием WebAssembly, так что сервер вообще не нужен

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
20🔥8👍6🏆1
Чанкер от Plakar

Разрабы из Plakar выпустили пакет go-cdc-chunkers — инструмент для контентно-зависимого разбиения данных на фрагменты переменного размера. Он устойчив к сдвигам и изменениям, отлично подходит для дедупликации, дельта-кодирования, отслеживания изменений и других задач

В статье рассказывается, как работает пакет и как его использовать

🔹Читать

👉 @GolangPortal
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
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍3
Используй sync.Once для однократной инициализации значения. Например, при загрузке переменных окружения можно воспользоваться sync.Once, чтобы гарантировать, что переменные будут загружены только один раз, а затем считывались из памяти при каждом обращении

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍8
Эффективная конкурентность в Go с использованием select

В языке программирования Go горутины и каналы — это ключевые концепции при работе с конкурентностью. Они помогают решать множество задач, связанных с параллельным выполнением.

В этой статье основное внимание уделяется конструкции select, которая служит мостом для координации нескольких каналов.

🔹Читать

👉 @GolangPortal
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
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥4