Рождественский, последний в этом году дайджест. Счастливого вам Нового года и Рождества, хорошего кода и интересных проектов, мира, любви и счастья. Увидимся в уже в новом году!
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!
![](https://habrastorage.org/r/w780q1/webt/rm/py/zu/rmpyzuieecb0fggpwdiim84wzsi.jpeg)
iOS
• Встречайте: новый протокол Transferable
• Как подключить российский SSL-сертификат к iOS-приложению
• Async/await в iOS: что нам дает неблокирование потоков
• Swift модуляризация вашего проекта
• Apple снова работает над собственным поисковиком
•
Swift Properties and how to use them correctly
•
What to consider if Apple opens up the iOS app ecosystem
•
Reduce share extension crashes from your app with this one weird trick!
•
Testing push notifications within XCTest
•
Lazy Closures Using Swift
•
A Comprehensive Guide to URLs in Swift and SwiftUI
•
How to Create an iOS Lock Screen Widget?
•
Prototyping SwiftUI interfaces with OpenAI’s ChatGPT
•
Efficiently Managing Multiple Async Tasks in SwiftUI
•
Developing iOS Applications without ready-to-use backend API
•
SwiftUI Performance Tuning: Tips and Tricks
•
How to take advantage of SwiftUI inside UIKit?
•
Generate a Shazam signature with only one line instead of 120
•
RunLoop.main vs DispatchQueue.main: The differences explained
•
Create an End-to-End SwiftUI Application With Swift Playgrounds on iPad
•
How to Implement a Unit Test in an iOS Legacy Codebase
•
How to create text recognition with Vision Framework in Swift
•
SwiftUI View Lifecycle: демонстрация жизненного цикла
•
Popup View: тосты и попапы для SwiftUI
Android
• Binder: как устроена работа с несколькими процессами в Android
• Настраиваем Gitlab CI для сборки Android-проекта
• Yolo на мобильном без постобработки
• Material You Color System: быстрое погружение в пучины
•
Factory Design Pattern
•
Android HDR | Migrating from TextureView to SurfaceView
•
Maps Compose Library Tutorial for Android: Getting Started
•
ViewModel: for UI business, not UI operations
•
Internals of Kotlin flows
•
Unhandled Exceptions in Kotlin Collections
•
Optimize Android App Development With Docker, SonarQube, Detekt, and MobSF
•
Stylus Low Latency
•
Adding a domain layer
•
Everything you need to know about State in Jetpack Compose with examples
•
Drag and drop with AndroidX
•
Nearby Connections for Android: Getting Started
•
Using ChatGPT to Set Up an Android App
•
3 Awesome Kotlin Feature Requests
•
Launching coroutines vs suspend functions
•
Improving Your Gradle Workflow by Not Auto-reloading Build Files
•
UnifiedPush: a decentralized, open-source push notification protocol
•
Android Object Animator
•
Catalog Android Sample App: образцовый каталог
•
Animated Circular Download Button: кнопка загрузки
•
Jukebox: аудиоплеер для Jetpack Compose
Кроссплатформа
• Flutter Flame: глобальная оптимизация производительности игрового движка
• Тестирование мобильных приложений на Flutter с использованием Python + Appium
• Unity «уменьшение размера файла на устройстве» Часть 1
•
Write best performance ListViews with Riverpod in Flutter
•
Impeller & Flutter
•
Flutter is No Longer a Cross-platform Framework — it is something more
•
Reasons Why Flutter Can’t Beat React Native
•
Retrofit Implementation In Flutter
•
Flutter Bottom Navigation Bar Animation
•
Retrofit Implementation In Flutter
•
How to Hack & Protect Flutter Apps — Simple and Actionable Guide
•
Rive and Flutter: A Match Made in Animation Heaven
Разработка
• Как тестировать современный фронтенд
• Что будет в 2023: тренды мобильной разработки
• Какие проблемы решает Release Train в мобильной разработке
• Что такое Design Review
• Нефункциональные проверки при тестировании мобильных приложений
• Библиотека компонентов для дизайнеров приложений
• Как мы создавали мобильное приложение «Х5 Недвижимость», или любовь не с первого касания
• Несовершенство трех законов робототехники
• Как дизайнить приложения, если ты не дизайнер? Пошаговая инструкция
• Podlodka #299: приоритизация
• Зарплата в IT за год выросла на 16.5%
• «Ростелеком» заместит Trello и Jira «Ягой»
• Google ужесточает Performance Review сотрудников
• Программисты тратят на бессмысленную работу в среднем 38% своего рабочего времени
• Самые высокооплачиваемые вакансии декабря в области разработки приложений
• Как разработать приложение доставки in-house: опыт экспресс-доставки Перекрёстка
•
The Awesome Power of Well-Documented Code
•
Yet another way to deal with nested if/else conditions
•
Scrum Teams are often Coached to Death, while the Problems are With Management
•
Gamification gone wrong: stop the streaks
•
7 Design Tips I Learned From Apple
•
37 tips for improving productivity in software development teams
•
Most Popular Tech Interview Questions asked @ FAANG
•
The Best of Material in 2022
•
How To Increase Development Velocity by Future Proofing Your Code
•
Building a Secure Mobile App in the Cloud
•
How I Created a Free Digital Product That People Want To Pay
•
Challenging algorithms and data structures every programmer should try
•
UX for Introverts
Аналитика, маркетинг и монетизация
• Расходы на приложения снизились на 2% — обзор 2022 года от data.ai
• $20 млн: Deep Voodoo — студия дипфейков создателей «Южного парка»
• $30 млн: ImagenAI — постобработка фото на основе ИИ для профессиональных фотографов
• Epic Games оштрафовали на $520 млн за «темные паттерны»
• Маркетологи в мобайле. Итоги года 2022. Часть 1
• Повторит ли BeReal судьбу Clubhouse?
• Состояние социальных приложений в Европе 2022
• Альтернативные магазины мобильных приложений: как обойтись без Google Play и AppStore
AI, Устройства, IoT
• #4 Нейронные сети для начинающих. Sudoku Solver. Судоку. Часть 1
• Третья жизнь пет-проекта по распознаванию рукописных цифр
• Телематическая система автомобиля
• OpenAI открыла Point-E — систему преобразования текста в 3D-модели
• Apple может отказаться от выпуска новой версии iPhone SE
• Google распознает почерк врачей
•
Magic Mirror — my first ever Raspberry Pi project
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!
![](https://habrastorage.org/webt/rm/py/zu/rmpyzuieecb0fggpwdiim84wzsi.jpeg)
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Встречайте: новый протокол Transferable
• Как подключить российский SSL-сертификат к iOS-приложению
• Async/await в iOS: что нам дает неблокирование потоков
• Swift модуляризация вашего проекта
• Apple снова работает над собственным поисковиком
•
![](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/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/e1a/3cf/2a8/e1a3cf2a8b65a0da69bbdd5c0ad040fe.png)
• Binder: как устроена работа с несколькими процессами в Android
• Настраиваем Gitlab CI для сборки Android-проекта
• Yolo на мобильном без постобработки
• Material You Color System: быстрое погружение в пучины
•
![](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/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/webt/ma/lx/8h/malx8hbgozt6lee8rmxmg96_s6a.png)
• Flutter Flame: глобальная оптимизация производительности игрового движка
• Тестирование мобильных приложений на Flutter с использованием Python + Appium
• Unity «уменьшение размера файла на устройстве» Часть 1
•
![](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/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Как тестировать современный фронтенд
• Что будет в 2023: тренды мобильной разработки
• Какие проблемы решает Release Train в мобильной разработке
• Что такое Design Review
• Нефункциональные проверки при тестировании мобильных приложений
• Библиотека компонентов для дизайнеров приложений
• Как мы создавали мобильное приложение «Х5 Недвижимость», или любовь не с первого касания
• Несовершенство трех законов робототехники
• Как дизайнить приложения, если ты не дизайнер? Пошаговая инструкция
• Podlodka #299: приоритизация
• Зарплата в IT за год выросла на 16.5%
• «Ростелеком» заместит Trello и Jira «Ягой»
• Google ужесточает Performance Review сотрудников
• Программисты тратят на бессмысленную работу в среднем 38% своего рабочего времени
• Самые высокооплачиваемые вакансии декабря в области разработки приложений
• Как разработать приложение доставки in-house: опыт экспресс-доставки Перекрёстка
•
![](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/getpro/habr/post_images/509/dc9/bde/509dc9bde69347ecbe0c21ff2973d7e7.jpg)
• Расходы на приложения снизились на 2% — обзор 2022 года от data.ai
• $20 млн: Deep Voodoo — студия дипфейков создателей «Южного парка»
• $30 млн: ImagenAI — постобработка фото на основе ИИ для профессиональных фотографов
• Epic Games оштрафовали на $520 млн за «темные паттерны»
• Маркетологи в мобайле. Итоги года 2022. Часть 1
• Повторит ли BeReal судьбу Clubhouse?
• Состояние социальных приложений в Европе 2022
• Альтернативные магазины мобильных приложений: как обойтись без Google Play и AppStore
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• #4 Нейронные сети для начинающих. Sudoku Solver. Судоку. Часть 1
• Третья жизнь пет-проекта по распознаванию рукописных цифр
• Телематическая система автомобиля
• OpenAI открыла Point-E — систему преобразования текста в 3D-модели
• Apple может отказаться от выпуска новой версии iPhone SE
• Google распознает почерк врачей
•
![](https://habrastorage.org/files/377/ae0/333/377ae0333d0f4b7b97307c9eea5ee21a.gif)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.