Category : golang

golang
sync.Pool теряет то, что вы хотели сохранить, и держит то, что хотели выбросить

Привет, Хабр!С sync.Pool знакомство обычно начинается одинаково: начинаешь разбираться с профилированием и оптимизацией Go‑приложения, открываешь профиль — а там сервис четверть процессорного времени кормит сборщик мусора.Дальше — как по написанному:Нашли горячий объект.Завернули в пул.Накатали бенчмарк.Бенчмарк нарисовал двух‑трёхкратный выигрыш.Код уехал в продВ стандартной библиотеке пул торчит из каждого утюга — значит, приём одобрен сверху, значит, всё делаем правильно.А подвох сидит прямо…

  • пятница, 9 октября 2026 г. в 00:00:06
golang
Почему JSON Schema не делает ответ LLM надёжным

После того как LLM начинает возвращать structured output, интеграция внезапно становится очень похожей на обычный backend.Больше не нужно вырезать JSON из Markdown, надеяться, что модель не добавит перед ним «Конечно, вот результат», чинить потерянные кавычки и повторять запрос из-за случайной запятой.Мы описываем схему, модель возвращает объект, десериализуем его в Go-структуру — и кажется, что самая неприятная часть интеграции закончилась.Например:type Invoice struct { Number string `js…

  • четверг, 8 октября 2026 г. в 00:00:07
golang
Go 1.25 сам читает лимит CPU, а automaxprocs молча это выключает

Привет, Хабр!В main.go почти любого Go-сервиса, который живёт в Kubernetes, — вполне типичного стека для микросервисной архитектуры — лежит пустой импорт go.uber.org/automaxprocs. Его давно никто не трогал, и половина команды уже не помнит, зачем он там. Попал он туда по делу.Рантайм Go считал GOMAXPROCS по числу логических процессоров машины и про лимит пода ничего не знал, так что сервис с limits.cpu: 2 на 64-ядерной ноде:поднимал 64 планировщика;раскладывал горутины по 64 очередям;пытался з…

  • четверг, 8 октября 2026 г. в 00:00:06
golang
Дайте нормально поработать или я сделаю это сам

Всем доброго времени суток! Хочу поделиться историей о том, как решение одной бытовой проблемы постепенно вылилось в разработку отдельного open‑source проекта.TL;DRВ ходе экспериментов постепенно сформировалась архитектура с отдельными proxy, broker и worker‑компонентами. Она позволила отделить клиентское подключение от транспортного канала и добавить маршрутизацию трафика через удалённые узлы.В итоге получилась система, в которой трафик может передаваться напрямую либо через один из удалённых …

  • среда, 7 октября 2026 г. в 00:00:06
golang
LiveKit казался простым, пока не начал протухать токен

Synkflow — наш голосовой мессенджер (бэкенд на Go, фронтенд на React/TypeScript, а для медиапотоков WebRTC под капотом крутится LiveKit). С самого начала разработки одной из самых неприятных проблем стал именно LiveKit. На первый взгляд он казался простым: в документации всё вроде понятно написано — поднял комнату, выдал токен, пошёл звук. А по факту всё упёрлось в протухание токена.Из‑за этого нас выкидывало из звонка, потом само переподключало, часто прямо перед тем, как токен должен был зату…

  • среда, 7 октября 2026 г. в 00:00:05
golang
Как я за полдня навайбкодил библиотеку на Go и почему потом всё-таки пришлось вчитываться в код

Любимый термин современного разработчикаTL;DR: В этой статье расскажу, как за полдня с помощью Antigravity и подписки Google AI Pro я собрал полноценную Go-библиотеку для работы с конфигурацией: несколько форматов, переменные окружения, каскадная загрузка, валидация, кастомные провайдеры и всё остальное, что обычно начинает появляться в проекте после нескольких недель жизни микросервиса. А ещё поделюсь, почему после первых нескольких часов восторга мне всё-таки пришлось открыть исходники и вним…

  • вторник, 6 октября 2026 г. в 00:00:14
golang
Утро без телефона: зачем я поставил рядом с кроватью матричный принтер

Всё началось с очень простой проблемы: я хотел перестать брать телефон в руки сразу после пробуждения. Обычно я открывал его с вполне невинной целью — посмотреть данные сна с фитнес‑браслета, а потом как‑то незаметно оказывался в сообщениях, почте и новостях. Тогда я и подумал: а что, если вообще не открывать приложение, а получать эти данные по факту пробуждения без телефона. Физически. Например, на бумаге? Так начала зарождаться идея поставить рядом с кроватью чековый принтер, который утром с…

  • понедельник, 5 октября 2026 г. в 00:00:06
golang
Как я писал расшифровщик записей, но в итоге получил бота для Яндекс.Телемост, с функциями которые …

Всем привет. Меня зовут Алексей, пишу тут впервые. Работаю в небольшом рекламном агентстве, в основном backend и всякое смежное. По вечерам реверс‑инжиниринг, чисто для удовольствия. Стек у меня был максимально предсказуемый. PHP, немного JS с TS, Python. Скучно. Захотелось нового, и я полез в Go.Пару лет назад, когда ElevenLabs только появился, я на коленке собрал питоновский скрипт: он гонял записи моих созвонов через их API и отдавал текст. Поигрался неделю и забросил, как это обычно и бывае…

  • понедельник, 5 октября 2026 г. в 00:00:05
golang
Продовый REPL: Yaegi поверх composition root

Я пришёл в Go из Ruby, и первое время больше всего не хватало одного инструмента, который в Rails есть из коробки: консоли, где любую непонятную ситуацию на проде можно посмотреть руками. bundle exec rails c, Order.find(42), и перед тобой не строка в таблице, а объект приложения со всеми его методами. В моих Go-проектах такой консоли не было, оставался psql, и то если он добавлен в образ. Данные посмотреть можно, запустить операцию приложения нельзя. А вопрос обычно именно такой: почему для это…

  • суббота, 3 октября 2026 г. в 00:00:08