2015-04-30 13:09:00
В середине апреля команда сервиса Яндекс.Такси села за руль московских такси, чтобы на своём опыте ...
+ развернуть текстсохранённая копия
В середине апреля команда сервиса Яндекс.Такси села за руль московских такси, чтобы на своём опыте узнать, каково это — оказаться с другой стороны системы, над которой работаешь каждый день. В акции участвовали менеджеры, дизайнеры, разработчики — все те, кто пишет программный код, рисует интерфейсы и проектирует поведение системы.
Тигран Худавердян, руководитель сервиса Яндекс.Такси:
Я совершенно убежден, что единственный способ сделать новый хороший сервис для людей — делать его для себя. Нужно постоянно пользоваться им и обязательно пользоваться сервисами конкурентов, притом не меньше, чем своим. И в сервисах конкурентов важно искать не недостатки, а наоборот — то, чем они лучше, чтобы и самим сделать лучше. В тот день, когда вы со спокойной совестью порекомендуете свой сервис близким людям — мамам, друзьям или просто знакомым, — можно считать, что получилось сделать что-то стоящее.
Мы, команда Яндекс.Такси, часто пользуемся такси — это часть жизни любого жителя большого города. Недавно заглянул в «админку» нашего сервиса и выяснил, что за два с половиной года совершил 810 поездок на Яндекс.Такси. Когда много ездишь, чувствуешь на собственной шкуре каждый недочёт, каждый «баг» или недоработку сервиса. И начинаешь относиться к ним не как к строчке вроде «13409 minor bug» в списке задач, а как к событию, которое произошло с тобой самим.
Однако Яндекс.Такси — сервис не только для пассажиров, но и для таксистов. Например, Яндекс.Таксометр — приложение для смартфонов и планшетов, которое помимо обычных функций таксометра — рассчитать стоимость поездки — умеет предлагать водителям заказы, строить маршрут в Навигаторе, показывать время в пути и так далее. Мы решили выяснить, как водитель взаимодействует с этим приложением, какие трудности возникают у него до, во время и после выполнения заказа, что удобно, а что — нет. Очевидно, что для того, чтобы полностью понять все трудности, нужно стать водителем такси «по-настоящему», но мы были уверены, что даже временное погружение покажет нам общую картину. Вот и решили — погрузиться.
Итак, мы арендовали 15 настоящих такси, заключили необходимые договора с таксопарком, который предоставил нам машины, прошли инструктаж и медосмотр. Все машины перед рейсом проверил специальный проверяющий. И мы поехали.
Сидя за рулём обращаешь внимание на всё: как распределяются заказы, на каком расстоянии от адреса подачи их получает водитель, как приходят уведомления, как ведут себя пассажиры, что им удобно и неудобно. Нескольких заказов хватило, чтобы заметить, где и что нужно изменить. Например, мы обнаружили, что робот иногда выдаёт заказ водителю, который только что проехал нужный поворот. Географически-то он рядом, но в реальности, чтобы доехать до клиента, ему нужно где-то развернуться, и не всегда этот разворот близко. Вернувшись из поездки, мы обменялись впечатлениями и обсудили, как можно это починить и какие ещё недочёты затрудняют работу водителей.
Дарья Золотухина, руководитель группы маркетинга Яндекс.Такси:
Когда в первый раз садишься за руль такси, это, конечно, адреналин. Ты не знаешь, кто сядет к тебе в машину, в каком настроении он будет и как себя поведёт. Я сама часто разбираю отзывы и жалобы на Такси и знаю, как реагируют люди, которым что-то не понравилось в сервисе. Поэтому я опасалась, что мне попадутся такие пассажиры, и они будут вести себя агрессивно. Оказалось — зря.
Я думала, что люди будут удивляться — всё-таки девушка за рулём. Но моим первым клиентом тоже была девушка, иностранка, и её это вообще не удивило. Она давно не была в России, а такси ей заказали на ресепшене в гостинице. Хотя следующий пассажир сразу насторожился — его явно что-то смущало. В машине он немного стеснялся и как будто наблюдал за мной. И только когда узнал, что я работаю в Яндекс.Такси, — расслабился. Наверное, для него всё встало на свои места.
Мне показалось, что люди часто не замечают водителя или относятся к нему как-то предвзято. Например, могут разговаривать при нём о своих интимных делах или изливать на него какой-то негатив, которым бы ни за что не стали делиться с друзьями. Было и такое, но интересно, что отношение людей очень сильно менялось, как только они узнавали, что я на самом деле не таксист. Отчасти из-за того, что водителя так воспринимают, это эмоционально очень тяжёлая работа. Но мне этот опыт помог посмотреть и на пассажира, и на водителя с другой стороны.
Запомнилась ещё одна деталь. Приезжая на заказ, я всегда старалась заранее развернуться так, чтобы выезжать было удобно. Когда я сама вызываю Яндекс.Такси, часто мы разворачиваемся вместе с водителем, когда я уже села в машину. Это одна из таких мелочей, которые вроде бы кажутся очевидными, но осознаёшь их ты только в процессе, когда сам за рулём. И, возможно, это стоит включить в рекомендации для водителя, сделать стандартом качества. В целом поездка очень понравилась, и я бы вызвалась добровольцем, если мы ещё раз устроим такую акцию.
Григорий Дергачёв, руководитель проектов в Яндекс.Такси:
Наверное, мне повезло: заказы доставались в основном в центре или в районе, где я живу. Поэтому Навигатор включать почти не приходилось, и в целом никакого стресса не было. Возил я в основном почему-то бабушек и детей. Все остались довольны, и было приятно, что клиенты часто ставили пятёрки. Хотя, конечно, поездки были бесплатные, поэтому результаты могли быть немного смазаны.
Был один интересный заказ, с детским креслом. Многие пассажиры часто просят именно кресло, а не бустер, и отсутствие в машине детского кресла — одна из частых жалоб. Вот и мне попался такой заказ — в комментарии клиент просил именно кресло. Как назло, у меня в багажнике оказался только бустер. Я решил отменить заказ, но клиент позвонил мне и спросил, почему я проехал мимо. Я объяснил ситуацию, и вдруг оказалось, что его устроит и бустер. На заказ я в итоге приехал и довёз бабушку с внуком до детского сада.
В основном все поездки были очень короткие, и я отчасти почувствовал на себе, каково это — приезжать за 25 минут до заказа, а потом довезти пассажира до места за три-четыре минуты. Если говорить о каком-то практическом результате, то при работе с софтом для водителей периодически возникали трудности — так что теперь понятно, что можно изменить. И команда Яндекс.Таксометра уже работает над этим.
2015-04-29 12:49:32
Каждую неделю российские пользователи задают в поиске Яндекса 200-300 тысяч запросов о том, как ...
+ развернуть текстсохранённая копия
Каждую неделю российские пользователи задают в поиске Яндекса 200-300 тысяч запросов о том, как сделать что-то за определённый промежуток времени. Мы проанализировали эти запросы и выяснили, что люди хотят сделать за несколько секунд:
И что хотят успеть за несколько минут:
Больше подробностей ищите на странице исследования «"Стать феей за секунду" — что хотят сделать за несколько секунд или минут».
2015-04-28 12:59:03
В прошлом году в Высшей школе экономики появился факультет компьютерных наук, созданный при участии ...
+ развернуть текстсохранённая копия
В прошлом году в Высшей школе экономики появился факультет компьютерных наук, созданный при участии Яндекса. На первый курс поступило более 320 человек. Специалисты Яндекса принимали активное участие в разработке программы обучения и преподавании в бакалавриате «Прикладная математика и информатика», и вот каким был первый год обучения студентов этой программы.
Михаил Левин, руководитель службы анализа больших данных в Яндексе, один из преподавателей факультета компьютерных наук ВШЭ:
На факультет поступило неожиданно много студентов. Сначала на «Прикладной математике и информатике» у нас было сто бюджетных мест. Однако к середине июля мы получили куда больше ста заявлений только от олимпиадников, которые могли рассчитывать на поступление без экзаменов. В итоге за счёт ВШЭ увеличили количество бюджетных мест и набрали около двухсот человек — почти в два раза больше, чем собирались. Вместо одного лекционного потока сформировали два.
В первом и втором модулях студенты изучали программирование на Python и C++, в третьем начался базовый курс алгоритмов. Кроме того, первокурсникам преподавали математический анализ, дискретную математику, линейную алгебру и геометрию (на сайте ВШЭ можно изучить общую программу бакалавриата целиком). Многие семинаристы — сотрудники Яндекса. Лекторами по некоторым курсам также были специалисты из Яндекса, а кроме того мы пригласили хороших лекторов из НМУ, с мехмата. Большинство наших семинаристов и лекторов получили от студентов высокие оценки.
На входе мы проводили тестирование по математике и программированию (кстати, по ссылке можно проверить свои силы и сравнить результаты с результатами наших первокурсников). Оно было нужно, чтобы создать пилотную группу из наиболее сильных и готовых к дополнительной нагрузке студентов. На семинарах они уходят вперёд или рассматривают темы более глубоко, а также сдают более продвинутые факультативы по математике и алгоритмам.
С первого курса студенты ПМИ ФКН начинают проектную работу. Проектный семинар стартовал в третьем модуле. Индивидуальными проектами наших студентов руководят более 25 менторов из IT-индустрии и науки. Темы проектов простираются от приближенных решений задачи коммивояжера, архиватора и написания ботов, хорошо играющих в 2048, до веб-схемы метро с поиском маршрута, распознавателя капчи, кластеризации раковых транскриптов и сервиса статистического анализа истории рыночных цен финансовых активов, в общем — смотрите сами. В конце третьего модуля студенты сдали промежуточные отчёты, и сейчас у большинства из них уже есть работающие прототипы.
С первых дней на факультете начал работу центр студенческих олимпиад ВШЭ под руководством Михаила Густокашина. Тренировки проходят два раза в неделю — на факультете и в Яндексе. К нам поступили очень сильные олимпиадники, имеющие опыт в спортивном программировании, и результаты не заставили себя ждать. Две команды дошли до полуфинала международного студенческого чемпионата по программированию ACM ICPC, одна из них вышла в финал. Это очень сильный результат: команда состояла целиком из первокурсников, и ребята выступили лучше всех команд первокурсников в России.
Конечно, на факультете есть не только бакалаврские программы. У нас продолжает работать магистратура, в которой, в том числе, есть отделение ШАДа. Была разработана новая магистерская программа — «Математические методы оптимизации и стохастики», под руководством Владимира Спокойного. Также мы организовали аспирантскую школу по компьютерным наукам со своим научным семинаром.
В этом году на ФКН были созданы Коллоквиум и IT-лекторий. Коллоквиум — научное мероприятие, на нём выступали с лекциями различные российские и зарубежные ученые, например, Александр Шень, Штефан Хаар, Дмитрий Ветров, Илья Разенштейн, Глеб Гусев, Макс Канович, Владимир Спокойный и другие. IT-лекторий — место, где выступают специалисты их разных компаний и рассказывают об интересных проектах в IT-индустрии. Нас посетили представители Яндекса, Facebook, ВКонтакте, Одноклассников, Крока, SAP и других компаний.
Кроме того, Яндекс учредил стипендию имени Ильи Сегаловича, которая присуждается ежегодно трём аспирантам, трём магистрам и 10 бакалаврам факультета компьютерных наук. Недавно стали известны имена первых лауреатов стипендии.
В этом году приём документов в бакалавриат факультета компьютерных наук начнётся 20 июня, в магистратуру — 2 июня. С критериями приема можно ознакомиться на сайте приёмной комиссии Высшей школы экономики. Порядок приёма победителей и призёров олимпиад школьников на 2015 год будет опубликован не позднее 1 июня.
Больше информации для абитуриентов вы можете найти на сайте факультета. Кроме того, завтра, 29 апреля, состоится презентация факультета компьютерных наук. По ссылке вы можете посмотреть прямую трансляцию мероприятия, она начнётся в 17:00 по московскому времени. Если у вас остались вопросы — задавайте их в комментариях.
2015-04-21 12:37:35
Сегодня мы открываем регистрацию на чемпионат по спортивному программированию Яндекс.Алгоритм-2015. ...
+ развернуть текстсохранённая копия
Сегодня мы открываем регистрацию на чемпионат по спортивному программированию Яндекс.Алгоритм-2015. В этом году чемпионат пройдёт полностью в онлайне, на платформе Яндекс.Контест. Участником может стать каждый, кто умеет решать алгоритмические задачи и воплощать решения на одном из 13 языков программирования.
Яндекс.Алгоритм состоит из нескольких отборочных раундов, в каждом из которых нужно решить пять задач за 100 минут. В финал, который состоится 6 августа, выйдут 25 лучших по результатам отбора. Призёров ждут денежные призы: 300 тысяч рублей за первое место, 150 — за второе и 90 — за третье. Кроме того, 512 сильнейших участников Алгоритма получат футболки от Яндекса.
Спортивное программирование — область, в которой нужно уметь решать очень сложные задачи за очень короткое время. Насколько это умение нужно программисту при написании промышленного кода? Мы задали этот вопрос сотрудникам Яндекса, которые занимались или занимаются спортивным программированием, и узнали, как этот опыт помогает (или мешает) им в работе.
Яндекс.Алгоритм проводится в третий раз. В 2013 и 2014 годах победу в чемпионате одержал белорус Геннадий Короткевич. Разбор задач чемпионатов прошлых лет можно найти в нашем техноблоге на Хабрахабре (задачи Яндекс.Алгоритма-2013 и Яндекс.Алгоритма-2014).
2015-04-16 13:55:54
Если вы когда-нибудь задавались вопросом, какого цвета бедро испуганной нимфы, недоумевали, о каком ...
+ развернуть текстсохранённая копия
Если вы когда-нибудь задавались вопросом, какого цвета бедро испуганной нимфы, недоумевали, о каком таком «перванше» идёт речь в любимой книге, или хотели перекодировать нужный оттенок из RGB в HSV, вы уже наверняка знакомы с колдунщиком цветов Яндекса. Если нет, то вот он, просим любить и жаловать.
Колдунщик цветов появился в 2008 году. К нему быстро привыкли: кому-то он помогал в работе, кому-то просто нравилось вращать барабан и узнавать о существовании цветов вроде «бисмарк-фуриозо». Но летом прошлого года страница результатов поиска поменяла интерфейс, и некоторыми возможностями пришлось временно пожертвовать — в том числе и колдунщиком цветов. Зато вернулся он в улучшенном виде.
Старый колдунщик знал 234 цвета. В новом их стало 1010: мы взяли за основу несколько существующих списков именованных цветов (это те, за которыми закреплены конкретное название и координаты в стандартных цветовых моделях вроде RGB) и добавили несколько оттенков, названия для которых придумали сами. Теперь нужно было разложить эти цвета по порядку — чтобы людям было удобно пользоваться колдунщиком, переходы между соседними цветами должны быть плавными. Надо ли говорить, что это оказалось и сложнее, и интереснее, чем мы думали.
Так выглядел наш набор цветов до сортировки.
Вручную выстроить эти цвета в плавную последовательность практически невозможно. Один и тот же цвет на глаз воспринимается по-разному — в зависимости от его окружения. Когда меняешь расположение одного цвета, нужно передвигать и другие. Местоположение одних только оттенков синего можно выверять до бесконечности. Очевидно, что эту задачу нужно решать математически.
В упрощенном виде её можно сформулировать так: нужно нанизать 1010 цветов на нитку — так, чтобы получившиеся бусы максимально плавно меняли окрас. Тут необходимо учитывать, что нитка одномерная, а все модели цветового пространства как минимум трёхмерны. Это связано с физиологией человеческого зрения. Фоторецепторы, с помощью которых мы различаем цвета, — колбочки — делятся на три типа, по чувствительности к разным длинам волн света. Первые интенсивно реагируют на фиолетово-синюю часть спектра, вторые — на зелёно-жёлтую, третьи — на жёлто-красную. Например, если раздражены два последних типа рецепторов, то мы видим жёлтый цвет, если только последние — красный.
Такая физиология человеческого восприятия отражена в цветовой модели RGB. Это трёхмерное пространство, заданное осями, по которым увеличивается интенсивность красной (red), зеленой (green) и синей (blue) компонент. Поместить наши цвета в это пространство никакой проблемы не составляет — их координаты известны. Проблема — в плавности переходов от одного цвета к другому.
Чтобы переход был плавным, две соседние «бусины» должны минимально отличаться по цвету — для человеческого восприятия. Это уточнение не такое очевидное, каким кажется. Логично предположить, что чем меньше один цвет отстоит от другого в математической модели, тем меньше они отличаются на глаз. Значит, необходимо найти такое расположение для нашей нитки, чтобы между последовательными бусинами-цветами было наименьшее расстояние. Это верный ход мысли, но не для всякой цветовой модели.
Цветовые пространства большинства моделей, в том числе и RGB, не однородны для нашего восприятия. Другими словами, человеческим глазом один и тот же сдвиг по осям координат ощущается по-разному в разных цветовых регионах. Если взять два цвета — например, красный и тёмно-зеленый — и изменить их координаты так, чтобы сдвиг по всем трём осям был равным и параллельным, то на глаз разница между красным и получившимся тёмно-красным будет больше, чем между тёмно-зеленым и тёмно-тёмно-зеленым. Это значит, что если мы найдем математический алгоритм, который по оптимальному маршруту обойдёт все интересующие нас объекты такого цветового пространства и нанижет их на одномерную нитку, то для человеческого глаза изменение её окраса не будет равномерным — а мы-то хотели добиться именно этого.
Одна из моделей, в которых визуальная однородность достигается математическими средствами, назвается CIELAB — в ней-то мы и решали нашу задачу. По своему устройству CIELAB принципиально отличается от RGB: оси координат в ней задают яркость и две пары противоположных цветов (красный — зеленый, синий — жёлтый).
Итак, мы поместили наши 1010 цветов в пространство, где геометрическое расстояние между цветами соответствует восприятию разницы между ними. Теперь нам осталось обойти их так, чтобы расстояние между каждыми двумя последовательными элементами было бы минимальным.
Тут напрашивается решение с помощью алгоритма «ближайшего соседа»: выбираем точку, которая к нам ближе всего, добравшись до неё, ищем новую ближайшую точку и так далее. Однако алгоритм «ближайшего соседа» решает только локальную задачу, игнорируя картину в целом. Представьте себе архипелаг, острова которого разбросаны так же неравномерно, как 1010 цветов в нашем пространстве. Если путешествовать по ним, каждый раз двигаясь к ближайшему острову, мы в результате рискуем очень скоро оказаться, например, на южном краю архипелага, оставив не охваченными еще десять островов на севере. Тогда нам придется совершить длинный перелет, или, в нашем случае, — резкий переход от одного цвета к другому. Так что это решение нам не подходит.
Задача, с которой мы столкнулись, улучшая колдунщик цветов, представляет собой частный случай одной из самых известных задач комбинаторной оптимизации — задачи коммивояжёра. В классическом виде она заключается в том, чтобы найти самый короткий маршрут, который позволил бы коммивояжёру хотя бы раз оказаться в каждом из городов в его списке, а в конце пути вернуться в исходную точку. Правда, мы имели дело не с плоской картой, а с трёхмерным пространством, но в остальном картина похожа: коммивояжёру предстояло посетить пляж Бонди, пески пустыни, горный луг, Мичиганский университет и ещё 1006 пунктов и при этом пройти по оптимальному маршруту. Как и для большинства классических задач, для задачи коммивояжёра существуют готовые алгоритмы оптимизации. Применив их к нашему случаю, мы получили вот такой цветной путь коммивояжёра в 3D.
Теперь повторить путь коммивояжёра в цветовом пространстве CIELAB вы можете на странице результатов поиска. Просто поищите, например, [цвет Яндекса].