Как мы делаем Яндекс
3.38K subscribers
571 photos
5 videos
669 links
Сотрудники Яндекса каждый день решают технологические задачки.

В нашем блоге они делятся с сообществом опытом и знаниями.
Download Telegram
Как мы создаём HD-карты для автономного транспорта: устройство map-editor

Создание HD‑карт для автономного транспорта — непростая инженерная задача. Такие карты способны описывать окружающий мир с десятками слоёв атрибутов и точностью до сантиметров. Каждая HD‑карта складывается из данных лидаров, спутников и других источников, проходит десятки стадий обработки и валидации, а для редактирования используются специальные геоинформационные редакторы.

Николай Красько, руководитель группы разработки геосервисов автономного транспорта, рассказал, как устроен один из ключевых инструментов — map‑editor. Среди технологий — FastAPI и C++ для серверной логики, PostgreSQL с PostGIS для работы с геометрией, интеграция с облачными хранилищами и распределёнными вычислениями, а также элементы автоматизации на базе ML.

#статья
4👍4🔥3
Код-гольф в Яндексе: как нерды развлекаются

Что такое код-гольф? Это соревнование, в котором надо решить задачу по программированию (как правило, несложную), используя наименьшее количество символов. Особенность таких задач состоит в том, что у них довольно низкий порог входа: решение можно написать с мобильника и оно будет занимать 10 строк. Но при этом есть большая сложность: чтобы избавиться от какого-то символа, в этом соревновании приходится идти на такие ухищрения, что мама не горюй.

Павел Сухов, ведущий разработчик Яндекс Доставки, рассказал историю появления соревнования по код-гольфу на внутренних ивентах команды, а затем и на конференциях Яндекса, а также разобрал решения задач.

#статья
👍10🔥107😍3
SPQR — наше опенсорс-решение для горизонтального масштабирования Postgres

Шардирование для PostgreSQL — это боль. Нативной поддержки горизонтального масштабирования для этой СУБД всё ещё нет, и как только сервисы достигают пределов одного экземпляра PostgreSQL, начинается «танец с бубном». Особенно остро это ощущается при росте нагрузки: OLTP-нагруженные сервисы легко упираются в лимиты одной базы.

Команда платформы данных Yandex Cloud пыталась решить эту проблему для своих проектов — а в итоге создала опенсорс-решение SPQR (Stateless Postgres Query Router). В новой статье один из авторов проекта Денис Волков рассказывает, как пришли к решению с лёгким прокси-роутером между шардами, как решаются проблемы балансировки и трудности при миграциях, а также делится планами развития решения.

#статья
🔥11👍7❤‍🔥5
Как виртуальная очередь заказов в Такси помогает уехать в пиковый спрос

В часы пик или после концертов и спортивных матчей найти такси становится непросто: спрос кратно превышает предложение, пользователи начинают делать мультизаказы, что лишь усиливает нагрузку на систему.

Эта проблема не только ухудшает клиентский опыт, но и мешает работе алгоритма распределения водителей. В такие моменты важно, чтобы процесс поиска машины был максимально прозрачным и предсказуемым.

Алексей Чубуков, аналитик из команды поиска и назначений водителей в Яндекс Такси, рассказал, как команда реализовала виртуальную очередь заказов: зачем понадобился этот механизм, как он встроен в инфраструктуру поиска, как работает на базе шардированного Redis и учитывает геозоны и время ожидания и как помогает пользователям.

#статья
👍65👌4🔥2😱1
Итоги встречи ISO C++ на Гавайях: начинаем полировку стандарта С++26

Антон Полухин из Техплатформы Городских сервисов Яндекса вновь принял активное участие во встрече Международного комитета по стандартизации языка программирования C++. Это была первая из встреч, связанных с «полировкой» C++26. Другими словами, новые фичи C++ пока не появятся — комитет должен только проработать замечания всех участников.

Однако от плана немного отступили и втащили некоторые новинки как ответы на пожелания участников комитета: std::integer_sequence оброс новой функциональностью, а std::format научился в constexpr. Помимо этого, поправили множество багов, перековыряли связку Hardening + Contracts, внесли улучшения во многие части стандартной библиотеки.

#статья
👍6🔥4🏆31😍1
+30% к скорости написания автотестов и сотни чек-листов в день: как мы внедряем LLM в QA

Чем сложнее разработка, тем больше нагрузка на тестирование. Рутинные операции — составление чек-листов, подготовка сценариев, написание однотипных автотестов — съедают всё больше времени.

Автор статьи — Владислав Миронов — делится на Хабре практическим опытом внедрения LLM в QA: от генерации чек-листов и автотестов до построения централизованной экосистемы и организации процессов для десятков команд. Делится не только успехами, но и тем, какие компромиссы и организационные решения понадобились, чтобы всё это заработало.

#статья
👍64👌2🤔1
Как мы учим Яндекс Карты предупреждать о манёврах: без использования LLM, но с помощью водителей

Что может быть проще, чем сгенерировать голосовую подсказку для навигатора? Считаем угол поворота — озвучиваем манёвр. Именно так годами работала система в Яндекс Картах, пока не обросла таким количеством эвристик , что её поддержка стала дороже разработки. Добавление нового правила для одной страны ломало логику в другой, а простая задача «отличить плавный изгиб от поворота» превращалась в детектив.

Дмитрий Шалыга, руководитель ML-разработки в команде автонавигации Яндекс Карт, поделился историей полного переосмысления системы генерации дорожных аннотаций: почему решили отказаться от десятков хитрых условий в коде, а также почему заманчивая идея отдать всё на откуп большим нейросетям провалилась, и как в итоге пришли к элегантному решению.

#статья
👍72🔥2🤯2
Как Temporal без боли решает привычную проблему распределённой бизнес-логики

Долгоживущая бизнес-логика и обработка заказов в распределённых системах — вечная проблема. Раньше для её решения требовались стейт-машина с полудюжиной состояний, очереди и воркеры, обработчики на каждое событие и блокировки от race conditions. Но всё это вполне реально описать в одной функции, которая вообще выглядит как псевдокод.

Бэкенд-разработчик платформы Яндекс Еды Михаил Иглицкий делится опытом работы с платформой Temporal: почему её выбрали как основу нового процессинга, в чём её сильные стороны, и как изменилась жизнь разработчиков после перехода.

#статья
👍4🔥31👌1
Очереди на PostgreSQL: антипаттерн или реальность жизни

В мире высоконагруженных систем бывает, что готовые брокеры, вроде Kafka или RabbitMQ, не подходят: нужны сложная приоритизация, гибкое отложенное выполнение и свой подход к перегрузке. Тогда очередь на PostgreSQL становится вынужденным, но мощным решением — если учесть все подводные камни.

Этот путь подробно разбирает Дмитрий Кривопальцев, тимлид бэкенд‑команды Яндекс Диска. В статье — подробное описание архитектуры очереди на PostgreSQL и лучшие практики для сценариев с сотнями миллионов задач. А ещёи ответ на вопрос: где стоит изобретать своё, а где использовать готовые брокеры.

#статья
👍6🔥54
Не Кафкой единой: как наладить асинхронный обмен сообщениями между микросервисами

Когда обычные брокеры сообщений не дают нужной гибкости для отложенных задач, точного контроля времени исполнения и кросс-сервисной интеграции, приходится придумывать свои решения. STQ (Sharded Tasks Queue) родилась как ответ на задачи, которые стандартная парадигма message queue решает неудобно.

Сергей Бунатян, руководитель службы в Техплатформе Яндекса, рассказывает о создании и принципах STQ, сравнивает архитектурные подходы, а также объясняет, как STQ помогает бороться с метастабильными фейлами и обеспечивает наблюдаемость и масштабируемость для тысяч микросервисов и десятков тысяч задач в секунду.

#статья
👍5🔥31🤯1
Техрепорт Alice AI: как мы создавали новое поколение моделей для самого популярного ИИ-ассистента в России

Сегодня мы делимся настоящим лонгридом, в котором разобран полный цикл создания нового семейства моделей Alice AI: базовая текстовая Alice AI LLM и специализированная LLM Search, мультимодальная Alice AI VLM и картиночная Alice AI ART.

Недавно все эти модели и решения легли в основу нашего нового ИИ-ассистента.

#статья
🎉16🔥8🤩8
Client Hints: разбор технологии, которая заменит User-Agent

Когда вы заходите на сайт, ему нередко нужно знать, какой у вас браузер и устройство. Это помогает показывать подходящую версию страницы, например, мобильную или полную, а также включать только те функции, которые может поддерживать ваш браузер. Раньше для этого использовали громоздкий User-Agent, что влияло на развитие веба. Client Hints предлагает другой подход: вместо того чтобы сразу раскрывать всю информацию, браузер передаёт только те данные, которые действительно нужны сайту.

Степан Демидов из команды Яндекс Браузера рассказал о том, как мы переходим от устаревшего User-Agent к современной технологии Client Hints. В статье он объяснил, почему User-Agent стал проблемой, как работают хинты под капотом и какие перспективы у перехода на новую технологию.

#статья
4👍3🔥1👌1
Опенсорс-библиотека Implicits от Яндекс Браузера: новый шаг в передаче зависимостей Swift

Синглтоны усложняют тестирование и жизнь с несколькими контурами. DI‑контейнеры часто прячут ошибки до рантайма и замедляют сборку. Ручное прокидывание параметров даёт контроль, но за него приходится платить толщиной сигнатур и болью при каждом рефакторинге.

Альфред Зиен, руководитель группы iOS-разработки в Яндекс Браузере, предложил другой баланс и выложил в открытый доступ Implicits — библиотеку implicits‑параметров на чистом Swift. С её помощью зависимости объявляются локально через @Implicit, передаются по стеку одним ImplicitScope, а специальный анализатор на этапе сборки строит граф вызовов и гарантирует, что нигде не забыли нужный контекст. Так удалось сохранить гибкость обычного кода и при этом радикально уменьшить шум в больших модулях.

#статья
🔥5👍21
Один чат, чтобы править всеми: собрали библиотеку для ИИ-ассистентов на базе Gravity UI

С ростом популярности ИИ-помощников всё больше команд подключают чат-боты к своим сервисам. Интерфейс большинства из них решает примерно одинаковый набор задач: правильная организация стриминга ответов, аккуратное отображение сообщений и обработка ошибок. Но у этих задач есть несколько путей решения с разным UX, и разработчикам порой приходится изобретать велосипед.

Илья Ломтев, старший разработчик Foundation Services в Yandex Cloud, рассказывает, как с этой проблемой столкнулась его команда, — и это привело к объединению накопленных практик в опенсорс-библиотеку AIKit для дизайн-системы Gravity UI. В новой статье показали устройство библиотеки и попробовали собрать новогодний интерфейс.

#статья
👍54🔥2👌2
Как я нашёл уязвимость в JavaScript-движке, или Почему корень из нуля чуть не сломал браузеры

Сколько будет корень из нуля? Даже школьник ответит не задумываясь: ноль. Но если задать этот вопрос JIT‑компилятору Maglev внутри движка V8, то при определённых обстоятельствах он сначала скажет: «ноль», а потом решит сэкономить на проверке безопасности и отдаст злоумышленнику доступ к памяти браузера.

Паша Кузьмин занимается практической безопасностью Яндекс Браузера и проекта Chromium. В своей статье он рассказал у про CVE-2025-9864 — уязвимость, которую нашёл в движке V8. Это история о том, как безобидный Math.sqrt(0) превращается в use‑after‑free, а затем в произвольное чтение и запись памяти.

#статья
🔥11👍62
Тепловизор для разработчика: подсвечиваем рекомпозиции прямо в коде

Иван Кузнецов, Android‑разработчик в Кинопоиске, уже писал, как он научил Jetpack Compose показывать рекомпозиции в реальном времени, но это был скорее учебный стенд: куча модификаторов, обёрток и примеры, которые нужно готовить вручную. Он хотел, чтобы IDE сама показывала, какие composable-функции перерисовываются прямо сейчас, а какие скипаются и какие параметры реально меняются. Нажал Run — и редактор превратился в живую тепловую карту UI.

Так появился Riflesso — плагин, который переносит идею Layout Inspector прямо в редактор кода и делает Compose прозрачным. В статье Иван разобрал его архитектуру и показал, как компилятор, клиентская библиотека и плагин IDE собираются в один инструмент.

#статья
🔥8👍41
Обучаем ML-модели и запускаем batch-инференс на YTsaurus, как в Яндексе

Машинное обучение требует дорогостоящих вычислительных ресурсов, и специалистам по ML важно использовать их эффективно. Однако планирование задач для GPU заметно отличается от CPU: в ML одну и ту же GPU, как правило, нельзя использовать совместно. Некоторые задачи требуют всего один процессор, другим нужно сразу несколько, а некоторым — целый хост со всеми доступными на нём GPU.

Алексей Архипенко из группы разработки ML-инфраструктуры в Yandex Infrastructure рассказывает, как для подобных задач пригодился YTsaurus — платформа для хранения и обработки данных в Яндексе, также доступная в опенсорсе. В новой статье на примере типовых ML-сценариев показываем, как можно развернуть кластер YTsaurus у себя и снизить операционные издержки в задачах планирования batch-инференса.

#статья
👍7🔥51🎉1
Нейрометеум: наша нейросеть глобального прогноза погоды и её вклад в модель прогноза осадков

Прогноз осадков — один из самых сложных вызовов для глобальных моделей погоды. Полтора года назад команда Яндекс Погоды решила рассмотреть новый подход к прогнозу погоды, лежащий на стыке фундаментальной науки и современных достижений в области нейросетей. И теперь мы стали первыми, кто поборол основные проблемы прогноза накопленных глобальных осадков, сравнявшись в качестве с численными моделями.

Павел Анисимов из команды Яндекс Погоды поделился первыми осязаемыми результатами крайне увлекательного исследования. Он рассказал о создании и внедрении собственной глобальной нейросетевой модели: как решали проблему прогнозирования осадков с часовым шагом, почему понадобились новые функции потерь, нормировки и архитектурные хитрости, чем это решение отличается от Google GraphCast, Microsoft Aurora или WeatherNext2.

#статья
5👍5😍4
Чему меня научила разработка C#-клиента для распределённой СУБД Яндекса

Кирилл Курдюков из команды YDB рассказывает, как под капотом работает ADO.NET, почему управление пулом сессий может сильно влиять на ваш код работы с базой данных и какой стратегии обработки ошибок можно придерживаться для разработки отказоустойчивых сервисов.

Статья будет полезна тем, кто изучает особенности взаимодействия в распределённых системах или просто хочет научиться лучше писать клиентский код, работающий с современными распределёнными системами.

#статья
6👍3🔥3👌1😍1
Что почитать на праздниках: топ-10 статей в блоге Яндекса на Хабре за 2025 год

🔵🔴🟡🔵🔴🟡🔵🔴🟡🔵🔴🟡🔵🔴🟡

Год близится к концу, в воздухе витает запах мандаринов и ёлки, в холодильнике появляется то, что нельзя трогать. Впереди долгие праздничные выходные. И чтобы они точно прошли с пользой, делимся списком топ-10 статей в нашем Хаброблоге за 2025 год — как раз будет время их почитать, если до этого не хватало времени :)

1️⃣ Редизайн Яндекс Карт: почему мы перекрасили дороги

В июне мы обновили внешний вид Яндекс Карт. Одно из главных изменений затронуло отображение дорог: они обзавелись детальной разметкой и сменили привычный жёлтый цвет на серый — как в реальной жизни.

2️⃣ Как починить Теслу и спасти праздничное настроение

Когда каникулы инженера омрачены поломкой любимого электрокара, история рискует превратиться в настоящее техническое расследование.

3️⃣ Perforator: новая система непрерывного профилирования теперь в опенсорсе

В январе мы выложили в опенсорс Perforator — систему непрерывного профилирования, которую используем внутри Яндекса для анализа производительности большинства сервисов.

4️⃣ Сбой с вероятностью один раз в 20 лет: о мартовском инциденте в дата-центре

30 марта оказались недоступны сервисы, размещённые в одном из основных дата‑центров Яндекса. К инциденту привела авария на опорной подстанции.

5️⃣ Как не получилось сделать PostgreSQL лучше (и почему это нормально)

Один из разработчиков поделился опытом предложений по доработке PostgreSQL: от первого сообщения в pgsql‑hackers и до статуса Major Contributor в проекте PostgreSQL.

6️⃣ Горыныч: как и зачем мы создали свой мощный USB-хаб

Познакомили Хабр с уникальным девайсом —многофункциональным USB-хабом, который разработали инженеры из команды Умных устройств.

7️⃣ Запустили векторный поиск в YDB: рассказываем, как он работает

В июле в YDB появился векторный поиск — точный и приближённый. С их помощью можно быстро находить похожие данные среди миллионов или даже миллиардов эмбеддингов.

8️⃣ Как мы создавали первую портативную умную колонку Яндекса

Рассказали исчерпывающую историю разработки первой портативной колонки с Алисой — Станции Стрит. В процессе её создания было принято много интересных технических решений.

9️⃣ Встречаем YandexGPT 5 — в Алисе, облаке и опенсорсе

В феврале мы запустили новое поколение наших больших языковых моделей — YandexGPT 5. Рассказали о всех тонкостях работы над LLM.

1️⃣😐 Встреча ISO C++ в Софии: С++26 и рефлексия

Традиционный отчёт со встречи Международного комитета по стандартизации языка программирования C++. Это была последняя встреча, на которой новые фичи языка ещё могли попасть в C++26.
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥3😍2