Category : golang

golang
Транзакции в Go через context: одна граница для нескольких репозиториев

ЗадачаОдин бизнес-сценарий часто изменяет данные через несколько репозиториев. Все операции должны завершиться вместе, но передавать транзакцию аргументом каждого метода неудобно, а открывать её внутри одного репозитория недостаточно.СутьВ статье транзакция хранится в context.Context, её открывает use case, а перед каждым вложенным Transaction менеджер сначала выполняет ExtractDB.В примерах используется GORM, но идея не привязана к ORM. Аналогичный менеджер можно написать поверх database/sql, p…

  • суббота, 19 сентября 2026 г. в 00:00:10
golang
Два человека правят один документ офлайн. Изобретаем гугл-док без сервера-арбитра

В свободное время пишу на чистом Go порты CRDT-движков: Yjs с JavaScript и Loro с Rust. CRDT это структуры, на которых держится совместное редактирование, когда несколько человек правят одно и то же одновременно. Пока портировал, пришлось разобрать алгоритмы до байта, и оказалось, что главный фокус там объясняется на пальцах, без формул. Эта статья про него: как два человека правят текст в разных местах, офлайн, а потом копии сходятся в одну и ту же строку. Символ в символ, без сервера, который…

  • суббота, 19 сентября 2026 г. в 00:00:09
golang
Статьи по Go, которые стоит почитать

Если посмотреть на самые обсуждаемые публикации Go‑сообщества последних месяцев, можно заметить любопытную закономерность. Среди них почти нет материалов про новые конструкции языка, generics или очередные изменения синтаксиса.Зато много статей про диагностику утечек горутин, профилирование памяти, внутреннее устройство рантайма, особенности современных процессоров и эксплуатацию высоконагруженных PostgreSQL‑кластеров.В 2026 году экосистема Go значительно «повзрослела». Сама спецификация языка …

  • суббота, 19 сентября 2026 г. в 00:00:07
golang
Почему юридический AI‑сервис нельзя строить как обычный чат: проектируем case‑first SaaS на Go

Несколько месяцев назад мне понадобилось заключить договор с водоканалом. Казалось бы, обычная бюрократическая задача: отправил документы, дождался ответа, подписал договор. На практике всё оказалось значительно веселее — ответа долго не было, сроки шли, а что делать дальше, было не совсем понятно.Юриста у меня не было, зато был AI. Я загрузил документы, описал ситуацию и начал разбираться, какие вообще есть варианты дальнейших действий. В итоге с помощью AI подготовил несколько обращений и жал…

  • суббота, 19 сентября 2026 г. в 00:00:06
golang
Как я хотел написать простенький Go-first DB-мигратор, а получил альтернативу Atlas для управления …

ptah.runВ июне прошлого года я занимался разработкой проекта для собственных нужд (inventario), где заодно игрался с новыми фичами go, архитектурой кода и агентной разработкой. Благодаря этому проекту, кстати, я смог найти и зарепортить баг с имплементацией дженериков в go.Изначально простой проект разросся. Росло количество моделей и связей между ними. В какой-то момент я подумал, что неплохо бы озаботиться миграциями для моей системы. Я посмотрел, что имеется в наличии, и мне не зашло ничего.…

  • суббота, 19 сентября 2026 г. в 00:00:05
golang
ИИ-алготрейдинг. Анализ шума

TLDR; https://github.com/alterfo/moex-traderЗдравствуйте, меня зовут Олег. 11+ лет опыта в архитектуре и управлении разработкой.Я как кузнец — не могу не куя, и сейчас, в меж-работье, занимаюсь своими проектами. Среди них — интерактивный нотный тренажер для игры на пианино, шифрованный личный дневник, игра по мотивам Космических Рейнджеров - Вакуумные Пройдохи и ещё штук 6, включая движок базы знаний по коду, чатам, докам и таскам и редактор IDEF0.Сейчас в фокусе проект AI-трейдинга.Мысль о зар…

  • пятница, 18 сентября 2026 г. в 00:00:09
golang
Разбираем новый аллокатор в Go 1.27

Совсем недавно вышел Go 1.27. Я пошел изучать release notes и наткнулся там на следующее:Faster memory allocation The compiler now generates calls to size-specialized memory allocation routines, reducing the cost of some small (<80 byte) memory allocations by up to 30%. Improvements vary depending on the workload, but the overall improvement is expected to be ~1% in real allocation-heavy programs. This causes the binary size to increase by about 60 KB (independent of the workload). Please fi…

  • пятница, 18 сентября 2026 г. в 00:00:09
golang
Легковесная альтернатива cAdvisor и сборщик логов для отправки в Loki

Всем привет! В данной статье расскажу про проект logporter, который для меня полностью заменил решение от Google для централизованного и полнофункционального мониторинга контейнеров Docker.Экспортер написан на Go и совмещает функции сборщика метрик, логов, проверки обновлений образов и встроенной панели мониторинга в одном легковесном образе.ПроизводительностьЭкспортер cAdvisor давно стал стандартом де-факто, когда требуется отслеживать производительность контейнеров на базе стека мониторинга P…

  • четверг, 17 сентября 2026 г. в 00:00:09
golang
Падающая сборка, и это я её просил

Три истории, у которых одно общее: всё собралось.Два пула. Соединения к базе понадобились в двух местах, и в каждом честно вызвали NewPool(). Компилируется, работает, тесты зелёные. Обнаруживается по графику числа коннектов через месяц, когда база начинает упираться в лимит.Не тот кэш. Есть два Cache — общий и локальный для тяжёлых выборок. В один сервис передали не тот. Типы совпадают, компилятор доволен, поведение правдоподобное: просто иногда данные свежее, чем должны быть, а иногда наоборот…

  • среда, 16 сентября 2026 г. в 00:00:10