Category : golang

golang
От Bash к Go: как «просто бэкап 1С» превратился в отдельную утилиту

В программировании на Go я пока новичок.Поэтому, как любой уважающий себя разработчик, я решил начать с самого безопасного занятия — переписать на Go то, что уже несколько лет нормально работает на Bash.Зачем?Потому что один сервер — это Bash‑скрипт.Два сервера — уже Bash‑скрипт плюс его копия с немного другими настройками. А когда появляются Linux, Windows, PostgreSQL, MS SQL Server, файловые базы, сетевые файловые базы и разные требования к срокам хранения резервных копий, начинается самое ин…

  • среда, 14 октября 2026 г. в 00:00:14
golang
HTTP-запрос закончился, а LLM ещё работает: как проектировать AI-задачи на Go

Когда пишешь обычный HTTP API на Go, использование context.Context быстро становится привычкой.Пришёл запрос, получили r.Context(), передали его в сервис, затем в репозиторий и во все внешние вызовы. Если клиент отключился или истёк таймаут, связанные операции отменяются.Для большинства backend-задач это именно то поведение, которого мы хотим.Зачем продолжать выполнять SQL-запрос, если результат уже некому возвращать? Зачем держать соединение с внешним API, если пользователь закрыл страницу?Но …

  • вторник, 13 октября 2026 г. в 00:00:04
golang
Как я решал leetcode задачу

ПредисловиеДля начала стоит прояснить что я не просто так от нечего делать открыл leetcode и начал решать задачки. Такое решение пришло после не очень удачных собеседований, задачи на которых я хоть и решил, но со скрипом и потратив гораздо больше времени чем рассчитывал интервьювер. Конечно же это не удовлетворило его, особенно учитывая большую плотность кандидатов на должность.Сам же я давно в IT и в том числе проводил много собеседований, стараясь избегать leetcode задач, просто потому что с…

  • понедельник, 12 октября 2026 г. в 00:00:04
golang
Я написал 61 тест для AI-ментора. Потом выяснилось, что тестам тоже нельзя верить

Репетитора не нанимают по резюме. Ему дают тетрадь реального ученика и смотрят не на то, знает ли он ответ, а на то, где он остановится. Подскажет, в какой строке ошибка, или перепишет задачу за ученика? Скажет «не знаю, давай проверим» или уверенно додумает?Месяц назад я встроил в свою учебную платформу AI-ментора: он видит уроки, прогресс студента и его последнюю попытку по заданию. Чтобы не выбирать модель и не править промпт по ощущениям, я собрал стенд из автоматических проверок и начал пр…

  • воскресенье, 11 октября 2026 г. в 00:00:10
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