В новом дайджесте много интересного — масштабирование изображений, сокращение времени запуска, проблемы в виджетах и их решения, проблемы бережливых стартапов и многое другое!
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

 iOS
iOS
• Как мы сократили время запуска нашего iOS-приложения на 60%
• Соотношение сторон и масштабирование изображений в Image компоненте
• Диспетчеризация методов в Swift
• Поиск callback-ов кнопок в рантайме iOS
• Выручка Apple в 1 квартале 2023 снизилась на 5%
• Складной iPad может появится в следующем году
• Native iOS Touch Events w/ Rust
Native iOS Touch Events w/ Rust
• SwiftUI — Using Frames To Align
SwiftUI — Using Frames To Align
• Use Core ML To Build a Minority Report-Inspired User Interface in iOS
Use Core ML To Build a Minority Report-Inspired User Interface in iOS
• A Scalable Alternative to Switch-case: Abstract Factory in Swift
A Scalable Alternative to Switch-case: Abstract Factory in Swift
• Infinite Scrolling Using SwiftUI and View Model (MVVM)
Infinite Scrolling Using SwiftUI and View Model (MVVM)
• Recreating Apple Wallet Payment Ring with SwiftUI
Recreating Apple Wallet Payment Ring with SwiftUI
• Reusable Components for Scalable Projects with UIKit Programmatically Swift 5
Reusable Components for Scalable Projects with UIKit Programmatically Swift 5
• Lazy NavigationLink for SwiftUI
Lazy NavigationLink for SwiftUI
• Annotation Injection with compile-time safety in Swift
Annotation Injection with compile-time safety in Swift
• Mastering charts in SwiftUI. Custom Marks.
Mastering charts in SwiftUI. Custom Marks.
• Quickly find retain cycles in your app with this one trick
Quickly find retain cycles in your app with this one trick
• The Coordinator Pattern: A Simple, Scalable Solution for iOS App Navigation
The Coordinator Pattern: A Simple, Scalable Solution for iOS App Navigation
• iOS Developer Interview: Questions and Tasks
iOS Developer Interview: Questions and Tasks
• How We Reduced Our iOS App Launch Time by 60%
How We Reduced Our iOS App Launch Time by 60%
• Swift IOS Interview Questions And Answers
Swift IOS Interview Questions And Answers
• Mastering Error Handling in SwiftUI: A Guide to Presenting Errors
Mastering Error Handling in SwiftUI: A Guide to Presenting Errors
• Code a Snake Game With Button Controls Using SwiftUI
Code a Snake Game With Button Controls Using SwiftUI
• NSURLSession connection leak
NSURLSession connection leak
• Parsing in Swift: a DTO-based Approach
Parsing in Swift: a DTO-based Approach
• SyncKit: синхронизация Core Data или Realm
SyncKit: синхронизация Core Data или Realm
• Лучшие репозитории Swift на GitHub за январь 2022
Лучшие репозитории Swift на GitHub за январь 2022
• Loop for iOS: шаблон приложения для приема инсулина
Loop for iOS: шаблон приложения для приема инсулина
 Android
Android
• Как мы проблемы UI в виджетах решали
• Несущиеся слоны: опыт Square в улучшении системы сборки для Android
• Как настроить Gitlab CI/CD для Android и Firebase App Distribution для доставки сборок
• Топ 3 странности Android, с которыми мне приходилось сталкиваться
• Инкрементация и сохранение сборки на CI
• Jetpack Compose Battle: онлайн-собеседования Senior разработчика
• Уязвимости Galaxy Store дают возможность установки любых приложений
• What should you expect when migrating your Android project to Kotlin 1.7.0?
What should you expect when migrating your Android project to Kotlin 1.7.0?
• Kotlin Sealed Interfaces with KotlinX Serialization JSON
Kotlin Sealed Interfaces with KotlinX Serialization JSON
• Operator overloading in Kotlin
Operator overloading in Kotlin
• Is the New Gradle Version Catalog Worth It for Your Android Projects?
Is the New Gradle Version Catalog Worth It for Your Android Projects?
• Make your Android app a share target. Receive simple data from other applications with Hilt and Compose
Make your Android app a share target. Receive simple data from other applications with Hilt and Compose
• Picture-in-picture (PiP) mode in Android
Picture-in-picture (PiP) mode in Android
• Protecting Project Integrity
Protecting Project Integrity
• Leveraging the Snapshot Mutation Policies of Jetpack Compose
Leveraging the Snapshot Mutation Policies of Jetpack Compose
• Data Objects in Kotlin
Data Objects in Kotlin
• Jetpack Compose clear back stack, popUpTo/popBackStack inclusive explained
Jetpack Compose clear back stack, popUpTo/popBackStack inclusive explained
• Principles & Practice in Repository Layer
Principles & Practice in Repository Layer
• Stampeding Elephants
Stampeding Elephants
• 5 Android Studio features you don’t want to miss
5 Android Studio features you don’t want to miss
• How We Kept Our App On a Diet
How We Kept Our App On a Diet
• Jetpack Compose Tutorial: Replicating Dribbble Audio
Jetpack Compose Tutorial: Replicating Dribbble Audio
• Лучшие репозитории Kotlin на GitHub за январь 2022
Лучшие репозитории Kotlin на GitHub за январь 2022
• WhatIf: синтаксический сахар Kotlin
WhatIf: синтаксический сахар Kotlin
 Кроссплатформа
Кроссплатформа
• Самые популярные кроссплатформенные фреймворки
• 12 методик, которые помогут создавать приложения на Flutter легко и просто
• Интеграция с платежными системами, PCI DSS на примере Stripe и Flutter
• Использование шейдеров во Flutter. Часть 1
• Why follow “Clean Architecture” in Flutter?
Why follow “Clean Architecture” in Flutter?
• Why You Should Use BLoC As Your State Management for Your Flutter App
Why You Should Use BLoC As Your State Management for Your Flutter App
• 8 Flutter Widgets Every App Should Contain
8 Flutter Widgets Every App Should Contain
• Introducing Dart 3 alpha
Introducing Dart 3 alpha
• KMP: A Use Case For Common UI Behavior
KMP: A Use Case For Common UI Behavior
• TensorFlow Lite Tutorial for Flutter: Image Classification
TensorFlow Lite Tutorial for Flutter: Image Classification
• A pragmatic guide to BuildContext in Flutter
A pragmatic guide to BuildContext in Flutter
• How it’s made: Holobooth
How it’s made: Holobooth
 Разработка
Разработка
• 4 главные проблемы с методологией Бережливого стартапа
• Как устроена бесшовная авторизация в онлайн-кинотеатре
• Что делать, если в начале спринта у тестировщика нет задач?
• Оптимизация тестов для Continuous Integration
• Podlodka #305: цвета и цветовые пространства
• Twitter закрывает бесплатный доступ к API
• Зарплаты IT-специалистов сократились
• VK открывает набор на бесплатные курсы по ручному тестированию и углубленному Python
• Правила Dungeons & Dragons опубликованы в Creative Commons
• Should There Be a Developer Mental Health Day?
Should There Be a Developer Mental Health Day?
• Maintainable No-Code UI Automation for Mobile with Maestro Studio
Maintainable No-Code UI Automation for Mobile with Maestro Studio
• Five stars code reviews
Five stars code reviews
• Use Pocketbase — Open Source Backend
Use Pocketbase — Open Source Backend
• Automate Changelog Generation with GitLab
Automate Changelog Generation with GitLab
• Developer-first open-source Zapier alternative
Developer-first open-source Zapier alternative
• Our Company Fired the Best Developer and Project Manager
Our Company Fired the Best Developer and Project Manager
• I Made $1000 From a Mobile Game I Designed in One Day, Without Coding
I Made $1000 From a Mobile Game I Designed in One Day, Without Coding
• Neglecting Legacy Code? It’s a Potential Gold Mine of Learning
Neglecting Legacy Code? It’s a Potential Gold Mine of Learning
• Slack Machine: боты для Slack
Slack Machine: боты для Slack
 Аналитика, маркетинг и монетизация
Аналитика, маркетинг и монетизация
• Ozon Tech Community A/B-testing Meetup
• Spotify внедрил сторонний биллинг на 140+ рынках
• Как определить размер выборки для бутстрэпа старым дедовским способом
• Supercell представила новую игру Squad Busters
• В RuStore появились Сбер ID и оплата по SberPay
• Основатели Instagram готовят приложение для чтения новостей
• Приложение Rewind позволяет «путешествовать во времени» с помощью музыки
• Victa — беговое приложение и шагомер для любителей игр и аниме
 AI, Устройства, IoT
AI, Устройства, IoT
• Плантации XXI века. Как экономическая катастрофа превратила Венесуэлу в центр новой IT-индустрии
• Рыба потратила деньги владельца, играя в покемонов на Nintendo Switch
• Работаем с Zigbee-устройствами через Zigbee2mqtt и Node-RED
• Спасти рядового Кактуса. Интеграция фикуса в Home Assistant
• EBYTE MA01-AACX2240: внешний RS485/ModbusRTU блок DI+AI+DO
• Как дистанционно снимать показания с электросчетчика КАСКАД-1-МТ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!

 iOS
iOS• Как мы сократили время запуска нашего iOS-приложения на 60%
• Соотношение сторон и масштабирование изображений в Image компоненте
• Диспетчеризация методов в Swift
• Поиск callback-ов кнопок в рантайме iOS
• Выручка Apple в 1 квартале 2023 снизилась на 5%
• Складной iPad может появится в следующем году
•
 Native iOS Touch Events w/ Rust
Native iOS Touch Events w/ Rust•
 SwiftUI — Using Frames To Align
SwiftUI — Using Frames To Align•
 Use Core ML To Build a Minority Report-Inspired User Interface in iOS
Use Core ML To Build a Minority Report-Inspired User Interface in iOS•
 A Scalable Alternative to Switch-case: Abstract Factory in Swift
A Scalable Alternative to Switch-case: Abstract Factory in Swift•
 Infinite Scrolling Using SwiftUI and View Model (MVVM)
Infinite Scrolling Using SwiftUI and View Model (MVVM)•
 Recreating Apple Wallet Payment Ring with SwiftUI
Recreating Apple Wallet Payment Ring with SwiftUI•
 Reusable Components for Scalable Projects with UIKit Programmatically Swift 5
Reusable Components for Scalable Projects with UIKit Programmatically Swift 5•
 Lazy NavigationLink for SwiftUI
Lazy NavigationLink for SwiftUI•
 Annotation Injection with compile-time safety in Swift
Annotation Injection with compile-time safety in Swift•
 Mastering charts in SwiftUI. Custom Marks.
Mastering charts in SwiftUI. Custom Marks.•
 Quickly find retain cycles in your app with this one trick
Quickly find retain cycles in your app with this one trick•
 The Coordinator Pattern: A Simple, Scalable Solution for iOS App Navigation
The Coordinator Pattern: A Simple, Scalable Solution for iOS App Navigation•
 iOS Developer Interview: Questions and Tasks
iOS Developer Interview: Questions and Tasks•
 How We Reduced Our iOS App Launch Time by 60%
How We Reduced Our iOS App Launch Time by 60%•
 Swift IOS Interview Questions And Answers
Swift IOS Interview Questions And Answers•
 Mastering Error Handling in SwiftUI: A Guide to Presenting Errors
Mastering Error Handling in SwiftUI: A Guide to Presenting Errors•
 Code a Snake Game With Button Controls Using SwiftUI
Code a Snake Game With Button Controls Using SwiftUI•
 NSURLSession connection leak
NSURLSession connection leak•
 Parsing in Swift: a DTO-based Approach
Parsing in Swift: a DTO-based Approach•
 SyncKit: синхронизация Core Data или Realm
SyncKit: синхронизация Core Data или Realm•
 Лучшие репозитории Swift на GitHub за январь 2022
Лучшие репозитории Swift на GitHub за январь 2022•
 Loop for iOS: шаблон приложения для приема инсулина
Loop for iOS: шаблон приложения для приема инсулина Android
Android• Как мы проблемы UI в виджетах решали
• Несущиеся слоны: опыт Square в улучшении системы сборки для Android
• Как настроить Gitlab CI/CD для Android и Firebase App Distribution для доставки сборок
• Топ 3 странности Android, с которыми мне приходилось сталкиваться
• Инкрементация и сохранение сборки на CI
• Jetpack Compose Battle: онлайн-собеседования Senior разработчика
• Уязвимости Galaxy Store дают возможность установки любых приложений
•
 What should you expect when migrating your Android project to Kotlin 1.7.0?
What should you expect when migrating your Android project to Kotlin 1.7.0?•
 Kotlin Sealed Interfaces with KotlinX Serialization JSON
Kotlin Sealed Interfaces with KotlinX Serialization JSON•
 Operator overloading in Kotlin
Operator overloading in Kotlin•
 Is the New Gradle Version Catalog Worth It for Your Android Projects?
Is the New Gradle Version Catalog Worth It for Your Android Projects?•
 Make your Android app a share target. Receive simple data from other applications with Hilt and Compose
Make your Android app a share target. Receive simple data from other applications with Hilt and Compose•
 Picture-in-picture (PiP) mode in Android
Picture-in-picture (PiP) mode in Android•
 Protecting Project Integrity
Protecting Project Integrity•
 Leveraging the Snapshot Mutation Policies of Jetpack Compose
Leveraging the Snapshot Mutation Policies of Jetpack Compose•
 Data Objects in Kotlin
Data Objects in Kotlin•
 Jetpack Compose clear back stack, popUpTo/popBackStack inclusive explained
Jetpack Compose clear back stack, popUpTo/popBackStack inclusive explained•
 Principles & Practice in Repository Layer
Principles & Practice in Repository Layer•
 Stampeding Elephants
Stampeding Elephants•
 5 Android Studio features you don’t want to miss
5 Android Studio features you don’t want to miss•
 How We Kept Our App On a Diet
How We Kept Our App On a Diet•
 Jetpack Compose Tutorial: Replicating Dribbble Audio
Jetpack Compose Tutorial: Replicating Dribbble Audio•
 Лучшие репозитории Kotlin на GitHub за январь 2022
Лучшие репозитории Kotlin на GitHub за январь 2022•
 WhatIf: синтаксический сахар Kotlin
WhatIf: синтаксический сахар Kotlin Кроссплатформа
Кроссплатформа• Самые популярные кроссплатформенные фреймворки
• 12 методик, которые помогут создавать приложения на Flutter легко и просто
• Интеграция с платежными системами, PCI DSS на примере Stripe и Flutter
• Использование шейдеров во Flutter. Часть 1
•
 Why follow “Clean Architecture” in Flutter?
Why follow “Clean Architecture” in Flutter?•
 Why You Should Use BLoC As Your State Management for Your Flutter App
Why You Should Use BLoC As Your State Management for Your Flutter App•
 8 Flutter Widgets Every App Should Contain
8 Flutter Widgets Every App Should Contain•
 Introducing Dart 3 alpha
Introducing Dart 3 alpha•
 KMP: A Use Case For Common UI Behavior
KMP: A Use Case For Common UI Behavior•
 TensorFlow Lite Tutorial for Flutter: Image Classification
TensorFlow Lite Tutorial for Flutter: Image Classification•
 A pragmatic guide to BuildContext in Flutter
A pragmatic guide to BuildContext in Flutter•
 How it’s made: Holobooth
How it’s made: Holobooth Разработка
Разработка• 4 главные проблемы с методологией Бережливого стартапа
• Как устроена бесшовная авторизация в онлайн-кинотеатре
• Что делать, если в начале спринта у тестировщика нет задач?
• Оптимизация тестов для Continuous Integration
• Podlodka #305: цвета и цветовые пространства
• Twitter закрывает бесплатный доступ к API
• Зарплаты IT-специалистов сократились
• VK открывает набор на бесплатные курсы по ручному тестированию и углубленному Python
• Правила Dungeons & Dragons опубликованы в Creative Commons
•
 Should There Be a Developer Mental Health Day?
Should There Be a Developer Mental Health Day?•
 Maintainable No-Code UI Automation for Mobile with Maestro Studio
Maintainable No-Code UI Automation for Mobile with Maestro Studio•
 Five stars code reviews
Five stars code reviews•
 Use Pocketbase — Open Source Backend
Use Pocketbase — Open Source Backend•
 Automate Changelog Generation with GitLab
Automate Changelog Generation with GitLab•
 Developer-first open-source Zapier alternative
Developer-first open-source Zapier alternative•
 Our Company Fired the Best Developer and Project Manager
Our Company Fired the Best Developer and Project Manager•
 I Made $1000 From a Mobile Game I Designed in One Day, Without Coding
I Made $1000 From a Mobile Game I Designed in One Day, Without Coding•
 Neglecting Legacy Code? It’s a Potential Gold Mine of Learning
Neglecting Legacy Code? It’s a Potential Gold Mine of Learning•
 Slack Machine: боты для Slack
Slack Machine: боты для Slack Аналитика, маркетинг и монетизация
Аналитика, маркетинг и монетизация• Ozon Tech Community A/B-testing Meetup
• Spotify внедрил сторонний биллинг на 140+ рынках
• Как определить размер выборки для бутстрэпа старым дедовским способом
• Supercell представила новую игру Squad Busters
• В RuStore появились Сбер ID и оплата по SberPay
• Основатели Instagram готовят приложение для чтения новостей
• Приложение Rewind позволяет «путешествовать во времени» с помощью музыки
• Victa — беговое приложение и шагомер для любителей игр и аниме
 AI, Устройства, IoT
AI, Устройства, IoT• Плантации XXI века. Как экономическая катастрофа превратила Венесуэлу в центр новой IT-индустрии
• Рыба потратила деньги владельца, играя в покемонов на Nintendo Switch
• Работаем с Zigbee-устройствами через Zigbee2mqtt и Node-RED
• Спасти рядового Кактуса. Интеграция фикуса в Home Assistant
• EBYTE MA01-AACX2240: внешний RS485/ModbusRTU блок DI+AI+DO
• Как дистанционно снимать показания с электросчетчика КАСКАД-1-МТ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
 
          