В новом дайджесте принципы SOLID и главные циклы, избавление от шаблонного кода и доработка напильником, 20 лет разработки, честные проценты техналога, современный UI вне плоскости экрана, работа с отзывами, экосистема TikTok и многое другое!
![](https://habrastorage.org/webt/4s/e3/_x/4se3_xgy-kb1igocpzwwvnppvrg.jpeg)
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
Telegram-канале.
iOS
• Избавление от шаблонного кода: как будет выглядеть источник данных?
• Принципы SOLID в Swift
• Бить или не бить? Модули в Xcode: сравниваем XcodeGen и Tuist
• iOS Run Loop: Что? Когда? Зачем?
• Основы SwiftUI: экспертное мнение
• Apple ускоряет разработку автономного автомобиля
• В iOS нашли закрытый SportsKit
• Apple тайно закупает рекламу для прибыльных приложений с подпиской
• Apple покупает рекламу для App Store, но делает это открыто
•
От RxSwift к Combine: полное руководство по переходу
•
Как использовать разные шрифты для разных языков в iOS-приложении
•
Распознавание текста на Canvas SwiftUI с помощью Vision в iOS 15
•
Мокинг заголовков разделов в iOS 15
•
Как мы уменьшили размер нашего бинарника для AppStore
•
Начало работы со Swift Concurrency (Async/Await, Actors, Continuations, Tasks)
•
Мониторинг региона с помощью SwiftUI
•
XCRemoteCache: инструмент удаленного кэширования iOS, который сокращает время чистой сборки на 70%
•
AsyncView: структурирование операций асинхронной загрузки в SwiftUI
•
Модульное тестирование Static и Singleton фреймворков в iOS
•
Многоликость ShapeStyle в SwiftUI
•
Релиз iOS-приложения в App Store с Github и Fastlane
•
XCRemoteCache: кэширование сборок Xcode от Spotify
•
OpenSourceController: контроллер для лицензий
•
SwiftRater: напоминание об оценке
Android
• Main Loop (Главный цикл) в Android Часть 2. Android SDK
• Улучшение времени запуска приложений на Android: уроки Facebook
• Видео Kotlin 2021 Premier Online
• Мой опыт проведения курса по Android
• Hilt — лёгкий старт в Dagger
• Jetpack Compose Navigation в многомодульном проекте
• После сборки — доработать напильником. Фиксим Retrofit для Корутин
•
Jetpack Compose: табы со свайпами
•
Как можно Parcel OnClickListener в Android Bundle – и почему не следует этого делать
•
Поддержка современных эмодзи
•
Оценка влияния различных UI-библиотек на сборку Gradle
•
Начало работы с Motion Layout в Android
•
Вышел Kotlin 1.6.0
•
Растягивание UX Android-приложений для складных телефонов
•
Холодный старт в Android и буферный экран
•
UI -тестирование с помощью Espresso в Android
•
Разбиение кода Chrome на партиции для ускорения запуска на Android
•
Android Flavors
•
Broadcast Receiver в Android
•
Модульное тестирование кода, специфичного для API, на Android
•
Начало работы с Kotlin Multiplatform Mobile (KMM)
•
Swipeable-Card: карточки со свайпами
Разработка
• Как Discord стал нашим основным инструментом для сбора фидбека и позволил наладить систему саппорта почти без вложений
• 711 тысяч строк кода, 20 лет, один разработчик: как создавалась Dwarf Fortress
• Как устроена система игровых событий в проектах Playrix
• Честный процент техналога
• SDK чата и Kotlin Multiplatform
• Разработчик игр на Unity: как начать работать с востребованным игровым движком
• Защита от читеров на примерах для Unity
• gRPC + Dart, Сервис + Клиент, напишем? Часть 5: Web
• Podlodka #242: файрволы
• Распродажа книг по Python в Humble Bundle
• Охота на toggle: как простую фичу сделать максимально сложно
• 5 советов по созданию для приложения современного UI
• Дизайн приложений: примеры для вдохновения #64
• Не надо требовать определенного технологического опыта от Senior+ разработчиков
• Вне плоскости экрана. Новые вызовы для дизайнеров интерфейсов
• Почему люди так быстро подсаживаются на Тикток: анализ продуктового дизайна и UX/UI-решений
•
7 продвинутых проектов для улучшения ваших навыков программирования
•
Как использовать Git в качестве Offline-First базы данных
•
Дорожная карта по изучению Flutter
•
Пошаговое руководство для подготовки к собеседованию по разработке
•
Лучшие расширение VS Code для мобильных разработчиков
•
6 инструментов разработчика для Mac, которые не являются IDE
•
Infrastructure as Code: следующий большой сдвиг
•
Руководство по эффективному эмоциональному дизайну
•
Почему я повернул экран на 90 ° (и вам тоже следовало бы)
•
Избегайте преждевременных абстракций
•
Как разработчику получить более высокую зарплату
•
5 мертвых языков программирования
•
Elite: документированный код игры
Аналитика, маркетинг и монетизация
• Google выпустил Mobile Ads SDK для Flutter
• HypeHype даст всем возможность создавать игры на телефонах
• AllTrails привлек $150 млн на маршруты для прогулок
• Работа с отзывами на этапах развития продукта. Видеоинструкция от AppFollow.
• TikTok породил собственную экосистему приложений, общее количество их загрузок превысило 1.3 млрд
• Facily: дешевые коллективные покупки
• Web2App-воронки для продвижения мобильных приложений: что это, как работает и какие имеет перспективы
•
Интерпретация результатов A/B-теста: ложные срабатывания и статистическая значимость
AI, Устройства, IoT
• Как я сделал Open-source монитор качества воздуха
• Окрашивание изображений
• Как самостоятельно выучиться на дата-саентиста — адаптированная подборка
• Raspberry Pi Foundation запустил Code Club World для обучения детей программированию
• Яндекс, МФТИ, АГУ и «Сириус» откроют образовательную программу по искусственному интеллекту
•
API OpenAI теперь доступен без ожидания
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
![](https://habrastorage.org/webt/4s/e3/_x/4se3_xgy-kb1igocpzwwvnppvrg.jpeg)
Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в
![](https://habrastorage.org/webt/5e/k7/bf/5ek7bfhjzilma-pbharuioaa7lw.png)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Избавление от шаблонного кода: как будет выглядеть источник данных?
• Принципы SOLID в Swift
• Бить или не бить? Модули в Xcode: сравниваем XcodeGen и Tuist
• iOS Run Loop: Что? Когда? Зачем?
• Основы SwiftUI: экспертное мнение
• Apple ускоряет разработку автономного автомобиля
• В iOS нашли закрытый SportsKit
• Apple тайно закупает рекламу для прибыльных приложений с подпиской
• Apple покупает рекламу для App Store, но делает это открыто
•
![](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/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/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Main Loop (Главный цикл) в Android Часть 2. Android SDK
• Улучшение времени запуска приложений на Android: уроки Facebook
• Видео Kotlin 2021 Premier Online
• Мой опыт проведения курса по Android
• Hilt — лёгкий старт в Dagger
• Jetpack Compose Navigation в многомодульном проекте
• После сборки — доработать напильником. Фиксим Retrofit для Корутин
•
![](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/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/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Как Discord стал нашим основным инструментом для сбора фидбека и позволил наладить систему саппорта почти без вложений
• 711 тысяч строк кода, 20 лет, один разработчик: как создавалась Dwarf Fortress
• Как устроена система игровых событий в проектах Playrix
• Честный процент техналога
• SDK чата и Kotlin Multiplatform
• Разработчик игр на Unity: как начать работать с востребованным игровым движком
• Защита от читеров на примерах для Unity
• gRPC + Dart, Сервис + Клиент, напишем? Часть 5: Web
• Podlodka #242: файрволы
• Распродажа книг по Python в Humble Bundle
• Охота на toggle: как простую фичу сделать максимально сложно
• 5 советов по созданию для приложения современного UI
• Дизайн приложений: примеры для вдохновения #64
• Не надо требовать определенного технологического опыта от Senior+ разработчиков
• Вне плоскости экрана. Новые вызовы для дизайнеров интерфейсов
• Почему люди так быстро подсаживаются на Тикток: анализ продуктового дизайна и UX/UI-решений
•
![](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/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Google выпустил Mobile Ads SDK для Flutter
• HypeHype даст всем возможность создавать игры на телефонах
• AllTrails привлек $150 млн на маршруты для прогулок
• Работа с отзывами на этапах развития продукта. Видеоинструкция от AppFollow.
• TikTok породил собственную экосистему приложений, общее количество их загрузок превысило 1.3 млрд
• Facily: дешевые коллективные покупки
• Web2App-воронки для продвижения мобильных приложений: что это, как работает и какие имеет перспективы
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Как я сделал Open-source монитор качества воздуха
• Окрашивание изображений
• Как самостоятельно выучиться на дата-саентиста — адаптированная подборка
• Raspberry Pi Foundation запустил Code Club World для обучения детей программированию
• Яндекс, МФТИ, АГУ и «Сириус» откроют образовательную программу по искусственному интеллекту
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.