В новой подборке фреймворк Observation в Swift и быстрый и безопасный DI на Kotlin, побочные эффекты Jetpack Compose и написание UX-текстов, генератор межъязыковых мостов, самые скачиваемые и зарабатывающие приложения в России и многое другое.
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Осваиваем фреймворк Observation в Swift
• Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений
• Как ускорить сборку проекта и не остановить разработку
• Забудь про UITableView
• Новые подходы к работе с регулярными выражениями в Swift. Просто о сложном
• О дивный новый мир со Swift Concurrency
• Поваренная книга SwiftUI: изображения и кнопки
• Debugging Improvements in Swift 5.9
• Crossing the Boundary
• Creating Shortcuts with App Intents
• Taking your Strings Catalogs to the Next Level
• Force Update Mechanism
• Recreate a Dribbble App Design with UIKit
• How to build a Tuist plugin and publish it using SPM and version control
• A New Approach to Testing in Swift
• Sync Data in SwiftUI Using NSUbiquitousKeyValueStore
• Optimizing Binaries — How Does the Linker Help Reduce App Size
• The SOLID principles with practical examples in Swift
• Abstract Class vs. Protocol-Oriented Approach in Swift
• Comparing the Performance of the Top 6 Analytics SDKs for iOS
• How to Optimize Your iOS App Performance
• Understanding SwiftUI ViewModifiers: A Comprehensive Guide
• iOS Microapp Architecture
• Unveiling the Data Modeling Principles of SwiftData
• Recreate a Dribbble App Design with UIKit
• Siri Intents for WatchOS
• Custom In-App Notification’s – Xcode 15 – SwiftUI Tutorials
• How to get started with Swift Concurrency (Beginner Tutorial)
• Changing Status Bar Style in 5 Min’s — SwiftUI
• Build an Air Quality Index App with SwiftUI Map & Google AQI API
• How to Build a Custom Sheet in SwiftUI
• New and Deprecated APIs in iOS 17
• Papyrus: типобезопасный HTTP клиент для Swift
• MetaCodable: расширение Codable с помощью метапрограммирования макросов
Android
• Библиотека Scout — быстрый и безопасный DI на Kotlin
• Побочные эффекты Jetpack Compose в подробностях
• Использование строковых ресурсов в ViewModel
• Миграция конфигурации сборки с Groovy на Kotlin
• Как устроена логика навигации флоу в приложении Тинькофф
• Введение в безопасность Android-приложений
• Удалил один класс, а сломался весь проект: Decoupling
• Корутинные загадки
• Измеряем sequence
• Вышел Android 14
• Integrating Adaptability features into your Native Game
• A feature flag PSA
• Screenshot testing in Compose
• Testing Android PagingSource
• Optimize thermal and CPU performance with the Android Dynamic Performance Framework
• Elegant Event Handling in Kotlin — A Refactoring Walkthrough
• Unlocking the Power of ProGuard in Android: A Comprehensive Guide
• Building Kotlin Coroutine Framework from Scratch: Part 2 -Reinventing Dispatchers
• Understanding the Difference Between KSP and KAPS in Kotlin
• Introducing RVTimeTracker — RecyclerView Time Tracker
• Android Custom Views — 1 (Matrix & PorterDuffXfermode )
• Elegant Event Handling in Kotlin — A Refactoring Walkthrough
• Rise of Jetpack Media 3 — Revolutionising Media Playback on Android
• Migration: Gson to Kotlinx.Serialization
• Scratch Card in Android jetpack compose
• Gestures in Jetpack compose — All you need to know
• Hidden Mobile App Security Risks in Android Libraries
• Automating Android Builds with GitHub Actions: From Debug to Release
• Common Android Developer Interview Questions and Answers
• How we built a Jenkins-Powered Cloud CI/CD Pipeline for our Android App in 2023
• Now in Android: 92 — Studio Bot expansion, Firebase integration, Android Studio, and much more!
• How to Build a Camera App With CameraX — Taking Photos
• How to Build a Custom Gradle Plugin to Share Project Config — Multi-Module Architecture
• Add Custom Google Fonts in your App
• How to make and use BOM (Bill of Materials) dependencies in Android projects
• Notify: заметки с MVVM, Compose и Material3
• ComposeFadingEdges: исчезающие края для Compose
Кроссплатформа
• Модификаторы классов для сопровождающих API
• A fond farewell to Flutter and Dart
• Efficient Dart: optimizing CPU-bound load in Flutter without missing a frame
• Flutter: Seamless multi-device debugging
• Introducing Carbon for React Native
• Everything you need to know about Enum with Flutter and Dart
• Supercharge Your Flutter Development: Top Plugins to Boost Productivity
• Pushing Flutter to the Limit: The Ultimate Guide to Reducing Flutter App Size
• 7 Tips to Boost .NET MAUI Mobile App Performance
• Building an offline-first React Native app with Expo, WatermelonDB, and Supabase
• How to use Parcelable in KMP?
• React Native performance optimization using Render Locks
• KMP Hopes & Dreamcatchers with Ritesh Gupta
• Getting Started with Ignite
• AnyPass: управление паролями на Compose Multiplatform
Разработка
• Как дизайн-мышление превратило Airbnb из неудачного стартапа в бизнес с миллиардными оборотами
• Как писать UX-тексты: изучаем интерфейсы мессенджеров
• Почему дизайн должен начинаться с исследования, даже когда всё очевидно
• Дизайнер интерфейсов: кого ищут компании, 10 лет спустя
• Как коридорное исследование помогло обновить каунтеры тредов в мессенджере
• Генератор межъязыковых мостов для мобильных приложений PyDjinni
• GitHub Innovation Graph — как разработчики всего мира работают на GitHub
• Microsoft обновила Teams
• Beams помогает продуктовым командам сосредоточиться на работе
• Количество вакансий в IT в России выросло на 10% за год
• Ozon запустит собственную оболочку для Smart TV со встроенными сервисами VK
• Самые высокооплачиваемые вакансии сентября в области разработки приложений
• How To Create A Product Roadmap
• Database Migrations
• A Guide to Prototyping Automotive Interfaces
• Which open-source monospaced font is best for coding?
• Lessons from debugging a tricky direct memory leak
• How to hire
• Database Performance at Scale: A Free, Open Source Book
Аналитика, маркетинг и монетизация
• Самые скачиваемые и зарабатывающие приложения в России в сентябре 2023
• Pokémon Sleep в первый же месяц обогнал другие приложения для отслеживания сна
• Promova помогает людям с дислексией учить языки
• Zoom представил офисный пакет для совместной работы Zoom Docs
• Telegram исполнилось 10 лет, а доходы стагнируют
• Потребительские расходы на мобильных устройствах в 2023 превысили $100 млрд в рекордный срок — отчет Data.ai за 3 квартал
• Как подружить бизнес и процессы
• Суд признал законным решение ФАС оштрафовать Apple на 1.2 млрд рублей
• Приложение Microsoft Lists стало доступно всем пользователям
• Apple готовит обновленный поиск для App Store и Spotlight
AI, Устройства, IoT
• Нейронные сети для планирования движения беспилотных автомобилей
• Как собрать бюджетный умный дом. Общие принципы проектирования на оборудовании Wiren Board
• Калибровка магнитометра: через вращения к компасу
• Как я делал бюджетное устройство мониторинга качества среды и что из этого вышло
• SAGE: коррекция орфографии с помощью языковых моделей
• KC868-ASR: креа-нода (креативная для креативных)
• Тестируем PCIe в новом Raspberry Pi 5
• Starting Electronics: руководство по веб-серверам на Arduino. Часть 17. Завершающий урок и итоги
• Google представил Pixel 8 и Pixel 8 Pro
• How Transformers Work
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Осваиваем фреймворк Observation в Swift
• Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений
• Как ускорить сборку проекта и не остановить разработку
• Забудь про UITableView
• Новые подходы к работе с регулярными выражениями в Swift. Просто о сложном
• О дивный новый мир со Swift Concurrency
• Поваренная книга SwiftUI: изображения и кнопки
• Debugging Improvements in Swift 5.9
• Crossing the Boundary
• Creating Shortcuts with App Intents
• Taking your Strings Catalogs to the Next Level
• Force Update Mechanism
• Recreate a Dribbble App Design with UIKit
• How to build a Tuist plugin and publish it using SPM and version control
• A New Approach to Testing in Swift
• Sync Data in SwiftUI Using NSUbiquitousKeyValueStore
• Optimizing Binaries — How Does the Linker Help Reduce App Size
• The SOLID principles with practical examples in Swift
• Abstract Class vs. Protocol-Oriented Approach in Swift
• Comparing the Performance of the Top 6 Analytics SDKs for iOS
• How to Optimize Your iOS App Performance
• Understanding SwiftUI ViewModifiers: A Comprehensive Guide
• iOS Microapp Architecture
• Unveiling the Data Modeling Principles of SwiftData
• Recreate a Dribbble App Design with UIKit
• Siri Intents for WatchOS
• Custom In-App Notification’s – Xcode 15 – SwiftUI Tutorials
• How to get started with Swift Concurrency (Beginner Tutorial)
• Changing Status Bar Style in 5 Min’s — SwiftUI
• Build an Air Quality Index App with SwiftUI Map & Google AQI API
• How to Build a Custom Sheet in SwiftUI
• New and Deprecated APIs in iOS 17
• Papyrus: типобезопасный HTTP клиент для Swift
• MetaCodable: расширение Codable с помощью метапрограммирования макросов
Android
• Библиотека Scout — быстрый и безопасный DI на Kotlin
• Побочные эффекты Jetpack Compose в подробностях
• Использование строковых ресурсов в ViewModel
• Миграция конфигурации сборки с Groovy на Kotlin
• Как устроена логика навигации флоу в приложении Тинькофф
• Введение в безопасность Android-приложений
• Удалил один класс, а сломался весь проект: Decoupling
• Корутинные загадки
• Измеряем sequence
• Вышел Android 14
• Integrating Adaptability features into your Native Game
• A feature flag PSA
• Screenshot testing in Compose
• Testing Android PagingSource
• Optimize thermal and CPU performance with the Android Dynamic Performance Framework
• Elegant Event Handling in Kotlin — A Refactoring Walkthrough
• Unlocking the Power of ProGuard in Android: A Comprehensive Guide
• Building Kotlin Coroutine Framework from Scratch: Part 2 -Reinventing Dispatchers
• Understanding the Difference Between KSP and KAPS in Kotlin
• Introducing RVTimeTracker — RecyclerView Time Tracker
• Android Custom Views — 1 (Matrix & PorterDuffXfermode )
• Elegant Event Handling in Kotlin — A Refactoring Walkthrough
• Rise of Jetpack Media 3 — Revolutionising Media Playback on Android
• Migration: Gson to Kotlinx.Serialization
• Scratch Card in Android jetpack compose
• Gestures in Jetpack compose — All you need to know
• Hidden Mobile App Security Risks in Android Libraries
• Automating Android Builds with GitHub Actions: From Debug to Release
• Common Android Developer Interview Questions and Answers
• How we built a Jenkins-Powered Cloud CI/CD Pipeline for our Android App in 2023
• Now in Android: 92 — Studio Bot expansion, Firebase integration, Android Studio, and much more!
• How to Build a Camera App With CameraX — Taking Photos
• How to Build a Custom Gradle Plugin to Share Project Config — Multi-Module Architecture
• Add Custom Google Fonts in your App
• How to make and use BOM (Bill of Materials) dependencies in Android projects
• Notify: заметки с MVVM, Compose и Material3
• ComposeFadingEdges: исчезающие края для Compose
Кроссплатформа
• Модификаторы классов для сопровождающих API
• A fond farewell to Flutter and Dart
• Efficient Dart: optimizing CPU-bound load in Flutter without missing a frame
• Flutter: Seamless multi-device debugging
• Introducing Carbon for React Native
• Everything you need to know about Enum with Flutter and Dart
• Supercharge Your Flutter Development: Top Plugins to Boost Productivity
• Pushing Flutter to the Limit: The Ultimate Guide to Reducing Flutter App Size
• 7 Tips to Boost .NET MAUI Mobile App Performance
• Building an offline-first React Native app with Expo, WatermelonDB, and Supabase
• How to use Parcelable in KMP?
• React Native performance optimization using Render Locks
• KMP Hopes & Dreamcatchers with Ritesh Gupta
• Getting Started with Ignite
• AnyPass: управление паролями на Compose Multiplatform
Разработка
• Как дизайн-мышление превратило Airbnb из неудачного стартапа в бизнес с миллиардными оборотами
• Как писать UX-тексты: изучаем интерфейсы мессенджеров
• Почему дизайн должен начинаться с исследования, даже когда всё очевидно
• Дизайнер интерфейсов: кого ищут компании, 10 лет спустя
• Как коридорное исследование помогло обновить каунтеры тредов в мессенджере
• Генератор межъязыковых мостов для мобильных приложений PyDjinni
• GitHub Innovation Graph — как разработчики всего мира работают на GitHub
• Microsoft обновила Teams
• Beams помогает продуктовым командам сосредоточиться на работе
• Количество вакансий в IT в России выросло на 10% за год
• Ozon запустит собственную оболочку для Smart TV со встроенными сервисами VK
• Самые высокооплачиваемые вакансии сентября в области разработки приложений
• How To Create A Product Roadmap
• Database Migrations
• A Guide to Prototyping Automotive Interfaces
• Which open-source monospaced font is best for coding?
• Lessons from debugging a tricky direct memory leak
• How to hire
• Database Performance at Scale: A Free, Open Source Book
Аналитика, маркетинг и монетизация
• Самые скачиваемые и зарабатывающие приложения в России в сентябре 2023
• Pokémon Sleep в первый же месяц обогнал другие приложения для отслеживания сна
• Promova помогает людям с дислексией учить языки
• Zoom представил офисный пакет для совместной работы Zoom Docs
• Telegram исполнилось 10 лет, а доходы стагнируют
• Потребительские расходы на мобильных устройствах в 2023 превысили $100 млрд в рекордный срок — отчет Data.ai за 3 квартал
• Как подружить бизнес и процессы
• Суд признал законным решение ФАС оштрафовать Apple на 1.2 млрд рублей
• Приложение Microsoft Lists стало доступно всем пользователям
• Apple готовит обновленный поиск для App Store и Spotlight
AI, Устройства, IoT
• Нейронные сети для планирования движения беспилотных автомобилей
• Как собрать бюджетный умный дом. Общие принципы проектирования на оборудовании Wiren Board
• Калибровка магнитометра: через вращения к компасу
• Как я делал бюджетное устройство мониторинга качества среды и что из этого вышло
• SAGE: коррекция орфографии с помощью языковых моделей
• KC868-ASR: креа-нода (креативная для креативных)
• Тестируем PCIe в новом Raspberry Pi 5
• Starting Electronics: руководство по веб-серверам на Arduino. Часть 17. Завершающий урок и итоги
• Google представил Pixel 8 и Pixel 8 Pro
• How Transformers Work
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.