C праздником и новым дайджестом! В новом выпуске два года Unit-тестов и убыль приложений в Google Play, темная сторона виджетов и бэкенд от Snap, год ATT, четыре всадника джуна и многое другое.

У нас есть Telegram-канал Mobile Insights, где подборки статей и новостей выходят каждый день, а так же AppFiles с библиотеками и самыми интересными статьями о мобильной разработке!
iOS
• Тест-ревью: как прошли два года написания unit-тестов
• Как использовать дженерики в Swift
• Как работает Backend-Driven UI на мобильном клиенте
• Автоматическое развертывание инфраструктуры в iOS проекте
• Почему ваше приложение могут не пропустить или даже удалить из App Store?
• Простой способ обнаружить retain cycle в UIViewController
• В App Store снова начали удалять устаревшие приложения
• Использование типографики Apple для iOS-дизайнера
• Шесть принципов, которые помогут лучше писать модули для iOS-приложений
•
Пример использования SwiftUI: моделирование данных Brotherhood Alchemist
•
Кастомный индикатор активности с изображением
•
Запускаем агентов Azure на macOS с локальным размещением на Apple M1
•
Совместное использование Core Data с CloudKit в SwiftUI
•
Типы памяти в Swift
•
Более чистый Swift MVVM с Property Wrapper
•
Повышаем производительность в iOS-приложений
•
Полное руководство по модульному тестированию в iOS с лучшими практиками
•
Перемещение представлений и моделей SwiftUI в отдельные пакеты Swift
•
Моделирование тестируемых зависимостей в кодовых базах iOS
•
TDD для начинающих с примерами на Swift
•
Эволюция архитектуры приложений Medium для iOS
•
Почему iOS-разработчики никогда не должны использовать iCloud в своих приложениях
•
Локализация в приложении iOS с MapKit и CoreLocation
•
3 причины, почему мне не нравится SwiftUI
•
Два способа юнит-тестирования центра уведомлений в Swift
•
YPImagePicker: выбор фото, как в Instagram
•
iOS Clean Architecture MVVM: шаблон чистой архитектуры
Android
• Отменяем операции правильно на примере корутин
• Запись разговоров на мобильных
• Google выпустил developer preview версию Privacy Sandbox для Android
• Конвергенция в многомодульном приложении
• Адаптация Compose в hh.ru
• Темная сторона Android App widgets
• Топ вопросов работодателю от Android-разработчика
• Google в 2021 заблокировал более 1М приложений и 190 разработчиков
• Количество приложений в Google Play сокращается
• Google Play начинает внедрение пометок о конфиденциальности данных
• Вышла первая публичная бета-версия Android 13
• Четыре всадника апокалипсиса джуна Android разработчика
•
Дженерики в Kotlin
•
Важность проверки обертки Gradle
•
Android KSP для чайников от чайника
•
Моделирование ответов Retrofit с помощью изолированных классов и корутин
•
Изучаем библиотеку Google Map Compose для Android
•
Измеряйте и улучшайте производительность с помощью Macrobenchmark
•
Использование DiffUtil в RecyclerView
•
Как ViewModels переживают изменения конфигурации
•
Пагинация с Paging 3 в Android Example
•
Овладеваем корутинами за два часа — бесплатный курс
•
Однонаправленная связь сервер-клиент с использованием SSE в Android
•
Метапрограммирование с Kotlin для Android
•
Compose или не Compose, вот в чем вопрос
•
Мой путь в размещении моего open source приложения в Google Developers Dev Library
•
Понимание функций Kotlin Scope за 2 минуты
•
LibreTube: свободный YouTube
•
Awesome Android Lint: лучшие правила
•
SlimeKT: платформа для статей
Разработка
• Левел-дизайн 101: язык разработки локаций
• К чему приводят тестовые задания или как я реализовал Match-3 для терминала
• Редизайн ивентового арта: поиск и разработка новых пайплайнов для улучшения контента
• Как мы сделали мобильные устройства круглосуточно доступными для распределенной QA-команды и не только
• Быстрый переход на UNIGINE с Unity: первые шаги
• Aurora OS: первый взгляд
• Встречают по одежке: как мы меняем главную в приложении с 13 миллионами MAU
• Программное обеспечение приходит в упадок?
• Альф, переведи мне на телефон миллион рублей
• Как использовать Kotlin Multiplatform ViewModel в SwiftUI и Jetpack Compose
• Погружение в Charles Proxy
• Основа про App Transport Security: что это и зачем
• Java для начинающих: новый обучающий курс от Microsoft
• Podlodka #265: Erlang
• Lens Cloud предлагает бэкенд для AR-разработчиков Snap
• $412 млн: SonarSource — чистый код для всех
• Google открывает доступ к Media CDN
• VK будет делать российский магазин приложений
• Google показал скрытые интерфейсы для Ambient Computing
• Google выпустил новую коллекцию иконок Material Symbols
• Первые ошибки начинающего разработчика или как я создала свою первую F2P-игру
• 2022 год: продакт-менеджеры и дизайнеры должны говорить об эмбиентных вычислениях
• Основы UX-дизайна для приложений Web 3.0
• Искусство продуктового менеджмента. Важность софт скилов
• AppYou.ru — универсам мобильных приложений и телеграм ботов
• Хороший дизайн сводится к своевременности
•
Создание качественного программного обеспечения требует больше усилий и навыков, а не времени
•
Важность чистого кода
•
Написание кода — это одно, а обучение на инженера-программиста — другое
•
Глубокое погружение в конструкторы Dart
•
Непрерывная доставка в Airbnb
•
Как разработчики Google пишут свои комментарии
•
Полное руководство по анимациям во Flutter
•
Как масштабировать приложение для поддержки миллионов пользователей
•
Разбор инцидента Slack 22-22-22
•
7 причин, по которым я объясняю ответ во время собеседования
•
Чистый код — практический подход
•
Лучшие вызовы API во Flutter
•
Худшая ошибка — случайная потеря лучших игроков
Аналитика, маркетинг и монетизация
• Как увеличить количество оценок приложения одним простым шагом
• Индекс Лепрекона
• Локализация продукта и ее подводные камни
• «ATT — 1 год»: отчет AppsFlyer
• Краткий анализ лучших мобильных игр в Twitter
• Diablo Immortal выходит на iOS и Android 2 июля
• Рост BeReal, приложения одномоментной фотографии
AI, Устройства, IoT
• KC868-AG: IoT шайба
• Властелины колец
• Go для самых маленьких. –азрабатываем для Arduino и других микроконтроллеров
• Snap выпустил мини-дрон для съемки фото и видео
•
14 датасетов для вашего следующего Data Science проекта
•
Современные рекомендательные системы с нейронными сетями
•
Как настроить среду разработки дя€ машинного обучения
< Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

У нас есть Telegram-канал Mobile Insights, где подборки статей и новостей выходят каждый день, а так же AppFiles с библиотеками и самыми интересными статьями о мобильной разработке!

• Тест-ревью: как прошли два года написания unit-тестов
• Как использовать дженерики в Swift
• Как работает Backend-Driven UI на мобильном клиенте
• Автоматическое развертывание инфраструктуры в iOS проекте
• Почему ваше приложение могут не пропустить или даже удалить из App Store?
• Простой способ обнаружить retain cycle в UIViewController
• В App Store снова начали удалять устаревшие приложения
• Использование типографики Apple для iOS-дизайнера
• Шесть принципов, которые помогут лучше писать модули для iOS-приложений
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Отменяем операции правильно на примере корутин
• Запись разговоров на мобильных
• Google выпустил developer preview версию Privacy Sandbox для Android
• Конвергенция в многомодульном приложении
• Адаптация Compose в hh.ru
• Темная сторона Android App widgets
• Топ вопросов работодателю от Android-разработчика
• Google в 2021 заблокировал более 1М приложений и 190 разработчиков
• Количество приложений в Google Play сокращается
• Google Play начинает внедрение пометок о конфиденциальности данных
• Вышла первая публичная бета-версия Android 13
• Четыре всадника апокалипсиса джуна Android разработчика
•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•

•


• Левел-дизайн 101: язык разработки локаций
• К чему приводят тестовые задания или как я реализовал Match-3 для терминала
• Редизайн ивентового арта: поиск и разработка новых пайплайнов для улучшения контента
• Как мы сделали мобильные устройства круглосуточно доступными для распределенной QA-команды и не только
• Быстрый переход на UNIGINE с Unity: первые шаги
• Aurora OS: первый взгляд
• Встречают по одежке: как мы меняем главную в приложении с 13 миллионами MAU
• Программное обеспечение приходит в упадок?
• Альф, переведи мне на телефон миллион рублей
• Как использовать Kotlin Multiplatform ViewModel в SwiftUI и Jetpack Compose
• Погружение в Charles Proxy
• Основа про App Transport Security: что это и зачем
• Java для начинающих: новый обучающий курс от Microsoft
• Podlodka #265: Erlang
• Lens Cloud предлагает бэкенд для AR-разработчиков Snap
• $412 млн: SonarSource — чистый код для всех
• Google открывает доступ к Media CDN
• VK будет делать российский магазин приложений
• Google показал скрытые интерфейсы для Ambient Computing
• Google выпустил новую коллекцию иконок Material Symbols
• Первые ошибки начинающего разработчика или как я создала свою первую F2P-игру
• 2022 год: продакт-менеджеры и дизайнеры должны говорить об эмбиентных вычислениях
• Основы UX-дизайна для приложений Web 3.0
• Искусство продуктового менеджмента. Важность софт скилов
• AppYou.ru — универсам мобильных приложений и телеграм ботов
• Хороший дизайн сводится к своевременности
•

•

•

•

•

•

•

•

•

•

•

•

•


• Как увеличить количество оценок приложения одним простым шагом
• Индекс Лепрекона
• Локализация продукта и ее подводные камни
• «ATT — 1 год»: отчет AppsFlyer
• Краткий анализ лучших мобильных игр в Twitter
• Diablo Immortal выходит на iOS и Android 2 июля
• Рост BeReal, приложения одномоментной фотографии

• KC868-AG: IoT шайба
• Властелины колец
• Go для самых маленьких. –азрабатываем для Arduino и других микроконтроллеров
• Snap выпустил мини-дрон для съемки фото и видео
•

•

•

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