RU

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

Tool calling позволяет LLM не только отвечать на вопросы, но и предлагать действия в backend. Но валидный вызов функции ещё не означает, что операци…

GoGolangLLMtool callingfunction callingprompt injectionauthorizationmulti-tenantbackend securityAI agents
Habr
RU

HTTP-запрос закончился, а LLM ещё работает: как проектировать AI-задачи на Go

Обычный Go backend привык отменять работу вместе с HTTP-запросом. Но если пользователь закрыл вкладку посреди анализа документа, это ещё не означает…

GoGolangLLMcontext.ContextPostgreSQLbackground jobsidempotencydistributed systemsAI SaaSbackend architecture.
Habr
RU

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

sync.Pool легко принять за простой способ снизить аллокации: бенчмарк показывает ускорение, код уезжает в прод — а там пул внеза…

sync.PoolGoGolangсборщик мусораGCуправление памятьюпрофилированиеоптимизация производительностибенчмаркиGOMAXPROCS
Habr
RU

Почему юридический AI‑сервис нельзя строить как обычный чат: проектируем case‑first SaaS на Go

Несколько месяцев назад мне понадобилось заключить договор с Леноблводоканалом. Казалось бы, обычная бюрократическая задача: отправил документы, пол…

GoGolangLLMAISaaSRAGPostgreSQLархитектураюридический AIобработка документов
Habr
RU

Валидатор не нашёл поле is_admin, а Go его нашёл: пять ошибок при работе с JSON

Один и тот же JSON может привести систему к разным выводам. Валидатор пропустит поле, которое Go‑сервис спокойно прочитает, nil ‑слайс пре…

GoGolangJSONAPIbackendмикросервисывалидация данныхсериализациябезопасность приложенийразработка ПО
Habr
RU

Наблюдаемость: где на самом деле теряются миллисекунды

Как собрать трассы без правки кода через eBPF, превратить их в метрики по медленным запросам и не принять смену методики за регрессию. Разбираем три…

ПроизводительностьМикросервисыDevOpsGolangOpenTelemetryGrafanaСтатьи
Tproger
RU

Producer-Consumer на Java, Go и Rust: одна задача и три уровня решения

Три уровня решения задачи производителя и потребителя: BlockingQueue в Java, каналы в Go и очередь без блокировок на Rust. Разбираемся, какой уровен…

JavaМногопоточностьGolangRustПаттерны проектированияПотоки и блокировкиСтатьи
Tproger
RU

Tailscale выпустила tailcat: соединить две машины через NAT без аккаунта и tailnet, адрес машины — её ключ

Tailscale открыла tailcat, CLI и Go-пакет, который соединяет две машины за NAT через WireGuard и DERP без аккаунтов, tailnet и IP-адресов. Как это р…

Open SourceСетевые протоколыИнструменты командной строкиDevOpsGolangНовости
Tproger
RU

Fluent Swap: как я вышел за пределы CRUD и начал разрабатывать matchmaking на Go

Большинство backend‑проектов начинаются предсказуемо: HTTP‑запрос, бизнес‑логика, SQL и ответ клиенту. Но что изменится, если вместо очере…

GoGolangwebsocketmatchmakingbackendredisконкурентностьархитектура
Habr
RU

Разработчику нужно знать семь языков. Python, Go и Java в этот список не входят

Бывает так: код хороший, задачи закрыты, к технической части претензий нет. Но и повышения тоже нет. Или идею не взяли. А на интервью — отказ без вн…

GolangJavaPythonCEOCTOкарьера программистафакапы
Habr
RU

Go без мифов: переход с C++, highload, рынок, зарплаты и путь разработчика — интервью с Владимиром Балуном

Go часто называют простым языком. Но простота синтаксиса не отменяет конкурентности, рантайма, сборщика мусора, интерфейсов, особенностей памяти и р…

GoGolangC++highloadгорутиныObservabilitybackendмикросервисыкарьера разработчикапереход на Go
Habr
RU

JSX для Go: как маленькая разметка потянула за собой рантайм, компилятор и кучу компромиссов

Я не начинал с идеи написать «убийцу JavaScript». Честно говоря, такие заявления обычно только мешают думать. Сначала была гораздо бо…

GoGolangWebAssemblyWASMJSXfrontendUIкомпиляторopen sourceGoFrame
Habr
RU

Rust, Go или Zig: как выбрать язык для высоконагруженного бэкенда в 2026 году

Сравниваем Rust, Go и Zig для высоконагруженных сервисов: производительность, сложность, экосистема и реальные кейсы миграции. — Читать дальше « Rus…

Языки программированияПроизводительностьGolangRustВысокие нагрузкиБэкендАрхитектура приложенийСтатьи
Tproger
RU

IPv6-зоны в URL: почему Go падает на fe80::%eth0 и как это чинить

Разбираем, как IPv6 link-local адреса с зонами ломают парсинг URL в Go, nginx и Python. Почему % нужно кодировать как %25 по RFC 6874 с 2013 года. У…

ИнтернетLinuxOpen SourceВеб-разработкаЯзыки программированияСетевые протоколыGolangСтатьи
Tproger