Нажмите "Enter", чтобы перейти к содержанию

Проверка скорости яндекс: Яндекс.Интернетометр — проверка скорости интернета

Кейсов: Яндекс | Kotlin Multiplatform

Яндекс ↗ — технологическая компания, которая создает интеллектуальные продукты и услуги на основе машинного обучения. Его цель — помочь потребителям и компаниям лучше ориентироваться в онлайн- и офлайн-мире. С 1997 года Яндекс предоставляет локальные поисковые и информационные услуги мирового уровня. Кроме того, компания разработала лидирующие на рынке транспортные услуги по требованию, навигационные продукты и другие мобильные приложения для миллионов потребителей по всему миру. Яндекс имеет 30 офисов по всему миру и котируется на NASDAQ с 2011 года.

Не могли бы вы сказать несколько слов о вашей команде?

Яндекс.Диск создан командой, участники которой работают в Москве и Санкт-Петербурге, и является одним из самых популярных в России облачных сервисов для хранения файлов в облаке. Яндекс.Диск, запущенный 5 апреля 2012 года, предоставляет неограниченное пространство в облаке для хранения фотографий с мобильных устройств — в приложении можно включить автоматическую загрузку изображений с мобильного устройства. Он включает в себя интеллектуальную фотогалерею, в которой представлены коллекции ваших самых красивых фотографий и лучших воспоминаний. Яндекс.Диск доступен в веб-версии, в виде клиента для Windows и macOS, а также в виде приложения для iOS и Android.

Как Kotlin Multiplatform Mobile используется в вашем продукте?

У нас есть несколько функций, написанных с помощью Kotlin Multiplatform Mobile. Сначала мы начали экспериментировать с KMM, реализовав сетевой уровень для наших приложений для iOS и Android. Изначально мы думали об использовании Ktor, но он не подходил под наши требования, поэтому мы написали собственную легковесную сетевую библиотеку, которая использует под капотом механизм expect/actual и может делать простые REST-запросы.

Мы посчитали это успешным экспериментом, и следующей функцией, которую мы реализовали в KMM, были покупки в приложении. Мы реализовали мультиплатформенную библиотеку, которая объединяет API-интерфейсы для конкретных платформ (Google Play и Apple Store) с использованием expect/actual, скрывает всю сложную обработку платежей и предоставляет универсальный интерфейс для работы с логикой покупки как в приложениях для iOS, так и для Android.

Это тоже был успех, поэтому мы расширили нашу мультиплатформенную команду, и теперь над KMM работают три инженера. Последней важной функцией, которую мы сделали с KMM, была синхронизация данных для фотоальбомов. Сеть, хранение данных и синхронизация данных реализованы на чистом Kotlin для обеих платформ. Нам часто нужно выполнять множество операций в фоновом режиме, а поскольку сопрограммы в настоящее время поддерживаются только в основном потоке, нам пришлось реализовать собственное решение для многопоточности. Для хранения данных мы использовали SQLDelight, который сэкономил нам много времени, создав безопасные API-интерфейсы Kotlin для выполнения SQL-запросов.

Почему ваша команда решила использовать Kotlin Multiplatform и какие альтернативы вы рассматривали?

Мы все согласились в одном: повторное использование кода — это хорошо. В Яндексе мы много экспериментируем, чтобы найти способы, чтобы разработчикам не приходилось писать один и тот же код несколько раз для разных платформ. Kotlin Multiplatform Mobile — не единственное доступное решение, и каждая команда решает эту проблему по-разному. Я был удивлен, когда пришел в команду Яндекс.Диска и понял, что у ребят здесь есть нативный код логики синхронизации для каждой платформы и они не используют, например, C++. Но они хотели попробовать КММ, а у меня был некоторый опыт, так что получилось очень хорошо.

Мы не верим в совместное использование слоя пользовательского интерфейса при разработке мобильных приложений. Такой подход почти всегда приводит к хакам в коде и более грубому, нерафинированному, тормозящему пользовательскому интерфейсу, и конечный результат не устраивает ни разработчиков, ни пользователей. Мы любим наших пользователей и хотим предоставить им лучший опыт, который включает в себя ощущение и плавность родного пользовательского интерфейса. Но нам очень интересно делиться бизнес-логикой: в Яндекс.Диске 20% нашей работы приходится на UI, а остальные 80% — на бизнес-логику — как собрать, синхронизировать и обработать все данные пользователя, не разряжая аккумулятор телефона. Поэтому мы не рассматривали решения для совместного использования пользовательского интерфейса, такие как Flutter, React Native или Xamarin. Одной из альтернатив был C++, но писать на C++ сложно и дорого. Наши коллеги в Dropbox узнали об этом на собственном горьком опыте, а у нашей конкретной команды не было достаточного опыта в этом.

Использование C++ для кросс-платформенной разработки также сопряжено с большими проблемами DX для разработчиков Android — JNI усложняет использование и имеет множество ограничений. Так что для Android-части нашей команды использование Kotlin для кроссплатформенной разработки было огромным преимуществом. Конечно, для разработчиков iOS KMM имеет свой собственный набор проблем, поскольку, в конце концов, он вводит новый язык в кодовую базу, и с этим могут быть некоторые проблемы с DX. Но они не так сильно беспокоят, как проблемы с разработкой на C++ для Android. Так что выбор для нас был очевиден, особенно с учетом того, что в нашей команде больше Android-разработчиков, чем iOS-разработчиков.

Каковы были ваши самые значительные достижения и трудности?

Самым важным приобретением для меня стала возможность выступать на различных конференциях. Kotlin Multiplatform Mobile — довольно новая технология, и число разработчиков, заинтересованных в ней, растет как снежный ком. Рассказы о вашем опыте работы с КММ будут приветствоваться на любой конференции!

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

Конечно, использование KMM сопряжено с определенными трудностями. Мы надеемся, что большинство из них скоро будет решено, так как технология развивается и быстро развивается. Мы начали использовать KMM, когда он был еще в «экспериментальной» стадии, и мы знали, чего ожидать.

Самой острой проблемой было отсутствие документации (как для Kotlin, так и для сторонних библиотек). Сначала мы потратили много времени, просто пытаясь понять, как выполнять простые задачи, такие как настройка проекта или добавление новых зависимостей.

Еще одна большая проблема — работа с параллелизмом в Kotlin/Native. Модель Kotlin/Native memory непроста для понимания, и не было руководств по работе с ней. Мы не знали, что делать, когда что-то пошло не так, поэтому нам пришлось копаться в исходниках Kotlin/Native, чтобы понять проблему, и это было настоящей проблемой.

Наконец, DX для меня как iOS-разработчика — настоящая боль. Отладка вашей бизнес-логики с помощью запуска iOS-приложения обычно является плохой идеей — вам нужно запускать две IDE одновременно и переключаться между ними. Кроме того, Kotlin/Native имеет длительное время компиляции, что снижает скорость разработки. Так что теперь, если мне нужно что-то отладить, я запускаю приложение для Android. Хорошее тестовое покрытие вашего общего кода может сэкономить вам много времени на отладку, потому что вам не нужно запускать приложения для iOS или Android, чтобы проверить, правильно ли работает ваш код. Использование KMM дает вам отличную мотивацию начать писать тесты в своем проекте, если вы еще этого не сделали.

У вас есть советы или советы, которыми вы хотели бы поделиться с нашими читателями?

Эксперимент — это отличный способ понять, подходит ли технология для ваших нужд. Вы можете попробовать это на одной функции в небольшом проекте. Делая что-то небольшими шагами, вы сэкономите время в долгосрочной перспективе и получите большой опыт. Отсутствие документации компенсирует активное сообщество в Slack, там всегда можно найти ответы на свои вопросы.

Хотите поделиться своей контактной информацией с нашими читателями?

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

Артем Ольков, разработчик мобильных приложений, Яндекс.Диск

Артем Ольков, разработчик мобильных приложений, Яндекс [email protected]

Российский Яндекс рассчитывает на 10-кратное увеличение парка беспилотных автомобилей, чтобы ускорить тестирование

Вид на беспилотный автомобиль, принадлежащий и протестированный компанией Яндекс, во время презентации в Москве, Россия, 16 августа 2019 г. REUTERS/Евгения Новоженина — Авторское право ЕВГЕНИЯ НОВОЖЕНИНА (Reuters)

By  Reuters

Надежда Цыденова

МОСКВА (Рейтер) – Яндекс , российский аналог Google, заявил, что рассматривает возможность расширения своего парка беспилотных автомобилей до 1000 в течение следующих двух лет, чтобы ускорить испытания новой технологии.

Яндекс надеется начать тестировать на дорогах более 100 своих беспилотных автомобилей к концу этого года. В его парке уже 90 автомобилей, 35 из которых проходят испытания на дорогах Москвы в присутствии инженера Яндекса.

«Планируем дальнейшее увеличение парка, аж на тысячу вагонов. Мы можем довольно быстро произвести первую тысячу автомобилей в течение полутора-двух лет», — сказал в интервью агентству Рейтер на прошлой неделе Дмитрий Полищук, глава подразделения беспилотных автомобилей «Яндекса».

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

Исследование, опубликованное банком HSBC в январе, показало, что программное обеспечение автономного вождения Яндекса ставит его в один ряд с мировыми лидерами в области технологий и догоняет Waymo от Google.

Яндекс не раскрыл, сколько он инвестировал в технологию беспилотного вождения, но Полищук сказал, что один автомобиль стоит 6,5 миллиона рублей (80 360,14 фунтов стерлингов).

Он сказал, что цена упала с 95 миллионов долларов было потрачено на создание первого прототипа компании.

«Кроме того, машина стала более технологичной», — сказал он.

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

Ваш комментарий будет первым

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *