В этом дайджесте читайте про фоновые задачи в Android 12 и однократные замыкания в Swift, про первый стабильный релиз Jetpack Compose и ускорение я сборок, музыку для инди, различия в покупках на iOS и Android, форменный UX и многое другое!
![](https://habrastorage.org/getpro/habr/post_images/79d/51d/976/79d51d976bb0239ca23939ce43e30c42.jpg)
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
Telegram-канале.
iOS
• @Once: однократные замыкания
• Разбираемся с AsyncImage в SwiftUI
• Плавный скролл онлайн гипермаркета
•
Реализация Feature Flagging в iOS
•
Как Rappi справляется с размером iOS-приложения
•
Три умных расширения Swift для повышения вашей эффективности
•
Почему вы не можете использовать Async/Await
•
Как правильно расширить или создать Издателя в Combine
•
Создание сложных модульных архитектур с помощью SwiftUI, Combine и Swift Package Manager (SPM)
•
Определяем музыку с ShazamKit
•
Адаптивная верстка для iOS в Swift
•
Диалоги подтверждения в SwiftUI
•
Как в iOS показать View Controller с размытым фоном
•
MIFieldValidator: валидация полей
Android
• Работа с фоновыми задачами в Android 12: переезжаем с foreground service на expedited jobs
• Способы инжектить ViewModel с помощью Dagger: что может пойти не так
• Используем join в SQLite-запросах Room для android
• Как перенести нейросеть на мобильное устройство
• Собеседование Гончаров-Бадретдинов
• Вышла Android Studio Arctic Fox + Jetpack Compose 1.0
• Android 13 станет «Тирамису»
•
Оптимизируем вашу Kotlin сборку
•
Крестики-нолики в Android Studio за 30 минут
•
Обновляем ваши виджеты для Android 12
•
Создание корпоративного плагина IntelliJ для Android-разработчиков
•
Создание и стилизация выпадающих меню в Android
•
Поддержка RTL-дизайна на Android
•
Обновление 170 библиотек в крупномасштабном приложении для Android
•
Обновляйте StateFlow в Kotlin безопасно
•
Интеграция фильтра OpenGL в FFmpeg на Android – несколько советов
•
5 советов, которые должен знать каждый Android-разработчик
•
Переводим текст на Android-устройстве с помощью Google ML Kit
•
Voyager: Compose на сверхсветовой скорости
•
Pix: пикер в стиле WhatsApp
Разработка
• Путь от хаоса к порядку. Как справляться с инцидентами и успевать достигать цели? Делимся опытом
• Проблемы скорости сборки, или что делать, если время сборки игрового билда увеличивается в 10 раз
• Музыка для игр: где брать треки инди-разработчикам
• Построение процессов в QA: проблемы и решения
• Как мы ускорили разработку и тестирование мобильных приложений
• Неправильный путь в backend driven UI. Доклад Яндекса
• Когда можно назвать себя Senior разработчиком?
• Дизайн приложений: примеры для вдохновения #50
• Задачи с собеседований: шарик с гелием
• GitHub предложит бесплатную юридическую помощь разработчикам
• Отсутствие одного «&» вызвало сбой в Chrome OS
• 15 советов для улучшения UX форм регистрации и входа в систему
•
Мой друг-программист утроил свою зарплату за счет нетворкинга и ведения блога
•
Создайте свое мобильное приложение за 10 дней с React Native
•
Лучшие библиотеки React Native 2021
•
Как создать удобную sidebar навигацию?
•
Почему программистам не следует надолго оставаться в одной компании
•
Как сделать фортепиано на Flutter
•
Чему я научился как продукт-менеджер в Google
•
Создание безопасного мобильного приложения с помощью React Native
•
5 самых важных черт, на которые я обращаю внимание, нанимая разработчика
•
700000 строк кода, 20 лет и один разработчик: как делается Dwarf Fortress
•
Разъяснение двух самых известных вопросов кодинг интервью
•
BlurHash: цветные плейсхолдеры для изображений
•
Clockwise: калькулятор стоимости встреч
Аналитика, маркетинг и монетизация
• Маркетологи в мобайле: Александр Муравский (Alconost)
• 2 года на разработку, доход $194, отток 100%: 8 бесценных уроков
• Obé Fitness: развлекательный фитнес
• Как продвигать свой бренд на подключенных ТВ: руководство Adjust
• История монетизации видеоигр
• Scrum для аналитиков. Как мы построили процессы в Кошельке
• SubHub Podcast: Андрей Михайлюк (Flo)
• Android vs iOS: отличия в шопинге
• Как паблишер Wowmaking повышает монетизацию продуктов и строит партнерские отношения с разработчиками
• Модели атрибуции трафика. Почему модель атрибуции должна изменяться вместе с каналами продвижения, продуктом, маркетинговой задачей и внешней средой
•
Прекратите выбирать доход в качестве главной метрики
AI, Устройства, IoT
• Трезвый взгляд на W7500P — микроконтроллер со встроенным TCP/IP стеком
• Нечего надеть? Computer Vision в помощь
• Над чем задуматься перед тем, как брать ML-задачу в работу
• OpenAI представил новый язык Triton для GPU-вычислений
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
![](https://habrastorage.org/getpro/habr/post_images/79d/51d/976/79d51d976bb0239ca23939ce43e30c42.jpg)
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
![](https://habrastorage.org/webt/5e/k7/bf/5ek7bfhjzilma-pbharuioaa7lw.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• @Once: однократные замыкания
• Разбираемся с AsyncImage в SwiftUI
• Плавный скролл онлайн гипермаркета
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Работа с фоновыми задачами в Android 12: переезжаем с foreground service на expedited jobs
• Способы инжектить ViewModel с помощью Dagger: что может пойти не так
• Используем join в SQLite-запросах Room для android
• Как перенести нейросеть на мобильное устройство
• Собеседование Гончаров-Бадретдинов
• Вышла Android Studio Arctic Fox + Jetpack Compose 1.0
• Android 13 станет «Тирамису»
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Путь от хаоса к порядку. Как справляться с инцидентами и успевать достигать цели? Делимся опытом
• Проблемы скорости сборки, или что делать, если время сборки игрового билда увеличивается в 10 раз
• Музыка для игр: где брать треки инди-разработчикам
• Построение процессов в QA: проблемы и решения
• Как мы ускорили разработку и тестирование мобильных приложений
• Неправильный путь в backend driven UI. Доклад Яндекса
• Когда можно назвать себя Senior разработчиком?
• Дизайн приложений: примеры для вдохновения #50
• Задачи с собеседований: шарик с гелием
• GitHub предложит бесплатную юридическую помощь разработчикам
• Отсутствие одного «&» вызвало сбой в Chrome OS
• 15 советов для улучшения UX форм регистрации и входа в систему
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Маркетологи в мобайле: Александр Муравский (Alconost)
• 2 года на разработку, доход $194, отток 100%: 8 бесценных уроков
• Obé Fitness: развлекательный фитнес
• Как продвигать свой бренд на подключенных ТВ: руководство Adjust
• История монетизации видеоигр
• Scrum для аналитиков. Как мы построили процессы в Кошельке
• SubHub Podcast: Андрей Михайлюк (Flo)
• Android vs iOS: отличия в шопинге
• Как паблишер Wowmaking повышает монетизацию продуктов и строит партнерские отношения с разработчиками
• Модели атрибуции трафика. Почему модель атрибуции должна изменяться вместе с каналами продвижения, продуктом, маркетинговой задачей и внешней средой
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Трезвый взгляд на W7500P — микроконтроллер со встроенным TCP/IP стеком
• Нечего надеть? Computer Vision в помощь
• Над чем задуматься перед тем, как брать ML-задачу в работу
• OpenAI представил новый язык Triton для GPU-вычислений
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.