Category : golang

golang
Атомарные операции против мьютексов в Go: когда скорость становится проблемой

Команда Go for Devs подготовила перевод статьи о том, действительно ли атомарные операции всегда быстрее и лучше мьютексов в конкурентном коде. Автор разбирает реальные сценарии, показывает бенчмарки и объясняет, почему рост производительности часто оборачивается ростом сложности и рисков для корректности.TL;DRВведение Механизмы конкурентного доступа Реализации: простой пример Функциональные сложности: рост сложностиШпаргалка по сценариям использованияИтоговые мысли Недавно при ревью pull r…

  • среда, 21 января 2026 г. в 00:00:07
golang
Как я отказался от FFmpeg и написал FLAC энкодер за 500 строк на Go

TL;DR: Надоело тащить 80 МБ FFmpeg ради конвертации аудио. Написал конвертер на чистом Go - один бинарник 5 МБ, без зависимостей, работает на любой платформе. Бонусом - реализовал FLAC энкодер с нуля, потому что готового pure Go решения не существовало.Зачем это всеУ меня есть проект music_recognition — распознавание музыки через Shazam. Для работы нужно конвертировать аудио между форматами. Стандартное решение — FFmpeg.Проблема: FFmpeg умеет все. Транскодировать 4K, стримить по RTMP, делать цв…

  • вторник, 20 января 2026 г. в 00:00:12
golang
Protobuf как контракт: spec‑first валидация с protovalidate (часть 2)

В первой части мы разобрали protoc-gen-validate и spec-first подход к валидации. Я обещал рассказать про protovalidateну и вот, держите :)И самый первый вопрос конечно, а зачем вообще появился protovalidate, если PGV уже есть и работает?Ах да, мини реклама моего телеграмм канала по Go && gRPC Проблема, которую решает protovalidateК примеру, вас микросервисная архитектура, где бэкенд на Go, ML-пайплайн на Python, а мобильный клиент генерирует код на swift и kotlin flutter и весь этот зоо…

  • вторник, 20 января 2026 г. в 00:00:11
golang
Что нового в Go 1.26

Go 1.26 выходит в феврале, и на мой взгляд это один из самых насыщенных релизов за всю историю языка. Давай разберёмся что нас ждёт, от изменений в языке до оптимизаций runtime и новых инструментов. Статья основана на официальных release notes и исходном коде Go. Это не исчерпывающий список, за полной информацией обращайся к официальной документации.Типобезопасная проверка ошибокНовая функция errors.AsType это дженерик-версия errors.As:// Go 1.13+ func As(err error, target any) bool // Go 1.26…

  • вторник, 20 января 2026 г. в 00:00:10
golang
Файлы прямо в бинаре. Go Embed

Стандартная ситуация - в вашем небольшом проекте на Go есть файлы переводов, картинки, миграции, html/gohtml темплейты, которые всегда должны быть рядом с проектом. Как бы странным это не казалось, но ни раз я видел, как люди упорно пытаются рядом со сбилженым бинарем положить эти файлики в нужной форме, мучают девопсов и насилуют пайпы. Пошла эта мода скорее из некомпилируемых языков, к примеру Java Script, который на месте своего нахождения и без этого плодит помойку из каталогов.Краткое, быс…

  • понедельник, 19 января 2026 г. в 00:00:09
golang
Разрабатываем тестовый стенд с автономным ИИ-агентом QA, способным заменить тестировщика в команде …

В этой статья я хочу поделиться концепцией тестового стенда с ии-агентом QA, интеграция которого в команду может покрыть все задачи тестирования бэкенда.Как родилась идея?Я занимаюсь разработкой ПО около 8 лет, имею опыт работы в нескольких крупных российских компаниях, за годы работы с разными бэкенд сервисами мне не раз приходилось плотно работать над тестированием и взаимодействовать с QA. Не скажу, что я безумно люблю покрывать бизнес логику тестами, искать баги и уязвимости, скорее наоборо…

  • понедельник, 19 января 2026 г. в 00:00:09
golang
Актуальный на 2026 Roadmap по Go: с нуля до middle

Всем привет!В прошлом году я выкладывал свой RoadMap по Go, который многим помог стартовать в разработке. Но IT-мир не стоит на месте: появляются новые инструменты, обновляются требования работодателей, а сам Go с каждым годом становится мощнее. Поэтому пришло время актуализировать материал и представить более свежий и релевантный роадмап на 2026 год.Как и раньше, это «народный» курс — собрание проверенных материалов и проектов, которые помогут вкатиться в Go с нуля, выстроить обучение по четко…

  • пятница, 16 января 2026 г. в 00:00:15
golang
Black-White Array: новая структура данных с O(log N) аллокаций

КраткоBlack-White Array (BWA) — это упорядоченная структура данных с амортизированным временем операций вставки/поиска/удаления и используемых участков памяти. Пример реализации и оригинальная научная публикация.ПреимуществаАмортизированное время вставки/удаления/поиска - сравнимое с BTree от Google;Количество аллокаций памяти при операциях вставки так же - меньше давления на сборщик мусора, ниже фрагментация памяти;Массивы под капотом: данные лежат рядом, что улучшает кэшируемость процессо…

  • четверг, 15 января 2026 г. в 00:00:11
golang
Проектирование сервиса персональной ленты. Как решать System Design?

Привет! Эта статья - текстовая версия моего стрима с разбором задачи на бесконечную ленту по System Design из https://t.me/siliconchannel/141 этого поста.Рассмотрим классическую задачу из System Design интервью - персональная лента подписок. По сути, мы проектируем упрощённый клон Instagram. Сама задача звучит следующим образом:Делаем сервис: подписки на авторов, публикации постов, выдача персональной ленты с пагинацией. Нагрузка: чтение доминирует - 30 тыс. RPS; запись постов 1000 RPS; есть “м…

  • вторник, 13 января 2026 г. в 00:00:11