Pull to refresh
29
0
Алексей Берёзка @AllDmeat

iOS-developer

Send message

Как Додо Пицца доставляет свежий код: история мобильного CI для iOS

Level of difficultyEasy
Reading time9 min
Views5K

Мобильная разработка под iOS особенная: собрать приложение можно только на macOS, среда разработки по сути только одна, большая часть принятого в сообществе тулинга написана на Ruby, свой пакетный менеджер появился только пару лет назад. Тяжко.

А когда речь заходит про автоматизацию тестирования и сборок — тушите свет: Xcode Cloud появился полгода назад и почти ничего не умеет, популярные облачные решения могут месяцами не обновлять стек на новые мажорные релизы среды разработки или ОС (вставить ссылку на тред где гитхаб не может привести новую макось уже полгода), а ценник при этом может быть в 10 раз больше, чем за машинки на Linux. Ещё тяжелее.

Меня зовут Леха Берёзка, я iOS-техлид в Додо Пицце и сейчас я расскажу как мы собрали свой CI на М1, с виртуализацией и на полном нативе.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments9

Обновляю ссылку один месяц, или Лёгких задач не бывает

Level of difficultyEasy
Reading time4 min
Views4.2K

История о том, почему «обновить ссылку» — задача для техлида: тут и про тесты, и про вёрстку, и про архитектуры процессоров.

Бульварное чтиво из 15+1 мемов
Total votes 41: ↑39 and ↓2+37
Comments13

Логи в iOS, эпизод 3: BlackBox

Reading time7 min
Views2.9K

В 2019 году я устроился в Додо Пиццу. В первую же неделю я спросил у ребят, как они логируют происходящее в iOS-приложении у клиентов и узнал, что никак.

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

Итого: клиентских логов нет, а неопределённость и интерес остались. Значит надо сделать систему логов самому. Ну я и сделал. А это — история появления и развития логов в iOS-приложении Додо Пиццы.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments2

Логи в iOS, эпизод 2: os_signpost

Reading time4 min
Views2.9K

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

Сегодня расскажу, как Apple предлагает решать эту проблему с помощью логов.

Читать далее
Total votes 20: ↑18 and ↓2+16
Comments0

Логи в iOS, эпизод 1: os_log

Reading time5 min
Views10K

Представьте, что вы садитесь делать новый проект для iOS/iPadOS/macOS/tvOS/watchOS. Совсем скоро сталкиваетесь с первым багом и, чтобы его понять и исправить, добавляете логи — вызываете print() тут и там. Баг исправили и часть логов убрали, а часть оставили на будущее — полезные, ещё пригодятся.

Спустя пару месяцев работы над проектом консоль в Xcode превращается в водопад из логов. В них сложно разобраться и в них невозможно ориентироваться. Вы принимаете это как данность и в новые логи для удобства добавляете какие-то маркеты по типу "----->" или ещё что-нибудь в этом духе — так их можно будет различить в бесконечном потоке.

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

В этой статье расскажу, как Apple предлагает решать такую проблему.

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments4

Командное «ретро» в Майнкрафт: 10 из 10, не рекомендую

Reading time9 min
Views14K

История о том, как я, iOS-разработчик, решил провести рабочую встречу в игре, как готовился и что из этого получилось. В ней не будет заумных мыслей, полезной пользы и многозначительных выводов. Она лишь о том, что рутину можно сделать весёлой, что взрослые ведут себя как дети и что даже когда ты всё предусмотрел — ты не всё предусмотрел.

Рассказ в картинках
Total votes 52: ↑46 and ↓6+40
Comments44

Как мы накосячили пока делали Бриллиантовый чекаут™ 9 месяцев, а планировали 2

Reading time9 min
Views12K

В начале 2019 мы собрали аналитику по адресам в заказах и увидели, что бо́льшая часть клиентов заказывает доставку на одни и те же адреса и не устанавливают отложенное время. Они хотят получить заказ «туда же, куда и в прошлый раз и как можно быстрее». Но сделать это не так просто. Поэтому мы решили поменять флоу оплаты заказа и максимально его упростить именно для таких клиентов. Мы назвали этот проект Бриллиантовый чекаут™ и планировали сделать за 2 месяца. А закончили через 9.

И вот почему
Total votes 34: ↑32 and ↓2+30
Comments23

iOS 13 под лупой

Reading time2 min
Views11K
Dynamic Type – хорошо, но работает не всегда. Сейчас я расскажу, как увеличиваются маленькие контролы в iOS 13 бесплатно, без регистрации и смс.

Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments1

Заголовок будет другой

Reading time8 min
Views9.4K
Если вы разрабатываете продукт для масс-маркета, то вероятнее всего им пользуются люди с плохим зрением. Если вы стремитесь делать удобные интерфейсы, то надо сделать удобно для всех клиентов, в том числе для людей с плохим зрением. Думаю, мы часто забываем об этом. И это пора исправлять.


Читать дальше →
Total votes 34: ↑28 and ↓6+22
Comments20

Information

Rating
Does not participate
Location
Екатеринбург, Свердловская обл., Россия
Works in
Date of birth
Registered
Activity