iOS-meetup SuperJob. Андрей Кучеренко, teamlead мобильной разработки Skyeng

Автор Nadezhda Belousova
iOS-meetup SuperJob. Андрей Кучеренко, teamlead мобильной разработки Skyeng

так.

Всем привет. Меня зовут. Андрей я тимлид мобильные команды мобильной разработки в компании skyeng.

И сегодня я вам расскажу про наш опыт написания общей логике на си плюс плюс падают с Android Web сначала мне бы хотелось сказать пару слов о продукте то есть наш продукт — это приложение для изучения английских слов главное в приложении — это так называемая упражнения по изучению слов.

То есть когда пользователю предлагается последовательность последователь набор карточек с вопросами карточки с вопросами типа выберите правильный ответ напишите слова на английском там послушайте. Переведите и тому подобное. На момент когда я начал работать на проекте у нас было 2 полностью нативных мобильных приложения и каждая имела свою логику вот формирование — это ручки карточек с вопросами формировались они примерно случайным образом и понятно, что такое метод изучения слов он не самый эффективный и перед нами задач его улучшить то есть нам резерве разработали новые алгоритмы о которых мы знали следующее во-первых то, что они нетривиально реализуются эти алгоритмы были основаны на модели spaced repetition то есть эта модель позволяет нам оценить вероятность того, что пользователь помнит слова на основании сколько раз он повторил — это слово и сколько времени прошло с момента последнего повторения также там используются некоторые алгоритмы машинного обучения следующие особенности данных то, что они имеют достаточно высокую вычислительную сложность вот чтобы нам сформировать с вопросом нужно знать какие вообще до этого пользователя уже показывали с карточки. Какие он слова добавил себе на изучение какие ответы он давал в при выполнении данного упражнения. А чтобы выбрать сам типа просто мы должны проанализировать там такие параметры слово как часть речи там сколько букв в этом слове если у слова если у слова картинка там и куча других параметров следующая особенность то, что эти алгоритмы сложно тестируется то есть они работаю имеют высокую случайности и эффективность их можно оценить только на большом количестве данных и только статистически — это усложняет написание тестов они будут меняться. Это означает, что у нас приложение будет дорабатываться будут появляться новые типы упражнений будем проводить различные тесты мы будем менять настройки наших алгоритмов исходя из той аналитики которую мы соберём там и так далее и сразу известно было, что мы планируем те же самые упражнения реализовывать в приложении то есть нужно каким-то образом сразу — это учитывать и ещё один пункт есть я его тут написал то, что важной особенностью важнейшие предложения является то, что эти упражнения. Можно проходить офлайн Tools без постоянного подключения к интернету и этот сразу включает вариант реализации данной логике на бэкграунде самый очевидный то есть логику нам нужно реализовать на. Франция в нашем случае вроде как стало довольно очевидно, что эту логику нужно реализовывать кроссплатформенной искать кого-то решение потому, что делать — это всё на три разные платформы три разные реализации потом — это всё поддерживать как-то сводить тестировать — это просто несоразмерная боль и наш выбор сразу почти полностью плюс плюс он имел для нас много плюсов то есть во-первых большинство наших разработчиков так или иначе сталкивались с + и более-менее как-то могли поддерживать. Это всё во-вторых — это нативно поддерживается, что наелся, что на Android в-третьих — это крышечек с коробки который умеет прыгать нативная краше и гарантированно можно будет спонсировать на. БКМ тем или иным способом то есть и плюс компе рестопрактики угодно мы рассматривали и другие варианты конечно там например джаваскрипт или там Java, но они оказались 12 мини предпочтительными по тем или иным причинам я не хочу. Вас не буду подробно рассказывать у этого решения был один минус. То есть я не знаю кто-нибудь из вас сталкивался с обжектив си плюс плюс там или. Джиной Они ужасны то есть в той или иной степени каждый из них ужасен и вот как раз — это вызвало некоторое опасение и ещё небольшим опасениям то, что кроме меня у команды не было более-менее серьезного опыта си плюс плюс разработки и было опасение, что проект будет сильно от меня зависеть то есть не кроме меня не сможет там вносить изменения поддерживать эти алгоритмы. Ну в общем то она так и получилось и остался. Итак Ну вот на нашу боль. Нашёлся довольно быстро простой ответ то есть эта утилита кодогенерация Dropbox djinni — это утилита по заданному идеал файлу — это Interface description лэнгвич генерируется нам интерфейс на си плюс плюс обжектив си Java, а также между этими интерфейсами то есть обжектив си плюс плюс Bridge genoa Bridge и нам. Остаётся только реализовать iOS часть на объекте в систему Android на Java и саму нашу логику на си плюс плюс в данной схеме видно, что все. ПЛЮСПЛЮС интерфейс взаимодействие с. Жанной обжектив си бриджами. То есть — это подразумевает то, что возможно и двусторонние вызова то есть не только 7 + + кода из этих сии Java, но и также жене. Ну отдел file.ge имеет три основные виды сущностей. То есть — это во-первых интерфейса — это с определенными методами, но без реализации — это рекорды. Это простые классы с данными просто содержащие поля и. Это Яна мы тут всё понятно понимаю этого даже не поддерживает все основные примитивные типы данных там интернет личный разрядности булы всё подряд float и Double и. Также имеется поддержка строк даты листов матов и.

0 комментариев
0

Читайте также