SlideShare ist ein Scribd-Unternehmen logo
1 von 24
1
Apps4AllFORUM 2014
apps4all.ru
PARALLELS CONFIDENTIAL – DO NOT DISTRIBUTE
Руслан Садовников
Ведущий программист-разработчик
Parallels Access
Добавляем кроссплатформенности iOS приложению
3
APPLIFY YOUR UNIVERSE!
PARALLELS ACCESS
Позволяет использовать компьютерные приложения на
iPad так, как будто они были для него разработаны
4
История возникновения Parallels Access
2008 – Первая версия Parallels Mobile
• «Реактивный» продукт — реакция на
происходящее на рынке
• Дополнение к Parallels Desktop 4 for Mac
• Базовая функциональность для работы с
виртуальными машинами
• Поддержка iPhone
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
5
История возникновения Parallels Access
2010 – Большой апгрейд Parallels Mobile
• Эволюция текущего продукта
• Компонент Parallels Desktop 6 for Mac
• Удаленное управление виртуальными
машинами
• Поддержка iPhone и iPad
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
6
История возникновения Parallels Access
2011 – Обновление Parallels Mobile
• Эволюция текущего продукта
• Компонент Parallels Desktop 7 for Mac
• Удаленное управление виртуальными
машинами
• Поддержка iPhone и iPad
• Удаленное управление удаленным
хостом (Mac-only)
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
7
История возникновения Parallels Access
2012 – Начата разработка новой версии Parallels Mobile
с учетом:
• Новых идей
• Текущих проблем рынка
• Пожеланий пользователей
• Потребностей рынка
• Позиций конкурентов
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
8
2013 - Релиз Parallels Access 1.0
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
9
Пресса
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
"In short, Access does a lot more than just blast your computer’s screen onto the iPad’s. It truly does
“appify” your computer’s programs. It creates a smooth, logical hybrid of iPad and “real” computer, in
away that the VNC apps do not. It works amazingly well." – David Pogue, New York Times (US)
“It isn't the only iPad app that can remotely control computers, but of the ones I've tested, it does the
best job of treating the computer programs it accesses as if they were iPad apps, without sacrificing
functionality.” – Walt Mossberg, The Wall Street Journal (US)
400+ статей о Parallels Access
300+М потенциальных просмотров
89% позитивная реакция (10% нейтральная)
10
Промо в App Store
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
11 PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
Все начинается с идеи и
осознания проблемы...
12
Что же мы имеем
• Клиент только под iOS
• Клиент – разработчик аутсорсинговая
кампания
• Server + SDK(C++) – разработчик
Parallels
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
13 PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
14
Пишем с «нуля»?
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
Берем готовое решение?
15
iOS - причешем? Android - напишем рядом?
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
16
Волевое решение
• Выделяем бизнес-логику – RemoteClientCore
• RemoteClientCore пишем на С++
• Добавляем SDK по вкусу
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
17
Protocol Buffers — язык описания данных. Google
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
Описываешь структуру данных в .proto-файле
http://ru.wikipedia.org/wiki/Protocol_Buffers
message Car {
required string model = 1;
enum BodyType {
sedan = 0;
hatchback = 1;
SUV = 2;
}
required BodyType type = 2 [default = sedan];
optional string color = 3;
required int32 year = 4;
message Owner {
required string name = 1;
required string lastName = 2;
required int64 driverLicense = 3;
}
repeated Owner previousOwner = 5;
}
18
Protocol Buffers — язык описания данных. Google
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
Компилируешь под свою платформу
http://ru.wikipedia.org/wiki/Protocol_Buffers
Большое кличество компиляторов: C++, Java, Python, С#, Action Script, Clojure, Common
Lisp, D, Erlang, Go, Haskell, JavaScript, Lua, Matlab, Mercury, Objective-C, OCaml, Perl,
PHP, Python, Ruby, Scala, Visual Basic, Delphi и т.д.
Результатом будет класс, который содержит простейшие методы доступа ко всем полям
типа get/set, а также методы для сериализации и десериализации вашей структуры
данных в/из массива байтов.
19
Protocol Buffers — язык описания данных. Google
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
http://ru.wikipedia.org/wiki/Protocol_Buffers
• Простота использования
• Хорошая документация
• Поддержка большого количества языков
• Обратная совместимость
20
ZeroMQ — библиотека обмена сообщениями. iMatix
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
http://zguide.zeromq.org/
ZeroMQ обеспечивает взаимодействие между потоками выполнения. Это
взаимодействие максимально унифицировано для нитей, процессов, локальных и
глобальных сетей.
Ключевой метод — передача информации с помощью сообщений, вместо обеспечения
прямого доступа в ней. Для этого внутри библиотеки ZeroMQ используются
неблокирующие алгоритмы и структуры данных en.wikipedia.org/wiki/Non-
blocking_algorithm, а прикладной программист всего лишь использует ее элегантный
API.
21
ZeroMQ — библиотека обмена сообщениями. iMatix
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
http://zguide.zeromq.org/
• Проста в использовании
• Хорошо написана
• Отлично документирована
• Великолепная производительность
• Поддержка большого количества языков
• Отзывчивое комьюнити
22
Результат
• Бизнес-логика отделена от платформенного кода
• Простота тестирования этой логики
• Скорость и простота реализации
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
23
Подводные камни
• Все API должно быть описано в Protocol Buffers
• Все API асинхронно
• Количество генеримого кода(методов) из *.proto
• Сериализация/десериализация Protocol Buffers
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
24
Q&A
PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE

Weitere ähnliche Inhalte

Andere mochten auch (7)

Catalogo
CatalogoCatalogo
Catalogo
 
~Everything is Connected~
~Everything is Connected~~Everything is Connected~
~Everything is Connected~
 
Samsung apps4 all_moscow_0514_v2_zuev
Samsung apps4 all_moscow_0514_v2_zuevSamsung apps4 all_moscow_0514_v2_zuev
Samsung apps4 all_moscow_0514_v2_zuev
 
29 o precioso sangue
29   o precioso sangue29   o precioso sangue
29 o precioso sangue
 
Catalogo
CatalogoCatalogo
Catalogo
 
Marcel.22.05.14
Marcel.22.05.14Marcel.22.05.14
Marcel.22.05.14
 
The uncanny
The uncannyThe uncanny
The uncanny
 

Ähnlich wie Руслан Садовников

РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВРАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
Pavel Tsukanov
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложений
Media Gorod
 
Тестирование мобильных приложений
Тестирование мобильных приложенийТестирование мобильных приложений
Тестирование мобильных приложений
Alexander Khozya
 
Runa for kazan v1 6jt
Runa for kazan v1 6jtRuna for kazan v1 6jt
Runa for kazan v1 6jt
it-park
 

Ähnlich wie Руслан Садовников (20)

#MBLTdev: Как не стать заложником одной платформы (Parallels)
#MBLTdev: Как не стать заложником одной платформы (Parallels)#MBLTdev: Как не стать заложником одной платформы (Parallels)
#MBLTdev: Как не стать заложником одной платформы (Parallels)
 
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВРАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
 
Oracle maf overview_rus_for publishing
Oracle maf overview_rus_for publishingOracle maf overview_rus_for publishing
Oracle maf overview_rus_for publishing
 
3 ibm bdw2015
3 ibm bdw20153 ibm bdw2015
3 ibm bdw2015
 
V Demin oracle mobile suite, soa 12c launch, 20.11.14 for publishing
V Demin oracle mobile suite, soa 12c launch, 20.11.14 for publishingV Demin oracle mobile suite, soa 12c launch, 20.11.14 for publishing
V Demin oracle mobile suite, soa 12c launch, 20.11.14 for publishing
 
Основной продукт vs. мобильный (Анатолий Шарифулин, Ostovok.ru)
Основной продукт vs. мобильный (Анатолий Шарифулин, Ostovok.ru)Основной продукт vs. мобильный (Анатолий Шарифулин, Ostovok.ru)
Основной продукт vs. мобильный (Анатолий Шарифулин, Ostovok.ru)
 
Основной продукт vs. мобильный на примере Ostrovok.ru
Основной продукт vs. мобильный на примере Ostrovok.ruОсновной продукт vs. мобильный на примере Ostrovok.ru
Основной продукт vs. мобильный на примере Ostrovok.ru
 
Решения Oracle для Big Data
Решения Oracle для Big DataРешения Oracle для Big Data
Решения Oracle для Big Data
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложений
 
Mobile development
Mobile developmentMobile development
Mobile development
 
Siebel open ui overview rus
Siebel open ui overview rusSiebel open ui overview rus
Siebel open ui overview rus
 
0. hello java world
0. hello java world0. hello java world
0. hello java world
 
Rad studio 10 seatlle обзор продукта
Rad studio 10 seatlle обзор продуктаRad studio 10 seatlle обзор продукта
Rad studio 10 seatlle обзор продукта
 
Тестирование мобильных приложений
Тестирование мобильных приложенийТестирование мобильных приложений
Тестирование мобильных приложений
 
Serverless on AWS
Serverless on AWSServerless on AWS
Serverless on AWS
 
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
Владислав Акулич - Monkey Talk - кроссплатформенное средство автоматизации те...
 
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван Москалёв
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван  МоскалёвПереводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван  Москалёв
Переводим без интернета: как мы делали Яндекс.Перевод для iOS, Иван Москалёв
 
интеграция облачных приложений
интеграция облачных приложенийинтеграция облачных приложений
интеграция облачных приложений
 
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex PetrovReal-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
Real-Time Error Alerting & Debugging Tools: Rollbar - Alex Petrov
 
Runa for kazan v1 6jt
Runa for kazan v1 6jtRuna for kazan v1 6jt
Runa for kazan v1 6jt
 

Mehr von apps4allapps4all

Mehr von apps4allapps4all (15)

About redmadrobot
About redmadrobotAbout redmadrobot
About redmadrobot
 
2014 05-19 Anar Babaev
2014 05-19 Anar Babaev2014 05-19 Anar Babaev
2014 05-19 Anar Babaev
 
Денис Волошко
Денис ВолошкоДенис Волошко
Денис Волошко
 
Стасевич
СтасевичСтасевич
Стасевич
 
Looi apps4all may14 (1)
Looi apps4all may14 (1)Looi apps4all may14 (1)
Looi apps4all may14 (1)
 
Mobile marketing alex_negara (1)
Mobile marketing alex_negara (1)Mobile marketing alex_negara (1)
Mobile marketing alex_negara (1)
 
Key note 15
Key note 15Key note 15
Key note 15
 
Антонина Гончарова
Антонина ГончароваАнтонина Гончарова
Антонина Гончарова
 
Наталья Вазиленко
Наталья ВазиленкоНаталья Вазиленко
Наталья Вазиленко
 
иван белоусов, дмитрий комягин
иван белоусов, дмитрий комягиниван белоусов, дмитрий комягин
иван белоусов, дмитрий комягин
 
презентация Apps4 all
презентация Apps4 allпрезентация Apps4 all
презентация Apps4 all
 
Apps4all holding a user
Apps4all   holding a userApps4all   holding a user
Apps4all holding a user
 
Apps4all holding a user
Apps4all   holding a userApps4all   holding a user
Apps4all holding a user
 
Apps4all preso khazeeva
Apps4all preso khazeevaApps4all preso khazeeva
Apps4all preso khazeeva
 
Opeskova apps4all forum_2014_spring
Opeskova apps4all forum_2014_springOpeskova apps4all forum_2014_spring
Opeskova apps4all forum_2014_spring
 

Руслан Садовников

  • 2. PARALLELS CONFIDENTIAL – DO NOT DISTRIBUTE Руслан Садовников Ведущий программист-разработчик Parallels Access Добавляем кроссплатформенности iOS приложению
  • 3. 3 APPLIFY YOUR UNIVERSE! PARALLELS ACCESS Позволяет использовать компьютерные приложения на iPad так, как будто они были для него разработаны
  • 4. 4 История возникновения Parallels Access 2008 – Первая версия Parallels Mobile • «Реактивный» продукт — реакция на происходящее на рынке • Дополнение к Parallels Desktop 4 for Mac • Базовая функциональность для работы с виртуальными машинами • Поддержка iPhone PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
  • 5. 5 История возникновения Parallels Access 2010 – Большой апгрейд Parallels Mobile • Эволюция текущего продукта • Компонент Parallels Desktop 6 for Mac • Удаленное управление виртуальными машинами • Поддержка iPhone и iPad PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
  • 6. 6 История возникновения Parallels Access 2011 – Обновление Parallels Mobile • Эволюция текущего продукта • Компонент Parallels Desktop 7 for Mac • Удаленное управление виртуальными машинами • Поддержка iPhone и iPad • Удаленное управление удаленным хостом (Mac-only) PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
  • 7. 7 История возникновения Parallels Access 2012 – Начата разработка новой версии Parallels Mobile с учетом: • Новых идей • Текущих проблем рынка • Пожеланий пользователей • Потребностей рынка • Позиций конкурентов PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
  • 8. 8 2013 - Релиз Parallels Access 1.0 PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
  • 9. 9 Пресса PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE "In short, Access does a lot more than just blast your computer’s screen onto the iPad’s. It truly does “appify” your computer’s programs. It creates a smooth, logical hybrid of iPad and “real” computer, in away that the VNC apps do not. It works amazingly well." – David Pogue, New York Times (US) “It isn't the only iPad app that can remotely control computers, but of the ones I've tested, it does the best job of treating the computer programs it accesses as if they were iPad apps, without sacrificing functionality.” – Walt Mossberg, The Wall Street Journal (US) 400+ статей о Parallels Access 300+М потенциальных просмотров 89% позитивная реакция (10% нейтральная)
  • 10. 10 Промо в App Store PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
  • 11. 11 PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE Все начинается с идеи и осознания проблемы...
  • 12. 12 Что же мы имеем • Клиент только под iOS • Клиент – разработчик аутсорсинговая кампания • Server + SDK(C++) – разработчик Parallels PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
  • 13. 13 PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
  • 14. 14 Пишем с «нуля»? PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE Берем готовое решение?
  • 15. 15 iOS - причешем? Android - напишем рядом? PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
  • 16. 16 Волевое решение • Выделяем бизнес-логику – RemoteClientCore • RemoteClientCore пишем на С++ • Добавляем SDK по вкусу PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
  • 17. 17 Protocol Buffers — язык описания данных. Google PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE Описываешь структуру данных в .proto-файле http://ru.wikipedia.org/wiki/Protocol_Buffers message Car { required string model = 1; enum BodyType { sedan = 0; hatchback = 1; SUV = 2; } required BodyType type = 2 [default = sedan]; optional string color = 3; required int32 year = 4; message Owner { required string name = 1; required string lastName = 2; required int64 driverLicense = 3; } repeated Owner previousOwner = 5; }
  • 18. 18 Protocol Buffers — язык описания данных. Google PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE Компилируешь под свою платформу http://ru.wikipedia.org/wiki/Protocol_Buffers Большое кличество компиляторов: C++, Java, Python, С#, Action Script, Clojure, Common Lisp, D, Erlang, Go, Haskell, JavaScript, Lua, Matlab, Mercury, Objective-C, OCaml, Perl, PHP, Python, Ruby, Scala, Visual Basic, Delphi и т.д. Результатом будет класс, который содержит простейшие методы доступа ко всем полям типа get/set, а также методы для сериализации и десериализации вашей структуры данных в/из массива байтов.
  • 19. 19 Protocol Buffers — язык описания данных. Google PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE http://ru.wikipedia.org/wiki/Protocol_Buffers • Простота использования • Хорошая документация • Поддержка большого количества языков • Обратная совместимость
  • 20. 20 ZeroMQ — библиотека обмена сообщениями. iMatix PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE http://zguide.zeromq.org/ ZeroMQ обеспечивает взаимодействие между потоками выполнения. Это взаимодействие максимально унифицировано для нитей, процессов, локальных и глобальных сетей. Ключевой метод — передача информации с помощью сообщений, вместо обеспечения прямого доступа в ней. Для этого внутри библиотеки ZeroMQ используются неблокирующие алгоритмы и структуры данных en.wikipedia.org/wiki/Non- blocking_algorithm, а прикладной программист всего лишь использует ее элегантный API.
  • 21. 21 ZeroMQ — библиотека обмена сообщениями. iMatix PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE http://zguide.zeromq.org/ • Проста в использовании • Хорошо написана • Отлично документирована • Великолепная производительность • Поддержка большого количества языков • Отзывчивое комьюнити
  • 22. 22 Результат • Бизнес-логика отделена от платформенного кода • Простота тестирования этой логики • Скорость и простота реализации PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
  • 23. 23 Подводные камни • Все API должно быть описано в Protocol Buffers • Все API асинхронно • Количество генеримого кода(методов) из *.proto • Сериализация/десериализация Protocol Buffers PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE
  • 24. 24 Q&A PARALLELS CONFIDENTIAL -- DO NOT DISTRIBUTE

Hinweis der Redaktion

  1. Добавлять кроссплатформенности мы будет Parallels Access. Для начала, я раскажу, что такое Parallels Access. И поскольку, исторический момент, в том числе, сыграл не маловажную роль в принятии тех или иных решений. Я добавлю немного истории - как развивался наш продукт. Затем я расскажу каким образом имея iOSприложение, мы сделали его кроссплатформенным.
  2. Это приложение для удаленного доступа к компьютеру под iPad. Когда я говорю iPad, я подразумеваю и iPhone и другие устройства на базе Android и т.д. Таких приложений много, но особенность нашего приложения в том, что оно позволяет работать с ними, как будто они написаны под iPad. Речь идет о поддержке жестов, о работе с текстом используя разные технологии выделения, копирования и т.д. Те технологии которые оставляют пользователя в рамках его экспириенса работы с девайсом.
  3. Начиналось все достаточно давно, когда у нас уже было несколько успешных версий PD, и мы решили, что надо как-то присутствовать на мобильном рынке в том числе. И поскольку основная таргет аудитория нашего флагманского продукта это Mac-аудитория, то было решено выпустить приложение под iPhone.Это было дополнение к Parallels Desktop-у. В котором была реализована базовая функциональность, что-то из серии «запустить – остановить ВМ», и, в общем-то все.
  4. Через два года продукт эволюционировал в версию, с которой уже можно было не только запускать-останавливать виртуальные машины, но и управлять ими внутри. К тому времени вышел iPad, и была добавлена поддержка для него.
  5. Постепенно пришло понимание, что ограничиваться только виртуальными машинами для управления как-то глупо, и мы добавили возможность работы с самим компьютером (только мак), по сути, перейдя в категорию обычных продуктов удаленного доступа… И тут мы начали понимать, что, кажется, что-то пошло не так… 
  6. Так что в 2012 году стартовал проект новой версии Parallels Mobile, которая должна была бы решить те проблемы, с которыми мы столкнулись в процессе эволюции PM
  7. Так мы в итоге получили Parallels Access — после многочисленных идей и переделок, и даже смены названия.
  8. Timeline for app store approval
  9. Timeline for app store approval
  10. Идей была куча... С ними все ясно. Кстати к тому моменту было четко понятно, что отрицать андроид просто бессмысленно и рано или поздно надо будет выходить и на эту платформу.А вот с проблемами надо рабираться и как то их решать.Посмотрим что же у нас есть под «капотом»
  11. И так возвращаемся в 2012 год.Parallels Mobile– клиент-серверное приложение. Серверная часть + SDK обеспечивающее работу с серверной частью -написана нами – в недрах Parallels, при этом написано на C++.Клиентская же часть Parallels Mobile, релизов 2010 и 2011 годов, приоткрывая завесу - написана аутсорсинговой компанией. Что же мы имеем...В итоге весь девелопмент перезжает в Parallels – мы решаем писать клиенты под разные платформы своими силами.Дальше мое повествование пойдет о клиентской части приложения
  12. Как любому девелоперу, не застройщику... посмотрев чужой код, хочется его улучшить и не просто его улучшить В нашем случае код надо было сделать кросплатформенным...
  13. Так что же делать?Вариант использовать готовое решение для нас, был фактически риторическим. 1 – у нас был код и выбрасыть оный никто не собирался - любая большая, да и не только, кампания стремиться к «реюзу» кода, и не только потому, что жаль времени и средств потраченных на него.2 - прибегая к готовым всеобъемлющим сторонним решениям, их практически невозможно быстро либо гибко, главное слово тут гибко, настроить под себя. В итоге борьба перетекает в русло борьбы с этим решением, нежели с написанием кода и получением результата. ДА - Большинство существующих решений сулят неимоверную скорость разработки и афигительный результат в виде Hello World! НО - выйти за рамки Hello World! требует серьезных усилий.Кинуться всем резко писать, например, на C# используя все прелести .NET фрейворка - не очень привлекало. Вариант отпал.
  14. Поскольку проблем с вызовом С/С++ кода из objective-c проблем нет. Аутсорсинговые девелоперы не долго думая сделали монолитный клиент в котором по месту вызывали С код. Тут же была обработка колбэков, ивентов и прочего.Имея довольно плотно срощеный iOS-клиент с SDK тем не менее - работающий...может причесать его? Все равно андроид будет позже.А androindнапишем рядом? Возмем Java Native Interface, возмем наш SDK и будем нам хорошо. Да – это воистину джидайский путь писать большое количество функционально дублирующего кода. И если учесть, что количество этого функционала будет только расти – очевидно тупиковое направление....
  15. Рефакторинг был неизбежен в любом случае и мы это понимали.....Но такое решение позволяет нам написать бизнес-логику один раз для наших платформ, при этом запользовать все остальные наработки.Оставляя всего один вопрос как это связать с платформенным кодом?
  16. Protocol Buffers — язык описания данных, предложенный Google[1], как альтернатива XML. Предполагается, что Protocol Buffers проще и легче, чем XML.Для того, чтобы определить структуру сериализуемых данных, необходимо создать .proto-файл с исходным кодом этой структуры. приведен пример .proto-файла для описания информации о машине: марка, тип кузова, цвет, год выпуска и информация о предыдущих владельцах.
  17. Protocol Buffers — язык описания данных, предложенный Google[1], как альтернатива XML. Предполагается, что Protocol Buffers проще и легче, чем XML.Для того, чтобы определить структуру сериализуемых данных, необходимо создать .proto-файл с исходным кодом этой структуры. приведен пример .proto-файла для описания информации о машине: марка, тип кузова, цвет, год выпуска и информация о предыдущих владельцах.Примечательно, что можно добавлять к уже созданной структуре данных новые поля без потери совместимости с предыдущей версией: при парсинге старых записей новые поля просто будут игнорироваться.
  18. Protocol Buffers — язык описания данных, предложенный Google[1], как альтернатива XML. Предполагается, что Protocol Buffers проще и легче, чем XML.Для того, чтобы определить структуру сериализуемых данных, необходимо создать .proto-файл с исходным кодом этой структуры. приведен пример .proto-файла для описания информации о машине: марка, тип кузова, цвет, год выпуска и информация о предыдущих владельцах.
  19. Если Вы написали о отладили приложение на своем ноутбуке, то с минимальным реконфигурированием сможете использовать мощный бокс с десятками ядер или кластер из таких боксов.