Зачем Яндекс Go создал отдельный язык для расчёта стоимости поездок

Зачем Яндекс Go создал отдельный язык для расчёта стоимости поездок

Зачем Яндекс Go создал отдельный язык для расчёта стоимости поездок

Цена поездки в Яндекс Go — это не расстояние, умноженное на минуты и километры. В расчёт вмешиваются геозоны, спрос, скидки, платные дороги, дополнительные остановки и требования вроде перевозки кота, велосипеда или лыж. Чтобы управлять этим хозяйством без бесконечных деплоев, разработчики вынесли алгоритм ценообразования из кода сервиса в собственный язык.

Как объяснили разработчики в статье на Хабре, прайсинг работает не только при заказе машины.

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

 

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

 

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

Поэтому Яндекс разработал собственный DSL. В нём есть условия, функции, неизменяемые значения и fold вместо циклов. Правила собираются в последовательную цепочку: каждое преобразование получает текущую цену и параметры, а возвращает новый результат с метаданными. Грамматику описали через ANTLR 4, а верификатор Z3 проверяет, что программа не выдаст некорректную цену.

 

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

 

В итоге прайсинг превратился в отдельную платформу, которой уже пользуются Такси, Доставка и сервис зарядки электромобилей.

Браузер OpenAI можно было заставить спамить контактам в WhatsApp

ИИ-браузеры обещали самостоятельно разбираться с рутиной, но исследователи Zenity выяснили: иногда они столь же самостоятельно начинают выполнять команды злоумышленников. Специалисты обнаружили около 20 уязвимостей в браузерах и расширениях от OpenAI, Google, Anthropic, Microsoft и Perplexity.

Самый эффектный трюк провернули с OpenAI Atlas. Исследователи разместили на поддельной странице подписки скрытые инструкции на иврите.

Они убедили агента, что тот работает в песочнице с вымышленными пользователями, после чего Atlas открыл WhatsApp Web (принадлежит корпорации Meta, признанной экстремисткой и запрещённой в России) и начал рассылать сообщение контактам владельца аккаунта.

Получился зачаток цифрового червя: один заражённый пользователь зовёт остальных на ту же страницу.

Уязвимость находилась не в WhatsApp. Атакующие обманули сам ИИ-браузер, который смешал законную просьбу пользователя с командами сайта. В Zenity называют это столкновением намерений.

Затем исследователи отправили Atlas на Amazon. Агент добавил новый адрес доставки и положил планшет в корзину, но перед оплатой упёрся в защитные ограничения OpenAI. Казалось бы, приехали. Однако Atlas попросил совершить покупку встроенного помощника Rufus, и тот послушно оплатил товар, решив, что общается с владельцем аккаунта.

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

В OpenAI заявили, что получили отчёт Zenity в январе и уже усилили защиту Atlas. Сам браузер компания отключит 9 августа, а новые механизмы перенесёт в браузерные функции приложения ChatGPT.

RSS: Новости на портале Anti-Malware.ru