Сурик Саркисян

Сурик Саркисян

Неделя
Mar 1, 2021 → Mar 7, 2021
Темы

Архив недели

Понедельник


Всем привет. Меня зовут Сурик, я SDK-инженер в qonversion.io Мы занимаемся всем, что связано с мобильными, и не только, подписками. Я занимаюсь, или по крайней мере пытаюсь заниматься, всем, что связано с мобильной частью.

Хочется сказать, что я не собираюсь вести общение в формате «я всё знаю, сейчас всех всему научу». И не знаю и не хочу. Я хочу просто пообщаться, высказать своё мнение и послушать ваше. Кажется, с последним у меня будут проблемы, потому что пишете вы редко, но я буду надеяться✊

План на неделю: День 1: Обо мне, о нас, о вас и о пути к становлению разработчиком. День 2: SwiftUI. Снова он. Просто пообсуждать. День 3: Кроссплатформенность День 4: Подписки День 5: Собеседования День 6: Поговорим за жизнь День 7: Итоги

Как я уже говорил, я SDK-инженер в qonversion.io Странно звучит, но я не знаю, как понятнее назвать то, чем я занимаюсь. Я занимаюсь всем, что связано с нашими SDK. С переменным успехом пишу под iOS, Android, RN, Flutter и даже в Unity залез. Не так страшно, как кажется

Давайте чуть подробнее расскажу о себе. Хоть у меня и есть диплом магистра по специальности «Информатика», из универа, в плане знаний в области разработки, я не вынес ничего, совсем ноль. Думаю, многим это знакомо. Можно, конечно, винить и универ, но виноват я сам.

Причины вполне понятные, я оказался на первом курсе в 16 лет, мне было абсолютно неинтересно сидеть на парах, я периодически жил один, так что у меня было всё, чтобы сутками играть в доту и не ездить на учебу. Думаю и это многим знакомо🙃

На самом деле в доте у меня, возможно, что-то и получилось бы. Это всё набирало популярность и попасть на про сцену становилось проще. Я играл в командах с большим количеством людей, которые сейчас на про-сцене или просто зарабатывают хорошие деньги на этом. Задроты плюс в чат.

Мне было уже 21 (звучит, как приговор😅), непонятно было, куда это всё выльется, универ закончился и появилась возможность учить iOS разработку. И не знаю, как сложилось бы в том сценарии, что я описал выше, но сейчас я более чем доволен тем, как все складывается.

С изучением iOS мне сильно повезло. Я попал в небольшую компанию к знакомым ребятам в Минске, которые почти с нуля всему научили. В это же время брат занимался разработкой, так что помогали мне со всех сторон, за что я всем благодарен. РасскажЕте, как вы оказались в разработке?😎

Какое у вас отношение к высшему образованию для IT? Кажется, уже понятно, что это далеко не самый обязательный аксессуар, но достаточно полезный, если только образование не прошло мимо. У вас есть высшее техническое образование?

Я, конечно, диванный хейтер “нашей” системы образования. Связано это с тем, что для меня оно прошло мимо. С тем, что преподаватели зачастую не очень заинтересованы в том, чтобы чему-то научить. Есть, конечно, прекрасные преподаватели, но в меньшинстве😔

Ещё это связано с тем, что ребенок в 16 лет редко знает, чего хочет от жизни, поступает непонятно куда, сидит там “ну потому что надо закончить, родители не поймут”, а потом работает где повезет.

Я, например, пошёл учиться на программиста потому что просто много сидел за компьютером🥸 По итогу оно срослось, конечно, но не уверен, что выбор был осознанным😅 Но хейтить мы все молодцы, конечно🥱

Последнее, про обучение и программирование 👨‍🎓🧑‍💻 Что на ваш взгляд самое важное в процессе обучения в целом и программированию в частности? Исходя из моего, и не только, процесса обучения и опыта, могу с уверенностью сказать, что самое важное - это терпение.

Если кто-то сейчас читает это и находится в процессе обучения, то скажу вот что: нам, конечно, не выгодно, чтобы у вас получилось и вы стали классным разработчиком, который заберёт наши рабочие места, но всё же, научитесь терпеть и верить в себя.

Я помню этой стойкое чувство в процессе обучения: «я тупой, это не мое, я ничего не понимаю, надо завязывать». Кстати, почти такое же сегодня, только про Твиттер😂 Так вот, мне кажется такой момент наступает у многих и самое важное просто перетерпеть, потому что это пройдёт🫂

А следом придёт невероятно приятное чувство осознания того, что не такой уж ты и тупой, и все уже вдруг стало понятно.🤯 Это знаете, как во всяких шоу талантов, где художник две минуты рисует непонятный бред, а потом перевернёт картину, либо подует мелом, а там просто шедевр.🤩

Не в том смысле, что вы сразу станете шедевром, нет, конечно. Скорее всего, почти наверняка, изначально вы станете говнокодером, но потенциал будет!👹

Получилось как-то пафосно🤢не хватает только фото бегущего Мохаммеда Али😂🤦🏼‍♂️ Не хотел так. Я просто помню, как тяжело было мне, и даже видел, как многие на этом этапе бросали, хотя оставалось совсем немного. Так вот, учащиеся, держитесь, терпите и верьте в себя, всё получится🤜🤛

Вторник


И снова здравствуйте. Сегодня поговорим про SwiftUI. Как и обещал, не будем погружаться в какие-то супер-технические детали, примеры кода и прочее. Обсудим перспективы, преимущества и актуальность использования в продакшене.

Думаю, что многие из вас знакомы с этой темой, потому что на эту тему писал каждый второй. Но если вдруг нет, то вот пара ссылок, чтобы просто погрузиться в контекст.

Первая, конечно, это официальная дока Apple. В плане документации и обучающего материала у Apple всегда был полный порядок, конечно. developer.apple.com/documentation/…

Отдельно обратите внимание на вот эти два раздела: Раздел с туториалом: developer.apple.com/tutorials/Swif… Intruduction to SwiftUI: developer.apple.com/videos/play/ww…

Если хочется более глубокого погружения, то вот: hackingwithswift.com/quick-start/sw…

Ну и если хочется пример готового приложения не от Apple, то, например, вот: github.com/unixzii/SwiftU…
notion image

И шпаргалочку, сохраните, пригодится: github.com/SimpleBoilerpl…

Давайте сначала немного поговорим о плюсах SwiftUI. Минусы тоже будут, конечно😈

Конечно, вёрстка. Было бы странно, если бы в компоненте, который придумали для упрощения вёрстки, главным плюсом не являлось «упрощение вёрстки»

Это новый для нативных мобильных разработчиков подход к верстке, который точно понравится. Со SwiftUI вы полностью забываете о констрейнтах, скроллах и прочих прелестях верстки в UIKit-е. Верстка и переиспользование компонентов становятся намного проще и приятнее.

Вы, конечно, можете возразить, что вы и так верстали в коде и нет у вас никаких проблем. Но вы хотя бы попробуйте! Не устали писать по 15 строк кода ради одной закругленной кнопки с тенью? А ещё если не констрейнты, то фреймы и их пересчёт.

А еще из-за всех вот этих Combine state, objectBinding, environmentObject-ов у вас появляется опция сделать своей проект максимально “реал-таймовым”.

Не в том плане, конечно, что поменяете данные на сервере, а в приложении у всех обновится. Представьте, что у вас есть набор последовательных экранов X -> Y -> Z. И все они используют один и тот же набор данных.

При обновлении этих данных на экране Z, они перерисуются и на предыдущих экранах. Зависит от вашей реализации, можно этого и не делать, конечно, а оставить тот флоу, что есть сейчас - пользователь вернулся на экран, дернул pull to refresh. Но опция ведь приятная?

А еще это же новая архитектура, тут уже VIPER вряд ли натянешь. Вы вообще представляете сколько новых интересных докладов на тему архитектуры нас ждёт?!

Есть, конечно, уже устоявшиеся архитектуры из других областей. Например, Redux. Но кто-то же должен адаптировать VIPER, как же мы без него? Жду не дождусь первый на тему SwiftUIPER

Уверен, те, кто использует SwiftUI могут накинуть еще плюсов в комментариях (вот бы вот бы), я отметил основные для себя.

Давайте теперь о минусах SwiftUI

Из важных для меня: Уже очень неплох, но всё ещё сыроват. Оглядываясь на эволюцию Swift-а можно предположить, что к выходу 3 версии SwiftUI большинство проблем будут решены. Но это не точно.

Сыроватость сказывается не только в том, что есть проблемные или плохо работающие компоненты, но и в том, что ещё не все шишки набиты, не на все проблемы легко найти решение, нет каких-то устоявшихся практик. Подробнее можете почитать тут: betterprogramming.pub/swiftui-in-pro…

SwiftUI доступен с iOS 13, а новые классные штуки вообще с iOS 14. Это сильный блокер, о нём и о потенциальных решениях поговорим подробнее чуть позже, с аналитикой и всем прочим.

А еще, не возьмусь прямо приписывать это к минусам, но iOS разработчики привыкли к верстке в коде, storyboard-ах и xib-ах. SwiftUI предлагает совершенно другой формат. Многим надо будет адаптироваться. Но, как я уже говорил, он полюбится, но привыкать придётся.

Но тут есть и плюс, такой формат близок всем, кто знаком, например, React-ом (в том числе веб) и Dart-ом, так что людям из смежных областей порог вхождения в iOS немного, но снижен.

Как и обещал, чуть подробнее о доступности SwiftUI Основная проблема, что доступен он с iOS 13. Большинство пользователей сидит на версиях выше iOS 13, но компании всё еще поддерживают версии ниже. Apple рекомендуют поддерживать две последние, но так мало у кого. Цифры ниже

Я уже говорил, что мы в Qonversion занимаемся всем, что связано со встроенными покупками. Предоставляем SDK, инфраструктуру, аналитику и прочее. MAU у нас 60+ миллионов И вот, что мы видим в этих данных
notion image

93,5% процента пользователей сидят на версии iOS 13 и выше. А 85% из всех - на iOS 14 Выглядит обнадеживающе, но нет🤪

Если посмотреть процент приложений, в которых есть пользователи с iOS ниже 13, то эта цифра у нас будет равна 74% То есть огромное количество приложений всё ещё поддерживают iOS ниже 13 Да, пользователей там очень мало, но они есть и они, видимо, важны. Так что SwiftUI, подожди✊

Большинство компаний, которые запустились не вот только что, всё еще поддерживают старые версии iOS и вообще непонятно, когда от них откажутся. Но если вы очень хотите использовать SwiftUI, то не расстраивайтесь🫂 Небольшая надежда есть. Об этом дальше в ленте

Давайте, как в «магазин на диване» Очень хотите использовать SwiftUI, но у вас поддержка iOS ниже 13? Пытаетесь убедить продакта отказаться от поддержки старых осей, но ничего не выходит? Не расстраивайтесь, решение ЕСТЬ! Не только сегодня, не только сейчас и без акции, но есть)

Вот вам несколько подсказок, как продать идею использования SwiftUI своему продакту, самому себе, или кому вам там надо продать её В iOS 14 появились крутые фичи, которые, собственно, доступны только с iOS 14. Так почему бы не совместить приятное с полезным?

App clips. Оно же - укороченная версия вашего приложения прямо в сторе без смс и регистрации. Поможет вам увеличить инсталлы. Но это не точно, продакту это не говорите. Доступно с iOS 14, пишите сразу на SwiftUI. developer.apple.com/app-clips/

Вот пример от Apple, как можно реализовать на SwiftUI. developer.apple.com/documentation/…

Далее по списку: новые виджеты. Всё то же самое, доступны с iOS 14. Помогут быть в тренде! А вот это уже точно, можете говорить это продакту. Ну если вы читаете это в начале или хотя бы середине 2021, конечно. developer.apple.com/documentation/…
notion image

Фичеринг! Apple любят, когда разработчики используют новинки iOS и готовы поддержать вас размещением на главной стора Если вы вдруг сделает App Clips, да еще и Widget, да еще и на SwiftUI, то у вас будет шанс оказаться на главной в AppStore. Ну такое-то продакт точно одобрит!

Подробнее про фичеринг: developer.apple.com/app-store/disc…

Итого. SwiftUI - отличная штука, но у меня двоякое ощущение. Я не могу уверенно рекомендовать его, потому что, как и большинство новых продуктов, он тянет за собой ряд проблем, с которыми вам придется столкнуться.

Если вы к этому готовы, и поддержки ниже iOS 13 у вас нет, то я бы на вашем месте попробовал SwiftUI в своем проекте. Зато потом, когда все будут переезжать, вы уже будете довольные (или не очень🤔) смотреть на всех со стороны🤓

Используете SwiftUI на работе?

Среда


Кроссплатформенность. Ждёте её скорейшей смерти или апофеоза?

Неужели кроссплатформенность пробудила в вас активность? Отлично Уточню, что всё или почти всё, что я скажу на эту тему - моё личное мнение и может быть использовано против меня в суде, не надо это принимать за 100% правду и слепо верить Если решите использовать, хорошо изучите!

Есть много инструментов для кроссплатформенности (какое длинное слово, половину лимита твитта занимает, дальше буду писать КП), но максимально популярны два RN + Flutter Ну и KMM разгоняется, но пока без него давайте. Обсудим (ну это при условии, что вы не будете молчать) эти два

Начнём с RN. ОСТОРОЖНО, ВПЕРЕДИ СУБЪЕКТИВЩИНА. На моей памяти RN первым из всех стал набирать большую популярность. Оно и не удивительно, его активно пиарили Airbnb.

Скажу честно, от приложения Airbnb в тот момент я был не в восторге. Помню, как мой телефон вскипел, а потом еще сам около 5 секунд просто переключался по разным экранам воспроизводя все мои нажатия, которые не смог обработать сразу.

Тем не менее, инструмент популярность набирал, многие пробовали, жаловались на низкий FPS и списывали на то, что “мы просто не умеем его готовить”. Переломный момент для многих наступил, когда Airbnb - евангелисты RN-а, отказались от него. Подробнее тут: medium.com/airbnb-enginee…

Но глобально ничего не изменилось, RN до сих пор жив и является самым популярным инструментом для КП. Об этом чуть позже

Моё мнение относительно RN-а тоже двоякое. Прямо сильно мне не нравятся несколько вещей. О них ниже.

Во-первых я не люблю JS. Не нравится мне язык этот и даже Flow его не спасает. Вы можете возразить, что RN можно юзать в паре с TypeScript-ом и будете правы. Такая комбинация меня устраивает😄

Мне не нравится инфраструктура, все вот эти npm yarn и куча возни с зависимостями. Как для мобильного разработчика, слишком сложно и много проблем.

RN всё ещё в бете. Последняя версия 0.63. С этим бонусом идет такая проблема, что даже при минорном апдейте версии у вас может развалиться проект, а собирать обратно вы будете ближайшие несколько дней. У нас занимало несколько дней времени действительно крутых JS разработчиков.

FPS действительно очень часто низкий. И очень часто, как я и говорил, все это списывают на “мы просто не умеем его готовить”. И как ни странно, очень часто так оно и есть. Но на деле мы просто получаем много приложений с низким FPS. Про перформанс: reactnative.dev/docs/performan…

Очень сильная зависимость от сторонних библиотек, соответственно всех их багов, которые непонятно когда и кто пофиксит. Не говоря уже о новых фичах в этих библиотеках и о том, что не на все свои нужды вы найдете библиотеку.

Новые фичи iOS не всегда для вас. Например, когда в iOS 13 по умолчанию изменилось поведение present-а контроллеров, в RN-е, ну или по крайней мере в той навигации, что была у нас, конечно, это не появилось. И это не единичный случай.

“Просто почисть всё, что можешь, вдруг заработает” встречается слишком часто даже по сравнению с Xcode.

Список неполный, те, кто используют RN, думаю могут вам накинуть не меньший список из проблем, которые актуальны для них. Я описал наиболее неприятные для меня.

Теперь о плюсах RN-а

Ваш time to market всё-таки падает. Насколько сильно - можно спорить, на моей практике это явно не 2 раза, как все ждут, но быстрее релизить вы точно станете.

При том, что в целом дебажить не супер удобно, Hot reload - классная штука Подробнее тут: reactnative.dev/blog/2016/03/2…

Вёрстка действительно удобная. Кстати, очень удобно вот тут накидывать и проверять вёрстку. Даже код готовый даёт, но стили всё равно придется выносить, так что юзать сгенерированный код или нет - решайте сами. yogalayout.com

Конечно, релиз без релиза, он же hot push. Без релиза в понимании нативных разработчиков, конечно. Подробнее тут: docs.microsoft.com/en-us/appcente…

Приятным бонусом идет appcenter.ms Так как hot push связан с AppCenter, то на нём сразу легко можно и неплохой CI развернуть. Не идеальный, конечно, но его активно улучшают

Все минусы, которые я перечислил для себя в RN-е могут с лихвой нивелироваться теми плюсами, что у него есть. Зависит от ваших целей.

Всё вышесказанное не отменяет факта, что на RN-е хватает хороших приложений и это как минимум это отличный инструмент, чтобы быстро выйти на рынок, а дальше уже думать, что с этим делать. Быстро запуститься в том числе из-за того, что JS - популярный язык и специалистов много.

Теперь немного о Flutter. Его вам нахваливали и критиковали и без меня, так что тут очень коротко о плюсах и минусах сразу.

Язык СУБЪЕКТИВНО лучше, но специалистов ОБЪЕКТИВНО меньше. FPS действительно лучше! Вёрстка, как и в RN, прекрасная С библиотеками история похожая Hot reload тоже есть

Да и вообще можно много говорить о том, насколько Flutter хорош или о его минусах и о том, что их быстро закрывают, но один факт всё еще остается фактом. И о нём вам тоже уже говорили.

1.2k issues у RN vs 8k+ у Flutter. 8k+, КАРЛ😱 Это сильно больше, чем ваш бэклог, который вы однажды просто дропнете. Надеюсь с issues во Flutter так не сделают

Ну и основной, по крайней мере пока, аргумент у многих в пользу RN-а будет hot push (который code push).

С code push, история во Flutter интересная. Все его ждут как минимум с января 2018. Два дня назад кто-то не дождался и сделал свой опенсорс аналог. Правда пока задизлайканный🤣 Думаю, работать будет хуже, чем в RN. Верю, что нативный тоже подвезут. github.com/flutter/flutte…

Ситуация по цифрам с КП сейчас примерно такая. Видно, как Flutter “отжирает долю” у других КП инструментов, но особо не задевает RN. Либо пока не по силам, либо в RN приходят новые пользователи. С учетом популярности КП, думаю, что второе. Всё-таки code push вещь заманчивая
notion image

Думаю ли я, что Flutter станет популярнее RN? Видя, как Flutter активно развивается и понимая его преимущества сейчас, и недостатки, которые почти наверняка будут решены, я бы скорее выбрал вариант “да”. Но это не точно🤷‍♂️

Я очень сильно люблю натив. Мне безумно нравится Swift, нравится Kotlin, а теперь еще и SwiftUI. Но стоит признать, что кроссплатформенность имеет право на существование и активно существует, и непонятно, лично мне, что будет дальше.

Во всей истории КП меня интересует один вопрос Если КП выйдет на такой уровень, что Swift начнёт терять популярность, будут ли Apple реджектить тот же RN(code push) по причине “непонятного контента, который может измениться и завтра у вас непотребства всякие в приложении будут”?

Сижу в 3 ночи по своему времени пишу для вас твитты, которые вы даже не читаете и не комментите 🙁 Если бы я только знал раньше, что вести Твиттер так сложно и трудозатратно🤪 Завтра приду, ЧТОБ КУЧА ЛАЙКОВ ВЕЗДЕ СТОЯЛА Ну или парочка хотя бы😂

А, ну и растущий размер бинарника во Flutter тоже для кого-то может стать проблемой

Четверг


Сегодня будем говорить о встроенных покупках, они же In-app purchases. Прежде чем начать, хочется понять многие ли работают с ними. В ваших приложения есть ин-аппы?

А лайков-то насыпали в итоге, так вот как с вами диалог вести надо Спасибо, хотя бы стало понятно, что не все подписчики накрученные😂🖤

ВОПРОСИКИ? Давайте вот как. Моё отношение к встроенным покупкам менялось много раз. От “это легко” и “не очень легко, но разберусь” до “это действительно сложно и куча нюансов”. Поэтому предлагаю так, я в ленте буду писать про подписки, а этот пост оставлю для вопросов

Пишите сюда вопросы про подписки, если они у вас вдруг есть, а я попробую ответить) Не в формате гугла или stackoverflow, конечно, типо “РЕСТОР НЕ РАБОТАЕТ, ЧТО ДЕЛАТЬ?”, а какие-то вещи, которые вам действительно интересны и вы пока не разобрались.

Не стесняйтесь спрашивать, подписки это действительно не просто Ничего очень сложно лучше не спрашивайте, конечно, а то глядишь мне ещё придётся идти проверять, прежде чем ответить😄 Но если очень хочется, то ладно

А еще можете пока почитать о нас Позавчера мой коллега, Co-founder и CPO Qonversion, Женя Вирник, классно написал о нас на VC С нуля и до сегодня vc.ru/tribuna/215955…

Для начала скажу, что ин-апы (подписки и разовые покупки) уже сейчас огромный рынок с десятками и сотнями миллиардов долларов в год 🤑 И пандемия, кстати, только помогает🦠 Продажи стабильно растут🔝 Ниже статистика, которую многие из вас видели, наверное
notion image

За Q3 2020 года продажи и у Google, и у Apple, выросли на 30%+ по сравнению с Q3 2019. Становится понятно, что это и сейчас, и в будущем, основной инструмент монетизации вашего приложения.

Делиться, конечно, приходится, но... Парень за компьютером, а забрать у тебя Apple и Google? Кто ты без них?
notion image

Поговорим только о мобильных подписках, Stripe и прочие не будем затрагивать. Подписки есть в iOS (Apple Store Kit) и Android (Google Play Billing). Всё работает через них, вся кроссплатформа тоже просто обертки над ними.

На всякий случай ссылки, но читать их не обязательно прямо сейчас Apple(там внутри в топиках и про ин-аппы в целом): developer.apple.com/documentation/… Google: developer.android.com/google/play/bi…

Могу сказать, что документация Google (фанаты гугла, без обид🔫) на эту тему та еще помойка😀 Куча недосказанности, нестыковок с реальностью и расхождений об одном и том же на разных страницах Например, про рестор или callback-и некоторых функций Ну какая есть, еще улучшат, думаю

Не буду рассказывать, как всё это встраивать, гайдов куча. Давайте коротко сравню Google и Apple по части встроенных покупок.

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

В целом у Apple и Google многое плюс минус одинаково устроено. Многое, но не всё. Если смотреть более детально, то у Apple, по крайней мере на мой взгляд, со встроенными покупками дела обстоят получше.

У Apple есть Subscription Groups Вы объединяете подписки в группы, дальше пользователь по ним может менять их (upgrade/downgrade/crossgrade), не может купить несколько из одной группы. Подробнее тут: developer.apple.com/app-store/subs…

Раз уж сказал, про upgrade/downgrade/crossgrade, то в этом плане у Apple тоже всё получше. Ну как бы из-за Subscription Groups в принципе. У Google приходится самому это рулить, передавать ID подписки, с которой менять и на какую.

 
На эту тему есть просто великолепный материал от Co-founder и CEO Qonversion - Михаила Стысина. И я хвалю материал не потому, что он “наш”, а потому что он действительно крутой и уникальный для такой темы. Найдете лучше - покажите qonversion.io/blog/ios-subsc…

Система валидации покупок у Apple мне нравится больше, чем у Google, но об этом будет еще позже в ленте.

У Apple есть поддержка “не очень богатых приложений”, которые зарабатывают меньше миллиона. Налог для них нет 30%, а 15%. Подробнее тут: qonversion.io/blog/apple-red…

У Google долгое время намного, НАМНОГО, лучше всё было с тестированием покупок. На эмуляторе можно было и до сих пор можно нормально тестировать, проверять разные флоу и способы оплаты.

В iOS 14 с появлением storekit файла, конечно у Apple тестирование стало лучше Понадобилось 11 версий iOS StoreKit появился в iOS 3 Подробнее об этом писал Co-founder и CTO Qonversion - Сэм Меджлумян Ну всё, всех founder-ов залинковал, пойду бонусы просить habr.com/ru/post/508016/

Еще у Google поприятнее работает система выплат разработчикам. Если вы живете на доход от своего приложения, то вам это может быть важно. Про то, как у Apple: qonversion.io/blog/ios-apple… Про то, как у Google: qonversion.io/blog/google-pl…

Ошибки, их “внятность” и “адекватность” у Google намного лучше и прозрачнее. Apple любят стрелять рандомные Unknown Error Code 0 и прочими похожими, которые никак не помогают понять суть происходящего. При этом есть баг, когда ошибки просто могут рандомного быть, а потом не быть.

Кажется, это основные отличия, которые есть и могут быть важны. Если что-то пропустил - пишите)

Между делом, чтобы разнообразить, покажу свой любимый кусок кода из Google Billing-а Это такой вот у них getter статуса покупки На zzc.optInt внимания не обращайте, это декомпилированный класс Но тело свитча - 🤌
notion image

SCA Оно же Strong Customer Authentication В EU новый закон о регулировании покупок в этих ваших интернетах Операции выше определенной суммы и условий должны подтверждаться дополнительно Детали: qonversion.io/blog/what-app-…

Мир встроенных покупок это тоже задело. Как сильно упала конверсия и упала ли, сказать не могу, но про техническую часть расскажу.

По сути изменилось мало что. Теперь покупки, которые попадают под SCA должны дополнительно подтверждаться. Где-то редиректом в веб на страницу банкинга, смс-кой или как-то еще, это не особо важно.

Если вы у себя в приложении уже поддерживали “отложенные покупки”, то для вас флоу прямо вообще никак не изменится, всё останется так же. Если нет, то надо поддержать.

По сути вам просто StoreKit или Google Billing выкинет саму транзакцию в state deferred (iOS) и pending (Android), а через какое-то время, после подтверждения этой покупки, вам сама прилетит новая в state purchased. Или falied, если покупка не произошла

Вам надо будет просто не потерять это событие и передать дальше нужным частям вашего приложения.

Где вы раньше могли обрабатывать такой флоу? Например, в ask to buy Когда ребенок просит подтверждения покупки при включенном родительском контроле Или при оплате наличкой в ближайшем киоске 😅

На этом про SCA вроде бы всё, каких-то особенностей больше нет.

А вот подборка приложений, которые много много заработали в 2020. Ну, чтобы знать, какие запускать в 2021 qonversion.io/blog/most-popu…

Ну и про валидацию рецептов надо бы, но коротко. Структуру рецепта разбирать не будем, слишком много деталей, да и материала хватает. Если честно я даже не знаю, что тут такого интересного можно сказать про серверную валидацию. Если что-то конкретное интересует - спрашивайте

Apple хранит рецепт, в котором вся инфа о ваших покупках. Валидация происходит по нему. Вот: developer.apple.com/documentation/…

Но если очень хочется посмотреть структуру, то вот developer.apple.com/documentation/…

Google не хранит никаких рецептов, у покупки есть токен, вы через Google API валидируете эту покупку. Вот: developers.google.com/android-publis…

А еще у нас есть готовый чекер рецептов, куда вы просто помещаете рецепт, ваш shared secret и получаете ответ. Сильно поможет вам при разработке, думаю. qonversion.io/site/apple-rec…

Отвечая на вопрос про валидацию рецептов на девайсе В теории можно, на практике - не нужно Достаточно посмотреть в доку Apple А людям, которые захотят вас обмануть (а таких очень много, поверьте), хватит опции с откатом времени на девайсе и это будут юзать developer.apple.com/documentation/…

Это еще не говоря о том, что вам надо рецепт расшифровать на девайсе и там же хранить ваш shared secret.

А если вдруг вы захотите на девайсе использовать тот же запрос, что используется для сервера, то обратите внимание вот на эту пометку красным от Apple: developer.apple.com/documentation/…

На самом деле подписки - это правда денежно, но сложно Мы не обсудили огромное количество кейсов, таких как: проверка доступности триала разные сандбокс аккаунты рефреш рецепта разные девайсы внутренние логины шаринг доступов между платформами все эти кейсы вместе взятые и т.д

Для абсолютного большинства таких кейсов вам понадобится свой бэк👨‍💻

Я не думаю, что вообще стоит подробнее обсуждать эти кейсы, потому что и так контент получился не такой простой, как хотелось бы Но вообще, если не хотите ни о чём париться - юзайте нас, мы всё сделаем 🖤

Не знаю, как вам кажется, но по-моему получилось сложно, вязко и скучновато, но тема такая серьезная, что я даже не знаю, как её «развеселить». Меня прямо вымотала 🥱 Хотите заработать - надо помучаться🤪 В любом случае извините👹 Обещаю остальные дни «поживее» и «поболтливее»

Каждый раз зеваю, когда вижу этот сраный смайл - 🥱!!! 😡

Пятница


Собеседования. Как вы вообще относитесь к собеседованиям? Понятно, что для многих это стресс, но это также и возможность узнать что-то новое. Любите ходить на собеседования?

Я люблю собеседования. Скорее собеседоваться, чем собеседовать. Расскажу немного о том, какие форматы мне нравятся, какие нет. И немного о забавных случаях на собеседованиях, на этом всё, пятница же, вам и так не до Твиттера.

Ни то чтобы я очень много был на собеседованиях, но в одно время мне было это интересно и я ходил по собеседованиям понимая, что я всё равно не приму оффер, мне просто интересен процесс и новые знания.

Возможно, вы осуждаете такой подход и трату чужого времени. Я и сам пока для себя не определился, но ведь всегда может произойти такое, что тебе понравится (и я не о количестве нулей в зп) и ты решишь всё-таки принять оффер?

Собеседовать не так весело, потому что ты говоришь часто об одном и том же. Часто ты понимаешь через полчаса, что кандидат не подходит и из вежливости просто тянешь еще хотя бы полчаса в надежде “ну а вдруг сейчас всё изменится”. Плохое качество, надо научиться отказывать сразу

А вот собеседоваться - весело. Ну если только собеседование не закончилось дракой, конечно 🤣 И такое бывает. Ну или хотя бы не той дракой, где вы проиграли. Или еще хуже, проиграли всему отделу или офису 🤜🤜🤜👨🏻🤛🤛🤛

На собеседовании ты общаешься с людьми, смотришь, как у них всё устроено, понимаешь, в каких вещах ты плаваешь, а что совсем не знаешь, а значит можно дома изучить и прокачаться. Собеседования помогают сильно прокачиваться

Мне нравятся собеседования, где идет нормальный диалог, есть, конечно, какой-то список тем, но отталкиваются от происходящего. Абсолютно не понимаю собеседования, где тебе дают листок с вопросами “на, заполни”.

Как и сказал, осуждаю тех, кто даёт неоплачиваемые тестовые тем, кто приходит на высокий грейд и с кем проходит долгое техническое собеседование. Ну или тестовое хотя бы должно быть интересное!

Нравится, когда предлагают поревьювить и провести рефакторинг кода на словах. Можно небольшой кусок кода распечатанный. Нравится не в том плане, что хочу сидеть рефакторить, а просто максимально одобряю такой инструмент. Мне он кажется крутым

Нравится подход с обсуждением архитектуры. Не в смысле “расскажи мне про VIPER, сынок”. А когда тебе накидывают какую-то задачу архитектурную для решения и по ходу обсуждения добавляют еще корнер кейсы, а ты должен адаптировать.

И очень не нравится, когда спрашивают какую-то супер примитивную вещь, которая на практике вообще не встречается, но при этом гуглится за секунду🤷‍♂️

А еще меня бесят кандидаты, которые отменяют собеседования день в день, хотя до этого сами долго подбирали время, когда им удобно!

Помню, как кандидат поставил собеседование рано утром, я пришел в офис сильно раньше того времени, когда прихожу обычно, а за 20 минут до собеседования HR сказал, что кандидат отменил 😡🤬😡

Объединяя случаи с отменой собесов день в день и то, что просто ходя на собеседования без цели ты тратишь время других и, возможно, это не очень честно. Был у меня самого похожий случай

Я собирался менять работу, но не очень охотно. Медленно и лениво смотрел вокруг, что происходит. Было назначено собеседование в компанию, куда я не особо хотел.

Настал этот день. Мне уже пора выезжать на собеседование, а я понимаю, что не очень хочу и, что если оно продлится ну хоть сколько-то долго, а не час, то я уже не успею поехать поиграть в футбол, как планировал.

И вот стою перед выбором, отказаться и быть тем кандидатом, которых я недолюбливаю или через лень и “не хочу” поехать и, скорее всего, не попасть на футбол. Решил всё-таки ехать, потому что понимал, что люди своё расписание под меня подстроили Возможно, дела перенесли🤷‍♂️

Приехал, собес прошел просто отлично, мне очень понравилась компания, подход, технический стэк и многое другое, что я прямо захотел туда и через пару недель принял оффер.

Получается тот самый кейс, когда я просто лениво ехал на собес ради собеса с пониманием, что потрачу своё время и время компании, в которую собеседуюсь, а по итогу нашел классную работу Так что не всё так однозначно Даже если не особо ищешь или вообще не ищёшь, вероятность есть🙂

Мой товарищ не из мобильной разработки как-то ходил на собеседование, где ему дали решить задачку на бумаге. Он решил, ему сказали, что он не прав. Он сказал, что прав. Так несколько раз. Не знаю из-за какого принципа решили не проверять на компьютере, а продолжали спросить🤷‍♂️

Обоюдно решили закончить собес, так как поняли, что не сработаются. Решение задачки от товарища в итоге было правильным 🤪

И просто “отличный” кейс из моего личного опыта. Не буду называть компанию, чтобы никого не обидеть, потому что она и другие их продукты достаточно известные 🚀

Конец 2015, ищу работу, пришел на собес, всё очень понравилось Дали тестовое, очень большое и сложное Так как я был без работы, был джуном и мне туда очень хотелось, а впереди были каникулы, я решил сделать. Мне сказали “отлично, мяч на твоей стороне, пиши, как сделаешь”.

Я уже говорил, да, что задание было большим и сложным? Так вот я еще решил разобраться и запилить с VIPER + Typhoon. Они тогда только начинали хайпить. За неделю новогодних каникул я сделал задачу со всеми условиями, что в ней были. Скинул

Мне ответили “Извини, мы тут пересчитали бюджет свой, мы не будем сейчас расширяться” Написать мне, конечно, никто не посчитал нужным И тестовое даже никто не стал смотреть🤣 А оно, кстати, было действительно неплохо сделано)

В итоге через какое-то время они решили все-таки расширяться, туда попал мой товарищ (ну тогда еще не товарищ), который оттуда через несколько месяцев ушел, а познакомились мы только через еще несколько месяцев.

К тому моменту я был рад, что не попал в туда Товарищ показал мне своё тестовое Так вот, оно было абсолютно ужасным и он это осознавал🤢 Он не сделал большую часть того, что требовалось в ТЗ. А смотрели, по его словам так: поскролили экран туда-обратно “вроде не падает, пойдет”😀

Действительно рад, что меня пронесло мимо этой компании, но неужели нельзя просто написать в момент, когда вы поняли, что вы не планируете расширяться, и сказать, что тестовое можно не делать?

Ну вот таких, собственно, тоже осуждаю!🤬

Ну и последнее, чистосердечное. Как-то давно, когда я был маленьким джуном, я хотел впитывать много информации. И пару раз приходил на собес с диктофоном😈 Не знаю можно ли так по закону, поэтому скажу, что этого не было, я всё придумал👽

Так вот цель была простая, прийти домой, переслушать всё, на что я не смог ответить и разобраться, как это всё работает. Ничего криминального 🔪🔫

Спустя много лет общался с HR, сказали, что если никуда не выкладывал, а только для саморазвития, то не такой уж и засранец, а может даже и немного молодец. Не знаю, где на самом деле правда, но делал так только два раза и больше не планирую

Если вдруг кто-то из читающих общается или случайно пересечётся со мной в жизни, не бойтесь, я в этот момент не буду записывать наш разговор 🤣 Но это не точно

И на всякий случай осуждаю запись собесов на диктофон без предупреждения!

Блин, сказал, что последнее, и вспомнил еще один кейс Этот точно последний Как-то собеседовал кандидата по скайпу(!) Собес был в классную на тот момент техническую компанию Кандидат очень хотел туда Настолько, что за ноутом повесил себе всяких шпаргалок и постоянно подглядывал

Я, конечно, не могу утверждать со 100%-ой уверенностью, потому что то, что происходило у него в комнате за камерой я не мог видеть Но глаза у него очень сильно бегали где-то в дали после каждого вопроса👀🙄

Собес он, конечно, не прошел, даже с учетом того, что подглядывал. Но даже если бы отвечал хорошо, вряд ли взяли бы😈 Так вот так тоже лучше не делайте, конечно!🙅‍♂️

Ну всё, завтра буду просто постить фоточки с коктейлями и на отдыхе🍸🌊🏝 А на фоне поговорим о жизни, отдыхе и работе А то сколько можно🤓

Суббота


Как и обещал! Доброе утро
notion image

Ну погнали, сделаем вид, что обсуждаем ворк-лайф бэлэнс) на деле просто скажу, что у меня, по крайней мере пока, никаких особых подходов нет, кажется проблем с этим тоже Поэтому расскажу о первом опыте «зимовки» и порекомендую всем, кто не пробовал🏝

В общем мы зимуем на Бали🏝🌊 И это превосходно. Я никогда раньше не ездил зимовать, но теперь уже хочу повторить, хотя пока всё ещё тут Ездили когда-то зимовать в тепло?

Те, кто ездили зимовать, подскажите, пожалуйста, куда посоветуете поехать?

А я пока расскажу, как мы добирались Рекомендую всем, кто любит тепло. Если позволяет работа и финансы, конечно. В целом, если вы арендуете квартиру где-то в Москве, то на зимовке в Азии вам будет не особо дороже

Если вам это близко, просто решайтесь и ни о чем не думайте, проблемы все разгребёте в процессе. Если бы я заранее думал о тех проблемах, которые будут, то мы бы вряд ли приехали сюда Надо было все вещи отправить домой, отвезти машину за 2к км от Москвы, возня с билетами и визами

Так что просто решайтесь и делайте Мы прилетели в середине декабря по бизнес-визе, которая стоит 30к с человека Ещё вам надо сдать ПЦР тест на COVID (отрицательный, конечно), который должен быть сделан за 72 часа или за неделю (в зависимости от авиакомпании и пересадки) до вылета

Билеты, по крайней мере в середине декабря, стоили не дёшево, с человека мы отдали 45-50к+ в одну сторону, точно не помню. В обычный сезон если брать за пару месяцев, стоят 33-35к туда обратно с человека

Несколько авиакомпаний отменяли билеты, кто-то деньги сразу вернул, кто-то через пару месяцев Проверяйте, есть ли за последнее время совершённые рейсы у авиакомпании, у которой хотите купить билеты. Рейсы в ту страну, куда собираетесь лететь, конечно

Ещё у вас должен быть букинг жилья, обратный билет и данные человека, который вас позвал по бизнес визе Ничего из этого у нас в итоге не смотрели, но говорят, что лучше иметь с собой Также страховка и несколько заполненных документов с сайта визового центра. Вот их посмотрят

А ещё иногда спрашивают «цель поездки», где вы должны выдумать, что вы собираетесь делать на Бали) чистить океан, искать инвестиции или запускать стартап) главное преподнести убедительно У нас спросили только у пары человек из 7

Прилететь, по крайней мере тогда, но вроде бы до сих пор, на Бали можно только через столицу Индонезии - Джакарту. Если видите другие билеты - не верьте, скорее всего их отменят, прямых рейсов на Бали нет.

Вроде бы на этом все сложности заканчиваются. Не самый большой, но и не самый маленький список, но оно того стоит. Прямо сейчас лучшее время, чтобы прилететь на Бали. Не в формате отпуска, конечно, это слишком дорого. На месяца 3 хотя бы - отлично

Не берите много вещей! Мы набрали два чемодана на человека, думали ну и штаны пригодятся, и верх какой-нибудь слегка тёплый В итоге тепло круглосуточно, даже ночью. Носишь несколько пар шорт, футболок, пару пар обуви

Штаны и верх с длинными рукавами надел один раз - когда поднимались ранним утром до рассвета на вулкан. И не потому что холодно, а чтобы змея какая-нибудь не укусила😄 Их видели три раза, но всё вроде бы хорошо пока😬

Пока я пишу дальше вот вам кристальная вода на пляже Меласти в +31
notion image

Тут утро можно начинать не с кофе или не только с кофе😀
notion image

Так вот дальше Что плохого на Бали сейчас? Понятное дело, что локдаун. Всё закрывается в 9, плюс минус час Вечеринок на порядок меньше, если вам это важно Не очень много, но какая-то часть заведений закрыты Возня с тем, чтобы добраться Дорого добираться

И масочный режим, не супер строгий, но часто просят. На байке надо ездить в шлеме и маске обязательно. Иначе тебя тормозят местные дпс(их не очень много, но есть) и штрафуют. Цена, как договоритесь, но в среднем вроде бы около 100к местных, то есть ~500₽

Что хорошего на Бали? Вы не поверите - локдаун! Это идеальное время для нахождения здесь Людей мало, трафика нет, в бесконечных пробках вы не стоите В популярных туристических местах пусто, нет очередей

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

Очевидно, что минус локдауна - цены, потому что дорого добираться Но и плюс локдауна - цены, потому что можно очень сильно торговаться, особенно в ценах на жилье

Мы своё жильё сняли в три с лишним раза дешевле, чем был прайс на Airbnb. Так что рекомендую ездить тут на месте смотреть варианты и торговаться. Фоточки, конечно, хорошо, но в живую часто есть различия. Ну и плюс торги на месте!

И, конечно, великолепная погода, даже в сезон дождей на самом деле хорошо. А он уже закончился Очень крутые пляжи и природа в целом Ну и местный колорит, супер вежливые искренние и добрые местные жители🙏

Пробовали когда-нибудь кофе на азоте? А чай? Заведение Pison в Убуде Пока что единственное место, где я видел такой кофе Это точно лучший кофе в моей жизни! И вот так плавно Твиттер разработчиков превратился в Инстаграм мамкиного недоблогера😂
notion image

Воскресенье


И снова всем привет в последний раз на ближайшее время точно🤓 Ничем грузить вас не буду, скажу только, что если вдруг у вас почему-то есть какие-то вопросы ко мне, то можете писать в телеграм suriksarkisyan Ну и отправляйтесь как-нибудь позимовать обязательно!

Используйте в своих приложениях инаппы! 💵 Используйте Qonversion, богатейте, а мы вам в этом поможем🤑 Ну и если не жалко, расскажите, как вам эта неделя и скажите, что стоит улучшить, если я опять когда-то решусь вписаться в подобное?😄 Как вам эта неделя?

Ссылки