Присоединяйтесь к нашему каналу и погрузитесь в мир для Golang-разработчика Связь: @devmangx
Я уже какое-то время работаю с пакетом errors, но только недавно заметил, что в нём есть сентинил ErrUnsupported (начиная с Go 1.21).
Он используется, когда операция не может быть выполнена, потому что она не поддерживается.
Ты когда-нибудь использовал ErrUnsupported?
Статья объясняет, что современные ОС и Go разделяют два типа времени: wall clock (реальное системное время, которое может синхронизироваться или скакать) и monotonic clock (монотонное время, которое только идёт вперёд и не подвержено корректировкам).
В Go time.Now()
возвращает структуру time.Time
, содержащую оба значения, что позволяет правильно измерять интервалы и избегать багов, связанных с изменением системного времени
https://victoriametrics.com/blog/go-time-monotonic-wall-clock/
👉 @GolangPortal
📘 На Stepik вышел курс — «Golang - микросервисная архитектура, проектирование API»
Уже знакомы с Go и хотите перейти на следующий уровень? Этот курс — именно то, что нужно, чтобы прокачать свои навыки.
• Полный путь от сетевых протоколов до Kubernetes: HTTP/REST, gRPC, RabbitMQ и Kafka, PostgreSQL, Redis, Docker, Prometheus + Grafana
• Практика на реальных кейсах: проектируем API, пишем микросервисы, покрываем тестами, выкатываем CI/CD
• 180+ интерактивных заданий с автопроверкой — код прямо в браузере, в любое удобное время
• Итоговый pet-project: к финалу курса у вас будет рабочая мини-экосистема из нескольких сервисов
🎓 Сертификат по завершении — добавьте его в резюме или профиль LinkedIn
🚀 Прокачайте Golang с пользой и удовольствием. Начните уже сегодня и получите скидку 25%, которая действительна в течение 48 часов
👉 Пройти курс на Stepik
Ты неправильно пишешь HTTP-обработчики
Большинство Go-разработчиков пишут обработчики, которые не возвращают ошибки (стандартный способ) — они просто логируют их или вызывают http.Error
прямо внутри.
Но гораздо чище давать обработчику возможность возвращать ошибку и обрабатывать её централизованно. Это делает код более удобным для тестирования, читаемым и сопровождаемым. Вот компактный способ, как это реализовать:
👉 @GolangPortal
Шифрование и дешифрование в Go: практическое руководство
В этом руководстве мы подробно разберём, как работает шифрование и дешифрование в Go, на практике — с примерами кода, которые можно собрать и запустить. Мы охватим базовые темы: от симметричного до асимметричного шифрования, с понятными объяснениями и чистым кодом.
Рассматривайте возможность возвращать функции очистки при создании объектов. Это помогает убедиться, что этап освобождения ресурсов не будет забыт и его легко обрабатывать с помощью оператора defer
в Go.
👉 @GolangPortal
Практическое руководство по корректному завершению горутин в Go с разбором типичных ошибок, шаблонов и приёмов для управления ресурсами при остановке приложений
https://dev.to/jones_charles_ad50858dbc0/graceful-goroutine-shutdowns-in-go-a-practical-guide-2b9a
👉 @GolangPortal
Серия задач по программированию, которые помогут подготовиться к техническим собеседованиям на Go. Решай задачи, отправляй свои решения и сразу получай фидбэк благодаря автоматическому тестированию.
https://github.com/RezaSi/go-interview-practice
👉 @GolangPortal
Продвинутая работа с очередями в Go
Рассмотрите различные способы реализации очередей (в частности, на Go), их типы, а также практическое применение.
Всё, что вы узнаете из этой статьи, станет отличной базой — как для успешного прохождения собеседований, так и для эффективной разработки с использованием структур данных
danielabatibabatunde1/mastering-queues-in-golang-be77414abe9e" rel="nofollow">https://medium.com/@danielabatibabatunde1/mastering-queues-in-golang-be77414abe9e
👉 @GolangPortal
Google OAuth2 Login на Go: минималистичное и полноценное руководство
Руководство по реализации входа через Google OAuth2 на Go без лишних фреймворков — только net/http и стандартные библиотеки. Пошаговый разбор: от настройки OAuth-клиента в Google Cloud Console до обработки login-флоу и получения данных пользователя
aynacialiriza/google-oauth2-login-in-go-a-minimal-and-complete-guide-0e9af75908de" rel="nofollow">https://medium.com/@aynacialiriza/google-oauth2-login-in-go-a-minimal-and-complete-guide-0e9af75908de
👉 @GolangPortal
Интерактивный тур по Go 1.25
Релиз Go 1.25 запланирован на август, так что сейчас хорошее время посмотреть, что нового
https://antonz.org/go-1-25/
👉 @GolangPortal
Выходные должны быть весёлыми... Итак:
Invaders — создаём ремейк Space Invaders с использованием Ebitengine и Go
https://idiotcoder.com/invaders
👉 @GolangPortal
Опенсорсная современная веб-панель управления для администрирования Linux-серверов.
https://github.com/1Panel-dev/1Panel
👉 @GolangPortal
context.Value
— не наш друг
Поговорим о плохом паттерне в Go, особенно актуальном для новичков
Когда наши Go-приложения разрастаются, нередко возникает необходимость делиться данными между несколькими функциями.
Например, функция A может получить запись о платеже из базы данных и положить её в контекст, а функция C затем извлекает её, находясь где-то далеко.
Это кажется удобным, потому что:
🔹Мы можем не передавать данные в функции вроде B, которым они не нужны.
🔹Мы можем хранить и получать все нужные данные из ctx
.
🔹Нет необходимости добавлять payment
в список аргументов.
"Почему бы просто не вызвать функцию C из функции A?"
ctx.Value
— это чрезмерная неявность. Данные "прячутся" в контексте, и отследить их становится сложно.context.Value()
?"Разве payment не относится к запросу?"
payment
нужен во многих функциях цепочки, лучше передавать его явно. Это делает очевидным, что функция работает с payment
, не читая тело запроса.context
.Go стал ещё быстрее…
Скоро выйдет Go 1.25, и он наконец-то делает язык быстрее. Это обновление включает ключевые улучшения, устраняющие давние проблемы и повышающие производительность Go для разработчиков
Примечания к релизу Go 1.25:
https://tip.golang.org/doc/go1.25
Смотреть видео на YouTube
👉 @GolangPortal
OpenIDE – профессиональные инструменты без ограничений
Первое большое онлайн-событие запуск OpenIDE — новой бесплатной мультиязычной среды разработки, построенной на базе IntelliJ IDEA Platform.
🧩 Вместе с ключевыми разработчиками, лидерами и представителями отрасли мы обсудим:
- Зачем появилась OpenIDE.
- Как она уже сегодня может заменить IntelliJ Platform для Java и Spring.
- В чём её ценность для всей экосистемы.
- Как работать с проектами на Go, Python и TypeScript.
- Как присоединиться к сообществу и помочь развитию проекта.
Покажем, почему OpenIDE — это не просто очередная сборка, а открытая экосистема для Java, Kotlin, Go, Python, JS, TS и десятков других языков.
👉🏻Со своим маркетплейсом. С исходниками. Без ограничений.
📅 31 июля в 17:00 МСК
📍 Бесплатно, онлайн, на всех наших платформах. Главное – зарегистрироваться.
#реклама
О рекламодателе
Красивая и функционально насыщенная библиотека командной строки для Go, которая упрощает создание эффектных терминальных приложений
https://github.com/alperdrsnn/clime
👉 @GolangPortal
Хорошая статья: 20 приёмов оптимизации производительности в Go, которые я усвоил на собственных ошибках
Автор делится практическими трюками по повышению производительности Go-приложений, проверенными в боевых условиях, с объяснениями причин и примерами кода
https://leapcell.medium.com/20-go-performance-tricks-i-learned-the-hard-way-3e879ff40dc2
👉 @GolangPortal
Простой загрузчик конфигураций для Go, который читает и отслеживает изменения из файла, переменных окружения, флагов командной строки и облачных провайдеров (AWS, Azure, GCP).
https://github.com/nil-go/konf
👉 @GolangPortal
Используйте структурированный логгер Go (slog) с контекстом. Добавляйте и извлекайте логгер из контекста. Добавляйте атрибуты в контекст. Автоматически считывайте любые пользовательские значения из контекста, такие как OpenTelemetry TraceID
https://github.com/veqryn/slog-context
👉 @GolangPortal
Лёгкий инструмент для деплоя и управления контейнеризированными приложениями в сети Docker-хостов. Закрывает разрыв между Docker и Kubernetes
https://github.com/psviderski/uncloud
👉 @GolangPortal
Будьте осторожны при чтении тела HTTP-запроса с помощью io.ReadAll
.
Это просто и быстро, но если вы работаете с большим файлом, он полностью загрузится в память.
Вместо этого рассмотрите вариант чтения файла по частям или стриминга с использованием, например, io.Copy
👉 @GolangPortal
Проект для захвата выполнения Go-программы путём взаимодействия с сервером отладчика Delve, с извлечением значений переменных и информации о стеке всех горутин на каждом операторе Go
https://github.com/ahmedakef/gotutor
👉 @GolangPortal
Трюк с ...type в Go, который вы, скорее всего, не используете (вариативность)
В Go, когда вы видите func(name ...Type)
, это вариативная функция. Это значит, что функция может принимать любое количество аргументов указанного типа. Внутри это просто срез, но с синтаксическим сахаром, позволяющим удобно передавать несколько значений.
Отлично подходит для функций, где количество аргументов заранее неизвестно (например, fmt.Println()
).
👉 @GolangPortal
Обширная коллекция практичных фрагментов кода, примеров и рецептов на Go для создания эффективных, надёжных и масштабируемых приложений
https://go-cookbook.com
👉 @GolangPortal
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
Айтишники поймут
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠ
ᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠᅠ
Генерация превью для видео на Go с помощью биндингов ffmpeg
Работаешь с видео на Go? Биндинги ffmpeg-go позволяют использовать всю мощь FFmpeg, не выходя из Go-кода. Вот практичный кейс: нужно сгенерировать превью из видео на конкретном таймстампе
👉 @GolangPortal
Скоро в Go 1.25: Эволюция JSON в Go — от v1 к v2
Вторая версия пакета json, которая появится в Go 1.25, представляет собой крупное обновление с множеством несовместимых изменений. Пакет v2 добавляет новые возможности, исправляет проблемы с API и поведение, а также значительно улучшает производительность.
Давайте посмотрим, что изменилось:
https://antonz.org/go-json-v2/
👉 @GolangPortal
Go-проект для развертывания контейнеризованных приложений в виде платформы веб-приложений для внутренних инструментов. Clace поддерживает Linux, Windows и OSX, предоставляя GitOps-подход для управления веб-приложениями
https://github.com/claceio/clace
👉 @GolangPortal
Инструмент наблюдаемости с открытым исходником для разработки на Go
Позволяет в реалтайме искать логи, следить за горутинами, трекать переменные и снимать метрики рантайма — всё, чтобы проще дебажить и понимать, что происходит в вашем приложении.
https://github.com/outrigdev/outrig
👉 @GolangPortal