company_banner
  • Как управлять часами? Разбор фронтенд-трека второго чемпионата по программированию

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

      A. Аннигилируй это

      Авторы: Максим Сысоев, Константин Петряев

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

      Условие


      Вы устроились работать в лабораторию по изучению антиматерии, где проводят различные опыты. Ваш отдел изучает процессы, которые происходят при объединении материи и антиматерии. Вам необходимо провести серию опытов над некоторым количеством молекул.
      Читать дальше →
      • +13
      • 8,5k
      • 5
    • Как устроены сервисы управляемых баз данных в Яндекс.Облаке

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

        Меня зовут Владимир Бородин, я руководитель платформы данных Яндекс.Облака. Сегодня я хочу рассказать вам, как всё устроено и работает внутри сервисов Yandex Managed Databases, почему всё сделано именно так и в чём преимущества – с точки зрения пользователей – тех или иных наших решений. И конечно, вы обязательно узнаете, что мы планируем доработать в ближайшее время, чтобы сервис стал лучше и удобнее для всех, кому он нужен.

        Что ж, поехали!

        image
        Читать дальше →
      • Истории Геннадия Зеленко и Сергея Попова — популяризаторов технологий в СССР

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



          Недавно в гостях у Музея Яндекса побывали соавторы этого цикла статей и создатели компьютеров «Микро-80», «Радио-86РК» и «Микроша» — Геннадий Вадимович Зеленко и Сергей Николаевич Попов SNPopov. Мы записали для Хабра истории, которые они рассказали. В конце поста можно посмотреть видео встречи.
          Читать дальше →
        • Множественные эксперименты: теория и практика

            В современном мире сложно представить развитие продукта без A/B-тестирования. Чтобы успешно запустить продукт или новую функциональность — надо грамотно спроектировать A/B, рассчитать и интерпретировать его результаты. Иногда нам требуется тестирование более чем для двух групп. В этой статье мы рассмотрим как раз такой случай — множественное тестирование:

            • поговорим о том, когда и зачем следует проводить множественные тесты;
            • рассмотрим основные методы расчёта результатов тестов и математические принципы, на которых основаны методы;
            • приведём примеры программной реализации методов; эти примеры вы сможете использовать в своих проектах.

            Итак, приступим.


            Читать дальше →
            • +16
            • 6,4k
            • 1
          • Второй чемпионат по программированию: разбираем задачи ML-трека

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

              По традиции мы опубликуем разборы треков на Хабре. Начнём с задач квалификационного этапа по машинному обучению. Команда подготовила пять таких задач, из которых составила два варианта по три задачи: в первом варианте были задачи A1, B1 и C, во втором — A2, B2 и C. Варианты случайно распределялись между участниками. Автор задачи C — наш разработчик Павел Пархоменко, остальные задачи составил его коллега Никита Сендерович.

              За первую простую алгоритмическую задачу (A1/A2) участники могли получить 50 баллов, правильно реализовав перебор по ответу. За вторую задачу (B1/B2) мы давали от 10 до 100 баллов — в зависимости от эффективности решения. Чтобы получить 100 баллов, требовалось реализовать метод динамического программирования. Третья задача была посвящена построению кликовой модели по предоставленным обучающим данным. В ней требовалось применить методы работы с категориальными признаками и воспользоваться нелинейной моделью обучения (например, градиентным бустингом). За задачу можно было получить до 150 баллов — в зависимости от значения функции потерь на тестовой выборке.
              Читать дальше →
              • +13
              • 8,3k
              • 1
            • «Это тоже анализ данных». Разговор о биоинформатике с Михаилом Гельфандом

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


                Недавно я побывал в гостях у Михаила Сергеевича Гельфа́нда в Институте проблем передачи информации. Мы поговорили о том, что такое биоинформатика, о её интересных приложениях, о том, чем могут быть полезны IT-специалисты в биоинформатике и что им для этого нужно выучить.


                Под катом этой статьи вы найдете полную расшифровку нашего разговора, а видео можно посмотреть на YouTube.



                Читать дальше →
              • Как устроен поиск Яндекс.Маркета и что будет, если упадёт один из серверов

                  Привет, меня зовут Евгений. Я работаю в инфраструктуре поиска Яндекс.Маркета. Хочу рассказать сообществу Хабра о внутренней кухне Маркета – а рассказать есть что. Прежде всего, как устроен поиск Маркета, процессы и архитектура. Как мы справляемся с внештатными ситуациями: что случится, если упадёт один сервер? А если таких серверов будет 100?

                  А ещё вы узнаете, как мы внедряем новую функциональность на куче серверов сразу. И как тестируем сложные сервисы прямо в production, не доставляя пользователям никаких неудобств. В общем, как устроен поиск Маркета, чтобы всем было хорошо.


                  Читать дальше →
                • Горизонтальный vs. вертикальный рост разработчика. Мнения из ivi и Яндекса

                    Одну из сессий конференции YaTalks мы посвятим росту разработчиков. Это будет разговор между представителями разных фирм — мы пригласили CTO онлайн-кинотеатра ivi Евгения eross Россинского, технического директора mos.ru Романа romas1982 Ивлиева и Германа Наркайтиса — директора по инжинирингу компании Apstra. От нас будут участвовать руководители разных команд в поисковом портале: Ольга Мегорская и (в роли модератора) Андрей yafinder Плахов.

                    Мы подумали, что перед дискуссией стоит «синхронизироваться» в терминах. Все хотя бы примерно представляют, что такое вертикальный рост. С горизонтальным всё сложнее: хорошие примеры выросших горизонтально людей не так видны из-за пределов компании. В чём состоит их работа? Они пишут код или только занимаются код-ревью, составлением методологий и т. д.? А возвращаясь к вертикальному росту — какие главные проблемы встают перед (будущим) тимлидом? Мы задали эти вопросы участникам дискуссии и сегодня публикуем их ответы на Хабре. Тех разработчиков, кто выбрал горизонтальную ветку развития, будем называть экспертами — имея в виду, что они управляют не людьми, а технологиями.

                    Евгений Россинский, CTO ivi




                    Небезразличные разработчики


                    Помимо вертикального роста, по административной линии, разработчики могут расти горизонтально — в технологических экспертов. Тогда важнее хард-скиллы. Это очень сильные, небезразличные разработчики, которые развивают концепцию архитектуры продукта. Им не требуется менеджмент — они самостоятельно находят «дырки» в продуктах и закрывают их. Если надо, они сами пишут код, собирают и разбирают команды. На таких людях у нас держится большая часть архитектурных решений. В нашей компании 26 команд, в каждой из них примерно по 10 человек, из них 2-3 эксперта. Более того, иногда мы создаём команды только из таких суперзвёзд. Рост эксперта зависит от уровня и количества проектов, которые он курирует.
                    Читать дальше →
                    • +17
                    • 10,2k
                    • 2
                  • Как мы внедряли WebAssembly в Яндекс.Картах и почему оставили JavaScript

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


                      Читать дальше →
                    • Как мы создавали технологию оптического распознавания текста. OCR в Яндексе

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


                      Читать дальше →
                    • Как масштабировать дата-центры. Доклад Яндекса

                        Мы разработали дизайн сети дата-центров, который позволяет разворачивать вычислительные кластеры размером больше 100 тысяч серверов с полосой бисекции (bisection bandwidth) свыше одного петабита в секунду.

                        Из доклада Дмитрия Афанасьева вы узнаете об основных принципах нового дизайна, масштабировании топологий, возникающих при этом проблемах, вариантах их решения, об особенностях маршрутизации и масштабирования функций forwarding plane современных сетевых устройств в «плотных» (densely connected) топологиях с большим числом ECMP-маршрутов. Кроме того, Дима коротко рассказал об организации внешней связности, физическом уровне, кабельной системе и способах дальнейшего увеличения емкости.



                        — Всем добрый день! Меня зовут Дмитрий Афанасьев, я сетевой архитектор Яндекса и занимаюсь преимущественно дизайном сетей дата-центров.
                        Читать дальше →
                      • Как проходят секции по машинному обучению на собеседованиях в Яндекс

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


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


                          image

                          Читать дальше →
                        • «Видимо, предстоит большая битва». Что ждёт IT-индустрию в ближайшем будущем

                            Отрасль IT развивается стремительно. Создаются новые технологии и знания, возникают идеи и стартапы, гиганты индустрии лидируют по капитализации в списках крупнейших компаний мира, а более традиционные области человеческой деятельности всё чаще используют IT-решения в своём развитии. Но что заметного происходит прямо сейчас? Что нужно не упустить, чтобы найти себе достойное место в будущем?




                            Чтобы разобраться в этом, мы решили узнать мнения спикеров нашей конференции YaTalks, которая пройдёт в Москве 30 ноября. Среди наших спикеров — Александр krainov Крайнов, Андрей yafinder Плахов, Андрей styskin Стыскин, Евгений eross Россинский, Роман romas1982 Ивлиев. А вот и вопросы, на которые они сегодня отвечают:


                            Какие события в мире IT за последний год запомнились тебе больше всего? Что интересного случилось, какие сейчас есть интересные тренды, на которые стоит обратить внимание?


                            Какие важные книги/статьи/выступления на тему разработки случились за последний год? Что порекомендуешь изучить тем, кто хочет быть в теме?


                            Что посоветуешь действующим разработчикам и тем, кто только учится? Чем заняться прямо сейчас, чтобы через год (два, пять, десять) быть востребованным на рынке труда?

                            Читать дальше →
                          • Баги C++20. Итоги встречи в городе Белфаст

                              На днях прошла встреча комитета по стандартизации языка программирования C++ в городе Белфасте. От представителей стран в комитет прилетело около 400 замечаний к C++20, с половиной из них успели расправиться.

                              Под катом вас ждут результаты обсуждений замечаний России (да-да, ВАШИХ замечаний к C++20), некоторые замечания других стран, ну и подходящие новинки C++23 (Executors!).
                              Читать дальше →
                            • Тренды в компьютерном зрении. Хайлайты ICCV 2019



                                Нейросети в компьютерном зрении активно развиваются, многие задачи ещё далеки от решения. Чтобы быть в тренде в своей области, достаточно подписаться на инфлюенсеров в Твиттере и читать релевантные статьи на arXiv.org. Но у нас появилась возможность съездить на International Conference on Computer Vision (ICCV) 2019. В этом году она проводится в Южной Корее. Теперь мы хотим поделиться с читателями Хабра тем, что мы увидели и узнали.
                                Читать дальше →
                                • +43
                                • 6,5k
                                • 4
                              • Как Браузер для iOS А/Б-тестирование улучшал. Доклад Яндекса

                                  Не так давно мы посмотрели, как устроены A/Б-эксперименты в Поиске. Руководитель бригады разработки iOS-версии Яндекс.Браузера Андрей Сикерин sav42 на последней встрече CocoaHeads Russia тоже рассказывал про инфраструктуру А/Б-тестирования, только уже в своем проекте.



                                  — Привет, меня зовут Андрей Сикерин, я разрабатываю Яндекс.Браузер для iOS. Я хочу рассказать, что представляет собой платформа экспериментов браузера для iOS, как мы научились ее использовать, поддержали ее более продвинутые возможности, как диагностировать и отлаживать фичи, раскатываемые с помощью системы экспериментов, а еще о том, что же такое источник энтропии и где же хранится монетка.
                                  Читать дальше →
                                • Просто и на C++. Основы Userver — фреймворка для написания асинхронных микросервисов

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

                                    Мы решили сделать свой фреймворк, с C++17 и корутинами. Вот так теперь выглядит типичный код микросервиса:

                                    Response View::Handle(Request&& request, const Dependencies& dependencies) {
                                      auto cluster = dependencies.pg->GetCluster();
                                      auto trx = cluster->Begin(storages::postgres::ClusterHostType::kMaster);
                                    
                                      const char* statement = "SELECT ok, baz FROM some WHERE id = $1 LIMIT 1";
                                      auto row = psql::Execute(trx, statement, request.id)[0];
                                      if (!row["ok"].As<bool>()) {
                                        LOG_DEBUG() << request.id << " is not OK of " << GetSomeInfoFromDb();
                                        return Response400();
                                      }
                                    
                                      psql::Execute(trx, queries::kUpdateRules, request.foo, request.bar);
                                      trx.Commit();
                                    
                                      return Response200{row["baz"].As<std::string>()};
                                    }
                                    

                                    А вот почему это крайне эффективно и быстро — мы расскажем под катом.
                                    Читать дальше →
                                  • Какие soft skills нужны разработчику? Мнения из Яндекса

                                      Скоро начнется большая студенческая олимпиада «Я — профессионал». Она уже несколько лет проходит в онлайне и офлайне. Участвовать могут студенты самых разных специальностей, включая технические. Олимпиаду организуют 26 ведущих вузов: НИУ ВШЭ, МГУ, МГТУ, МФТИ, МИФИ, СПбГУ, Университет ИТМО и другие.

                                      Яндекс — технический партнер проекта. Для нас «Я — профессионал» уже второй год подряд становится хорошим поводом поговорить про важность софт-скиллз (гибких навыков) в работе разработчиков и других специалистов. Год назад в нашем московском офисе прошла встреча для участников олимпиады, посвященная софт-скиллам. Говорил о них и руководитель офиса разработки Яндекса в Новосибирске Сергей Бражник, выступая на тренинге, входящем в программу «Я — профессионал». Сегодня Сергей и еще двое руководителей в Яндексе — Анна Федосова и Олег Мохов Olegbl4 — расскажут для Хабра о гибких навыках: какие они бывают, какие из них нужны разработчику, где их получать и как их наличие сказывается на росте в компании.

                                      Сергей Бражник, руководитель офиса разработки в Новосибирске, директор по развитию региональных образовательных проектов




                                      — Для разработчика важны «4К»: критическое мышление, креативность, кооперация и коммуникация. Принято считать, что коммуникация в этой профессии — не важный навык, но если задуматься, он необходим для профессионального роста: нужно уметь задавать вопросы, слушать и слышать собеседника, объяснять свою точку зрения и принимать чужую, говорить и договариваться. Стажер может не уметь работать в команде или критически мыслить — и это нормально, потому что у него еще нет такого бэкграунда.
                                      Читать дальше →
                                    • Blackbox-мониторинг в Clos-сетях. Доклад Яндекса

                                        Топология современных дата-центров и устройства в них уже не позволяют довольствоваться исключительно whitebox-мониторингом. С течением времени понадобился инструмент, который покажет работоспособность конкретных устройств, исходя из реальной ситуации с передачей трафика (dataplane) в любом месте Clos-сети. Несколько недель назад на конференции Next Hop сетевой инженер Яндекса Александр Клименко поделился опытом решения этой проблемы.



                                        — Я работаю в отделе эксплуатации и развития сети Яндекса, и меня иногда заставляют решать какие-то проблемы, вместо того чтобы рисовать на листочках красивые облачка или изобретать светлое будущее. Приходят люди и говорят, что у них что-то не работает. Если это дело мониторить, если наши дежурные инженеры будут видеть, что именно не работает, то мне самому будет легче. Так что эти полчаса будут посвящены мониторингу.
                                        Читать дальше →
                                      • Как Алиса узнаёт страны по фотографиям. Исследование Яндекса

                                          Привет! Меня зовут Евгений Кашин, и я работаю в лаборатории машинного интеллекта Яндекса. Недавно мы запустили игру, в которой пользователи соревнуются с Алисой в угадывании стран по фотографиям.

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

                                          Этот пост будет интересен как специалистам в области компьютерного зрения, так и всем, кто хотел бы заглянуть внутрь «искусственного интеллекта» и понять логику его работы.


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

                                        Самое читаемое