home.social

#опенсорс_яндекса — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #опенсорс_яндекса, aggregated by home.social.

  1. Заменить нельзя оставить: как DataLens мигрировал с Highcharts

    Привет, меня зовут Евгений Алаев, я разработчик интерфейсов в команде Yandex DataLens . Это облачный BI‑инструмент для анализа данных и построения дашбордов, и графики в нём — не «одна из фич», а сердце продукта. Пользователь открывает дашборд и первое, что видит, — визуализации. Именно они отвечают на вопрос: «Что происходит с моими данными?» DataLens работает в двух инсталляциях — для самого Яндекса и для внешних пользователей. Суммарно на сегодня создано больше 18,3 млн графиков. Каждый из этих графиков — результат работы той самой библиотеки визуализации, о которой пойдёт речь. Долгое время графики в DataLens строились на Highcharts. Поначалу это был разумный выбор: быстрый старт, богатый набор типов, большое сообщество. Но BI‑инструмент со временем становится сложнее — появляются нестандартные требования к поведению, дизайн‑система, которую нужно выдерживать в едином стиле. И в какой‑то момент Highcharts начал мешать больше, чем помогать. В этой статье расскажу, как и почему мы приняли решение написать собственную опенсорс‑библиотеку для визуализации — @gravity‑ui/charts . Мы с коллегой — core‑контрибьютеры этой библиотеки, так что я в подробностях расскажу, что нас не устраивало в Highcharts, какие альтернативы рассматривали, как устроена архитектура и с какими конкретными техническими вызовами столкнулись в процессе.

    habr.com/ru/companies/yandex/a

    #datalens #опенсорс_яндекса #графики #интерфейсы #gravity_ui

  2. Заменить нельзя оставить: как DataLens мигрировал с Highcharts

    Привет, меня зовут Евгений Алаев, я разработчик интерфейсов в команде Yandex DataLens . Это облачный BI‑инструмент для анализа данных и построения дашбордов, и графики в нём — не «одна из фич», а сердце продукта. Пользователь открывает дашборд и первое, что видит, — визуализации. Именно они отвечают на вопрос: «Что происходит с моими данными?» DataLens работает в двух инсталляциях — для самого Яндекса и для внешних пользователей. Суммарно на сегодня создано больше 18,3 млн графиков. Каждый из этих графиков — результат работы той самой библиотеки визуализации, о которой пойдёт речь. Долгое время графики в DataLens строились на Highcharts. Поначалу это был разумный выбор: быстрый старт, богатый набор типов, большое сообщество. Но BI‑инструмент со временем становится сложнее — появляются нестандартные требования к поведению, дизайн‑система, которую нужно выдерживать в едином стиле. И в какой‑то момент Highcharts начал мешать больше, чем помогать. В этой статье расскажу, как и почему мы приняли решение написать собственную опенсорс‑библиотеку для визуализации — @gravity‑ui/charts . Мы с коллегой — core‑контрибьютеры этой библиотеки, так что я в подробностях расскажу, что нас не устраивало в Highcharts, какие альтернативы рассматривали, как устроена архитектура и с какими конкретными техническими вызовами столкнулись в процессе.

    habr.com/ru/companies/yandex/a

    #datalens #опенсорс_яндекса #графики #интерфейсы #gravity_ui

  3. Заменить нельзя оставить: как DataLens мигрировал с Highcharts

    Привет, меня зовут Евгений Алаев, я разработчик интерфейсов в команде Yandex DataLens . Это облачный BI‑инструмент для анализа данных и построения дашбордов, и графики в нём — не «одна из фич», а сердце продукта. Пользователь открывает дашборд и первое, что видит, — визуализации. Именно они отвечают на вопрос: «Что происходит с моими данными?» DataLens работает в двух инсталляциях — для самого Яндекса и для внешних пользователей. Суммарно на сегодня создано больше 18,3 млн графиков. Каждый из этих графиков — результат работы той самой библиотеки визуализации, о которой пойдёт речь. Долгое время графики в DataLens строились на Highcharts. Поначалу это был разумный выбор: быстрый старт, богатый набор типов, большое сообщество. Но BI‑инструмент со временем становится сложнее — появляются нестандартные требования к поведению, дизайн‑система, которую нужно выдерживать в едином стиле. И в какой‑то момент Highcharts начал мешать больше, чем помогать. В этой статье расскажу, как и почему мы приняли решение написать собственную опенсорс‑библиотеку для визуализации — @gravity‑ui/charts . Мы с коллегой — core‑контрибьютеры этой библиотеки, так что я в подробностях расскажу, что нас не устраивало в Highcharts, какие альтернативы рассматривали, как устроена архитектура и с какими конкретными техническими вызовами столкнулись в процессе.

    habr.com/ru/companies/yandex/a

    #datalens #опенсорс_яндекса #графики #интерфейсы #gravity_ui

  4. Заменить нельзя оставить: как DataLens мигрировал с Highcharts

    Привет, меня зовут Евгений Алаев, я разработчик интерфейсов в команде Yandex DataLens . Это облачный BI‑инструмент для анализа данных и построения дашбордов, и графики в нём — не «одна из фич», а сердце продукта. Пользователь открывает дашборд и первое, что видит, — визуализации. Именно они отвечают на вопрос: «Что происходит с моими данными?» DataLens работает в двух инсталляциях — для самого Яндекса и для внешних пользователей. Суммарно на сегодня создано больше 18,3 млн графиков. Каждый из этих графиков — результат работы той самой библиотеки визуализации, о которой пойдёт речь. Долгое время графики в DataLens строились на Highcharts. Поначалу это был разумный выбор: быстрый старт, богатый набор типов, большое сообщество. Но BI‑инструмент со временем становится сложнее — появляются нестандартные требования к поведению, дизайн‑система, которую нужно выдерживать в едином стиле. И в какой‑то момент Highcharts начал мешать больше, чем помогать. В этой статье расскажу, как и почему мы приняли решение написать собственную опенсорс‑библиотеку для визуализации — @gravity‑ui/charts . Мы с коллегой — core‑контрибьютеры этой библиотеки, так что я в подробностях расскажу, что нас не устраивало в Highcharts, какие альтернативы рассматривали, как устроена архитектура и с какими конкретными техническими вызовами столкнулись в процессе.

    habr.com/ru/companies/yandex/a

    #datalens #опенсорс_яндекса #графики #интерфейсы #gravity_ui

  5. MADrive: новый метод генерации сенсорных данных для автономного транспорта

    Привет, Хабр! Меня зовут Виктор Юрченко, я руковожу командой симуляции сенсоров в автономном транспорте Яндекса. Основная задача, которая стоит перед нашей командой, — искать способы делать симуляции ближе к реальности в части сенсорных данных. И недавно сотрудники команды совместно с исследовательским отделом Яндекса разработали собственный метод для симуляции изображений в проездах — MADrive (Memory-Augmented Driving Scene Modeling). MADrive позволяет достоверно генерировать синтетические изображения для новых дорожных сценариев. Кроме того, для его работы был собран и выложен в опенсорс крупнейший открытый датасет автомобилей — MAD‑Cars. Он может быть полезен для различных задач 3DCV: от 3D‑реконструкции до генерации синтетических сцен. В этой статье расскажу, почему симуляции так важны для автономного транспорта, как работает MADrive и чем может быть полезен датасет MAD‑Cars.

    habr.com/ru/companies/yandex/a

    #selfdriving #gaussian_splatting #simulation #computer_vision #опенсорс_яндекса #ml #симуляции_и_моделирование #cv

  6. Опенсорс-библиотека Implicits от Яндекс Браузера: новый шаг в передаче зависимостей Swift

    Когда iOS‑приложение вырастает до сотен тысяч строк, появляется проблема: добавление зависимости в глубокий компонент требует изменений во всех промежуточных функциях. Эти функции зависимость не используют — они просто передают её дальше. Сигнатуры разбухают, рефакторинг превращается в массовую правку файлов, и значительная часть кода становится техническим шумом. Проблема известна. Scala использует implicit parameters на уровне языка, Kotlin экспериментирует с context receivers, Android полагается на Dagger. А Swift не предлагает встроенного решения. Поэтому мы в команде Яндекс Браузера создали библиотеку Implicits — механизм неявной передачи зависимостей с compile‑time‑проверками. Она успешно работает в продакшне Браузера на полутора миллионах строк Swift‑кода, а ещё доступна в опенсорсе. В этой статье я расскажу о поиске собственного подхода для передачи зависимостей в коде на Swift, о том, как внедрение Implicits позволяет существенно сократить boilerplate, ускорить рефакторинг и улучшить читаемость кода благодаря локальному объявлению только реально используемых зависимостей, а также покажу реальные примеры из продакшн‑кода мобильной версии Яндекс Браузера.

    habr.com/ru/companies/yandex/a

    #ios #dependency_inversion #dependency_injection #опенсорс_яндекса #swift #b #библиотека

  7. SPQR — наше опенсорс-решение для горизонтального масштабирования Postgres

    В современных реалиях объёмы данных постоянно растут и появляются всё более жёсткие требования к производительности. Тут традиционный PostgreSQL сталкивается с фундаментальной проблемой: отсутствие нативной поддержки горизонтального масштабирования. Сегодня мы, команда платформы данных в Yandex Cloud, хотим рассказать о SPQR — нашем опенсорс‑инструменте, который который создавался как ответ на боль шардирования и эксплуатации крупных OLTP‑систем. Под катом — история о том, что стало отправной точкой для его создания, какие задачи он помогает решать, на чём основано наше решение и что помогает ему быть довольно простым в эксплуатации.

    habr.com/ru/companies/yandex/a

    #postgresql #spqr #шардирование #opensourse #опенсорс_яндекса #базы_данных

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

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

    habr.com/ru/companies/yandex/a

    #яндекс #bdui #sdui #divkit #опенсорс_яндекса

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

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

    habr.com/ru/companies/yandex/a

    #яндекс #bdui #sdui #divkit #опенсорс_яндекса

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

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

    habr.com/ru/companies/yandex/a

    #яндекс #bdui #sdui #divkit #опенсорс_яндекса

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

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

    habr.com/ru/companies/yandex/a

    #яндекс #bdui #sdui #divkit #опенсорс_яндекса

  12. Demeter: реактивное профилирование Android-приложений

    Всем привет, меня зовут Вадим Мезенцев, я Android‑разработчик в команде Яндекс Go. Сегодня я хочу рассказать историю о том, как мы искали подход к профилированию нашего приложения, с какими проблемами столкнулись и как в итоге реализовали библиотеку для измерения производительности. Наша команда часто сталкивалась с проблемами при поиске «узких мест» в производительности приложения. Мы пробовали различные инструменты профилирования, но все они требовали слишком много времени на сбор метрик, анализ и фильтрацию нужных данных. Чтобы решить эту проблему, мы разработали собственное решение, которое сочетает скорость анализа и простоту поиска проблем. Мы создали библиотеку Demeter , которую легко интегрировать в отладочную версию Android‑приложения. Она позволяет получать отчёты о производительности во время использования приложения и переходов между экранами. Такую сборку можно передать команде тестирования, а затем проанализировать отчёты и изучить изменения.

    habr.com/ru/companies/yandex/a

    #яндекс #opensourse #android #performance #опенсорс_яндекса #mobile

  13. Скриншотное тестирование во фронтенде: современный подход к поиску визуальных багов

    За последние годы скорость развития технологий для создания фронтенд-приложений выросла в разы. Новые фреймворки, библиотеки, инструменты сборки и подходы к разработке появляются практически каждый год. Однако, несмотря на это, основная точка взаимодействия пользователя с продуктом остаётся неизменной — это интерфейс. Именно он формирует впечатление о продукте и, по сути, является окончательной «витриной» всей вашей работы. Традиционные подходы к тестированию на многих уровнях уже не успевают за реалиями разработки: ручное тестирование становится слишком трудоёмким, а написание unit- или end-to-end-тестов не всегда позволяет отследить именно визуальные изменения. И здесь на помощь приходит методология скриншотного тестирования — мощный инструмент для выявления визуальных багов, появляющихся в интерфейсе. Он позволяет убедиться в том, что ваш продукт отображается так, как задумано, и избавляет команду от многих сюрпризов.

    habr.com/ru/companies/yandex/a

    #тестирование #автотесты #скриншотные_тесты #опенсорс_яндекса #интерфейсы

  14. Perforator: новая система непрерывного профилирования теперь в опенсорсе

    Привет! Сегодня мы выложили в опенсорс Perforator — систему непрерывного профилирования (continuous profiling), которую используем внутри Яндекса для анализа производительности большинства сервисов. В Github-репозитории доступен исходный код системы и инфраструктура для развёртывания своей инсталляции Perforator на кластере Kubernetes. Кроме того, Perforator можно использовать на своём компьютере как более простую замену perf record: профили получаются точнее, а оверхед меньше. Исходный код доступен под лицензией MIT (и GPL для eBPF-программ) и запускается под x86-64 Linux. При помощи Perforator и прошлых подходов к задаче профилирования мы регулярно оптимизируем самые крупные сервисы в Яндексе, например Баннерную крутилку или Поиск, на десятки процентов. Кроме того, Perforator реализует недостающий в опенсорсе компонент профилирования для простой автоматической оптимизации программ с использованием profile-guided optimization. Наши тесты показывают, что использование PGO даёт ускорение около 10% в разных сценариях. Под катом поговорим про профилирование под Linux, опишем вызовы и сложности, возникающие при профилировании, изучим, как устроен Perforator внутри, и обсудим, как можно использовать полученную систему.

    habr.com/ru/companies/yandex/a

    #профилирование #profiling #continuous_profiling #оптимизация #flamegraph #opensourse #опенсорс #опенсорс_яндекса

  15. Perforator: новая система непрерывного профилирования теперь в опенсорсе

    Привет! Сегодня мы выложили в опенсорс Perforator — систему непрерывного профилирования (continuous profiling), которую используем внутри Яндекса для анализа производительности большинства сервисов. В Github-репозитории доступен исходный код системы и инфраструктура для развёртывания своей инсталляции Perforator на кластере Kubernetes. Кроме того, Perforator можно использовать на своём компьютере как более простую замену perf record: профили получаются точнее, а оверхед меньше. Исходный код доступен под лицензией MIT (и GPL для eBPF-программ) и запускается под x86-64 Linux. При помощи Perforator и прошлых подходов к задаче профилирования мы регулярно оптимизируем самые крупные сервисы в Яндексе, например Баннерную крутилку или Поиск, на десятки процентов. Кроме того, Perforator реализует недостающий в опенсорсе компонент профилирования для простой автоматической оптимизации программ с использованием profile-guided optimization. Наши тесты показывают, что использование PGO даёт ускорение около 10% в разных сценариях. Под катом поговорим про профилирование под Linux, опишем вызовы и сложности, возникающие при профилировании, изучим, как устроен Perforator внутри, и обсудим, как можно использовать полученную систему.

    habr.com/ru/companies/yandex/a

    #профилирование #profiling #continuous_profiling #оптимизация #flamegraph #opensourse #опенсорс #опенсорс_яндекса

  16. Perforator: новая система непрерывного профилирования теперь в опенсорсе

    Привет! Сегодня мы выложили в опенсорс Perforator — систему непрерывного профилирования (continuous profiling), которую используем внутри Яндекса для анализа производительности большинства сервисов. В Github-репозитории доступен исходный код системы и инфраструктура для развёртывания своей инсталляции Perforator на кластере Kubernetes. Кроме того, Perforator можно использовать на своём компьютере как более простую замену perf record: профили получаются точнее, а оверхед меньше. Исходный код доступен под лицензией MIT (и GPL для eBPF-программ) и запускается под x86-64 Linux. При помощи Perforator и прошлых подходов к задаче профилирования мы регулярно оптимизируем самые крупные сервисы в Яндексе, например Баннерную крутилку или Поиск, на десятки процентов. Кроме того, Perforator реализует недостающий в опенсорсе компонент профилирования для простой автоматической оптимизации программ с использованием profile-guided optimization. Наши тесты показывают, что использование PGO даёт ускорение около 10% в разных сценариях. Под катом поговорим про профилирование под Linux, опишем вызовы и сложности, возникающие при профилировании, изучим, как устроен Perforator внутри, и обсудим, как можно использовать полученную систему.

    habr.com/ru/companies/yandex/a

    #профилирование #profiling #continuous_profiling #оптимизация #flamegraph #opensourse #опенсорс #опенсорс_яндекса

  17. Perforator: новая система непрерывного профилирования теперь в опенсорсе

    Привет! Сегодня мы выложили в опенсорс Perforator — систему непрерывного профилирования (continuous profiling), которую используем внутри Яндекса для анализа производительности большинства сервисов. В Github-репозитории доступен исходный код системы и инфраструктура для развёртывания своей инсталляции Perforator на кластере Kubernetes. Кроме того, Perforator можно использовать на своём компьютере как более простую замену perf record: профили получаются точнее, а оверхед меньше. Исходный код доступен под лицензией MIT (и GPL для eBPF-программ) и запускается под x86-64 Linux. При помощи Perforator и прошлых подходов к задаче профилирования мы регулярно оптимизируем самые крупные сервисы в Яндексе, например Баннерную крутилку или Поиск, на десятки процентов. Кроме того, Perforator реализует недостающий в опенсорсе компонент профилирования для простой автоматической оптимизации программ с использованием profile-guided optimization. Наши тесты показывают, что использование PGO даёт ускорение около 10% в разных сценариях. Под катом поговорим про профилирование под Linux, опишем вызовы и сложности, возникающие при профилировании, изучим, как устроен Perforator внутри, и обсудим, как можно использовать полученную систему.

    habr.com/ru/companies/yandex/a

    #профилирование #profiling #continuous_profiling #оптимизация #flamegraph #opensourse #опенсорс #опенсорс_яндекса

  18. Корпоративная магистратура ИТМО и Яндекса: как всё устроено

    Корпоративная магистратура Яндекса работает в ИТМО уже второй год. Конечная цель программы ― еще на этапе обучения дать практический опыт, необходимый для работы в коммерческой разработке. Магистранты программы решают не абстрактные задания из учебника, а реализуют проекты, которые потом попадают на прод в проектах Яндекса ― в том числе в Open Source. В статье рассказываем, как всё устроено и над чем работают студенты.

    habr.com/ru/companies/spbifmo/

    #divkit #опенсорс_яндекса #bdui #магистратура #университет_итмо #университеты #svg #framework

  19. Корпоративная магистратура ИТМО и Яндекса: как всё устроено

    Корпоративная магистратура Яндекса работает в ИТМО уже второй год. Конечная цель программы ― еще на этапе обучения дать практический опыт, необходимый для работы в коммерческой разработке. Магистранты программы решают не абстрактные задания из учебника, а реализуют проекты, которые потом попадают на прод в проектах Яндекса ― в том числе в Open Source. В статье рассказываем, как всё устроено и над чем работают студенты.

    habr.com/ru/companies/spbifmo/

    #divkit #опенсорс_яндекса #bdui #магистратура #университет_итмо #университеты #svg #framework

  20. Корпоративная магистратура ИТМО и Яндекса: как всё устроено

    Корпоративная магистратура Яндекса работает в ИТМО уже второй год. Конечная цель программы ― еще на этапе обучения дать практический опыт, необходимый для работы в коммерческой разработке. Магистранты программы решают не абстрактные задания из учебника, а реализуют проекты, которые потом попадают на прод в проектах Яндекса ― в том числе в Open Source. В статье рассказываем, как всё устроено и над чем работают студенты.

    habr.com/ru/companies/spbifmo/

    #divkit #опенсорс_яндекса #bdui #магистратура #университет_итмо #университеты #svg #framework

  21. userver 2.0 — большой релиз фреймворка для IO-bound программ

    С момента прошлого релиза фреймворка 🐙 userver для С++ прошло чуть больше полугода. За это время мы многое сделали: сильно оптимизировали работу фреймворка и обогнали основных конкурентов в бенчмарках высокопроизводительных фреймворков; значительно упростили конфигурирование; обзавелись install , докер-образами, Yandex Cloud-образом и DEB-пакетами; обросли новой функциональностью, включая серверные мидлвари для HTTP, и YDB-драйвером; перешли на новую ежемесячную схему релизов и упростили версионирование. Добро пожаловать под кат за подробностями

    habr.com/ru/companies/yandex/a

    #yandex #открытый_код #userver #github #c++ #c++17 #postgresql #postgres #redis #mongodb #mongo #synchronization #coroutine #coroutines #logs #dynamic_changes #python #python3 #yaml #json #sql #mysql #prometheus #prometheus_grafana #опенсорс_яндекса #ydb #kafka #осьминоги

  22. userver 2.0 — большой релиз фреймворка для IO-bound программ

    С момента прошлого релиза фреймворка 🐙 userver для С++ прошло чуть больше полугода. За это время мы многое сделали: сильно оптимизировали работу фреймворка и обогнали основных конкурентов в бенчмарках высокопроизводительных фреймворков; значительно упростили конфигурирование; обзавелись install , докер-образами, Yandex Cloud-образом и DEB-пакетами; обросли новой функциональностью, включая серверные мидлвари для HTTP, и YDB-драйвером; перешли на новую ежемесячную схему релизов и упростили версионирование. Добро пожаловать под кат за подробностями

    habr.com/ru/companies/yandex/a

    #yandex #открытый_код #userver #github #c++ #c++17 #postgresql #postgres #redis #mongodb #mongo #synchronization #coroutine #coroutines #logs #dynamic_changes #python #python3 #yaml #json #sql #mysql #prometheus #prometheus_grafana #опенсорс_яндекса #ydb #kafka #осьминоги

  23. userver 2.0 — большой релиз фреймворка для IO-bound программ

    С момента прошлого релиза фреймворка 🐙 userver для С++ прошло чуть больше полугода. За это время мы многое сделали: сильно оптимизировали работу фреймворка и обогнали основных конкурентов в бенчмарках высокопроизводительных фреймворков; значительно упростили конфигурирование; обзавелись install , докер-образами, Yandex Cloud-образом и DEB-пакетами; обросли новой функциональностью, включая серверные мидлвари для HTTP, и YDB-драйвером; перешли на новую ежемесячную схему релизов и упростили версионирование. Добро пожаловать под кат за подробностями

    habr.com/ru/companies/yandex/a

    #yandex #открытый_код #userver #github #c++ #c++17 #postgresql #postgres #redis #mongodb #mongo #synchronization #coroutine #coroutines #logs #dynamic_changes #python #python3 #yaml #json #sql #mysql #prometheus #prometheus_grafana #опенсорс_яндекса #ydb #kafka #осьминоги

  24. Testplane в опенсорсе: автоматизируем пользовательские сценарии в веб-интерфейсах

    Привет! Меня зовут Евгений Константинов. Я занимаюсь разработкой инструментов автоматического тестирования в Яндексе. В этой статье хочу рассказать про историю создания инструмента Testplane Testplane поможет вам: - протестировать разные сценарии в любом браузере; - проверить вёрстку с помощью скриншотного тестирования; - выполнить тестирование ваших React-компонентов; - запустить клиентские unit-тесты в контексте браузера.

    habr.com/ru/companies/yandex/a

    #яндекс #тестирование #nodejs #опенсорс_яндекса #тестирование_верстки #тестирование_вебсервисов