Category : golang

golang
Tool calling в Go: почему вызов модели ещё не разрешение выполнить команду

С tool calling у LLM появляется возможность не только отвечать на вопросы, но и вызывать функции нашего приложения. Можно дать модели доступ к поиску заказов, проверке платежей, созданию документов или изменению настроек.Интеграция на первый взгляд довольно простая. Передаём модели описание функций, получаем название инструмента и аргументы, проверяем JSON и вызываем нужный обработчик.Но здесь есть проблема. Валидный tool call ещё не означает, что операцию вообще разрешено выполнять.Чтобы разоб…

  • вторник, 20 октября 2026 г. в 00:00:18
golang
Как один сервер на Go держит 2500 бойцов в браузерной драке

стенка на стенкуЯ делаю Brawl Town - браузерную драку в духе Final Fight и Streets of Rage. На одной улице дерутся игроки и боты. Установки и регистрации нет: достаточно открыть игру и выбрать ник. Проект разрабатываю один.Мне хотелось понять, сколько бойцов можно обсчитывать в одном процессе на обычном ПК. В текущем нагрузочном тесте i7-7700K выдерживает 2500 подключённых клиентов на улице шириной 3600 px: тик занимает 28–31 мс при бюджете 50 мс. Если собрать всех на одном экране, время выраст…

  • понедельник, 19 октября 2026 г. в 00:00:13
golang
YPtun

Xray, sing‑box, WireGuard и DNS‑туннель в одном процессе: как устроен YPtun изнутриПроект начинался как Olcbox, маленький конфигуратор для одного экспериментального транспорта. Следы того времени до сих пор живут в коде: версия передаётся в Gradle флагом -Polcbox.version, пакеты называются org.olcbox.app, а главный сервис называется OlcboxVpnService. Переименовывать всё это ни у кого не поднимается рука, и ниже будет понятно почему: одно только переименование applicationId заняло два релиза.Сей…

  • понедельник, 19 октября 2026 г. в 00:00:12
golang
Возвращение в прошлое, которого у нас ещё не было

Интернет когда-то выглядел иначе. До бесконечных лент, рекомендательных алгоритмов и личных брендов существовали BBS, локальные сети, IRC, форумы и имиджборды. Пользователь приходил туда не ради собственного профиля, а ради темы, разговора или случайной встречи с незнакомым человеком.У этих систем было много ограничений. Соединение могло быть медленным, интерфейс — текстовым, а навигация — целиком клавиатурной. Но именно ограничения часто делали общение более прямым. На экране не было десятка у…

  • понедельник, 19 октября 2026 г. в 00:00:11
golang
ccswap: переключаю Claude Code между своими подписками без прокси и перезапуска

У меня несколько своих подписок Claude, и Claude Code работает почти весь день: я пишу сам, параллельно крутятся агенты. Пятичасовой лимит заканчивается в самый неудобный момент, недельный — задолго до конца недели. Дальше всё одинаково: открыть терминал, выйти, залогиниться другим аккаунтом в браузере, вернуться в сессию и вспомнить, на чём остановился. В какой-то момент мне надоело делать это руками.Так появился ccswap — демон на Go для macOS и Linux. Когда текущий аккаунт подходит к лимиту (…

  • воскресенье, 18 октября 2026 г. в 00:00:08
golang
GoOS: от любопытства к собственному ядру

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

  • суббота, 17 октября 2026 г. в 00:00:16
golang
Доставка пива, алгоритм «Октагон» и поиск компании в EDGE: какие архитектуры придумали на Avito Gri…

Обычно на митапах всё довольно предсказуемо: доклады, слайды, кофе-брейк и немного общения между ними. Но в прошлом году мы решили перевернуть привычный формат — собрать Go-сообщество и побрейнштормить архитектуру. Активность была похожа на System Design, но с фаном и мясом!Так появился Avito Grill & Go. Формат зашёл настолько, что участники попросили повторить. И мы подумали: а почему бы не привезти его в Петербург?В этот раз собрали 130 Go-разработчиков во дворике Union Bar и разделили их…

  • суббота, 17 октября 2026 г. в 00:00:16
golang
Genoas — ещё один генератор OpenAPI 3.1 для Go

Всем привет!Меня зовут Егор, и я уже несколько лет пишу на Go.Сегодня я хотел бы представить свой небольшой проект по генерации свагера для Go‑проектов.С чего всё началосьКогда я работал в банке, у нас были жёсткие требования: API бэкенда должно быть досконально описано. Паттерны для строк, максимальная/минимальная длина и так далее. Но главное — спецификация должна была быть версии не ниже 3.0.К сожалению, подходящих библиотек на тот момент было не то чтобы много. Я уже не говорю о том, подход…

  • суббота, 17 октября 2026 г. в 00:00:13
golang
В 39% игр в Тайного Санту двое дарят друг другу. Считаем жеребьёвку как следует

Раздать имена в Тайном Санте — задача на пять строк: перемешал список, проверил, что никто не достался сам себе, готово. Я так и думал, пока не посчитал. При таком способе почти в четырёх играх из десяти найдутся двое, которые дарят друг другу, и это не баг реализации, а свойство случайных перестановок.Я делаю сервис для Тайного Санты (My Santa), и жеребьёвка в нём — те самые пять строк, которые разрослись до ста тридцати. Ниже — почему разрослись, как устроены и какой перекос я нашёл в собстве…

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