Как стать автором
Обновить
348.95
Яндекс
Как мы делаем Яндекс
Сначала показывать

Модульность и DI в современном Android-приложении. Большой туториал от Яндекса

Время на прочтение 21 мин
Количество просмотров 28K

Всем привет! Я Денис Загаевский из Android-разработки Яндекс.Карт. Если вы развиваете многомодульное приложение или хотите разбить на части пока ещё одномодульное, этот туториал для вас.


Под катом расскажу, как удобно разбить приложение на модули, зачем это нужно и как потом приготовить в нём DI (dependency injection). Кто-то мог слышать мой доклад на Mobius 2021 Piter или в Школе мобильной разработки, а для всех остальных я написал эту статью.


Смотреть доклады

На Mobius:



В ШРИ:



Местами буду ссылаться на опыт Яндекс.Карт. Кстати, рабочий пример нашего подхода есть на GitHub.


Читать дальше →
Всего голосов 21: ↑20 и ↓1 +19
Комментарии 3

Как Яндекс делает обычные автомобили беспилотными

Время на прочтение 8 мин
Количество просмотров 33K


Привет, меня зовут Антон Чистяков. Пару лет назад я работал в хелпдеске Яндекса и даже писал здесь про то, как мы придумали вендомат с аксессуарами. Теперь отвечаю за сборку беспилотных автомобилей и роботов-доставщиков. Под катом расскажу, как мы делаем простые машины беспилотными: от момента покупки авто и выбора имени до сборки и калибровки, на которых всё, впрочем, не заканчивается.
Читать дальше →
Всего голосов 133: ↑129 и ↓4 +125
Комментарии 138

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

Время на прочтение 12 мин
Количество просмотров 33K


Недавно три наших новых GPU-кластера заняли 19, 36 и 40 места в рейтинге суперкомпьютеров Top500. Это лучшие результаты среди всех участвующих в нём суперкомпьютеров России. Но сегодня мы поговорим не о местах в рейтинге, а о том, чем полезно на практике участие в подобных замерах.

Из этого поста вы узнаете про наши первые попытки создать свои кластеры и грабли на этом пути. Расскажем, как устроены суперкомпьютеры для машинного обучения и почему мы в итоге пришли к собственной архитектуре. Важная часть истории будет посвящена разбору проблем замеров производительности, которые, вопреки первым впечатлениям, принесли нам не только места в рейтинге, но и реальную пользу для наших ML-проектов.

Поможет мне в этом Дмитрий Монахов dmtrmonakhov. Он уже известен читателям Хабра по докладу о разработке ядра Linux. Передаю ему слово.
Читать дальше →
Всего голосов 125: ↑124 и ↓1 +123
Комментарии 56

Нейросеть, способная объяснить себе задачу: P-tuning для YaLM

Время на прочтение 9 мин
Количество просмотров 16K

Мы уже рассказывали о том, как применили семейство генеративных нейросетей YaLM для подготовки ответов в Поиске, Алисе или даже в Балабобе. Главная особенность наших моделей — метод few-shot learning, который позволяет без дополнительного обучения решать большинство задач в области обработки естественного языка. Достаточно лишь подготовить подводку на человеческом языке — и модель сгенерирует текст. Но что, если это не самый оптимальный путь?

Сегодня я расскажу читателям Хабра про апгрейд этого метода под названием P-tuning. Вы узнаете про недостатки оригинального метода few-shot и преимущества нового подхода. Покажу, где он уже применяется на примере покемонов. Добро пожаловать под кат.
Читать дальше →
Всего голосов 32: ↑32 и ↓0 +32
Комментарии 6

Извлекаем суть новости. Опыт Яндекса

Время на прочтение 7 мин
Количество просмотров 11K
Привет! Меня зовут Илья Гусев, я занимаюсь машинным обучением в команде Яндекс.Новостей. У каждого новостного сюжета на сервисе есть своя страница, где собраны новости об одном и том же событии из разных источников. Сегодня мы рассмотрим построение краткой выжимки, дайджеста сюжета. В такой выжимке, состоящей из фрагментов новостных документов, содержится основная информация о событии. Очевидно, почему дайджест полезен для пользователя — мы выводим на экран сюжета самое важное о событии. С похожими задачами сталкиваются многие инженеры: например OpenAI недавно опубликовала статью про реферирование книг. Поэтому я надеюсь, что описанный ниже подход будет вам полезен.

Как и всё в Новостях, построение такой выжимки должно быть полностью автоматическим. До внедрения выжимки текстовая часть сюжета выглядела так:



Теперь она выглядит так:


Читать дальше →
Всего голосов 26: ↑24 и ↓2 +22
Комментарии 18

Кто крешит приложение на старте?

Время на прочтение 9 мин
Количество просмотров 5K

Привет! Меня зовут Александр Денисов, я из команды мобильного Яндекс.Браузера в Санкт-Петербурге. В этом посте расскажу вам, как мы справляемся с циклическими крешами на старте.


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


В качестве примера будет выступать приложение Яндекс.Браузер для iOS: более 100 тысяч исходных файлов, тысячи коммитов в год и около тысячи модулей без учёта ядра (Swift + Objective-C). Кстати, не так давно мы рассказывали, как помогли команде Swift ускорить отладчик.


Циклический креш на старте


Представьте, что в вашем приложении есть баг, приводящий к крешу. Несложно, правда? Причём возникает баг из-за редкого сочетания факторов, и происходит это на старте. С некоторой вероятностью баг останется незамеченным во время тестирования и попадёт в версию для App Store. А дальше пострадавшие пользователи столкнутся с приложением, которое крешится прямо на старте, и перезапуск уже не помогает — только переустановка.

Как бороться
Всего голосов 20: ↑18 и ↓2 +16
Комментарии 8

Новая Яндекс.Станция Мини. Большая история маленького устройства

Время на прочтение 15 мин
Количество просмотров 57K
На днях в продажу поступила обновлённая версия одного из самых популярных устройств с Алисой — Станции Мини. Может показаться, что это эволюционное развитие, работать над которым было проще, чем создавать оригинал. Но новая Мини отличается от предыдущей примерно всем: от внешнего вида и начинки до условий производства — ковид и глобальный дефицит компонентов стали для hardware-команды большим вызовом.



Сегодня я поделюсь с вами несколькими историями о новой колонке. Вы узнаете про одно из самых необычных применений фазоинвертора, про то, как мы достаточно комично сушили фотополимерные модели в домашних условиях. Расскажу, где спрятан сервисный разъём и как работает управление просмотром ТВ через ещё одно новое устройство — Модуль. Будут и другие детали, которые показались нам интересными.
Читать дальше →
Всего голосов 89: ↑86 и ↓3 +83
Комментарии 108

Стажёр Вася и его опыт разработки нового API

Время на прочтение 12 мин
Количество просмотров 28K

Легко ли разработать новый API? На что обратить внимание, чтобы не ошибиться при реализации, и к каким компромиссам стоит быть готовым?


Привет, Хабр! Меня зовут Иван Ивашковский. Я руковожу группой разработки международных проектов в Яндекс Go. Этот пост — продолжение цикла историй о вымышленном стажёре Васе. Предыдущий материал, про идемпотентность, можно почитать здесь. В посте я расскажу, как Вася разрабатывал API для новой фичи и с какими проблемами он столкнулся в процессе. В конце приведу чеклист с советами, как проверить себя на каждом этапе разработки, если вы решаете похожую задачу.


Читать дальше →
Всего голосов 35: ↑35 и ↓0 +35
Комментарии 24

Как менялись правила онлайн-продажи лекарств и почему аптекам по-прежнему сложно

Время на прочтение 6 мин
Количество просмотров 5.5K


В начале осени вступили в силу обновлённые правила онлайн-продажи лекарств с доставкой. Возможность продавать теперь есть не только у крупных аптечных сетей, но и у одиночных аптек — они смогут выйти за пределы своего района и найти новых покупателей. Для людей, в свою очередь, стало проще, быстрее и дешевле купить лекарства онлайн. Но возможности малых аптек в маркетинге и логистике ограничены, и им трудно конкурировать с гигантами. В помощь им приходят маркетплейсы, где можно размещать свои предложения — маркетплейс сам приведёт трафик, примет заказ, оформит платеж и организует доставку. Аптеке нужно только упаковать заказ и передать его курьеру. В идеале покупатели набирают корзину из предложений нескольких аптек и получают всё одним курьером. Я работаю в Яндекс.Маркете, мы давно строим такой маркетплейс и сейчас развиваем в нём категорию лекарств. Чтобы показать, насколько крупные изменения повлекут новые правила, я немного загляну в историю рынка лекарств, расскажу, как он устроен сегодня, что на нём сейчас меняется и почему это правда важно.
Читать дальше →
Всего голосов 25: ↑23 и ↓2 +21
Комментарии 6

С++23 — feature freeze близко

Время на прочтение 6 мин
Количество просмотров 21K
Прошло четыре месяца с прошлой онлайн-встречи ISO-комитета, а значит, настало время собраться опять.



В этот раз в черновик нового стандарта C++23 добавили весьма полезные и вкусные новинки:

  • operator[](int, int, int)
  • монадические интерфейсы для std::optional
  • std::move_only_function
  • std::basic_string::resize_and_overwrite
  • больше гетерогенных перегрузок для ассоциативных контейнеров
  • std::views::zip и zip_transform, adjacent, adjacent_transform

Подробности об этих и других (даже более интересных!) вещах, а также о том, что за диаграмма стоит в шапке, ждут вас под катом.
Читать дальше →
Всего голосов 47: ↑46 и ↓1 +45
Комментарии 429

Путь, который занял 100* лет: встречаем CatBoost 1.0.0

Время на прочтение 5 мин
Количество просмотров 20K


Всем привет. Меня зовут Станислав Кириллов, я работаю в команде, которая отвечает за развитие библиотеки машинного обучения CatBoost. Мы впервые поделились ей с сообществом четыре года назад — хотя мы привыкли строить бинарные деревья, поэтому и отсчёт лет предпочитаем вести так же. Это шутка, конечно, но «столетие» — хороший повод для выпуска первой «production ready» версии библиотеки с символичным номером 1.0.0.

Сегодня я кратко отвечу, почему мы считаем выпуск версии 1.0.0 важной вехой, и подсвечу главные изменения (и в новой версии, и в целом за год). А уже завтра выступлю с рассказом на встрече, которая будет целиком и полностью посвящена практике применения CatBoost и противостоянию нейросетей и градиентного бустинга. Если эти слова для вас что-то значат, то добро пожаловать под кат.

Читать дальше →
Всего голосов 60: ↑59 и ↓1 +58
Комментарии 8

Как запустить 100+ компиляторов и выстоять. Опыт Яндекс.Контеста

Время на прочтение 14 мин
Количество просмотров 7.2K
Привет, это снова Павел Тыквин, разработчик Яндекс.Контеста. Контест больше всего известен как площадка для соревнований по программированию: прямо сейчас идёт квалификационный этап чемпионата Yandex Cup. Я уже писал на Хабре о том, как мы решаем одну из стоящих перед нами проблем: выравниваем время исполнения кода. Ну а в этой статье я приоткрою детали процесса проверки, расскажу, через какие этапы проходит код участников и какими методами мы оптимизируем этот процесс, а также — как мы добавили возможность решать задачи на том языке, с которым участник уже знаком (вне зависимости от способов тестирования внутри платформы).

Как происходит проверка решения


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

Допустим, решение будет таким:

source.cpp:
#include <bits/stdc++.h>

using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
}

Как можно проверить это решение вручную без участия дополнительных сервисов и библиотек?
Например, так
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 6

Техподдержка без бюрократии: автоматизации под капотом ServiceDesk Яндекса

Время на прочтение 11 мин
Количество просмотров 9.3K
Привет! Меня зовут Арвидас Гафиулин, я руководитель отдела эксплуатации и развития ИТ-инфраструктуры в Яндексе. Важнейшее направление работы отдела — наша внутренняя служба поддержки, ServiceDesk. Именно команда SD отвечает за то, чтобы у сотрудников компании была возможность работать из офиса или на удалёнке со всеми необходимыми доступами, оборудованием и комфортом. В среднем служба получает десять тысяч запросов каждую неделю и постоянно работает над тем, чтобы решать их качественнее и быстрее, а также предотвращать новые инциденты, устраняя корни проблем.

Мы уже писали на Хабр о том, как работает вендомат ServiceDesk, выдающий расходники и компьютерные аксессуары без согласований и бумажек, а сегодня расскажем, как выглядит работа службы изнутри и какие технические решения живут у ServiceDesk «под капотом», помогая нам автоматизировать львиную долю задач. Добро пожаловать под кат, если вам интересно, откуда техподдержка знает, кому уже пора апгрейдить технику, а кому придётся ещё немного подождать, у кого устарела версия ОС или доживает последние дни жёсткий диск, какие автоматизации мы можем создавать на основе пользовательских данных, а главное — от скольких часов ожидания и кругов согласований это избавляет сотрудников Яндекса.


Welcome-зона службы ИТ-поддержки в одном из офисов
Читать дальше →
Всего голосов 29: ↑27 и ↓2 +25
Комментарии 10

YARL: как Яндекс построил распределённый Rate Limiter с нулевым влиянием на время ответа сервисов

Время на прочтение 14 мин
Количество просмотров 26K

Yandex Rate Limiter (далее просто YARL) — это сервис лимитирования нагрузки для распределённых сервисов. Его особенность в том, что он способен работать с миллионами квот, имея при этом очень низкие накладные расходы на проверку квоты. Если совсем кратко, это система распределённых Leaky Bucket'ов, с помощью которых можно ограничивать разные величины, связанные со временем: скорость передачи данных по сети, запросы в секунду и т. п.



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

Читать дальше →
Всего голосов 80: ↑79 и ↓1 +78
Комментарии 26

Говорит и показывает Yandex Scale 2021: текстовая трансляция и видео

Время на прочтение 2 мин
Количество просмотров 22K

Сегодня смотрим и читаем Yandex Scale 2021 — онлайн-конференцию про облачные технологии: инфраструктурные и платформенные, нативные и основанные на машинном обучении. И, конечно, про безопасность. Каждому из этих сегментов посвящён свой трек. О том, как развивается платформа и как мы надстраиваем новые блоки над базовой архитектурой, можно будет узнать из главного доклада в самом начале конференции. А дальше вас ждёт более 30 технических выступлений от наших экспертов, партнёров и клиентов.

Мы, levashove и Loxmatiymamont, в ближайшие семь часов будем вести для вас текстовую трансляцию, делиться впечатлениями и комментировать самые интересные новости.


Читать дальше →
Всего голосов 26: ↑26 и ↓0 +26
Комментарии 1

Асинхронность в С++20. Доклад в Яндексе

Время на прочтение 14 мин
Количество просмотров 21K
Привет, это Григорий Демченко из WhatsApp. Мой доклад посвящён использованию сопрограмм в C++20. Я не стал говорить про низкоуровневые примитивы и то, как компилятор поддерживает сопрограммы и преобразовывает соответствующий код. Вместо этого акцент сделан на практическом применении сопрограмм для решения конкретных задач высокопроизводительных масштабируемых систем. Это именно то, ради чего создавались сопрограммы в новом стандарте, и то, с чем разработчик будет иметь дело в процессе проектирования и программирования. Я постарался рассмотреть конкретные примеры и проблемы, с которыми можно столкнуться при использовании полностью асинхронного подхода.

— О чём я сегодня расскажу? Первое — введение в асинхронность. Далее мы рассмотрим примитивы, которые можно использовать в новом стандарте, и интеграцию с планировщиками. Также немаловажным аспектом будет являться работа со старым кодом, если мы пишем новый код с использованием нового подхода. Затем я покажу бонус, достаточно интересный и необычный. И подведём итоги того, что у нас получилось.
Читать дальше →
Всего голосов 28: ↑27 и ↓1 +26
Комментарии 6

Зачем С++ в Такси? Доклад Яндекса

Время на прочтение 21 мин
Количество просмотров 16K
Бэкенд первой версии Яндекс.Такси, которая вышла в 2011 году, был написан на Python. Мы довольно долго не меняли основной язык, но постепенно пришли к идее о необходимости С++ в стеке технологий. Перед вами доклад о том, что мы переписали в первую очередь и почему, а также о трюках С++, которые помогают нам справляться с ростом.

— Добрый день. Меня зовут Александр Голубев, и сегодня я вам расскажу, зачем C++ появился в Такси.
Читать дальше →
Всего голосов 28: ↑25 и ↓3 +22
Комментарии 18

Ботнет Mēris: расследуем крупнейшую DDoS-атаку в истории интернета

Время на прочтение 7 мин
Количество просмотров 93K
image

На днях в СМИ появилась информация о DDoS-атаке на Яндекс. Это правда, но не вся. Нашим специалистам действительно удалось отразить рекордную атаку более чем в 20 млн RPS — это самая крупная атака из известных за всю историю интернета. Но это лишь одна из множества атак, направленных не только на Яндекс, но и на многие другие компании в мире. Атаки продолжаются уже несколько недель, их масштабы беспрецедентны, а их источник – новый ботнет, о котором пока мало что известно.

Сегодня вместе с коллегами из Qrator Labs мы хотим поделиться текущими результатами совместного расследования деятельности нового ботнета Mēris. Расследование еще продолжается, но мы считаем важным поделиться уже собранной информацией со всей индустрией.

Читать дальше →
Всего голосов 181: ↑178 и ↓3 +175
Комментарии 148

Как Яндекс помогает преодолеть языковой барьер: нейросетевой перевод видео, картинок и текста

Время на прочтение 8 мин
Количество просмотров 94K


Недавно мы впервые показали прототип переводчика видео в Яндекс.Браузере. Прототип работал с ограниченным числом роликов, но даже в таком виде вызвал интерес у пользователей. Теперь мы переходим к следующему ключевому этапу: в новых версиях Браузера и приложения Яндекс перевод доступен для всех англоязычных роликов на YouTube, Vimeo, Facebook и других популярных платформах.

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

Десятью годами ранее


В 2011 году в Яндексе решалась судьба собственного полноценного браузера. На тот момент браузеров на любой цвет и вкус уже хватало. Но почти все они создавались «где-то там»: без оглядки на рунет и потребности тех пользователей, для которых английский язык и латиница не были родными. Поэтому мы решили создать свой браузер, который бы в числе прочего более полно поддерживал русский язык и наши с вами «региональные» потребности. Уверен, эта фраза звучит непонятно, поэтому ниже вас ждут два моих любимых примера. Они не связаны с переводом, но показательны.

Переведётся всё!
Всего голосов 106: ↑101 и ↓5 +96
Комментарии 177

Многопоточность и Kotlin в Яндекс.Картах: как не допустить падения новых фич на iOS

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


Привет! Меня зовут Женя Васильев, я делаю Яндекс.Карты под Android. А с появлением у нас Kotlin Multiplatform — так уж получилось, ещё и под iOS.

Kotlin Multiplatform позволяет писать код, который будет одинаково работать на iOS и Android. По крайней мере, должен одинаково работать. И в случае с простыми фичами правда работает. Но если вы, как и я, впервые реализовываете в мультиплатформе сложную фичу с многопоточностью, на iOS вас будут ждать креши в рантайме и утечки.

В статье я расскажу и покажу на примерах, с какими проблемами я столкнулся при написании многопоточного кода на Kotlin Multiplatform, как эти проблемы решать, как лучше организовывать потоки данных в многопоточной среде и что ещё нужно делать, чтобы написанное на Kotlin не падало на iOS. Увы, писать код «как обычно» не получится.
Читать дальше →
Всего голосов 31: ↑29 и ↓2 +27
Комментарии 9

Информация

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