Category : golang

golang
Почему мы перестали собирать персональную ленту SQL-запросами

Представьте пользователя, который подписан на несколько сотен тегов. Каждый раз, когда он открывает приложение, персональная лента должна собраться за десятки миллисекунд. На первый взгляд задача решается обычным SQL-запросом с несколькими JOIN. Мы тоже начали именно с этого подхода.Но когда количество пользователей, подписок и публикаций выросло до миллионов, даже хорошо оптимизированные запросы перестали укладываться в требования по скорости. Тогда мы отказались от сборки ленты «на лету» и на…

  • воскресенье, 23 августа 2026 г. в 00:00:04
golang
Почему O(1) проигрывает O(n): структуры данных в Go на реальном железе

Объясню структуры данных через очередь в поликлинике, а потом покажу, где эта аналогия ломается: почему связный список с «вставкой за O(1)» в прикладном Go обычно проигрывает обычному массиву.Спойлер: асимптотика здесь не ошибается. Ошибается вывод, который мы из неё делаем.Статья для тех, кто асимптотику знает, но не проверял её замером.ОчередьСидишь в очереди к врачу. Номерка нет, ты знаешь одно: за кем занимать.Это связный список. У элемента ссылка на следующего, и больше ничего:type patient…

  • суббота, 22 августа 2026 г. в 00:00:17
golang
MCP для Juggler на Go

MCP for Juggler on GOВступлениеИИ-агенты уже не просто отвечают на вопросы - они действуют. Они открывают страницы, читают разметку, кликают по кнопкам, заполняют формы и делают скриншоты. А самый быстрорастущий способ дать агенту руки - это Model Context Protocol (MCP), открытый стандарт, который превращает браузер в набор инструментов, вызываемых любым ИИ-клиентом.Браузерная половина задачи в Go уже была решена. Пакет go-https://github.com/yvv4git/go-juggler принёс стек автоматизации Camoufox…

  • суббота, 22 августа 2026 г. в 00:00:16
golang
Мой первый KitRover: попытка сделать машинку с управлением по сети. (часть 1)

Данная статья берет свое начало из статьи (Покрути это колесо).ВступлениеПосле первой удачной попытки покрутить колёсами, о которой писал в предыдущeй статье, я начал думать о том, какой я хочу видеть свою сборку: из чего собирать, чем управлять, как делиться. И на тему последнего у меня две мысли...План проектаОсновные требования к проектуВозможность собрать ровер из готовых модулей, которые можно найти на известных площадках. Требования в электронике на уровне соединения проводов, чтобы мог с…

  • суббота, 22 августа 2026 г. в 00:00:15
golang
Горутины изнутри, часть 2

Это вторая часть серии про горутины и рантайм Go. В ней три сюжета: стек, который переезжает по памяти как квартирант; вытеснение, которое прилетает сигналом операционной системы; и полный жизненный цикл горутины, который дословно объясняет каждую строку дампа паники. Первая часть рассказывала, почему потоки ОС дорогие и как Go дошел до схемы GMP: она не обязательна, но там завязка всей истории.План серии:Почему потоки ОС не масштабируются и как Go придумал GMPПереезжающий стек, сигнал SIGURG и…

  • суббота, 22 августа 2026 г. в 00:00:14
golang
Go 1.27: generic-методы, которых не видит reflect

У Box[int] два метода. reflect видит один.type Box[T any] struct{ v T } func (b Box[T]) Value() T { return b.v } func (b Box[T]) Map[U any](f func(T) U) Box[U] { return Box[U]{v: f(b.v)} } go: go1.27rc3 chain: value=42 reflect NumMethod: 1 method: Value func(main.Box[int]) int Метод с собственным тип-параметром, независимым от ресивера, — главное языковое изменение Go 1.27 (пока rc3, ноты в статусе draft, финал обещают в августе). Box[int] теперь превращается в Box[string] прямо в цепочке …

  • пятница, 21 августа 2026 г. в 00:00:26
golang
Access‑token в переменной, refresh — в HttpOnly‑cookie: безопасная авторизация на Go + Vue 3

Тема хранения токенов — одна из самых больных в авторизации. Многие, не до конца понимая, как авторизация должна работать, кладут оба токена в cookie или — что ещё хуже — в localStorage. В этой статье мы соберём схему, в которой access‑token живёт в памяти приложения, refresh‑token — в HttpOnly‑cookie, а фронтенд сам восстанавливает сессию после перезагрузки страницы и незаметно обновляет протухший access.Бекенд — на Go, фронтенд — на Vue 3 (Vuex + vue‑router + axios), но концепция так же приме…

  • пятница, 21 августа 2026 г. в 00:00:24
golang
Самое интересное в новой версии Go — 1.27

Всем привет! Меня зовут Паша Агалецкий, я техлид команды платформы разработки Авито. В этой статье я расскажу о новой версии Go — 1.27. Я выбрал для вас самые интересные фичи — те, что влияют на код или дают новые по-настоящему полезные инструменты.Кстати, у этого материала есть видео-версия. Вы можете ознакомиться с обновлением Go, посмотрев мой обзор на YouTube, VK Видео или RuTube СодержаниеGeneric methods — дженерики добрались до методовPromoted fields в struct literalsУлучшенный type infer…

  • пятница, 21 августа 2026 г. в 00:00:23
golang
Read‑only by construction: почему инструкции — не граница безопасности для AI‑агента в Kubernetes‑к…

Всё чаще встречаю такую схему: берём LLM, даём ей доступ к kubectl или k8s API, в system prompt или подключённом skill‑е пишем что‑то вроде «ты можешь только читать, ничего не удаляй и не изменяй», и считаем вопрос закрытым. Прошёл через это сам и в какой‑то момент понял, что это не граница безопасности, а вежливая просьба.Это не гипотетический риск: вы наверняка помните, как в июле 2025 агент Replit удалил базу данных SaaStr, несмотря на прямой запрет что‑либо менять — не Kubernetes и не MCP, …

  • четверг, 20 августа 2026 г. в 00:00:16