В этом выпуске ключевые изменения в UIKit и восстановление удаленных сообщений в Telegram, самые весёлые TODO из Android-фреймворка и короткий путь с Senior-ами, инфляция званий, сравнение доходов App Store и Google Play, Yolo на пятирублёвой монете и многое другое. Подключайтесь!

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• iOS 18 для разработчиков: Ключевые изменения в UIKit
• Objective-C не кусается: как перестать бояться Legacy и стать настоящим iOS-ниндзя
• Внедряем снепшот-тестирование, или пять стадий принятия неизбежного
• Области тьмы: разбираем неочевидные моменты при использовании памяти в Swift
• Как я преодолел отказ в модерации App Store: история приложения YoloPrice
• Азартная разработка iOS приложения игры 2048 с ChatGPT
• Изменение модели данных CoreData для iOS приложения с iCloud синхронизацией
• Макросы в Swift: Практическое руководство по использованию
• Apple обновляет TestFlight
• Apple открывает исследование безопасности Private Cloud Compute
• Выпуск Vision Pro могут прекратить к концу 2024 года
• Вышла бета-версия iOS 18.2 с Apple Intelligence
• Apple работает над новым App Store для игр
• Создание настраиваемого сегментированного контрола в SwiftUI
•
Modular Navigation in SwiftUI: A Comprehensive Guide
•
Improve your app’s UX with SwiftUI’s task view modifier
•
Migrating Combine to AsyncAlgorithms
•
Create ZIP files in Swift without third-party dependencies
•
How Do Binaries work together? What breaks ABI?
•
How to significantly improve incremental build time with xcodebuild
•
SwiftUI: Build Our Own Container
•
Vapor and Swift Testing: Running tests in parallel
•
Making Accessibility Accessible
•
How to use Cursor for iOS development
•
AnyView is everywhere in Xcode 16
•
Comprehensive Guide to Mastering KeyPath in Swift
•
Beginner’s Guide to Protocol Buffers and gRPC with Swift
•
SwiftUI or UIKit in 2024 & 2025
•
How to Create Interactive Table View in SwiftUI
•
Building a 2048 PowerPlay Game for Apple Watch with SwiftUI
•
How I Used Keynote to Create iOS App Screenshots and Preview Videos from the Same File
•
Creating view transitions in SwiftUI
•
My Journey as an iOS Developer Intern at Teads
•
Collapsible Headers in SwiftUI: It Took Three Attempts to Get It Just Right
•
CocoaHeadsNL Meetup
•
Google Engineer Teaches Us How to Set Up Firebase in Your iOS Project
•
App-Wide Overlays | SwiftUI
•
MockData, PreviewModifiers and PreviewTraits in SwiftUI
•
KeyboardKit Pro — кастомные клавиатуры для iOS и iPadOS
•
PIPKit — картинка в картинке на iOS
Android
• Восстанавливаем удалённые сообщения в Telegram
• Самые весёлые TODO из Android-фреймворка
• Пример: взлом покупок в Android-приложении и защита от этого
• Как в eXpress достигали мгновенного рендера отправки сообщения: оптимизация локальной базы данных
• Решение проблемы race condition в Kotlin корутинах
• Как потратить шесть лет и быть невидимкой в Play Market
• Забудьте про терминал! Как я избавлялся от рутинных ADB команды с помощью Shortcuts
• Анализ и оптимизация проблемы задержек и пропуска кадров в анимации загрузки
• Основы View и ViewGroup. Создаём интерфейсы в Android-приложениях
• Избавляемся от Context в бизнес логике — как ответить на собеседовании
• Анализ сведений о запуске и завершении приложений в Android 15
• Суд приостановил решение об открытии Google Play и Android
•
Implementing Overslide interaction in Jetpack Compose
•
Unplugged DI — DI.Y Basics
•
Making my concurrent algorithm 6000% better
•
Using Kotlin Reflection to Automate Compose Navigation
•
That Weird Compose Crash
•
Circular Reveal Animations in Jetpack Compose
•
Using popBackStack()? Then Your App Likely Has a Bug.
•
Reusable Styles in Compose
•
Advanced Kotlin: Exploring Lesser-Known Syntax and Features
•
Changes in Android 15 for developers
•
Get your App Performance Score
•
Kotlin Under the Hood: Exploring Constructors and Init Blocks
•
Implementing Overslide interaction in Jetpack Compose
•
Build Stunning Grids in Minutes with LazyVerticalGrid
•
Understanding JankStats: Optimizing Your Android App’s Performance
•
Rethinking Exception Handling with Kotlin’s Result Type
•
Studio Jewelry — Android Developers Backstage
•
How to Migrate Your App to Support the NEW Predictive Back Gestures On Android
•
How to Implement Image Compression On Android
•
Practical Tips and Tricks to Improve Your Compose Previews
•
Android Compose Accessibility Techniques — лучшие практики доступности
•
GroupTrack — семейный локатор
Кроссплатформа
• Как работать с разрешениями для чтения и записи файлов в Android 13+ на примере React Native
• Встречаем yx_scope: DI-фреймворк для работы со скоупами в открытом доступе
• Two-Tier Data Model архитектура: концепт и мысли
• Интеграция TFLite во Flutter: внедряем модели машинного обучения в мобильное приложение
•
Writing a personal website in Flutter Web
•
Developing accessible mobile apps with Flutter
•
Top 10 Flutter Design Patterns in 2024
•
Advanced Flutter Techniques Every Mobile Developer Should Know
•
Save Time by Copying Pre-Made Flutter Code Right into Your Project
•
Scatter And Surface Plots
•
React Native – New Architecture is here
•
Deep Linking Integration with Flutter
•
Lets-Plot — мультиплатформенное черчение
Разработка
• Подходы к сокращению регрессионного тестирования
• Задачи с собеседований: Leetcode — Сложите два числа
• Короткий путь с Senior-ами
• Честно и по делу: смотрим на F+ R570E с российской системой на борту
• Звания инженеров-программистов (почти) утратили свой смысл
• Крутить или не крутить?
• Как человеческий фактор может стать секретным оружием в руках QA
• Huawei окончательно отказывается от Android и запускает HarmonyOS NEXT
• Backend vs Frontend: сравниваем опыт разработчиков — что сложнее, перспективнее и кому больше платят
• Grafana: инструкция по применению
• Тесты с душком
• Как писать библиотеки: проектирование API, обратная совместимость
•
Introducing Mellum: JetBrains’ New LLM Built for Developers
•
Using AI Generated Code Will Make You a Bad Programmer
•
3 Lessons from the Smartest Developers I’ve Worked With
•
Attacking the Samsung Galaxy A* Boot Chain
•
A New Coding Paradigm: Declarative Domain Programming
Аналитика, маркетинг и монетизация
• Disney+ и Hulu отказываются от встроенных покупок Apple
• Где деньги: сравнение доходов App Store и Google Play
• Сравнение доходов App Store и Google Play в категории Образование в США
• Daze, креативное приложение для обмена сообщениями с ИИ для Поколения Z, набирает аудиторию еще до запуска
• Azar пытается вернуть случайные видеочаты Поколению Z
•
The future of mobile measurement playbook
AI, Устройства, IoT
• Запускаем Yolo на пятирублёвой монете или Luckfox Pico Mini
• Как мы обучили Mistral 7B русскому языку и адаптировали для объявлений Авито
• Кейс: создание программно-аппаратного комплекса управления антенной для радиоспорта по КВ
• Улучшаем умный дом на KNX: добавляем диспетчеризацию на Modbus
• Обзор Lenovo ThinkBook Plus Gen 5 Hybrid: больше безумных ноутбуков!
• ИИ Anthropic теперь может писать и выполнять код
• Raspberry Pi выпускает новые ИИ-дополнения
• HUGS упрощают развертывание открытых ИИ-моделей
• Новая модель искусственного интеллекта от Anthropic теперь может управлять компьютером
•
Learn Claude AI – Build Text Summarizers, Image Describers, and More with the Anthropic API
•
Gemma Developer Day Tokyo
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

• iOS 18 для разработчиков: Ключевые изменения в UIKit
• Objective-C не кусается: как перестать бояться Legacy и стать настоящим iOS-ниндзя
• Внедряем снепшот-тестирование, или пять стадий принятия неизбежного
• Области тьмы: разбираем неочевидные моменты при использовании памяти в Swift
• Как я преодолел отказ в модерации App Store: история приложения YoloPrice
• Азартная разработка iOS приложения игры 2048 с ChatGPT
• Изменение модели данных CoreData для iOS приложения с iCloud синхронизацией
• Макросы в Swift: Практическое руководство по использованию
• Apple обновляет TestFlight
• Apple открывает исследование безопасности Private Cloud Compute
• Выпуск Vision Pro могут прекратить к концу 2024 года
• Вышла бета-версия iOS 18.2 с Apple Intelligence
• Apple работает над новым App Store для игр
• Создание настраиваемого сегментированного контрола в SwiftUI
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Восстанавливаем удалённые сообщения в Telegram
• Самые весёлые TODO из Android-фреймворка
• Пример: взлом покупок в Android-приложении и защита от этого
• Как в eXpress достигали мгновенного рендера отправки сообщения: оптимизация локальной базы данных
• Решение проблемы race condition в Kotlin корутинах
• Как потратить шесть лет и быть невидимкой в Play Market
• Забудьте про терминал! Как я избавлялся от рутинных ADB команды с помощью Shortcuts
• Анализ и оптимизация проблемы задержек и пропуска кадров в анимации загрузки
• Основы View и ViewGroup. Создаём интерфейсы в Android-приложениях
• Избавляемся от Context в бизнес логике — как ответить на собеседовании
• Анализ сведений о запуске и завершении приложений в Android 15
• Суд приостановил решение об открытии Google Play и Android
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Как работать с разрешениями для чтения и записи файлов в Android 13+ на примере React Native
• Встречаем yx_scope: DI-фреймворк для работы со скоупами в открытом доступе
• Two-Tier Data Model архитектура: концепт и мысли
• Интеграция TFLite во Flutter: внедряем модели машинного обучения в мобильное приложение
•

•

•

•

•

•

•

•

•


• Подходы к сокращению регрессионного тестирования
• Задачи с собеседований: Leetcode — Сложите два числа
• Короткий путь с Senior-ами
• Честно и по делу: смотрим на F+ R570E с российской системой на борту
• Звания инженеров-программистов (почти) утратили свой смысл
• Крутить или не крутить?
• Как человеческий фактор может стать секретным оружием в руках QA
• Huawei окончательно отказывается от Android и запускает HarmonyOS NEXT
• Backend vs Frontend: сравниваем опыт разработчиков — что сложнее, перспективнее и кому больше платят
• Grafana: инструкция по применению
• Тесты с душком
• Как писать библиотеки: проектирование API, обратная совместимость
•

•

•

•

•


• Disney+ и Hulu отказываются от встроенных покупок Apple
• Где деньги: сравнение доходов App Store и Google Play
• Сравнение доходов App Store и Google Play в категории Образование в США
• Daze, креативное приложение для обмена сообщениями с ИИ для Поколения Z, набирает аудиторию еще до запуска
• Azar пытается вернуть случайные видеочаты Поколению Z
•


• Запускаем Yolo на пятирублёвой монете или Luckfox Pico Mini
• Как мы обучили Mistral 7B русскому языку и адаптировали для объявлений Авито
• Кейс: создание программно-аппаратного комплекса управления антенной для радиоспорта по КВ
• Улучшаем умный дом на KNX: добавляем диспетчеризацию на Modbus
• Обзор Lenovo ThinkBook Plus Gen 5 Hybrid: больше безумных ноутбуков!
• ИИ Anthropic теперь может писать и выполнять код
• Raspberry Pi выпускает новые ИИ-дополнения
• HUGS упрощают развертывание открытых ИИ-моделей
• Новая модель искусственного интеллекта от Anthropic теперь может управлять компьютером
•

•

← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.