Рубрика «Блог компании Яндекс» - 6
V8 в бэкенде С++: от одного JS-скрипта до фреймворка онлайн-вычислений
2021-08-17 в 6:50, admin, рубрики: c++, javascript, V8, Анализ и проектирование систем, Блог компании Яндекс, высокая производительность, команда яндекс.такси, Проектирование и рефакторингТернистая история Лисп-машин: первый бум AI, война Столлмана и удивительный интерфейс
2021-08-05 в 8:17, admin, рубрики: Блог компании Яндекс, искуственный интеллект, История ИТ, Компьютерное железо, Лисп-машина, ричард столлман, старое железо
Лисп-плата из музея ЯндексаЧитать полностью »
Приёмы ускорения кода на JS и других языках: подборка от разработчика поиска Яндекса
2021-08-03 в 8:01, admin, рубрики: backend, javascript, web-разработка, Блог компании Яндекс, быстрый код, высокая производительность, практические советы, Программирование, Разработка веб-сайтовНекоторые из приёмов будут полезны и тем, кто пишет на других языках. Все способы разделены на группы по убыванию специфичности: от наиболее общих до конкретных. Почти все примеры кода взяты из реальных проектов, из реального продакшена.
- Организационные
Культура разработки performance-first
Бюджет скорости
Performance mantras - Те, что можно использовать независимо от языка и его реализации
Смена языка или фреймворка
Смена алгоритма
Оптимизация алгоритма
Вынос инвариантов на уровень выше
Boolean short circuit
Досрочный выход из цикла
Предвычисление - Для языков/фреймворков, в которых нет ленивых вычислений и приёма copy-on-write
Shortcut fusion
Ленивое вычисление
Copy-on-write
Оверинжиниринг - Зависящие от железа
Разворачивание мелких циклов
Предсказание ветвлений (Branch prediction)
Доступ к памяти: направление итерации
Доступ к памяти: [i][j] vs [j][i] - Для языков со сборкой мусора
Мутабельность
Zero memory allocation или GC-free - Специфичные для JavaScript
Антипаттерн: накопление строк в массиве
Антипаттерн: Lodash _.defaults
Idle Until Urgent
Даунгрейд кода: ES6 → ES5 - Примеры из код-ревью
Сборка и тестирование в монорепозитории: кластер распределённой сборки DistBuild. Доклад Яндекса
2021-07-10 в 8:28, admin, рубрики: Анализ и проектирование систем, Блог компании Яндекс, высокие нагрузки, монорепозиторий, распределенные системы, системы сборкиКак собирать 7000 изменений в день в огромном монорепозитории? Я постарался рассказать об этом на недавнем Я.Субботнике. Во вводной части я напомнил, чем мы в принципе занимаемся в отделе технологий разработки Яндекса. Дальше поговорили про устройство нашего кластера, а на десерт пообсуждали, как у нас используются вычислительные ресурсы на этом кластере — насколько хорошо они утилизируются.
Чем мы занимаемся
— Итак, давайте начинать. Наверняка все из вас каким-то образом связаны с IT и знают нормальный жизненный цикл или каждодневную работу разработчика. Он приносит основную ценность тем, что пишет код.
Читать полностью »
Как проходят архитектурные секции собеседования в Яндексе: практика дизайна распределённых систем
2021-06-24 в 9:27, admin, рубрики: Анализ и проектирование систем, архитектура систем, Блог компании Яндекс, высокая производительность, дизайн систем, Промышленное программирование, распределенные системы, собеседованияПривет, меня зовут Костя Кардаманов, я работаю в отделе технологий разработки Яндекса. Обычно такой же фразой я приветствую и кандидатов на собеседовании. А сегодня я хотел бы рассказать вам, как и зачем мы проводим интервью по дизайну систем с бэкенд-разработчиками. Сразу скажу: для фронтендеров, мобильных разработчиков и ML-инженеров подобный тип собеседований применим слабо, так что эти специальности мы здесь обсуждать не будем.
Технический уровень кандидата у нас оценивается за счет всего двух типов интервью: секции с кодом и секции дизайна компьютерных систем. Первый тип мы назначаем всем претендентам вне зависимости от их уровня, а вот у кандидатов, которые претендуют на должность старшего специалиста, нужно проверять не только способность писать эффективный и работоспособный код, но и способность разрабатывать сложные системы в целом.
Что такое дизайн информационных систем
Основная цель любой IT-компании — производить сервисы, которые решают задачи пользователей. Мы должны уметь собирать элементы системы в единый механизм, который будет эффективно выполнять поставленную цель, и если первый тип собеседований нацелен в первую очередь на проверку необходимого минимума, то интервью про дизайн систем проверяет достаточность навыков кандидата в достижении конечной цели. Далекому от IT пользователю принципы и устройство систем могут казаться бесконечно сложными, но мы, их разработчики, должны иметь (не обязательно детальное) представление о принципах функционирования и роли каждого компонента.
Опытный читатель может сказать — в мире полно платных и бесплатных решений, из которых я могу собрать систему как из деталей конструктора, зачем мне понимать устройство этих деталей?Читать полностью »
Как Яндекс применил генеративные нейросети для поиска ответов
2021-06-10 в 8:00, admin, рубрики: gpt-3, natural language processing, y1, yalm, алиса, Блог компании Яндекс, искусственный интеллект, команда алисы, команда яндекс.поиска, машинное обучение, обновление поиска, поиск, поисковые технологии, трансформеры, яндексТолько что мы представили новую версию поиска Y1. Она включает в себя комплекс технологических изменений. В том числе улучшения в ранжировании за счёт более глубокого применения трансформеров. Подробнее об этом направлении мой коллега Саша Готманов уже рассказывал в нашем блоге. В новой версии модель стала мощнее: количество параметров возросло в 4 раза. Но сегодня мы поговорим о других изменениях.
Когда человек вводит запрос в поисковик, он ищет информацию или способ решения своей задачи. Наша глобальная цель — помогать находить такие ответы, причём сразу в наиболее ёмком виде, чтобы сэкономить людям время. Этот тренд на ускорение решения пользовательских задач особенно заметен в последние годы. К примеру, теперь многие пользователи задают свои вопросы не текстом в поиске, а голосовому помощнику. И тут нам на помощь пришли огромные генеративные нейросети, которые способны перерабатывать, суммаризировать и представлять в ёмком виде тексты на естественном языке. Пожалуй, самой неожиданной особенностью таких сетей стала возможность быстро обучаться на всё новые задачи без необходимости собирать большие датасеты.
Сегодня мы поделимся опытом создания и внедрения технологии YaLM (Yet another Language Model), которая теперь готовит ответы для Поиска и Алисы. В этом мне помогут её создатели — Алексей Петров petrovlesha и Николай Зинов nzinov. Эта история основана на их докладе с Data Fest 2021 и описывает внедрения модели в реальные продукты, поэтому будет полезна и другим специалистам в области NLP. Передаю слово Алексею и Николаю.
Как превратить две серверные стойки в сеть для десятков тысяч машин и не остаться в неоплатном техническом долгу
2021-04-08 в 8:02, admin, рубрики: Clos, автоматизация, Блог компании Яндекс, датацентры, команда яндекс.облака, масштабируемость, облачные сервисы, отказоустойчивость, Серверное администрирование, сетевая автоматизация, Сетевые технологии, сети, ЦОДы, Шарль Кло или Чарльз Клоз?, яндекс.облакоКак и любое другое облако, Yandex.Cloud — это многослойная иерархия абстракций: SaaS, лежащий поверх PaaS, запущенный на IaaS. Связность виртуальной инфраструктуры обеспечивает виртуальная же сеть, которая является, по сути, оверлеем. И только в самой глубине этой системы обнаруживается физическая сеть из проводов и коммутаторов. Мало кто вспоминает о ней, пока всё работает. А меж тем она — кровеносная система всей платформы.
Привет, я Марат Сибгатулин, сетевой инженер Yandex.Cloud. Яндекс про свою сеть рассказывал уже не раз. И про её физическую инфраструктуру, и про особенности устройства Yandex.Cloud, и про то, как вообще работает виртуальная сеть. Не буду повторяться. Расскажу о том, как мы запустили публичное облако на том, что было — на двух стойках, и масштабировали его до сети для десятков тысяч серверов, не наращивая неоплатный технический долг.
Мы практикуем следующий подход к созданию и развитию чего бы то ни было: прототип → минимально необходимая функциональность и масштаб → рост → эволюционное развитие. На первый взгляд он естественен и очевиден, в отличие от подхода «сделать сразу идеально и на века». На деле — требует вдумчивого предварительного планирования, чтобы потом не подставлять в горячке новые костыли под старые, пытаясь поспеть за внезапным ростом.
Читать полностью »
«Я не робот»: история Яндекса о том, как победить ботов, а не людей
2021-04-06 в 8:01, admin, рубрики: антифрод, Блог компании Яндекс, информационная безопасность, капча, капча яндекса, команда яндекс.поиска, Компьютерное зрение, обработка изображений, Разработка веб-сайтов, яндексНикто не любит капчу. Угадай слово по плохой картинке, собери пазл, отличи светофор от гидранта, сложи два числа и так далее. Формы бывают разные, но суть всегда одна: мы тратим своё время и нервы.
Чуть больше года назад моя команда взялась за модернизацию старой капчи Яндекса. Обычно в таких задачах стремятся повысить качество и полноту отсева ботов, оставив человеку шанс прорваться через капчу. Но мы зашли с другой стороны: решили сделать капчу более дружелюбной к людям, не ухудшив при этом защиту от ботов. Казалось бы, наивный подход. Но у нас получилось.
Прочти меня: код, который не выбесит соседа
2021-03-16 в 8:44, admin, рубрики: c++, codestyle, python, Блог компании Яндекс, документация, документация кода, идеальный код, Лайфхаки для гиков, Программирование, С++, Совершенный код, читаемость, читаемость кода, читаемый кодСегодня поговорим о том, как писать код, чтобы он не злил окружающих и не раздражал вас спустя годы работы, когда вы снова попытаетесь его прочесть.
Я расскажу о подходах, которые мы используем в Яндекс.Такси для написания читаемого кода на C++, Python, JavaScript и других языках.
Читать полностью »
Как мы ускоряли работу отладчика Swift
2021-03-10 в 7:50, admin, рубрики: clang, DevTools, iOS, LLDB, open source, swift, Блог компании Яндекс, команда яндекс.браузера, разработка мобильных приложений, разработка под iOS, яндекс.браузерПривет! Меня зовут Александр Скворцов, я работаю в команде Яндекс.Браузера для iOS. Это очень большой проект, который насчитывает около тысячи clang-модулей и примерно 600 Swift-модулей. Наверное, из-за таких масштабов мы чаще других наталкиваемся на проблемы инструментов разработки, например, находим критические ошибки в компиляторе, неработающую подсветку и автодополнение. Это бывает неприятно, но жить можно.