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

iOS
• Моя малышка любит самолеты — и я сделал для нее радар
• DebugMenu и визуальная иерархия элементов интерфейса
• Ускоряем прохождение iOS UI-тестов. Часть 3. Старт приложения с определенного экрана
• Как появились веб-пуши Apple в Тинькофф
• Вопросы с собеседований: в чем разница Weak и Unowned в Swift
• Лучшие приложения года в App Store Awards 2023
• Поваренная книга SwiftUI: создание круглого представления в SwiftUI
•
How to store images in SwiftData
•
Refactoring Your iOS AppDelegate
•
New to Bitrise: Enhanced Xcode Reporting & Build Annotations
•
Months of rewriting code and tests to async/await
•
Unit Test the Observation Framework
•
Router Pattern for SwiftUI Navigation
•
Swift Evolution: Reading and learning from proposals
•
Working with custom metadata in mp4 files
•
Using on-demand resources for securely storing API keys in iOS apps
•
Practical Examples of Swift Extensions
•
Top SwiftUI Interview Questions for 2023
•
Automating Memory Leak Detection with CI Integration for iOS
•
iOS development with JetBrains Fleet
•
Shipping Values Between Actors
•
Mastering MapKit in SwiftUI. Basics
•
Working with MapKit in SwiftUI
•
Add Quick Actions to SwiftUI App
•
SwiftUI geometryGroup() Guide: From Theory to Practice
•
Create Your Own Step Counter SwiftUI App in 5 Minutes
•
Swift Data One to Many Relationships
•
SwiftData Starter Project
•
SwiftUI Shine Effect – Custom View Modifier
•
SwiftUI: Infinite Looping ScrollView — iOS 17
•
SwiftLeeds 2023 Videos
•
Working with XcodeKit
•
Pow: анимационные эффекты для SwiftUI
•
GridView: простое создание сеток для SwiftUI
•
Variablur: размытие для SwiftUI на основе Metal
Android
• Обзор актуальных инструментов шифрования в Android
• Элегантная обработка событий в Kotlin — рефакторинг в 7 шагов
• Android. Принять себя или Cookie?
• Kotlin под капотом: inline функции
• Топ-10 причин утечки памяти в Android
• Списки с душой и стилем: Ваш путь к Jetpack Compose
• SberPay: как добавить поддержку бесконтактной оплаты в Android-приложение
• Видео-сообщение как в Telegram
• Как сделать приложение для Android с бесконечной лентой видео на базе EdgeStreaming
• Вышла стабильная версия Android Studio Hedgehog
• Лучшие приложения и игры в Google Play 2023
• Вопросы с собеседований: что такое контент-провайдер в Android
• Разработка UI на Jetpack Compose
• Треш-обзор Geekbrains. Полный разбор курса по Android
•
Preparing for Network Failures this Holiday Season
•
Emoji error! Using the latest Compose with compileSDK < 34
•
Oh no, another type safe Compose Navigation library for Android
•
How to make Espresso tests more readable and stable
•
Introducing a Gradle plugin for Screenshotbot
•
The Android Backstage of Mercado Libre Warehouses
•
“Don’ts” in modern Android/Kotlin Development (Bad practices/Anti-patterns)
•
Kotlin under the hood: How inline functions work
•
Demystifying Kotlin StateFlows: A Deep Dive
•
Component-based Approach. Implementing Screens with the Decompose Library
•
Android: Service vs IntentService in Kotlin
•
Understanding the Key Function in Jetpack Compose
•
The Composable Memory Leak And Java VM Shut Down Issue
•
Gestures in Jetpack compose — All you need to know
•
Kotlin Functions Every Developer Should Know with Examples
•
3 Android Studio Plugins for a Better Developer Experience for Kotlin
•
What’s new in Android Studio Hedgehog
•
Now in Android: 96 — New APIs for adaptive layouts, Google Play updates, and more!
•
compileSdk VS. targetSdk VS. minSdk — THIS Is the Difference
•
Exploring Molecule and Beyond with Jake Wharton
•
Full Guide to Shared Element Transition Animation in Android with Jetpack Compose
•
FlexibleBottomSheet: удобный Bottom Sheet для Jetpack Compose
•
foSho: type safe навигация для Compose
Кроссплатформа
• Kotlin Multiplatform в мобильной разработке. Рецепты общего кода для Android и iOS
• Хитрый виджет: разбор тестового Flutter-задания. Детективная нуар-история
• Как добавить Flutter в нативное приложение iOS и протестировать его на Codemagic (Часть 3)
•
Top 14 VS Code Extensions for Fast Flutter App Development
•
Creating an automated test framework for React Native apps
•
Overflow Indicator in Flutter: Mastering UI Responsiveness
•
Code Generator using Flutter
•
Secure the user data on iCloud Drive with Flutter
•
Clean Your UI Code in Flutter
•
Sharing codebase between platforms — a look at Kotlin and Compose multiplatform
•
Flutter + Flame + Tiled = a simple game field prototype for a strategy game
•
React Native’s New Architecture
•
Reactive Programming in Flutter
•
Shimmer & Skeleton Effects In Flutter
•
Shared Navigation on Kotlin Multiplatform with Decompose (KMP)
•
Coil Goes Multiplatform with Colin White
•
Step-by-Step Guide: Creating a Peer-to-Peer Tic Tac Toe Game in Flutter
Разработка
• Доступность игр для людей с ограниченными возможностями: проблемы и их решения
• Солнце горит во мне: обновление Яндекс Музыки, о котором стоит знать
• Как мы (не) вкатились в геймдев. Часть 1
• По заветам кота Вжуха: превращаем веб-приложение в сервис на платформе VK Mini Apps
• Первый месяц жизни приложения BookDesk или как меня пытались взломать
• Проект: AI Note Recorder или как я не выполнил цель на 2023 год
• Что можно улучшить в своем приложении? Крадем как художники у Яндекс.Еды
• Самые высокооплачиваемые вакансии ноября в сфере разработки приложений
• Автотесты в AvitoTech
• Секреты собеседований с Алеексеем Быковым (Reddit)
• Podlodka #343: что такое Motion Design?
• Прощай, чистый код
• Бесплатный курс «Современное программирование на C++»
• Зарплаты за год в IT выросли на 8.5%
•
A good engineer thinks like a product manager
•
How to Become a Data Engineer
•
Evaluating M3 Pro CPU Cores: General Performance
•
Knowledge Graphs from scratch with Python
Аналитика, маркетинг и монетизация
• Как монетизировать приложения — практическое руководство Data.ai и Google
• Новый Инструмент «Пути» в MyTracker для визуализации путей пользователей
• Маркетологи в мобайле: Happy Birthday Edition
• Vimcal улучшает рабочий календарь с помощью ИИ
• Фальшивый трафик в 2023 году будет стоить рекламодателям $71 млрд
AI, Устройства, IoT
• Локальные нейросети. Аналог ChatGPT-3.5 на домашнем ПК: OpenChat 7B превосходящая 70B, DeepSeek для кода уровня ChatGPT
• Исследователи заставили ChatGPT процитировать данные, на которых он учился
• ClimateGuard CG LED: Новый Год к нам мчится…
• Bluetooth-жучки — за чем можно легально следить, а за чем нельзя
• Продолжаем изучать аппаратные возможности расширения Микротик RBM33G
• Microsoft открыла ThreadX
• Pika Labs получает $55 млн на генеративный ИИ для видео
• Лучшие клавиатуры для программирования 2023
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.


• Моя малышка любит самолеты — и я сделал для нее радар
• DebugMenu и визуальная иерархия элементов интерфейса
• Ускоряем прохождение iOS UI-тестов. Часть 3. Старт приложения с определенного экрана
• Как появились веб-пуши Apple в Тинькофф
• Вопросы с собеседований: в чем разница Weak и Unowned в Swift
• Лучшие приложения года в App Store Awards 2023
• Поваренная книга SwiftUI: создание круглого представления в SwiftUI
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Обзор актуальных инструментов шифрования в Android
• Элегантная обработка событий в Kotlin — рефакторинг в 7 шагов
• Android. Принять себя или Cookie?
• Kotlin под капотом: inline функции
• Топ-10 причин утечки памяти в Android
• Списки с душой и стилем: Ваш путь к Jetpack Compose
• SberPay: как добавить поддержку бесконтактной оплаты в Android-приложение
• Видео-сообщение как в Telegram
• Как сделать приложение для Android с бесконечной лентой видео на базе EdgeStreaming
• Вышла стабильная версия Android Studio Hedgehog
• Лучшие приложения и игры в Google Play 2023
• Вопросы с собеседований: что такое контент-провайдер в Android
• Разработка UI на Jetpack Compose
• Треш-обзор Geekbrains. Полный разбор курса по Android
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Kotlin Multiplatform в мобильной разработке. Рецепты общего кода для Android и iOS
• Хитрый виджет: разбор тестового Flutter-задания. Детективная нуар-история
• Как добавить Flutter в нативное приложение iOS и протестировать его на Codemagic (Часть 3)
•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Доступность игр для людей с ограниченными возможностями: проблемы и их решения
• Солнце горит во мне: обновление Яндекс Музыки, о котором стоит знать
• Как мы (не) вкатились в геймдев. Часть 1
• По заветам кота Вжуха: превращаем веб-приложение в сервис на платформе VK Mini Apps
• Первый месяц жизни приложения BookDesk или как меня пытались взломать
• Проект: AI Note Recorder или как я не выполнил цель на 2023 год
• Что можно улучшить в своем приложении? Крадем как художники у Яндекс.Еды
• Самые высокооплачиваемые вакансии ноября в сфере разработки приложений
• Автотесты в AvitoTech
• Секреты собеседований с Алеексеем Быковым (Reddit)
• Podlodka #343: что такое Motion Design?
• Прощай, чистый код
• Бесплатный курс «Современное программирование на C++»
• Зарплаты за год в IT выросли на 8.5%
•

•

•

•


• Как монетизировать приложения — практическое руководство Data.ai и Google
• Новый Инструмент «Пути» в MyTracker для визуализации путей пользователей
• Маркетологи в мобайле: Happy Birthday Edition
• Vimcal улучшает рабочий календарь с помощью ИИ
• Фальшивый трафик в 2023 году будет стоить рекламодателям $71 млрд

• Локальные нейросети. Аналог ChatGPT-3.5 на домашнем ПК: OpenChat 7B превосходящая 70B, DeepSeek для кода уровня ChatGPT
• Исследователи заставили ChatGPT процитировать данные, на которых он учился
• ClimateGuard CG LED: Новый Год к нам мчится…
• Bluetooth-жучки — за чем можно легально следить, а за чем нельзя
• Продолжаем изучать аппаратные возможности расширения Микротик RBM33G
• Microsoft открыла ThreadX
• Pika Labs получает $55 млн на генеративный ИИ для видео
• Лучшие клавиатуры для программирования 2023
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.