#MBLTDev 2014 очима простого iOS-розробника з Тінькофф Банку

Москва • 28 жовтня 2014 • Digital October

Хоч і з запізненням, вирішив поділитися з вами своїми враженнями від відвідування #MBLTDev 2014. Чудова конференція, сподіваюся, комусь знадобляться мої нотатки.





1. На конференцію ми з колегою трохи спізнилися із-за пробок. Близько 10 хвилин Тім Мессержмидт (PayPal) нудився в очікуванні нас, але як тільки ми з'явилися в залі, Тім відразу зробив вигляд, що спіч давно почався, а публіка йому підіграла.



Тім розповідав про аутентифікації. Наводив статистичні дані, мабуть, взяті на основі паролів від акаунтів PayPal. Виявляється, що 91% користувачів в якості пароля вказують слово з топ-1000 популярних паролів. Кумедний, звичайно, факт, але до нашої системи авторизації поки жодного відношення не має.
Всім тим сервісів, що вимагають яку-небудь авторизацію, радив не перевантажувати користувача складним введенням пароля, давати можливість відображати символи пароля, загалом, всіляко балансувати між необхідністю і безпекою, не відлякуючи аудиторію надмірною складністю. Агітував публіку говорити «password sucks» і радив всім OAuth, а реєстрацію — «unless u really really need it».
Цей виступ ще раз нагадало мені про те, що користувач більше схожий на ледачого лінивця, якого не варто зайвий раз напружувати, а щоб дізнатися, як його звуть — краще поворожити на зірках.

Разом: мені здається, було б дійсно круто давати користувачеві можливість авторизуватися через соцмережі (нам більше інформації, йому — менше головного болю). І ще показувати символи пароля при авторизації в мобільному банку, адже найчастіше користувач авторизується наодинці з собою.

Презентація: www.slideshare.net/elegion/ss-40957408

2. Наступним спікером виявився Еш Фюрроу (Artsy), девелопер, який написав iOS-клієнт для стартапу 500px. Такий життєрадісний і веселий, скаржився на баги Xcode 6.



Він розповідав не просто про розробку на Swift, а про використання ReactiveCocoa на Swift. Взагалі, ідея використовувати ReactiveCocoa не просто витала в повітрі на конференції, про неї говорив кожен спікер, мало-мальськи має відношення до розробки під iOS. У Еша були хороші приклади, які він збирав прямо на сцені, показував шматки коду, які добре доповнюють його виступ.
В кінці доповіді прозвучало запитання від ведучого конференції: «Еш, якби тебе найняли для розробки проекту, якою мовою ти б став використовувати?», Фюрроу відповів, що для комерційного проекту однозначно — ObjC.

Загальна: ReactiveCocoa на Swift — цікава тема, але поки не для продакшену. А ось ReactiveCocoa на ObjC треба буде обов'язково спробувати. Після майбутніх релізів. Час Swift ще не настав.

Презентація: www.slideshare.net/elegion/2-functional-programming-in-swift-ashfurrow

3. Потім на сцену вийшов представник ВКонтакте Андрій Новосельський з презентацією рекламного просування додатків на платформі VK.



Мені було не дуже цікаво його виступ. Я слухав уважно, але зараз не можу пригадати чогось видатного. Андрій розповідав про конфлікт з Apple, про майбутнє релізі маркетингової майданчики та її крутих фичах.
Запам'ятався питання з залу: «Чому ви не даєте нам токен для бека?». Тут я пожвавився. Але відповідь розчарував і мене, і автора питання: «У нас є різні способи зв'язку між серверами, давайте обговоримо це після виступу». Із залу хтось невдоволено буркнув: «Ігри в кулуарах».

Загальна: дізнався, що 60% користувачів VK користуються сервісом через мобільні додатки.

Презентація: www.slideshare.net/elegion/mbltdev

4. Ілля Славетна, представник компанії Intel, почав розповідати про їх новому мобільному кроссплатформенном фреймворку INDE. На самому початку виступу прозвучала фраза: «INDE без проблем інтегрується в наші улюблені IDE: Android studio, Eclipse та Microsoft Visual Studio. Всі. Висновки зроблені.



Приклад (як заявлено в назві доповіді) як такого не показав. Доповідач був більше схожий на маркетолога, ніж на технічного спеціаліста. Так, він розповів про те, як влаштований фреймворк, про С++ обв'язку над нативними фреймворками кожної з мобільних платформ (iOS, Windows Phone, Android), навіть повідав про деяких можливостях (наприклад, робота з відео, апаратними датчиками тощо), але приклади коду для iOS були на ObjC.

Я написав твіт:



На що отримав відповідь:



Все одно код виходить різний. Використовувати цей фреймворк поки б не став. В презентації не було розказано про тих API, яких не було в нэйтиве iOS.

Загальна: дізнався про спробу Intel створити багатоплатформовий інструмент розробки на C++ для всіх платформ. Але в прикладах ObjC.

Презентація: www.slideshare.net/elegion/mbltdev-intel-inde

5. Наступними на сцені Digital October в костюмі і променях софітів з'явився наш Дмитро Тарасов (Тінькофф Банк).



Публіка його зустрічала стоячи, а вся жіноча аудиторія подивилася на нашого мобільного архітектора закоханими очима. Діма був молодцем. Впевнений, енергійний, розповів про досвід ТКС.

Загальна: Все гуд. До речі, перед тим, як задати питання Дмитру, товариш із залу похвалив наш мобільний банк. Приємно. Переглянулися з менеджером і розпливлися в усмішці.

Презентація: www.slideshare.net/elegion/mbltdev-40959775

6. Слідом на сцену вибрався Юрій Буянов, розробник «Однокласників». Ведучий заходу не втримався і підколов героя: «Зараз ми дізнаємося, як робиться додаток, яким користуються наші бабусі і дідусі».



Я був приємно здивований виступом. Юра бадьоро і впевнено, з паузами, як треба, розповідав не просто про те, що таке MVVM, але і вказував на помилки, наводив приклади з кодом. Наочно і зрозуміло. Почав із нагадування про те, що таке стандартний MVC. Включив перший слайд, а там фотографія білки. Юрій аргументував білочку тим, що йому просто було ліньки робити для MVC слайд.
Потім він розповів про MVVM, що ModelView не повинен знати нічого про View, і розповів, як цей заповіт зазвичай порушується. Уникнути цього можна за допомогою патерну «роутер». В об'єкті-роутер міститься вся інформація про переходах між екранами, навігації.
Коректне поведінка патерну MVVM, на думку Юрія, найкраще досягається за допомогою того самого ReactiveCocoa. Тобто при використанні механізму сигналів (коли об'єкти підписуються на зміни властивостей інших об'єктів). Скрізь цей ReactiveCocoa…
В кінці виступу ведучий прокоментував: «Приємно знати, що і в «Однокласниках» вміють програмувати».

Загальна: Юра поділився помилками реалізації MVVM, які я спостерігаю в своїх проектах. З'явилося бажання це виправити. Ще з'явилося бажання спробувати RAC.

Презентація: www.slideshare.net/elegion/mbltdev-mvvm

7.На сцену вийшов чоловік у костюмі (вже другий за день). Він розповідав про безпеку. Це був Андрій Беленко (viaForensics). Я тут же подумки взяв папірець і почав складати чек-лист по мірі його виступу.



Андрій наводив приклади використання NSUserDefaults в якості сховища для паролів (так робить робить додаток «Паркування Москви»). І поділився ще купою прикольних помилок. Наприклад, зберігання приватних даних в голій CoreData. Показував, як просто дістати дані користувача в цьому випадку. У нас все з чек-листом добре. Приватні дані зашифровані, не вигаданим нами алгоритмом (стандартним), ключ шифрування змінюється динамічно, паролі якщо і зберігаємо в кейчейне, а адреси серверів для тестування в релізну збірку у нас не потрапляють — вирізаються на етапі компіляції.
Андрій запропонував обфусцировать код, говорячи про особливості мови ObjC. Дійсно, всі селектори видно. Але це небезпечно в кейсі, коли, підключившись з дебагером до додатка, є можливість викликати метод, який поверне нам щось секретне. У «Тінькофф Гаманці» я таких методів немає. (У прикладі метод, возвращавший статичний ключ шифрування БД).

Загальна: у нас все добре. Рекомендація використовувати по можливості TLS замість SSL (сертифікат у бека).

Презентація: www.slideshare.net/elegion/7-mbltru

8. Про особливості codesign розповідав Руслан Гуменний (e-Legion).



Топік здався актуальним для складного CI, але для нас це, як мені здалося, не має особливої важливості. Руслан розповідав про те, як підписувати код і перевіряти підпис вручну. Корисно було дізнатися, що є плагін для QuickLook, що виводить інформацію про ipa-шниках. Треба буде скачати.

Разом: потрібно буде завантажити зручний плагін, щоб переглядати інформацію про підписи ipa.

Презентація: www.slideshare.net/elegion/8-codesign-for-i-os-final

9. Потім вийшов Олексій Коровянский (Mb-Lock) з доповіддю на тему автоматичного тестування для Android. Трохи послухав доповідь. У ньому Олексій розповідав про інструменти тестування для Android.



Загальна: тести писати дуже складно, але можна і, напевно, потрібно.

10. Повернувся я в аудиторію до початку промови Руслана Шевчука з Aviasales.ru. Руслан розповідав про Core Data. Про те, що це таке і як це використовувати.



В принципі, мова була схожа на російську озвучку презентації WWDC. Цікава була частина про iCloud, про те, що Core Data дозволяє неявно авторизувати користувача ну і, власне, зберігати дані в хмарі. Не впевнений, що це підходить для наших проектів.

Загальна: Руслан нагадав усім як використовувати Core Data і згадав, що ще цю data і в хмарі можна зберігати.

Презентація: www.slideshare.net/elegion/10-aviasales-final

11. Раптом чоловік в домашніх тапочках, який сидів на підлозі поруч зі мною, встав і пішов на сцену. Це був Андрій Чорний (Indie-розробник).



А розповідав він про трилатерацию за допомогою iBeacon. Він демонстративно розкидав по залу 3 маячка і ходив, визначав своє місце розташування за допомогою iOS-додатку. Зрозуміло, попутно перераховуючи всі характеристики пристроїв, труднощі, що деталі розрахунків. Його виступ був дуже цікавим завдяки його власній харизмі, і я дослухав до кінця.

Загальна: Андрій розповів усе про iBeacon, про використання, з прикладами, де може знадобитися.

Презентація: www.slideshare.net/elegion/mbltdev-ibeacon

12. Після з'явилася пара представників Google — Дмитро Нефедкин і Наталія Ефимцева. Вони розповідали про свою платформі Google Cloud.



Наприклад, розповіли, що сервери Google по всьому світу безпосередньо з'єднані проводами, що помітно прискорює обмін даними між серверами, а обслуговування серверів повністю непомітно, тобто немає простою для користувачів. Створюючи бек для мобільних клієнтів, можна нагенерувати класи, які будуть відповідати за комунікацію з беком. На питання, чим вони краще Asure, відповіли що «Диявол у деталях».

Загальна: крутий сервіс, але є небезпека сильно зав'язуватися на платформу, з якої потім в разі чого складно буде піти.

Презентація: www.slideshare.net/elegion/mbltdev-backend-google-cloud-google

13. Наступним був Realm, про який розповідав Брайан Мюнхольм.



Як я зрозумів, це платформна Core Data, написана на C++, що працює ну дуууже швидко і має дуже простий API (схожий на Core Data'вский, але із захованим всередині ініціалізацією стека).
Судячи з бенчмарками, там все дуже круто. Треба спробувати.

Загальна: треба пробувати і оцінювати вже на практиці. Презентація багатообіцяюча.

Презентація: www.slideshare.net/elegion/mbltdev-41144735

14. Про нову мову від JetBrains розповідав Ілля Риженков.



Якщо коротко, то JetBrains планують випустити новий мову — Kotlin. Виглядає він як і всі «мови майбутнього». Дуже схожий на Scala та Swift. Тепер в Android studio можна кодити на Scala, що непогано.
Ілля також повідав про партнерських наміри Google використовувати цю мову. Так що, думаю, все вийде у JetBrains, і через пару років можна сміливо переходити на Kotlin.

Загальна: Swift під Android. Та-дам.

Презентація: www.slideshare.net/elegion/mbltdev-40960224

15. У спробах подолати своє дике бажання пуститися в танок, на сцену вийшов Енді Карвел, представник Soundcloud.



Він постійно подергивался від надлишку емоцій. Розповідав про те, як Soundcloud переробили iOS-клієнт і використовували для цього, знову ж таки, ReactiveCocoa. При цьому додаток страждало падіннями. Але за допомогою масиву з безлічі Mac mini і купи тестів за півроку звели кількість крашей до 10 в тиждень. Ну що ж, непоганий результат.

Загальна: блін, ну точно треба ReactiveCocoa спробувати.

Презентація: www.slideshare.net/elegion/mbltdev-ios-soundcloud

Наступні дві доповіді я вже не став слухати.

Ось доповіді, які я пропустив:

16. Розробка першокласних SDK для Android. Тай Сміт, Twitter.



Презентація: www.slideshare.net/elegion/mbltdev-sdk-android-twitter

17. Як не стати заручником однієї платформи. Олексій Панфілов. Parallels.



Презентація: www.slideshare.net/elegion/mbltdev-parallels

Спасибі, що дочитали. Велика подяка компанії e-Legion за фотографії та посилання на презентації, і за захід, звичайно.



Поки що.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.