Возвращаемся с первым в новом году “мобильным” дайджестом. В нем кастомные макеты, безопасный Swift и опыт KMM, что ждать разработчикам, типы тестировщиков, годовой отчет State of Mobile 2023 и многое другое!
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!
![](https://habrastorage.org/r/w780q1/webt/bv/na/at/bvnaatz6shlircy4lpjbz-hskp4.jpeg)
iOS
• Apple Machine Learning (ML). «Create ML»
• Более Быстрые Сборки Apple с помощью lld Linker
• Создание кастомного макета в SwiftUI. Интервалы
• Безопасное программирование в Swift
• Видео BA: Swiftable 2022
• Создаем VIPER шаблон с помощью Generamba
•
Utilizing Makefiles for Swift projects
•
Stress testing on iOS with xcmonkey
•
Understanding SwiftUI view lifecycles
•
Building custom layout in SwiftUI. Basics.
•
Mastering charts in SwiftUI. Basics.
•
On the new Point-Free swift-dependencies library
•
Composable Architecture
•
Swift Learning Roadmap 2023 — The Ultimate Guide
•
Custom Popup in SwiftUI
•
Top 10 mistakes Swift developers do
•
iOS Project Structure Like a Pro
•
How to Update or Refresh a Widget?
•
SwiftUI: NavigationSplitView
•
Task Groups in Swift explained with code examples
•
ArraySlice with range operator and Prefix in Swift
•
Swift: Unit Testing Fatal Errors
•
Safe Coding in Swift
•
Validation With Regex in Swift 5.7 Using SwiftUI and Combine
•
How to create Sound Wave Animation with TimelineView and Canvas in SwiftUI
•
Control Your SwiftUI App With Face Recognition Using SceneKit
•
iOS App Security: Best Practices
•
How I Optimize Memory Consumption for Content-Rich Apps
•
The Secrets of Hashable in Swift
•
Top 10 mistakes swift developers do
•
AutoLayoutBuilder —My Swift Package to Reduce Boilerplate Code
•
Drawing with UIKit’s UIBezierPath
•
Nuke: загрузка и показ изображений
•
Swift Dependencies: DI по мотивам SwiftUI
Android
• Volvo SCT / part 1 — как проникнуть в чужое ядро
• Как работает Activity. Часть 2 + Часть 1
• Как фронтендеру стать мобильным разработчиком, или Перевод API React в Jetpack Compose
• Состояние навигации в Jetpack Compose
• Моды Android приложений: Instander & Google Camera by The Dise
• Вышла Android Studio Electric Eel
•
Process Death & Orientation Change in RecyclerView
•
Integrating Google Maps, Places API, and Reverse Geocoding with Jetpack Compose
•
How to Avoid Dependency Conflicts in Android Multi-Module Apps
•
Mastering The Gradle Dependency Tree
•
Building a Language Learning App with Compose
•
How to make a complete app / site association with Universal Links
•
Setup A Self Modifiable List Of Data In Jetpack Compose
•
Concurrency vs. Parallelism Using Kotlin
•
How to Avoid Dependency Conflicts in Android Multi-Module Apps
•
Applying Kotlin context receivers
•
Jetpack Compose state deconstructed
•
The State of Navigation in Jetpack Compose
•
Writing Slack in Jetpack Compose and Kotlin MultiPlatform
•
Handle the onNewIntent in Jetpack Compose
•
Is your app providing a backward compatible edge-to-edge experience?
•
Lessons Learned After 3 Days Debugging Jetpack Compose SwipeToDismiss
•
Pattern Matching in Kotlin is Awesome
•
Detecting Android memory leaks in production
•
I Think I’ve Given Up On Android
•
KConMapper — How To Automate Mapping Function Creation With Kotlin’s KSP
•
Kotlin Data Class
•
HttpRequest: HTTP-клиент для Kotlin
•
WebRTC in Jetpack Compose: видео в реальном времени с WebRTC и Compose
Кроссплатформа
• Опыт использования Kotlin Multiplatform Mobile (KMM) в 9GAG
• Платформа из красного кирпича: как настроить окружение в Kotlin Multiplatform Mobile
• Курс по Flutter: вход в профессию Flutter-разработчика
• UI Роутер в Unity
•
How Fast Is React Native New Architecture?
•
50 Flutter Interview Question for 1 year experience
•
If you want to master React Native
•
VS Code for Flutter hacks that will blow your mind
•
My Experience with Flutter as a Native Android Developer
•
Flutter and ObjectBox – High-Performance NoSQL Database
•
Material 3 for Flutter
Разработка
• Пройдите опрос для разработчиков Developer Nation и выиграйте новые гаджеты
• Как багатон снизил нам количество багов с 900 до 950
• Мой опыт разработки программы для игры в шашки с помощью алгоритма минимакс
• Но это (не)точно: чего ждать мобильным разработчикам в 2023-м году
• Типы тестировщиков
• Server-driven UI, «Триплекс» и JSON: как Сбер сервисы в мобильные приложения выводит
• Путь Full Stack QA
• Podlodka #303: .NET, часть 1
• Podlodka #302: онбординг
• VK открывает набор на бесплатную практику для школьников и студентов
• Программисты чаще всего довольны своей зарплатой
• Компании в IT проиндексировали зарплаты на 15% течение последнего года
• Nucleus упрощает процесс управления микросервисами
•
Intermediate Data Engineering Road Map 2023: Big Data, Cloud Computing, and More
•
Today’s Software Developers Will Stop Coding Soon
•
The Dangers of Over-engineering
•
A Day in the Life of a Software Engineer at Canva
•
A Response to “Stop Using If-Else Statements”
•
Clean UI Guide: 15 White Space Design Tips
•
The three most important lessons I’ve learned as a UX Designer in 2022
•
Designing an Effective User Onboarding Experience
•
Awesome Software and Architectural Design Patterns: лучшие шаблоны проектирования
Аналитика, маркетинг и монетизация
• Годовой отчет State of Mobile 2023 от Data.ai: 255 млрд установок и $167 млрд расходов
• Разработчики выпустили 1.6 млн приложений и игр в 2022
• Тренды мобильного маркетинга 2023
• Приложения с подпиской 2023 — отчет RevenueCat
• Потребители лояльны к опыту, а не к брендам
• Критерий Манна-Уитни — самый главный враг A/B-тестов
• 99 советов по монетизации игр — Часть 2
• Discord купил Gas, социальное приложение для подростков
• $2.63 млн: Slay — анонимные комплименты для подростков
• Hinge и Tinder тестируют дорогие подписки
• В RuStore появились платные приложения
• ФАС оштрафовала Apple на $17 млн за запрет сторонних платежей
• Разработчики заработали $320 млрд в App Store с 2008 года
AI, Устройства, IoT
• Управление микроконтроллером через telegram-бот с обратной связью
• Интерпретируемость ML-моделей: от инструментов до потребностей пользователя
• Что и как делать с поливом на умной даче?
• Простое (не очень) увлажнение квартиры
• Поставки смартфонов в 2022 упали до минимума за десятилетие
• Apple представила новые MacBook Pro
• В MacBook могут добавить сенсорный экран
• Нейросети отбирают работу — какое будущее ждет программистов с ChatGPT
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!
![](https://habrastorage.org/webt/bv/na/at/bvnaatz6shlircy4lpjbz-hskp4.jpeg)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Apple Machine Learning (ML). «Create ML»
• Более Быстрые Сборки Apple с помощью lld Linker
• Создание кастомного макета в SwiftUI. Интервалы
• Безопасное программирование в Swift
• Видео BA: Swiftable 2022
• Создаем VIPER шаблон с помощью Generamba
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Volvo SCT / part 1 — как проникнуть в чужое ядро
• Как работает Activity. Часть 2 + Часть 1
• Как фронтендеру стать мобильным разработчиком, или Перевод API React в Jetpack Compose
• Состояние навигации в Jetpack Compose
• Моды Android приложений: Instander & Google Camera by The Dise
• Вышла Android Studio Electric Eel
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
• Опыт использования Kotlin Multiplatform Mobile (KMM) в 9GAG
• Платформа из красного кирпича: как настроить окружение в Kotlin Multiplatform Mobile
• Курс по Flutter: вход в профессию Flutter-разработчика
• UI Роутер в Unity
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Пройдите опрос для разработчиков Developer Nation и выиграйте новые гаджеты
• Как багатон снизил нам количество багов с 900 до 950
• Мой опыт разработки программы для игры в шашки с помощью алгоритма минимакс
• Но это (не)точно: чего ждать мобильным разработчикам в 2023-м году
• Типы тестировщиков
• Server-driven UI, «Триплекс» и JSON: как Сбер сервисы в мобильные приложения выводит
• Путь Full Stack QA
• Podlodka #303: .NET, часть 1
• Podlodka #302: онбординг
• VK открывает набор на бесплатную практику для школьников и студентов
• Программисты чаще всего довольны своей зарплатой
• Компании в IT проиндексировали зарплаты на 15% течение последнего года
• Nucleus упрощает процесс управления микросервисами
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Годовой отчет State of Mobile 2023 от Data.ai: 255 млрд установок и $167 млрд расходов
• Разработчики выпустили 1.6 млн приложений и игр в 2022
• Тренды мобильного маркетинга 2023
• Приложения с подпиской 2023 — отчет RevenueCat
• Потребители лояльны к опыту, а не к брендам
• Критерий Манна-Уитни — самый главный враг A/B-тестов
• 99 советов по монетизации игр — Часть 2
• Discord купил Gas, социальное приложение для подростков
• $2.63 млн: Slay — анонимные комплименты для подростков
• Hinge и Tinder тестируют дорогие подписки
• В RuStore появились платные приложения
• ФАС оштрафовала Apple на $17 млн за запрет сторонних платежей
• Разработчики заработали $320 млрд в App Store с 2008 года
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Управление микроконтроллером через telegram-бот с обратной связью
• Интерпретируемость ML-моделей: от инструментов до потребностей пользователя
• Что и как делать с поливом на умной даче?
• Простое (не очень) увлажнение квартиры
• Поставки смартфонов в 2022 упали до минимума за десятилетие
• Apple представила новые MacBook Pro
• В MacBook могут добавить сенсорный экран
• Нейросети отбирают работу — какое будущее ждет программистов с ChatGPT
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.