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

Связь: @devmangx
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Обширная коллекция практичных фрагментов кода, примеров и рецептов на Go для создания эффективных, надёжных и масштабируемых приложений

https://go-cookbook.com

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥4👍3
Google OAuth2 Login на Go: минималистичное и полноценное руководство

Руководство по реализации входа через Google OAuth2 на Go без лишних фреймворков — только net/http и стандартные библиотеки. Пошаговый разбор: от настройки OAuth-клиента в Google Cloud Console до обработки login-флоу и получения данных пользователя

https://medium.com/@aynacialiriza/google-oauth2-login-in-go-a-minimal-and-complete-guide-0e9af75908de

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍204🏆2
Трюк с ...type в Go, который вы, скорее всего, не используете (вариативность)

В Go, когда вы видите func(name ...Type), это вариативная функция. Это значит, что функция может принимать любое количество аргументов указанного типа. Внутри это просто срез, но с синтаксическим сахаром, позволяющим удобно передавать несколько значений.

Отлично подходит для функций, где количество аргументов заранее неизвестно (например, fmt.Println()).

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍236👎2
Продвинутая работа с очередями в Go

Рассмотрите различные способы реализации очередей (в частности, на Go), их типы, а также практическое применение.

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

https://medium.com/@danielabatibabatunde1/mastering-queues-in-golang-be77414abe9e

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍86
Проект для захвата выполнения Go-программы путём взаимодействия с сервером отладчика Delve, с извлечением значений переменных и информации о стеке всех горутин на каждом операторе Go

https://github.com/ahmedakef/gotutor

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍2👀1
Серия задач по программированию, которые помогут подготовиться к техническим собеседованиям на Go. Решай задачи, отправляй свои решения и сразу получай фидбэк благодаря автоматическому тестированию.

https://github.com/RezaSi/go-interview-practice

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥5👍3
Будьте осторожны при чтении тела HTTP-запроса с помощью io.ReadAll.

Это просто и быстро, но если вы работаете с большим файлом, он полностью загрузится в память.

Вместо этого рассмотрите вариант чтения файла по частям или стриминга с использованием, например, io.Copy

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

https://dev.to/jones_charles_ad50858dbc0/graceful-goroutine-shutdowns-in-go-a-practical-guide-2b9a

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64
Лёгкий инструмент для деплоя и управления контейнеризированными приложениями в сети Docker-хостов. Закрывает разрыв между Docker и Kubernetes

https://github.com/psviderski/uncloud

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
Рассматривайте возможность возвращать функции очистки при создании объектов. Это помогает убедиться, что этап освобождения ресурсов не будет забыт и его легко обрабатывать с помощью оператора defer в Go.

👉 @GolangPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍212
Используйте структурированный логгер 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