Category : golang

golang
Как мы написали социальную сеть внутри Minecraft на 13 версиях — и почему это не было безумием

Эта статья — про инженерные решения, а не про их детали. Мы сознательно держимся высокого уровня: пишем о том, как и почему думали, а не о том, что лежит под капотом.TL;DRНебольшая команда сделала мод-социальную-сеть для Minecraft, который объединяет в общий граф друзей игроков на любых поддерживаемых версиях клиента — от 1.7.10 до 1.21.1. Поддерживаются три популярных загрузчика модов и любые клиенты Minecraft, как лицензионные, так и офлайн. Серверная часть, веб-админка, обвязка и документаци…

  • среда, 13 мая 2026 г. в 00:00:22
golang
Меня раздражает, как объясняют асинхронность

Если что такое параллелизм более-менее все разработчики понимают, то объяснение асинхронности через аналогии с кассирами/поварами не ложно, но, как мне кажется, вредно, так как вводит в очень большое заблуждение.В данной статье я разберу эту проблему на примерах Python и Go и попробую дать свою правильную аналогию. TL;DRАсинхронность и многопоточка решают одну и ту же задачу для IO-bound операций - конкурентность, - но отличаются только синтаксисом, экосистемой и производительностью. Для IO-bo…

  • среда, 13 мая 2026 г. в 00:00:20
golang
Code Review Horror Stories. Часть 2: API, ошибки и graceful shutdown

Продолжение разбора реального кода с собеседования. В первой части разобрали 8 проблем concurrency и memory: race conditions, утечки горутин, проигнорированный mutex, TOCTOU. Это была первая половина из 21 бага в одном сервисе на 150 строк.Сегодня — вторая часть. Тут нет страшных race conditions, но есть то, что выдаёт уровень разработчика на собесе: отношение к ошибкам, валидация, API design, graceful shutdown, observability. Эти баги не упадут “вдруг” в продакшене — они будут тихо пилить вам …

  • вторник, 12 мая 2026 г. в 00:00:18
golang
От LLM к агенту: Как заставить Go приложение думать и действовать

От автора: Эта статья родилась из желания разобраться в том, что осталось за кадром отличного доклада.1. Введение1.1. История создания проектаВсё началось с доклада Антона Юрченко «Улучшаем качество отчётов нагрузочного тестирования с помощью Go, LangChain и GigaChat».Доклад мне понравился: чёткая постановка проблемы, грамотный подход к автоматизации, отличная идея с использованием LLM для генерации человекопонятных отчётов. Но после просмотра осталась одна проблема — код интеграции так и не по…

  • вторник, 12 мая 2026 г. в 00:00:17
golang
Почему ваш Go‑сервис ломается под 1000 RPS и как найти узкое место за полчаса

Go‑сервис на малых нагрузках работает идеально. Горутины дешёвые, GC быстрый, net/http из коробки тянет приличный трафик. Разработчик прогоняет функциональные тесты, видит зелёное, деплоит. Приходят 1000 RPS, и latency p99 взлетает с 50ms до 5 секунд, в логах начинают мелькать таймауты, а в Grafana рисуется красивая кривая деградации.Инструменты: vegeta и wrk2Для нагрузочного тестирования Go‑сервисов используем два инструмента.vegeta написан на Go, понимает гошные паттерны, выводит результаты в…

  • вторник, 12 мая 2026 г. в 00:00:16
golang
Деконструкция GO: Низкоуровневые концепции. Atomics. Часть 2.1

Я самую малость обленился и как-то давно не делал новых разборов, поэтому следующим нашим этапом деконструкции будут низкоуровневые операции. Иногда здесь будет в отрыве от аллокаторов/планировщиков и прочего, но опять же, статьи для тех, кто знает и хочет разобраться поглубже, как тут всё устроено.Поэтому, в этой части начнем с самого простого – пакета atomic.Концепции вокруг атомарных операций на уровне CPU я рассматривал здесь, поэтому советую почитать. Там мы даже пишем свой атомарный AND.!…

  • вторник, 12 мая 2026 г. в 00:00:15
golang
Memory MCP Server, часть 2: как проект вырос из semantic search в memory backbone для инженерных аг…

В первой части я рассказывал про agent-memory-mcp версии 0.1.0: MCP-сервер на Go, SQLite-хранилище, четыре типа памяти, semantic search, RAG по документации, PathGuard и transport через stdio/HTTP.Тогда это был довольно прямой инструмент: агент может сохранить знание, потом найти его по смыслу, а рядом лежит индекс документов проекта.После этого проект прожил несколько месяцев реального использования. И почти всё интересное произошло не там, где я изначально ожидал.Оказалось, что главная пробле…

  • понедельник, 11 мая 2026 г. в 00:00:09
golang
ASOC на коленке: как я навайбкодил замену DefectDojo для своих задач с обогащением из БДУ ФСТЭК

Когда я начал разбираться, чем в мире опенсорса можно закрыть задачу ASOC / Vulnerability Management, выбор оказался довольно грустным. По сути единственный известный вариант это DefectDojo. Сам я его в проде не тащил, но от коллег регулярно слышал одну и ту же боль: на больших объёмах он начинает захлёбываться, и тебе просто больше не хочется заходить, а аналогов с человеческим видом и БДУ ФСТЭК «из коробки» в опенсорсе я просто не нашёл. Так и появилась моя ASOC-платформа: Go + PostgreSQL + R…

  • понедельник, 11 мая 2026 г. в 00:00:08
golang
Yggdrasil как встраиваемая библиотека

Yggdrasil - это экспериментальная оверлейная IPv6 mesh-сеть, уже неоднократно рассматривавшаяся на хабре (1 2 3). Если кратко, Yggdrasil позволяет поднять “сеть поверх сети” где у каждого узла появляется стабильный IPv6 адрес выведенный из его публичного ключа, не зависящий от того, где он физически находится и какой у него внешний IP. Узлы могут подключаться к публичным пирам, друг к другу напрямую, через локальное обнаружение, а после установления связности обычные TCP/UDP приложения могут об…

  • воскресенье, 10 мая 2026 г. в 00:00:14