В этом выпуске зарубы с Apple и Ui-тесты для поиска утечек памяти, вторая жизнь Windows Phone и новая социальная сеть с ИИ, игровой рынок 2023, StoreKit 2, советы для прохождения кодинг-интервью и многое другое
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Осваиваем StoreKit 2 + ProductView и StoreView + SubscriptionStoreView
• Месячная заруба с Apple. Рефакторим бридж. Часть 2 + Часть 1
• Простая анимация для всплывающего окна
• Как мы делали новую iOS-камеру ВКонтакте и VK Клипов
• Показываем красивое с помощью видеоредактора в VK Клипах на iOS
• Making your SwiftData models Codable
• Introducing ObservableConverter
• Scrollable lists using Protocol-Oriented Programming and UICollectionViewCompositionalLayout
• SwiftData Background Tasks
• Mastering SwiftUI’s zIndex: A Comprehensive Guide
• Swift High Performance: Dictionary Keys
• Park API — Server-Side Swift With Hummingbird
• Transitioning from MVVM to MV: A Journey of Simplifying App Architecture
• Jump ???? SwiftUI Coordinator with Router
• A Beginner’s Guide to Clean Architecture in SwiftUI: Building Better Apps Step by Step
• 10 Lesser Known LLDB Commands used in iOS App development
• Common Pitfalls Caused by Delayed State Updates in SwiftUI
• iOS Deeplink Handling: The Asynchronous Way
• Enabling drag reordering in SwiftUI lazy grids and stacks
• Xcode 15: Automated accessibility audits
• An Unusual Rail Adventure
• Advanced text validation in UIKit with Combine
• Optionals in Swift
• Implementing Polling in SwiftUI
• Mastering SwiftUI Custom Modifiers
• Enabling drag reordering in SwiftUI lazy grids and stacks
• Functions and Closures in Swift
• SwiftUI Animated Tab Icons — Animated SF Symbols
• Build Switcher: Local Build Caching for Xcode
• How to Save and Manage Data with Core Data in Swift
• Using @_exported attribute for Simplified Module Imports
• Enhancements to ScrollView in iOS 17
• Crush: работа с CoreData
• RxSwift: реактивное расширение для Swift
• GRDB: удобная работа с SQLite
Android
• Запускаем IDEA и CLion на Android
• Как повысить яркость экрана в Android-приложении без запроса разрешения
• Использование Compose для ТВ-версии приложения Иви: мощный фреймворк для создания эффективных Android-приложений
• Используем UI-тесты для поиска утечек
• История разработки приложения для складных смартфонов Samsung. Часть 1
• Библиотека Jetpack Compose для начинающего Android-разработчика
• Кодогенерация. KAPT. KSP. Manual DI
• Что такое Kotlin Symbol Processing (KSP)
• Android-разработчик: Middle за 1 год в Казахстане
• Empowering Code with High-Order Functions
• An update on Jetpack Compose Accompanist libraries
• Set Activity Screen Brightness without Permission
• A World Beyond Libraries: Cross-Library screenshot tests on Android
• Building a widget using Jetpack Glance
• Recreating UseCase: Embracing a Fluent and Fun Approach
• Dark mode on android with Jetpack Compose using dataStore with Hilt
• Kotlin’s Reactive Tools: A Deep Dive into RxKotlin and Flow
• Seeing your composable in shades of grey
• Become More Senior Android Developer with these 15 Android Studio Tips & Tricks
• Why Build a Pattern Library in Jetpack Compose?
• Dagger 2.48 with Dagger and Hilt KSP processors
• Getting Better with Kotlin — Exploring Advanced Features and Effective Coding Strategies
• @Preview Driven Development with Compose
• Mutable State vs. State Management Libraries in Android
• Top 100 Kotlin Interview Questions and Answers
• At your Service(Android)
• Full Guide to Manual Dependency Injection + Removing Dagger
• How to create an advanced text validation with Combine
• Using the Gradle Version Catalog in Android projects
• RemoteCam: веб-камера для Android
• Ivy Wallet: открытый трекер финансов
Кроссплатформа
• Вложенная навигация во Flutter: что такое декларативный роутер и зачем он нужен
• Полное руководство по использованию FVM (Flutter Version Management) – жонглируйте версиями Flutter sdk в своих проектах
• 4.0 Асинхронность. Isolates, потоки, процессы
• Flutter Chopper Authentication + Retry on 401 Unauthorized
• KMP: Work with existing project
• Hydrated Bloc in Flutter: Simplifying State Management
• Top 10 Flutter Apps You Must Make as a Beginner
• Don’t pass TextStyle to Widgets
• Compose Multiplatform 1.5.0 Release
• Dart 3.1 & a retrospective on functional style programming in Dart 3
• Recreating the Telegram Collapsable Header on iOS using Reanimated
• Expected and Actual Mechanism in Kotlin Multiplatform Mobile
• Rare cases When to use RN over Native
• Dart Programming list collection tips & tricks
Разработка
• Не дадим Windows Phone умереть! Как я написал свои клиенты VK, YouTube для Nokia Lumia? Сам себе экосистема ч.2
• Как пройти кодинг интервью со мной
• Новый взгляд на аналитику ошибок в production, или работающая альтернатива Crashlytics
• Как мы разрабатывали приложение с сибирским характером для суровых дальнобойщиков (и победили Яндекс Карты)
• VR: как это работает
• Почему стоит вкладываться в опенсорс
• Мобильные виджеты
• 5 проектов выходного дня, которые значительно повысят ваши навыки кодинга
• Podlodka #334: стартап-акселераторы
• Главные языки программирования 2023
• Microsoft закрывает Visual Studio для Mac
• Треть программистов теряет свои профнавыки на текущем месте работы
• Где платят больше всего в Big Tech: исследование Blind
• Google открывает API о солнечных возможностях, качестве воздуха и уровне пыльцы
• How Grab uses Graph Databases to Reduce Fraud
• Ask HN: Where do I find good code to read?
• 8 Reasons Why WhatsApp Was Able to Support 50 Billion Messages a Day With Only 32 Engineers
• (Life) Advice From The Creator of C++
• The Unexpected Find That Freed 20GB of Unused Index Space
• Measuring developer productivity? A response to McKinsey
• Case Study: Roebuck. UI/UX Design and Illustrations for Educational Mobile App
• Scrum: Failure By Design?
Аналитика, маркетинг и монетизация
• Маркетологи в мобайле: Дарья Пасюк («Додо Пицца»)
• Как правильно выстроить монетизацию в первую сессию пользователя
• BeFake: социальная сеть с ИИ, в которой не надо быть настоящим
• В AppMetrica появились A/B-эксперименты
• «Игровой рынок 2023»: отчет Data.ai и IDC
• Samsung выпустил свое ИИ-приложение с рецептами
• RuStore станет обязательным для всех
• $6 млн: Kiki — аренда жилья для «друзей»
• Монетал — Учет расходов: разбор приложения
• Доход Gmail вырос в 179 раз с 2021
• Деньги из воздуха. Как приложение зарабатывает миллион долларов ежемесячно на прогнозе ветра?
• Don’t look up: Google’s meteor of incompetence will kill thousands of apps in four months
AI, Устройства, IoT
• CodeLama в вашей клавиатуре | Локальный Copilot для любого поля ввода
• Одноплатный ПК Cytron Reka:Bit: отличный старт для обучения робототехнике и электронике
• Принцип суперпозиции для Умного дома
• ИИ Duet стал доступен в Google Workspace
• Бесплатный курс «LangChain: чат с вашими данными»
• iPhone 14 Pro Max стал самым продаваемым телефоном в мире
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
Пройдите наш опрос про архитектурные шаблоны. Опрос займет несколько минут. Доступен здесь.
iOS
• Осваиваем StoreKit 2 + ProductView и StoreView + SubscriptionStoreView
• Месячная заруба с Apple. Рефакторим бридж. Часть 2 + Часть 1
• Простая анимация для всплывающего окна
• Как мы делали новую iOS-камеру ВКонтакте и VK Клипов
• Показываем красивое с помощью видеоредактора в VK Клипах на iOS
• Making your SwiftData models Codable
• Introducing ObservableConverter
• Scrollable lists using Protocol-Oriented Programming and UICollectionViewCompositionalLayout
• SwiftData Background Tasks
• Mastering SwiftUI’s zIndex: A Comprehensive Guide
• Swift High Performance: Dictionary Keys
• Park API — Server-Side Swift With Hummingbird
• Transitioning from MVVM to MV: A Journey of Simplifying App Architecture
• Jump ???? SwiftUI Coordinator with Router
• A Beginner’s Guide to Clean Architecture in SwiftUI: Building Better Apps Step by Step
• 10 Lesser Known LLDB Commands used in iOS App development
• Common Pitfalls Caused by Delayed State Updates in SwiftUI
• iOS Deeplink Handling: The Asynchronous Way
• Enabling drag reordering in SwiftUI lazy grids and stacks
• Xcode 15: Automated accessibility audits
• An Unusual Rail Adventure
• Advanced text validation in UIKit with Combine
• Optionals in Swift
• Implementing Polling in SwiftUI
• Mastering SwiftUI Custom Modifiers
• Enabling drag reordering in SwiftUI lazy grids and stacks
• Functions and Closures in Swift
• SwiftUI Animated Tab Icons — Animated SF Symbols
• Build Switcher: Local Build Caching for Xcode
• How to Save and Manage Data with Core Data in Swift
• Using @_exported attribute for Simplified Module Imports
• Enhancements to ScrollView in iOS 17
• Crush: работа с CoreData
• RxSwift: реактивное расширение для Swift
• GRDB: удобная работа с SQLite
Android
• Запускаем IDEA и CLion на Android
• Как повысить яркость экрана в Android-приложении без запроса разрешения
• Использование Compose для ТВ-версии приложения Иви: мощный фреймворк для создания эффективных Android-приложений
• Используем UI-тесты для поиска утечек
• История разработки приложения для складных смартфонов Samsung. Часть 1
• Библиотека Jetpack Compose для начинающего Android-разработчика
• Кодогенерация. KAPT. KSP. Manual DI
• Что такое Kotlin Symbol Processing (KSP)
• Android-разработчик: Middle за 1 год в Казахстане
• Empowering Code with High-Order Functions
• An update on Jetpack Compose Accompanist libraries
• Set Activity Screen Brightness without Permission
• A World Beyond Libraries: Cross-Library screenshot tests on Android
• Building a widget using Jetpack Glance
• Recreating UseCase: Embracing a Fluent and Fun Approach
• Dark mode on android with Jetpack Compose using dataStore with Hilt
• Kotlin’s Reactive Tools: A Deep Dive into RxKotlin and Flow
• Seeing your composable in shades of grey
• Become More Senior Android Developer with these 15 Android Studio Tips & Tricks
• Why Build a Pattern Library in Jetpack Compose?
• Dagger 2.48 with Dagger and Hilt KSP processors
• Getting Better with Kotlin — Exploring Advanced Features and Effective Coding Strategies
• @Preview Driven Development with Compose
• Mutable State vs. State Management Libraries in Android
• Top 100 Kotlin Interview Questions and Answers
• At your Service(Android)
• Full Guide to Manual Dependency Injection + Removing Dagger
• How to create an advanced text validation with Combine
• Using the Gradle Version Catalog in Android projects
• RemoteCam: веб-камера для Android
• Ivy Wallet: открытый трекер финансов
Кроссплатформа
• Вложенная навигация во Flutter: что такое декларативный роутер и зачем он нужен
• Полное руководство по использованию FVM (Flutter Version Management) – жонглируйте версиями Flutter sdk в своих проектах
• 4.0 Асинхронность. Isolates, потоки, процессы
• Flutter Chopper Authentication + Retry on 401 Unauthorized
• KMP: Work with existing project
• Hydrated Bloc in Flutter: Simplifying State Management
• Top 10 Flutter Apps You Must Make as a Beginner
• Don’t pass TextStyle to Widgets
• Compose Multiplatform 1.5.0 Release
• Dart 3.1 & a retrospective on functional style programming in Dart 3
• Recreating the Telegram Collapsable Header on iOS using Reanimated
• Expected and Actual Mechanism in Kotlin Multiplatform Mobile
• Rare cases When to use RN over Native
• Dart Programming list collection tips & tricks
Разработка
• Не дадим Windows Phone умереть! Как я написал свои клиенты VK, YouTube для Nokia Lumia? Сам себе экосистема ч.2
• Как пройти кодинг интервью со мной
• Новый взгляд на аналитику ошибок в production, или работающая альтернатива Crashlytics
• Как мы разрабатывали приложение с сибирским характером для суровых дальнобойщиков (и победили Яндекс Карты)
• VR: как это работает
• Почему стоит вкладываться в опенсорс
• Мобильные виджеты
• 5 проектов выходного дня, которые значительно повысят ваши навыки кодинга
• Podlodka #334: стартап-акселераторы
• Главные языки программирования 2023
• Microsoft закрывает Visual Studio для Mac
• Треть программистов теряет свои профнавыки на текущем месте работы
• Где платят больше всего в Big Tech: исследование Blind
• Google открывает API о солнечных возможностях, качестве воздуха и уровне пыльцы
• How Grab uses Graph Databases to Reduce Fraud
• Ask HN: Where do I find good code to read?
• 8 Reasons Why WhatsApp Was Able to Support 50 Billion Messages a Day With Only 32 Engineers
• (Life) Advice From The Creator of C++
• The Unexpected Find That Freed 20GB of Unused Index Space
• Measuring developer productivity? A response to McKinsey
• Case Study: Roebuck. UI/UX Design and Illustrations for Educational Mobile App
• Scrum: Failure By Design?
Аналитика, маркетинг и монетизация
• Маркетологи в мобайле: Дарья Пасюк («Додо Пицца»)
• Как правильно выстроить монетизацию в первую сессию пользователя
• BeFake: социальная сеть с ИИ, в которой не надо быть настоящим
• В AppMetrica появились A/B-эксперименты
• «Игровой рынок 2023»: отчет Data.ai и IDC
• Samsung выпустил свое ИИ-приложение с рецептами
• RuStore станет обязательным для всех
• $6 млн: Kiki — аренда жилья для «друзей»
• Монетал — Учет расходов: разбор приложения
• Доход Gmail вырос в 179 раз с 2021
• Деньги из воздуха. Как приложение зарабатывает миллион долларов ежемесячно на прогнозе ветра?
• Don’t look up: Google’s meteor of incompetence will kill thousands of apps in four months
AI, Устройства, IoT
• CodeLama в вашей клавиатуре | Локальный Copilot для любого поля ввода
• Одноплатный ПК Cytron Reka:Bit: отличный старт для обучения робототехнике и электронике
• Принцип суперпозиции для Умного дома
• ИИ Duet стал доступен в Google Workspace
• Бесплатный курс «LangChain: чат с вашими данными»
• iPhone 14 Pro Max стал самым продаваемым телефоном в мире
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.