В новом дайджесте эволюция архитектуры приложения FBiOS и лабиринт, в который попал Google, превратности диспетчеризации и MDM, KMM, темный режим, Репка Pi 3 и многое другое.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!
iOS
• Эволюция архитектуры приложения Facebook для iOS
• Парсинг ответов на BLE-команды на языке Swift на примере GoPro
• Превратности диспетчеризации в Swift
• NSPredicate: старый API с новыми сюрпризами
• CoreData с использованием дженериков и шаблона проектирования Одиночка
• Что нового в Swift 5.7: Regex
• В iOS и iPadOS 16.4 появятся веб пуш-уведомления
• Detached Tasks in Swift explained with code examples
• Breaking Down String Format Specifiers in Swift
• Build a Custom Sliding Keyboard in SwiftUI
• Building a Neural Network from Scratch in SwiftUI
• How iOS Pro Access Assets and Config Files
• Adding a stretchable header to a SwiftUI ScrollView
• How to Create Configurable Widgets With Static Options?
• Achieving consistent and continuous delivery for iOS
• Apple doesn’t want you developing hobby apps
• Adding Contacts on Apple Platforms without Entitlements
• The Art of Sequential Animations in SwiftUI: Tips, Tricks, and Examples
• Swift Regex Tutorial: Getting Started
• An Unexpected Behavior of Subclasses in Swift
• How to manage SwiftUI updates with Swift available
• Mastering charts in SwiftUI. Customizations.
• Using Lenses in Swift
• SnapKit: простой Auto Layout для iOS
• PythonKit: Python из Swift
• SwiftGen: генератор кода для ассетов
Android
• MDM в Android: плюсы, минусы, подводные камни
• Создание мобильного приложения для рисования на Android Studio
• Google улучшает работу Chrome в Android-приложениях
• Google начинает бета-тестирование песочницы конфиденциальности
• Android TV 13 наконец запустился
• Kotlin Generic Variance Modifiers
• How to Implement Continuous Deployment (CD) for Android With Azure
• Keep your app from failing in a 64-bit-only Android phone
• Do-It-Yourself Compose Multiplatform Navigation with Decompose
• Effective testing with Android Test Only Modules
• Android TV Leanback: Playback Controls
• KConMapper — How To Automate Mapping Function Creation With Kotlin’s KSP
• Migrating Sunflower to Jetpack Compose
• Basics of Mediapipe for Android Platform
• Dynamic Feature Delivery in a Multi-Module Project
• Gradle 8.0 Releases
• Handling back press in Android 13, the correct way
• Remove Ripple Effect from Clickable and Toggleable Widget In Jetpack Compose
• Loading images using coil in Jetpack Compose
• Android App Development in 10 Hours Bootcamp | Android 13
• Constraints and modifier order
• Kotlin | Higher-Order Functions and Lambda Expressions
• Read You: RSS-ридер для Android
Кроссплатформа
• KMM глазами iOS-разработчика
• Как интегрировать Яндекс Карты в приложение на Flutter
• Анализ кода в Flutter-приложениях и настройка сборочной линии Gitlab CI для анализа
• Что нового в Kotlin Multiplatform Mobile
• Control your Flutter app on the fly with Firebase Remote Config
• Material 3 in Flutter: Design Cross-Platform Applications Quickly
• Using cache pods, React Native can speed up iOS builds by 4 times
• Patrol 1.0 — Powerful Flutter UI Testing Framework
• CI For Your Flutter App With GitHub Actions For Beginners
• How to build a real-time multiplayer game with Flutter Flame
• Introducing Realm for Dart & Flutter
• Flutter — Advanced Dependency Injection (Best Practice)
• Building a Flutter-WebRTC App: A Complete Guide
Разработка
• Лабиринт находится в мыши: чем болеет Google (и можно ли его вылечить)
• Темный режим — просто трата времени?
• Ozon Tech Community Mobile Meetup
• Как написать HashMap — пошаговая инструкция
• Podlodka #307: Darklang
• VK совместно с ИТМО и РТУ МИРЭА запускает образовательный курс по геймдизайну
• Snap добавил трассировку лучей в свои линзы
• Облако или свой большой сервер?
• Как «очеловечивали» дизайн-язык Алисы
• Deployment is harder than coding
• Defying physics in UX
• The Change of Mobile Teams Topology for an Organization
• How does Spotify’s lyrics color selection work?
• Senior developers understand the fundamentals
• Transforming Healthcare with MEDIC Doctor App: A Case Study
• Ktor: подключенные приложения на Kotlin
Аналитика, маркетинг и монетизация
• Как Никита Биер дважды получил миллионы юзеров и продал один и тот же продукт за миллионы долларов
• Avito Analytics meetup #9
• Feishu, китайский аналог Slack, достиг $100 млн ARR
• Тренд фотоприложений с искусственным интеллектом сошёл на нет
• Кто и как использует приложения для здоровья и хорошего самочувствия — исследование Airship
• Telegram заработал $7 млн за полгода
• Уроки Duolingo: от стартапа до IPO
AI, Устройства, IoT
• Repka Pi 3 – смотрим и тестируем первый отечественный одноплатный компьютер
• Запуск Stable Diffusion локально и в облаке с помощью Diffusers и dstack
• Делаем датчик качества воздуха с Modbus RTU на ESP8266 и Arduino
• Как спроектировать умный дом с Алисой. Часть 3 + Часть 2 + Часть 1
• Copilot for Business стал общедоступен
• Себестоимость iPhone 14 Pro Max составляет 464 доллара
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!
iOS
• Эволюция архитектуры приложения Facebook для iOS
• Парсинг ответов на BLE-команды на языке Swift на примере GoPro
• Превратности диспетчеризации в Swift
• NSPredicate: старый API с новыми сюрпризами
• CoreData с использованием дженериков и шаблона проектирования Одиночка
• Что нового в Swift 5.7: Regex
• В iOS и iPadOS 16.4 появятся веб пуш-уведомления
• Detached Tasks in Swift explained with code examples
• Breaking Down String Format Specifiers in Swift
• Build a Custom Sliding Keyboard in SwiftUI
• Building a Neural Network from Scratch in SwiftUI
• How iOS Pro Access Assets and Config Files
• Adding a stretchable header to a SwiftUI ScrollView
• How to Create Configurable Widgets With Static Options?
• Achieving consistent and continuous delivery for iOS
• Apple doesn’t want you developing hobby apps
• Adding Contacts on Apple Platforms without Entitlements
• The Art of Sequential Animations in SwiftUI: Tips, Tricks, and Examples
• Swift Regex Tutorial: Getting Started
• An Unexpected Behavior of Subclasses in Swift
• How to manage SwiftUI updates with Swift available
• Mastering charts in SwiftUI. Customizations.
• Using Lenses in Swift
• SnapKit: простой Auto Layout для iOS
• PythonKit: Python из Swift
• SwiftGen: генератор кода для ассетов
Android
• MDM в Android: плюсы, минусы, подводные камни
• Создание мобильного приложения для рисования на Android Studio
• Google улучшает работу Chrome в Android-приложениях
• Google начинает бета-тестирование песочницы конфиденциальности
• Android TV 13 наконец запустился
• Kotlin Generic Variance Modifiers
• How to Implement Continuous Deployment (CD) for Android With Azure
• Keep your app from failing in a 64-bit-only Android phone
• Do-It-Yourself Compose Multiplatform Navigation with Decompose
• Effective testing with Android Test Only Modules
• Android TV Leanback: Playback Controls
• KConMapper — How To Automate Mapping Function Creation With Kotlin’s KSP
• Migrating Sunflower to Jetpack Compose
• Basics of Mediapipe for Android Platform
• Dynamic Feature Delivery in a Multi-Module Project
• Gradle 8.0 Releases
• Handling back press in Android 13, the correct way
• Remove Ripple Effect from Clickable and Toggleable Widget In Jetpack Compose
• Loading images using coil in Jetpack Compose
• Android App Development in 10 Hours Bootcamp | Android 13
• Constraints and modifier order
• Kotlin | Higher-Order Functions and Lambda Expressions
• Read You: RSS-ридер для Android
Кроссплатформа
• KMM глазами iOS-разработчика
• Как интегрировать Яндекс Карты в приложение на Flutter
• Анализ кода в Flutter-приложениях и настройка сборочной линии Gitlab CI для анализа
• Что нового в Kotlin Multiplatform Mobile
• Control your Flutter app on the fly with Firebase Remote Config
• Material 3 in Flutter: Design Cross-Platform Applications Quickly
• Using cache pods, React Native can speed up iOS builds by 4 times
• Patrol 1.0 — Powerful Flutter UI Testing Framework
• CI For Your Flutter App With GitHub Actions For Beginners
• How to build a real-time multiplayer game with Flutter Flame
• Introducing Realm for Dart & Flutter
• Flutter — Advanced Dependency Injection (Best Practice)
• Building a Flutter-WebRTC App: A Complete Guide
Разработка
• Лабиринт находится в мыши: чем болеет Google (и можно ли его вылечить)
• Темный режим — просто трата времени?
• Ozon Tech Community Mobile Meetup
• Как написать HashMap — пошаговая инструкция
• Podlodka #307: Darklang
• VK совместно с ИТМО и РТУ МИРЭА запускает образовательный курс по геймдизайну
• Snap добавил трассировку лучей в свои линзы
• Облако или свой большой сервер?
• Как «очеловечивали» дизайн-язык Алисы
• Deployment is harder than coding
• Defying physics in UX
• The Change of Mobile Teams Topology for an Organization
• How does Spotify’s lyrics color selection work?
• Senior developers understand the fundamentals
• Transforming Healthcare with MEDIC Doctor App: A Case Study
• Ktor: подключенные приложения на Kotlin
Аналитика, маркетинг и монетизация
• Как Никита Биер дважды получил миллионы юзеров и продал один и тот же продукт за миллионы долларов
• Avito Analytics meetup #9
• Feishu, китайский аналог Slack, достиг $100 млн ARR
• Тренд фотоприложений с искусственным интеллектом сошёл на нет
• Кто и как использует приложения для здоровья и хорошего самочувствия — исследование Airship
• Telegram заработал $7 млн за полгода
• Уроки Duolingo: от стартапа до IPO
AI, Устройства, IoT
• Repka Pi 3 – смотрим и тестируем первый отечественный одноплатный компьютер
• Запуск Stable Diffusion локально и в облаке с помощью Diffusers и dstack
• Делаем датчик качества воздуха с Modbus RTU на ESP8266 и Arduino
• Как спроектировать умный дом с Алисой. Часть 3 + Часть 2 + Часть 1
• Copilot for Business стал общедоступен
• Себестоимость iPhone 14 Pro Max составляет 464 доллара
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.