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

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

Время на прочтение3 мин
Количество просмотров14K
Поисковые подсказки существуют в Яндексе уже больше четырёх лет. На профессиональном сленге мы называем их саджестом. Первоначально он формировался только на основе частоты тех или иных запросов. Со временем мы научили подсказки учитывать, из какого региона задаётся вопрос, связан ли он с каким-то недавним событием, можно ли показать пользователю сразу адрес сайта и какого. Ко всему прочему мы первыми из существующих поисковых систем внедрили технологию, которая позволяет саджесту учитывать предыдущий запрос пользователя и показывать ему контекстную подсказку. Теперь поисковые подсказки вступают с вами в диалог и меняются в зависимости от того, что вы только что искали.



Задача Яндекса — отвечать на вопросы, как заданные так и нет. Поиск — про заданные вопросы, но пользователю можно помочь их сформулировать.
Читать дальше →

Большое обновление DivKit: визуальный редактор, поддержка форм, аниматоры

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

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

Мы не перестаём развивать DivKit и за последние месяцы добавили несколько важных функций. О них расскажем в статье.

Читать далее

Осторожно, Combine! Откуда берутся утечки памяти, потеря эвентов, нестабильность операторов и что с этим всем делать

Уровень сложностиСредний
Время на прочтение27 мин
Количество просмотров5.2K

Привет, меня зовут Никита, я iOS‑разработчик в Яндекс Диске. В прошлый раз я рассказывал, как мы начали свой путь в SwiftUI. Теперь настало время рассказать ещё об одном фреймворке, который мы затащили в свой проект параллельно со SwiftUI, — Combine.

В этой статье разберу проблемы, с которыми столкнулась наша команда, расскажу, как их исправили, а также к каким выводам после этого пришли. А ещё поделюсь библиотекой с фиксами и экстеншенами к Combine.

Читать далее

Адаптация мобильного приложения для пользователей скринридеров. Опыт Яндекс Лавки

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

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

Повышая доступность интерфейса для пользователей скринридеров, мы также улучшаем его доступность и для людей с другими особенностями здоровья. Например, для тех, кто использует системную настройку «Экран вслух» или взаимодействует с интерфейсом с помощью голосового управления. 

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

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

Читать далее

Создаём субтитры для любого видео в интернете с помощью нейросети в браузере

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

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

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

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

Читать далее

QA-метрики: когда они могут быть полезны и как их использовать

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

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

Зрелым командам такие метрики ощутимо помогают:

замечать периоды низкого перформанса команды и нехватку ресурсов;

следить за такими показателями, как общая забагованность сервиса, время реагирования на различные события, количество задач, которые одновременно может обрабатывать команда, и за другими важными моментами;

сравнивать показатели работы команд в подразделении перед предстоящим периодом ревью.

Меня зовут Катя, я руковожу службами тестирования Музыки и Букмейта, и в этом посте я хочу рассказать про основные метрики, которые мы используем в команде тестирования Яндекс Музыки, и обсудить, как правильно с ними работать.

Читать далее

Эволюция перевода видео в Яндекс Браузере: от новых языков до интерактивных субтитров

Время на прочтение3 мин
Количество просмотров20K
В сентябре мы рассказывали Хабру о том, как наша команда помогает преодолевать языковой барьер с помощью перевода видео. Эта функция позволяет автоматически переводить видео так, чтобы зритель сразу слышал русскую речь. Пользователи встретили новую возможность тепло: ролики с переводом смотрят больше 200 тысяч раз в день.

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



Читать дальше →

Кодогенерация DTO: зачем она нужна и как её настроить

Время на прочтение12 мин
Количество просмотров29K
Data Transfer Object — модель данных, которые мы передаём из одного слоя приложения в другой. В Яндекс Go мы активно используем DTO. Предположим, нужно отобразить в UI приложения для вызова такси экспериментальную кнопку с двумя свойствами — надписью на кнопке и ориентировочным временем ожидания такси. Тогда в сетевом слое надо написать примерно такую DTO-модель:

struct OrderButtonExperimentDTO: Decodable {
   let buttonTitle: String
   let estimationMinute: Int
}

Правильно написанная модель позволяет разрабатывать разные слои приложения независимо — но нужно следить за актуальностью самой модели на каждом слое. Например, если в коде выше ожидалось не estimationMinute, а estimationMinutes, то клиент не сможет декодировать полученные из сети данные и пользователь не увидит время ожидания. Такую ошибку легко совершить, в n-й раз перепечатывая названия переменных под каждый слой — а разработчики и правда должны рутинно это делать при любом изменении (или расширении) исходного формата данных. Ещё сложнее заметить ошибку на код-ревью.

Поэтому мы решили добавить механизм, который сам бы составлял и переписывал код моделей DTO в зависимости от исходного формата.
Читать дальше →

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

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

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



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


Читать дальше →

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

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

— Добрый день. Меня зовут Александр Голубев, и сегодня я вам расскажу, зачем C++ появился в Такси.
Читать дальше →

Микрофронтенды и виджеты в 2021-м. Доклад Яндекса

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

— Всем привет! Меня зовут Леша. Я хочу с вами сегодня обсудить немного «перехайпленную» тему — микрофронтенды.
Читать дальше →

Как создать виджет для iOS 14 (и не удалить его у пользователей при обновлении)

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


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


Помимо обзорной информации, под катом — истории о том, почему нельзя просто взять и добавить настройки в виджет (спойлер: можно случайно удалить виджет установившим его пользователям), и как даже новейшие Swift-only API иногда страдают от наследия Objective-C. Материал будет полезен как тем, кто привык разбираться во всём новом, находя готовые гайды в интернете, так и тем, кто предпочитает официальную документацию.

Читать дальше →

Технические предпочтения пользователей с нарушениями зрения в 2020 году. Исследование Яндекса

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

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

Круговая диаграмма с долями основных программ экранного доступа по данным таблицы 10
Читать дальше →

Как в компании развивался Python. Доклад Яндекса

Время на прочтение19 мин
Количество просмотров16K
13 лет назад начался эксперимент по использованию Python в больших сервисах Яндекса. Эксперимент получился удачным (кто бы сомневался!) и Python начал свое победное поползновение по сервисам компании. Яндекс.Афиша, Яндекс.Погода — через некоторое время сервисов стало очень много. Вместе с ними начали появляться «лучшие практики» и «устоявшиеся подходы» к решению задач.


В докладе я вспомнил эволюцию Python в компании: от первых сервисов, запаковывавшихся в deb-пакеты и раскатывавшихся на голое железо, до непростого монорепозитория с собственной системой сборки и облаком. Еще в рассказе будут Django, Flask, Tornado, Docker, PyCharm, IPv6 и другие штуки, с которыми мы сталкивались на протяжении этих лет.
Читать дальше →

Агломеративная кластеризация: алгоритм, быстродействие, код на GitHub

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



Несколько лет назад мне потребовалось очень качественно кластеризовать относительно неплотные графы среднего размера (сотни тысяч объектов, сотни миллионов связей). Тогда оказалось, что алгоритма с подходящим набором свойств просто не существует, несмотря на всё разнообразие методов, придуманных человечеством за многие десятилетия. Имеющиеся решения работали либо просто очень плохо, либо очень плохо и к тому же медленно.


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


Об этом алгоритме и пойдёт речь в статье. Под катом читателей ждут математическое описание алгоритма, техники уменьшения его временной сложности, код на GitHub и модельные наборы данных.

Читать дальше →

Yandex Retro Games Battle 2020: новый конкурс и полезные ресурсы для разработчиков

Время на прочтение3 мин
Количество просмотров9K
Меня зовут Олег Сенин, я программист, художник и музыкант на разных ретроплатформах. В этом году я присоединился к команде музея Яндекса. Не повезло: переехал из Санкт-Петербурга, собирался выйти на работу в музей, и тут началась самоизоляция. Но знакомить людей, в том числе профессионалов, с историей ретротехники можно и в режиме онлайн. Если вы когда-нибудь делали игры или хотите попробовать, но опасаетесь масштаба современных платформ, этот пост для вас.

В прошлом году я ещё не работал в музее, но вместе с командой MAYhEM & CONSCIENCE участвовал в Yandex Retro Games Battle 2019. Это конкурс музея, посвящённый созданию игр для легендарного компьютера ZX Spectrum. Игра, с которой мы участвовали, называется Space Monsters meet THE HARDY. Всего до финала дошло 19 новых игр — коллеги писали о них, и читатели Хабра помогли в выборе команды, получившей награду зрительских симпатий. Тогда победил коллектив Zosya Entertainment c игрой Valley of Rains, a наша игра заняла второе место.


Сегодня я рад объявить о новом конкурсе — Yandex Retro Games Battle 2020 — и поделиться ресурсами и книгами, которые я собрал. Они помогут вам в геймдизайне и программировании под ZX Spectrum.
Читать дальше →

Как проходят секции по машинному обучению на собеседованиях в Яндекс

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

Каждый сервис компании Яндекс во многом основан на анализе данных и методах машинного обучения. Они требуются и для ранжирования результатов веб-поиска, и для поиска по картинкам, и для формирования рекомендательных блоков. Машинное обучение позволяет нам создавать беспилотные автомобили и голосовых ассистентов, уменьшать время бесполезного простоя для таксистов и уменьшать время ожидания для их клиентов. Все приложения и не перечислить!


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


image

Рецепты TeamCity. Доклад Яндекс.Такси

Время на прочтение8 мин
Количество просмотров9.3K
Меня зовут Эдуард Мацуков, я делаю Таксометр — приложение для водителей Яндекс.Такси. Занимаюсь инфраструктурой и всем, что с ней связано. Какое-то время назад я выступил с докладом — рассказал об опыте дружбы TeamCity с нашим проектом и с разработчиками в целом. Отдельная часть доклада посвящена тому, при чем здесь Kotlin.


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

Жадный подход и игровые автоматы. Разбор задач ML-трека чемпионата по программированию

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


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

Читать дальше →

От адвоката до тестировщика в Яндексе. История моей стажировки

Время на прочтение5 мин
Количество просмотров31K
Привет! Меня зовут Кристина lapkina Кочерина, я тестировщик в Яндекс.Маркете. Еще полгода назад у меня был статус адвоката и большая юридическая практика, вечера я проводила в СИЗО. Но в какой-то момент решила, что пришло время заниматься тем, что приносит удовольствие, а не только деньги. И кардинально сменила профессию.

Сегодня я расскажу читателям Хабра о том, как стала тестировщиком, а также поделюсь некоторыми советами, которые помогут пройти стажировку. И, пожалуй, разрушу стереотип о том, что тестирование — это легкий способ «войти в IT».


Читать дальше →

Информация

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