Обновить
128K+
Яндекс
Как мы делаем Яндекс
748,05
Рейтинг
275 634
Подписчики
Сначала показывать

userver 3.0 — большой релиз фреймворка для IO‑bound‑программ, переход на C++20

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели8.7K

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. После большого релиза 🐙 userver прошло почти два года. За это время мы обзавелись большим количеством внешних пользователей — международных и российских. При этом и количество внутренних пользователей подросло: в Городских сервисах Яндекса появились стни новых сервисов на userver. Функциональность Такси, Еды, Лавки, Доставки, а также Маркета, Финтеха, Фантеха, Электро и Техплатформы обогатилась новыми возможностями и новыми пользователями. А значит, фреймворк стал ещё надёжнее и оттестированнее.

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

Что нового в userver?

Полезные ссылки

Миллиард записей и 8 Марта: как YDB спас праздник

Время на прочтение15 мин
Охват и читатели13K
Всего голосов 67: ↑64 и ↓3+83
Комментарии9

Как мигрировать кусочек Яндекс Такси с PostgreSQL на YDB и перестать считать подключения к шардам

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели17K
Всего голосов 62: ↑61 и ↓1+77
Комментарии3

LLM Inside: выжимаем максимум из Decoder Attention на GPU

Время на прочтение11 мин
Охват и читатели15K
Всего голосов 54: ↑54 и ↓0+66
Комментарии4

The Xcode build system has crashed, или Почему рекурсия — это плохо. Используем swift‑build со своими патчами

Время на прочтение32 мин
Охват и читатели5K

Представьте ситуацию: вы работаете в огромном проекте, где количество модулей давно перевалило за тысячу. Вы решаете обновиться до свежего Xcode 26.2, ожидая прироста производительности, но вместо заветного «Build Succeeded» получаете молчаливое падение: SWBBuildService quit unexpectedly.

Всем привет, меня зовут Алексей Севко, я ведущий разработчик программного обеспечения из команды Delivery & Performance Яндекс Go. В этой статье я расскажу почти детективную историю о том, как:

— Искать иголку в стоге сена: когда падает закрытый бинарник Xcode.

— Стать контрибьютором swift-build: почему иногда проще переписать системный поиск макросов в swift-build, чем ждать фикса от Apple.

— Использовать свою версию билд-системы: как мы внедрили инфраструктуру прозрачной подмены компонентов Xcode через XCBBUILDSERVICE_PATH, чтобы не ждать релиза Xcode со Swift 6.3 и работать стабильно уже сегодня.

Если ваш проект тоже перерос стандартные инструменты Apple или вам просто интересно, как превратить рекурсию в итерацию и не сойти с ума от 45-минутных дебаг-сессий, — добро пожаловать под кат!

Читать далее

Анатомия SAP Privileges: как устроено управление правами в macOS

Время на прочтение13 мин
Охват и читатели7.3K

Всем привет! Меня зовут Булат Гафуров, я security-инженер в Яндексе. Сегодня я хочу подробно разобрать, как устроено Privileges — опенсорсное приложение для macOS, которое предназначено для быстрого и удобного управления правами администратора. Мы выясним, как взаимодействуют его компоненты, через что происходит обмен сообщениями и на чём строится доверие между процессами. А главное — разберёмся, почему вредоносным скриптам теперь станет сложнее повысить привилегии.

Читать далее

Как мы погрузились в теорию компиляторов и написали свой транслятор кода

Время на прочтение16 мин
Охват и читатели10K

Всем привет! Меня зовут Егор Ермаков, я бэкенд‑разработчик в группе разработки процессинга Техплатформы городских сервисов Яндекса.

Техплатформа — это инфраструктурная платформа для всех городских сервисов Яндекса: Такси, Еды, Лавки, Доставки, а также для различных шеринговых сервисов — каршеринга, зарядных станций, самокатов и других.

Один из ключевых сервисов нашей команды — ProcaaS (Processing as a Service). Он предназначен для асинхронного выполнения динамических сценариев. Подробнее о самом сервисе, его архитектуре и роли в сетке микросервисов Такси мы рассказывали в предыдущей статье. В этом материале я хочу поделиться опытом решения одной непростой и при этом очень интересной технической задачи, с которой мы столкнулись в рамках развития ProcaaS, а именно — рассказать, как мы написали свой транслятор кода.

Читать далее

Добавим приставку нейро: взгляд на интеграцию LLM в продукт со стороны фронтенда

Время на прочтение11 мин
Охват и читатели6.8K

Привет, это Андрей Мелихов, ведущий разработчик интерфейсов в Yandex Cloud. Я работаю в команде DataLens — BI‑системы для визуализации больших наборов данных на дашбордах и графиках. 

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

Читать далее

Как мы построили платформу агентов для Алисы AI — и почему пришлось написать сервер поверх Temporal

Время на прочтение9 мин
Охват и читатели11K

Агент «Исследовать» в Алисе AI может работать до 20 минут. За это время он успевает обойти десятки сайтов, запустить модели, вызвать инструменты — и сделать всё это параллельно на нескольких хостах. И если в середине цепочки что-то упадёт (а практика показывает, что если может упасть — когда-нибудь упадёт: релизы, сети, «луна не в той фазе»), агент должен уметь продолжить работу с того же места, а не начать всё заново, сжигая часы и LLM-токены. Ещё год назад никакой инфраструктуры для этого у нас не было.

Меня зовут Алексей Логинов, я ведущий разработчик в команде, которая отвечает за инфраструктуру нашего ассистента. В этой статье я покажу, какой путь мы прошли от наивного SDK до полноценной платформы Agent Transport System (ATS) — и как при этом упирались в различные ограничения и преодолевали их.

Читать далее

От линейного текста к семантическому графу: строим knowledge‑extraction‑пайплайн для учёбы

Время на прочтение22 мин
Охват и читатели9.4K

Меня зовут Аскольд Романов, я руковожу продуктовой командой в Яндекс Образовании. Сегодня я хочу поделиться историей своего проекта K2-18. Это опенсорс‑инструмент, который трансформирует учебный текст в семантический граф знаний с образовательными метриками. Я назвал его в честь экзопланеты, в атмосфере которой (предположительно) нашли водяной пар: тоже история про извлечение скрытой структуры из наблюдаемых данных. В этой статье — как устроен инструмент, какие решения за ним стоят и что с этим графом можно делать.

Моя основная задача в Образовании — внедрение AI‑технологий в образовательные процессы, и K2-18 вырос из этой работы напрямую. Мне нужно было решить конкретную задачу: как превратить учебный контент в структуру, с которой LLM сможет эффективно работать для построения различных образовательных сценариев.

Идея родилась не на пустом месте. Я закончил ВМиК МГУ и аспирантуру там же с научным фокусом на компьютерной лингвистике. Сейчас, когда LLM научились читать текст, понимать его структуру и контекст, оказалось, что знания, опыт и контекст текущей работы позволяют решить эту задачу системно. 

Конечно, семантические графы — это не новая идея. Но мне всегда хотелось сделать знания в учебных курсах действительно структурированными, а не скрытыми за линейными страницами учебника — так, чтобы и студенту, и преподавателю было легко ориентироваться и развиваться в своем темпе. По сути, это и есть один из продуктивных сценариев применения ИИ в образовании: помогать лучше структурировать знания и выстраивать более персонализированное обучение. 

Читать далее

Как мы потеряли 3500 ключей и вновь нашли их: локализуем приложение без ручного труда

Время на прочтение9 мин
Охват и читатели6.7K

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

Нам казалось, что в диспетчерской Яндекс Go всё под контролем. Потом мы запустили аналитический скрипт и выяснили, что 37% интерфейса частично не переведено и пользователи за рубежом видят винегрет из родного языка и дефолтного английского.

Я Ира Туманова, разработчик интерфейсов Яндекс Go. В этой статье расскажу про эволюцию контроля переводов: от ручного труда до автоматизации жизненного цикла ключей. Вы поймёте, почему важно не только настроить работу с переводами на старте проекта, но и отслеживать её качество на всех этапах, а также узнаете, какие маленькие хитрости способны избавить команду от внезапных «переводческих завалов».

Читать далее

TrustYFox: путь от пет‑проекта до LLM‑инструмента для поиска уязвимостей

Время на прочтение21 мин
Охват и читатели7.7K

Всем привет! Меня зовут Андрей, и я работаю в финтех‑направлении Яндекса. Руковожу службой разработки платёжных интерфейсов. Если вы пользуетесь сервисами Яндекса, то наверняка сталкивались с формами оплаты, вот большую их часть делают ребята из моей службы.

Сегодня я расскажу вам о TrustYFox — платформе для поиска уязвимостей в коде при помощи LLM, которую я создал своими руками. С практической точки зрения TrustYFox — это ещё один инструмент, который не заменяет существующие сканеры, а дополняет их, позволяя находить уязвимости.

Статья не претендует на научность или какой‑то RnD, да и я не являюсь экспертом в этих ваших LLM. По большей части это рассказ о том, как получилось (а в итоге получилось) за несколько месяцев пройти путь от прототипа до рабочего решения, в котором ежедневно запускаются аудиты. 

За прошедшие полгода разработки проекта были проверены различные концепции, написано, удалено и заново написано много кода, поэтому сначала расскажу, какой путь пройден, а после — про сам проект, что он умеет и где можно было сделать лучше.

Читать далее

С++26 — готов! Итоги встречи ISO C++ в Кройдоне

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели25K

Привет! На связи Антон Полухин из Техплатформы Городских сервисов Яндекса. На днях в Кройдоне состоялась встреча международного комитета по стандартизации языка программирования C++, в которой я принимал активное участие. В этот раз (как и в прошлый), всё внимание было сосредоточено на C++26 и… теперь он готов! Осталось пройти формальные этапы в вышестоящих инстанциях ISO, и мы получим C++26 который заслужили. В нём будут:

reflection,

контракты,

SIMD,

линейная алгебра,

расширенные возможности сonstexpr,

hardening,

Hazard Pointer и RCU,

#embed,

executors,

и многие другие полезные вещи.

Подробности и новинки

Как мы научили CatBoost находить борщевик на спутниковых снимках

Время на прочтение11 мин
Охват и читатели12K

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

Меня зовут Сергей Кукуруз, я руковожу ML‑проектами в центре технологий для общества Yandex Cloud. В этой статье расскажу, как мы совместно со студентами Школы анализа данных (ШАД), а также с движением добровольцев «СтопБорщевик» автоматизировали этот процесс с помощью машинного обучения. Мы подробно разберём технический пайплайн: от нормализации GeoTIFF‑файлов и извлечения признаков (индекс CIVE) до обучения модели в CatBoost.

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

Кому любопытно — добро пожаловать под кат!

Пакет yx_virtual_device: опенсорс‑инструмент для упрощения тестирования Flutter‑приложений

Уровень сложностиСредний
Время на прочтение22 мин
Охват и читатели6.4K

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

Для решения этой проблемы я написал пакет yx_virtual_device, который позволяет симулировать экраны различных устройств прямо во время разработки, не выходя из запущенного приложения. В этой статье — о том, что умеет этот пакет, как с ним работать, а также почему было сложно подружить его с Flutter и как в итоге это удалось сделать.

Читать далее

Новые способы хранения тайлов в Картах: как один сервер выдерживает 80k RPS

Время на прочтение22 мин
Охват и читатели8.1K

80k RPS и 25 Гбит/с трафика тайлов с одного сервера — звучит как мечта для картографического сервиса? На самом деле это реально — если ваш способ отдачи тайлов спроектирован для этого.

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

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

Читать далее

Моя волна — теперь и в офлайне. Рассказываем, как уместили рекомендательную систему в сотню килобайт

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели28K

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

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

Как это работает и что нам пришлось для этого создать — расскажем под катом.

Читать далее

Миллиард записей и 8 Марта: как YDB спас праздник

Время на прочтение15 мин
Охват и читатели13K

Чем покупка букета на 8 Марта через Яндекс Еду отличается от покупки, собственно, еды? С точки зрения пользователя — ничем. Выбрал, оплатил, доставили. А вот с точки зрения разработчика бэкенда заказ уникальных букетов превращается в нетривиальную инженерную задачу синхронизации складских запасов. Задержка синхронизации хотя бы в 10 минут трансформируется в звонок и сборщиков заказов, сообщающих о том, что именно такого букета на складе больше нет. 

Меня зовут Виталий Московкин, я занимаюсь ритейлом в Яндекс Еде. В статье я расскажу, как мы синхронизировали состояние складов с 18 миллионами уникальных товаров: сначала с помощью PostgreSQL, а затем с помощью YDB. Такое количество товаров превращается на бэкенде в 4 миллиарда записей о ценах и стоках, которые нельзя просто так кешировать. Но и замена монолитной СУБД на распределённую тоже задача не на десять минут. Подробности — под катом.

Читать далее

ИИ‑помощник не понимает ваш UI Kit? Показываем, как это починить

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели8.5K

Около 90% фронтенд‑разработчиков в нашей команде используют ИИ‑помощников для написания кода. Лично у меня — и как я могу заметить, у многих — был такой опыт: вы только начинаете пользоваться ИИ‑помощником, просите его сгенерировать какое‑нибудь классное MVP, получаете результат минут за пять и думаете: «Вау, неужели это возможно? Как это вообще работает и как это круто». 

А дальше вас ждёт сюрприз. 

Всем привет, меня зовут Валерий Баранов, я руковожу командой технологий фронтенда в Яндекс 360. Мы занимаемся тем, что сами называем «общим фронтендом»: общими техническими компонентами, общим CI/CD, платформами дистрибуции общих компонентов. Сегодня я хочу рассказать, как мы в Яндекс 360 сделали фронтенд‑проекты по‑настоящему AI‑ready: научили ассистентов понимать структуру наших репозиториев, работать с внутренними библиотеками и даже соблюдать паттерны дизайн‑системы. 

Читать далее

Заменить нельзя оставить: как DataLens мигрировал с Highcharts

Время на прочтение14 мин
Охват и читатели7.4K

Привет, меня зовут Евгений Алаев, я разработчик интерфейсов в команде Yandex DataLens. Это облачный BI‑инструмент для анализа данных и построения дашбордов, и графики в нём — не «одна из фич», а сердце продукта. Пользователь открывает дашборд и первое, что видит, — визуализации. Именно они отвечают на вопрос: «Что происходит с моими данными?»

DataLens работает в двух инсталляциях — для самого Яндекса и для внешних пользователей. Суммарно на сегодня создано больше 18,3 млн графиков. Каждый из этих графиков — результат работы той самой библиотеки визуализации, о которой пойдёт речь.

Долгое время графики в DataLens строились на Highcharts. Поначалу это был разумный выбор: быстрый старт, богатый набор типов, большое сообщество. Но BI‑инструмент со временем становится сложнее — появляются нестандартные требования к поведению, дизайн‑система, которую нужно выдерживать в едином стиле. И в какой‑то момент Highcharts начал мешать больше, чем помогать.

В этой статье расскажу, как и почему мы приняли решение написать собственную опенсорс‑библиотеку для визуализации — @gravity‑ui/charts. Мы с коллегой — core‑контрибьютеры этой библиотеки, так что я в подробностях расскажу, что нас не устраивало в Highcharts, какие альтернативы рассматривали, как устроена архитектура и с какими конкретными техническими вызовами столкнулись в процессе.

Читать далее

Ускорение Яндекс Трекера: в погоне за Velocity Index

Время на прочтение14 мин
Охват и читатели7.9K

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

Для измерения скорости сервисов в Яндексе используется метрика Velocity Index — это агрегация метрик Web Vitals (FCP, LCP, TBT, INP, CLS). Итоговое значение получается в диапазоне от 0 до 100 баллов. Хорошим результатом считается индекс больше 85.

Мы поставили себе амбициозную цель: увеличить Velocity Index до 85, а заодно подлечить очевидные «узкие места» в скорости и ускорить всё, до чего сможем дотянуться.

Но до заветных 85 баллов мы так и не добрались.

И вот почему

Когда машине нужен человек: инженерные подходы к удалённому управлению автономным транспортом

Время на прочтение17 мин
Охват и читатели7.3K

Привет! Меня зовут Дмитрий Ивахненко из команды Автономного транспорта Яндекса. В этой статье я подробно разберу, как устроены сервисы удалённого управления автономными юнитами — роботакси, роботами‑доставщиками и грузовиками. 

Реальный мир полон нестандартных ситуаций, в которых даже самые совершенные алгоритмы могут встретить сложности: внезапно появившееся препятствие, сбой датчиков, сложные погодные условия. В этих случаях важно обеспечить безопасность, бесперебойную работу и предсказуемое поведение техники. Для этого и нужны операторы и системы удалённого управления — они «подстраховывают» автономные устройства.

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

Читать далее

Немезида для хаоса: как мы построили событийную архитектуру для 500+ интеграций

Время на прочтение11 мин
Охват и читатели7.4K

Когда у компании много сервисов и данных, то лучше всего иметь план Б на любую ситуацию, например когда нужно быстро оптимизировать ресурсы и работать в режиме «минус один дата‑центр» без просадок, в то время как утилизация серверов при этом стремится к 100%. Смертельный номер? Вполне посильная задача, с которой справилась команда Яндекс Go. 

Мы провели аудит и поняли, что у нас очень много синхронных походов из критичных сервисов в некритичные, а ещё и поллинг. И это требовало внедрения событийной модели. Тысяча микросервисов, 150 команд разработки, несколько языков программирования, и у каждого разработчика своё представление о том, как правильно читать сообщения из Kafka. Библиотека, которую мы раздали командам, быстро бы обросла форками, заплатками и костылями.

За шесть месяцев командой из шести человек мы превратили эту библиотеку в централизованную платформу Немезида. Сейчас на ней крутится больше 500 интеграций, а новую можно запустить меньше чем за четыре часа. 

Меня зовут Алексей Терентьев, я руководитель одной из служб отдела эффективности Яндекс Go. В этой статье я расскажу, как мы прошли путь от простого «прочитал — обработал — закоммитил» к по‑настоящему масштабной архитектуре: со всеми граблями, факапами и конкретными решениями.

Читать далее
1
23 ...

Информация

Сайт
www.ya.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия