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

iOS
• Корзина в Додо Пицце на iOS 14: баг длиной в полгода
• Tuist: добавляем генерацию проекта в текущее приложение
• Вычисление семантического расстояния между словами с помощью Natural Language Framework
• Осторожно, Combine! Откуда берутся утечки памяти, потеря эвентов, нестабильность операторов и что с этим всем делать
• История одного модального окна или переходим с UIKit на SwiftUI. Часть 2.1. Неожиданный баг Combine
• Создаем анимацию печати текста на печатной машинке в SwiftUI
•
Introducing Recap: What’s Old Is What’s New Again
•
Maintaining Syntactic Sugar for Optional in Swift
•
Replacing Fastlane with Shell scripts
•
Security-scoped bookmarks for URL access
•
How we reduced the build time by 2 with(out) Xcode at Shopmium
•
Swift Testing: How to Test Your iOS App’s Network Layer
•
What was early iOS development like
•
Networking Async/Await in SwiftUI
•
Building a Custom Progress Bar in SwiftUI
•
Reinventing Core Data Development with SwiftData Principles
•
Creating a Theme manager for UIKit using Combine in Swift
•
Exploring SwiftUI: Understanding TextRenderer to Animate Words
•
Tokenizing text with the Natural Language framework
•
Interactive Toasts SwiftUI
•
How to get started with Swift Testing
•
WWDC22: Visualize and optimize Swift concurrency
•
Principal Engineer shares tips to Master System Design and Architecture
•
SwiftUI Toasts
•
How to get started with Swift Testing
•
Create a Bold SwiftUI Flight Boarding Widget
•
Add Micro Interactions to your Tab Bar | SwiftUI
•
iOS/SwiftUI Chat App With Cursor
•
iOS Swift for VS Code — iOS-разработка в VS Code
•
iOS Performance Optimization — рекомендации по оптимизации iOS-приложений
•
TinyStorage — простая и легкая замена UserDefaults для постоянного хранения данных
Android
• Компьютерное зрение на C++: пишем приложение для поиска объектов под Android
• Как мы улучшили производительность навигации на Android на 30%
• Динамические модули в приложениях на Android: опыт использования Dynamic Feature Delivery
• Как настроить правильное расположение элементов в Android-приложении для арабского языка
• Понимание прогноза глюкозы в AndroidAPS часть 2
• Тесты для функций Compose в Android
• Google начал развертывание Android 15 на Pixel
• Зачем нужен crossinline — вопросы с собеседований
• Google готовится запустить Linux-приложения на Android
• Как следить за качеством работы вашего кода. Tracer. Кирилл Попов
• 1000 откликов и 0 собеседований — как не войти в айти в 2024: кодревью
• Замена иконок — что может быть проще?
•
Ktor 3.0 Is Now Available With New Features and Improved Performance
•
Kotlin Design Patterns: Builder Explained
•
Seamless Real-Time Location Tracking with gRPC, Kotlin & Jetpack Compose
•
One click dependencies fix
•
Understanding the Impact of Multiple NavHosts on Back Navigation and ViewModel Management in Jetpack Compose
•
SWIGGY SDE-2 Inteview Experience (Android)
•
Android Studio Ladybug Feature Drop
•
7 Kotlin Flow Operators that you must know
•
Testing Coroutines — Simplified
•
Using Kotlin Reflection to Automate Compose Navigation
•
runTest vs runBlocking — Simplified
•
Bypassing Location Restrictions on a Android App Using Frida
•
The updated Kotlin roadmap is here!
•
Compose Multiplatform 1.7.0 Released
•
Creating a responsive dashboard layout for JetLagged with Jetpack Compose
•
Custom Adaptive layouts in Compose
•
Region specific resources and broken localization
•
Applying the Builder Pattern in Kotlin
•
Loaders — лоадеры для Jetpack Compose
Кроссплатформа
• Самые важные пакеты в экосистеме Dart и Flutter на Pub 2024
• Как подружить Flutter и Huawei — настраиваем App Gallery. Часть 1
•
Building a Cross-Platform Camera App with CameraK and Compose Multiplatform
•
Making Compose Multiplatform apps feel at home: removing ripple animation on iOS
•
Automated Code Analysis for Flutter: Integrating SonarCloud with GitHub Actions
•
Trying to Start a Multiplatform Company Store with Kotlin RPC, Koin, Ktor, and WASM
•
Mastering Null Safety in Dart: A Practical Guide for Flutter Developers
•
Compilers, Virtual Machines and Code Analysis — What makes Dart and Flutter run
•
Mobile App Development Course with React Native, Supabase, Next.js
•
Kotlin Multiplatform Developer Roadmap — план изучения Kotlin Multiplatform
Разработка
• Один год Elite Hoops: 12 маленьких уроков
• Ускоряем работу приложения с помощью сжатия с общим словарем
• Антипаттерны Code Review
• День, когда мы (почти) потеряли тысячу клиентов
• Детство с синей изолентой, профессиональные трудности и путь к успеху девушки в IT: опыт Ани Жарковой
• Тысячи иконок и адаптация под RTL: проектирование интерфейса шаблона мобильного приложения для партнёров Travelpayouts
• Shape Up, scrum out. Как решать проблемы юзеров за дни, а не за сторипоинты
• Google выпустил корпоративную версию Gemini Code Assist
• Early создает Unit-тесты с помощью ИИ
•
3 Career Principles that got me to Director at Google
•
Integrating Appium and Cypress for Unified Test Automation
•
The Senior Shortcut
•
How we Outsmarted CSGO Cheaters with IdentityLogger
•
Be Suspicious of Success
•
Programming a first person shooter from scratch like it’s 1995
Аналитика, маркетинг и монетизация
• Топ быстрорастущих приложений в России в октябре
• Дизайн на основе данных: Как метрики делают ваш продукт успешным
• Собеседование продуктового аналитика в Авито: кейс-интервью
• 17 Издание Индекса эффективности от AppsFlyer
• Как определить целевую аудиторию и повысить охваты вашего мобильного приложения: полное руководство
• Самые скачиваемые и зарабатывающие приложения в мире в сентябре 2024
•
How Uber Eats makes you think you want to order food
•
How to brew the perfect Halloween campaign for app growth
AI, Устройства, IoT
• Почему AI не заменит программистов
• На пути к миллиарду: строим настоящую IT-компанию вокруг подвижных детских игр “Пол – это лава” и “Море волнуется”
• Искусство аугментации: как улучшить модели компьютерного зрения без сбора новых данных
• Секреты умного дома от профессионала: что скрывает Андрей в своем особняке
• Ставлю на Zero! Мой выбор одноплатника. Raspberry Pi vs Orange Pi
• AI в медицине
• Mistral выпускает новые ИИ-модели, оптимизированные для телефонов
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на мой Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.


• Корзина в Додо Пицце на iOS 14: баг длиной в полгода
• Tuist: добавляем генерацию проекта в текущее приложение
• Вычисление семантического расстояния между словами с помощью Natural Language Framework
• Осторожно, Combine! Откуда берутся утечки памяти, потеря эвентов, нестабильность операторов и что с этим всем делать
• История одного модального окна или переходим с UIKit на SwiftUI. Часть 2.1. Неожиданный баг Combine
• Создаем анимацию печати текста на печатной машинке в SwiftUI
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Компьютерное зрение на C++: пишем приложение для поиска объектов под Android
• Как мы улучшили производительность навигации на Android на 30%
• Динамические модули в приложениях на Android: опыт использования Dynamic Feature Delivery
• Как настроить правильное расположение элементов в Android-приложении для арабского языка
• Понимание прогноза глюкозы в AndroidAPS часть 2
• Тесты для функций Compose в Android
• Google начал развертывание Android 15 на Pixel
• Зачем нужен crossinline — вопросы с собеседований
• Google готовится запустить Linux-приложения на Android
• Как следить за качеством работы вашего кода. Tracer. Кирилл Попов
• 1000 откликов и 0 собеседований — как не войти в айти в 2024: кодревью
• Замена иконок — что может быть проще?
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Самые важные пакеты в экосистеме Dart и Flutter на Pub 2024
• Как подружить Flutter и Huawei — настраиваем App Gallery. Часть 1
•

•

•

•

•

•

•

•


• Один год Elite Hoops: 12 маленьких уроков
• Ускоряем работу приложения с помощью сжатия с общим словарем
• Антипаттерны Code Review
• День, когда мы (почти) потеряли тысячу клиентов
• Детство с синей изолентой, профессиональные трудности и путь к успеху девушки в IT: опыт Ани Жарковой
• Тысячи иконок и адаптация под RTL: проектирование интерфейса шаблона мобильного приложения для партнёров Travelpayouts
• Shape Up, scrum out. Как решать проблемы юзеров за дни, а не за сторипоинты
• Google выпустил корпоративную версию Gemini Code Assist
• Early создает Unit-тесты с помощью ИИ
•

•

•

•

•

•


• Топ быстрорастущих приложений в России в октябре
• Дизайн на основе данных: Как метрики делают ваш продукт успешным
• Собеседование продуктового аналитика в Авито: кейс-интервью
• 17 Издание Индекса эффективности от AppsFlyer
• Как определить целевую аудиторию и повысить охваты вашего мобильного приложения: полное руководство
• Самые скачиваемые и зарабатывающие приложения в мире в сентябре 2024
•

•


• Почему AI не заменит программистов
• На пути к миллиарду: строим настоящую IT-компанию вокруг подвижных детских игр “Пол – это лава” и “Море волнуется”
• Искусство аугментации: как улучшить модели компьютерного зрения без сбора новых данных
• Секреты умного дома от профессионала: что скрывает Андрей в своем особняке
• Ставлю на Zero! Мой выбор одноплатника. Raspberry Pi vs Orange Pi
• AI в медицине
• Mistral выпускает новые ИИ-модели, оптимизированные для телефонов
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.