Category : golang

golang
Рецензия на книгу «Алгоритмы на языке Go»

Эта книга для тех, кто уже пишет на Go и понимает синтаксис, но хочет прокачать знания в вопросе выбора алгоритмов под свою задачу. Книга «Алгоритмы на языке Go» написана именно для такой аудитории. Это первая специализированная русскоязычная книга по алгоритмам с реализацией на Go. Она не очень объемная, — всего 192 страницы, 8 глав с конкретными примерами кода, —  по-своему, это ее  плюс, т.к. сейчас практически никто из разработчиков не читает толстенные «кирпичи» без крайней необходимости. …

  • четверг, 4 июня 2026 г. в 00:00:20
golang
Я написал визуализатор сборщика мусора для Go — теперь GC не чёрный ящик

Сборщик мусора в Go обычно воспринимается как что-то, что просто работает. И это, в общем, хорошо: большую часть времени о нём действительно не хочется думать.Но всё меняется, когда под нагрузкой начинают расти задержки, сервис отвечает медленнее, а потребление памяти резко увеличивается. В такой момент обычно лезешь проверять то, что первым приходит в голову: CPU, блокировки, работу сети, pprof, метрики приложения. Среди всего этого сборщик мусора обычно даже не вспоминают - хотя он вполне мож…

  • четверг, 4 июня 2026 г. в 00:00:13
golang
Эксперимент с локальной Qwen на Go-сервисе

После выхода новых локальных моделей мне захотелось проверить не абстрактный бенчмарк, а более приземленную вещь: можно ли отдать маленькой модели обычную задачу из backend-разработки и получить рабочий результат.Не "построй мне стартап за вечер". Не "спроектируй идеальную архитектуру". А нормальную небольшую задачу: Go-сервис с регистрацией, логином, JWT, PostgreSQL, Docker Compose и тестами.Главный вывод эксперимента: простые вещи уже можно отдавать дешевым моделям. Но не в фо…

  • четверг, 4 июня 2026 г. в 00:00:12
golang
NAT traversal в embedded P2P-мессенджере на Go: почему overlay routing, а не STUN/TURN/ICE

Несколько месяцев пилю embedded P2P-мессенджер на Matrix-протоколе как личный pet-проект в свободное от основной работы время. Стек: форк Dendrite (Matrix homeserver на Go), Pinecone overlay routing от matrix.org research, gomobile bind для упаковки в .aar и .xcframework, modernc.org/sqlite вместо CGO-варианта (иначе gomobile капризничает). Не туториал и не “hello world на gomobile”, а серьёзная архитектурная амбиция в свободное время. Делюсь reasoning’ами почему такие архитектурные выборы и гд…

  • четверг, 4 июня 2026 г. в 00:00:11
golang
Я люблю SQL, но устал собирать WHERE через fmt.Sprintf: зачем я сделал qrafter

Мне нравится чистый SQL.Не «нравится, потому что пришлось», а правда нравится. В хорошем SQL‑запросе обычно видно, что происходит с данными: откуда берём, как фильтруем, где соединяем, что агрегируем и в каком порядке отдаём наружу. И мне нравится Go за похожее качество: код обычно прямой, явный и без лишних церемоний. Поэтому долгое время способ работы с базой выглядел так:rows, err := db.QueryContext(ctx, ` SELECT id, user_name, age     FROM users     WHERE status = $1     ORDER BY id    …

  • среда, 3 июня 2026 г. в 00:00:21
golang
Автоматизируем генерацию gRPC стабов для Go

Настраиваем генерацию gRPC стабов для Go и подключаем как модульДержать proto-контракты в одном репозитории удобно, но подключать их целиком в каждый сервис — не очень. Разберём, как автоматически генерировать Go-стабы из proto-файлов, версионировать их как отдельные Go-модули и публиковать через GitLab CI/CD. Бонусом — swagger-документация и GitLab Pages.Всё описанное рассчитано на приватный бесплатный GitLab. В self-hosted и платной версиях, а также для публичных репозиториев настройка будет …

  • среда, 3 июня 2026 г. в 00:00:18
golang
(Не)безопасный eBPF: что маркетологи забыли упомянуть об уязвимостях

Дисклеймер 1Данная статья носит исключительно исследовательский характер. Моя цель - рассказать сообществу об архитектурных особенностях подсистемы eBPF в Linux. Ведь для того чтобы эффективно защищать системы, необходимо знать об ограничениях используемых технологий.Дисклеймер 2Для чтения статьи надо уже быть знакомым с Linux и eBPF. Но если все еще интересно, то оставлю тут ссылку на то, как устроена эта технология. Что происходит?В последнее все чаще решения ИБ продуктов для мониторинга Linu…

  • понедельник, 1 июня 2026 г. в 00:00:21
golang
DNSSEC validation на Go: написал свой validator и не до конца сошёл с ума

ну и снова привет, Хабр!Я пилю VantageDNS, privacy-focused recursive DNS-резолвер с фильтрацией. Edge-фронт на Go, 10 нод по миру, миекговский miekg/dns под капотом. На каком-то этапе у меня закончились отговорки, и пришлось писать DNSSEC validator. Своими руками. Ночью. Под кофе восьмой кружки.Ниже расскажу, как устроен trust chain, что есть в стандартной библиотеке, какие грабли разложены по дороге, и почему алгоритм 14 я до сих пор обхожу как кота во дворе. В конце ссылки на open-source реал…

  • понедельник, 1 июня 2026 г. в 00:00:16
golang
Жизненный цикл объекта в Kubernetes: путь от kubectl apply до полного удаления

Привет. В предыдущих статьях этого цикла мы разбирали, как Kubernetes-объекты читаются (первая — informer и кэш в controller-runtime) и записываются (вторая — Server-Side Apply, patch’и, managedFields). Сегодня — про их жизненный цикл.Между kubectl apply и появлением объекта в etcd проходит целая цепочка: admission chain, мутирующие и валидирующие вебхуки, schema-валидация, встроенные плагины. Между kubectl delete и реальным исчезновением объекта может пройти от миллисекунд до часов — в зависим…

  • суббота, 30 мая 2026 г. в 00:00:17