В этом дайджесте разбираем Swift Runtime на детали и экономим гигабайты с SPM, боремся с фризами и ANR, проектируем функционал сторис, исследуем отказы на собеседовании, определяем маркетинг подписных приложений и многое другое!
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!
![](https://habrastorage.org/webt/1s/nl/xe/1snlxe2wqzls0dmng3jx_9nwx1w.jpeg)
Хотим в очередной раз пригласить вас в опрос Developer Nation. Расскажите, что вам нравится или не нравится в популярных инструментах и платформах. Опрос охватывает 13 направлений: мобильные, десктопные, облачные и веб-приложения, промышленный Интернет вещей, игры, машинное обучение, искусственный интеллект и т.п. Опрос доступен на 10 языках, в том числе и на русском. Можно начать и сохранить для продолжения. Можно выиграть призы. Главное — внести свой вклад в развитие сообщества разработчиков.
iOS
• Разбираю Swift Runtime на детали
• Как в Swift Package Manager сэкономить гигабайты трафика и места на диске
• Библиотека криптования ChaCha20
• OptionSet в деталях
• Distributed actors и где они обитают
• Apple определила API, использование которых надо будет объяснять
• Эксперты App Store: онлайн-сессии в августе
• Apple принимает заявки на Vision Pro Developer Kit
• Любовное письмо к Objective-C
•
Creating and modifying UIKit components like in SwiftUI
•
Mobile Automation Stories — XCUITest
•
Mastering ObjectIdentifier in Swift
•
State Management using Protocol-Oriented Programming + Generics
•
The Ultimate Guide to Building SwiftData Applications
•
Creating an Animated Background using SwiftUI
•
[Swift] Property wrappers to the rescue!
•
Adopting Efficient Networking Practices in iOS Apps
•
Refactoring our Swift SDK
•
Chloe’s Opinionated and Biased Law of SwiftUI
•
Integrating the Swift EstimoteUWB SDK into your SwiftUI project
•
Embracing the Future with Swift Concurrency: A Comprehensive Overview
•
Why you should use OSLog in 2023
•
iOS Development with Factory: The Power of Dependency Injection
•
How to Create and Publish Your Own Swift Package Manager (SPM) Library
•
How to deal with custom fonts in Swift and SwiftUI
•
Access Control in Swift
•
TipKit — iOS 17 — SwiftUI
•
OSLog and Logger
•
Radial Layout With Gestures — SwiftUI
•
Inout Parameters and Mutating Functions
•
How to master Combine like a Pro – The Basics
•
SwiftUI NavigationStack Hero Animation Effect — Custom Matched Geometry Effect
•
Design Patterns In Swift: паттерны проектирования на Swift
•
NearDrop: Nearby Share для macOS
Android
• Фризы и ANR? Проверьте утечки памяти!
• Настраиваем интерфейс Android-приложения с помощью тем
• 7 книг по Android-разработке, на которые стоит обратить внимание в 2023 году
• Переиспользование модулей в многомодульных Android приложениях
• Секретная фича в Android Studio: логируем, пока дебажим, не меняя сам код
• Google Play начнет пессимизировать приложения, не поддерживающие планшеты
• Вышла стабильная версия Android Studio Giraffe
• 5 советов Kotlin-разработчикам для повышения чистоты кодовой базы
•
Using Version Catalogs from Gradle Precompiled Scripts with Kotlin DSL
•
How to Inject Navigation Argument Directly into View Model with Jetpack Compose and Hilt
•
Android Adaptive Icons
•
Screen Transition Animations with Jetpack Navigation
•
Migrate your Multi-Module App to AGP and Gradle 8.0 with Android Studio Flamingo
•
Threads Invitation Card with Jetpack Compose
•
Jetpack Compose: Unveiling the Hottest Projects and Libraries on GitHub in 2023
•
Rich UI Models in Android using MVVM and Jetpack Compose
•
Android Security: Securing your Gradle builds from baddies
•
A Step-by-Step Guide to Building a Timeline Component with Jetpack Compose
•
Jetpack Compose — The order of modifiers does matter
•
Nibel: A Navigation Library for Adopting Jetpack Compose in Fragment-Based Apps
•
Coroutines Masterclass: Chapter-1: Foundation of Coroutines
•
Exploring Differences Between lateinit and lazy in Kotlin
•
Error Handling in Clean Architecture using Flow and Jetpack Compose
•
Kotlin Enum Class
•
Simplify Dependency Management for Android Projects with Gradle Version Catalog and Dependabot
•
Navigating the Complexities: Building a Scalable Multi-Module Navigation Architecture in Android
•
Now in Android: 87 — Android 14 Beta 4, Google Play policy update, and Compose Performance
•
What’s new in Android Studio — Giraffe
•
Text Fields — UX With Material3
•
Buttons — UX With Material3
•
SQLDelight: типобезопасные Kotlin API из SQL
•
Molecule: создание потоков StateFlow в помощью Jetpack Compose
Кроссплатформа
• Cocos Creator: Это самый мощный игровой движок, о котором вы не знали
• Под капотом анимаций в React Native. Часть 1/2: Animated and Bridge
• Зачем нужны PWA-приложения: примеры успешного использования
• Кодогенерация для Flutter: что, как и зачем
•
Beginner’s guide on Flutter for iOS developers
•
Server-Driven UI Implementation from Scratch in Flutter
•
Unifying Video Players: Compose Multiplatform for iOS, Android & Desktop
•
The Top 5 Flutter State Management Solutions: A Deep Dive
•
FlutterCon 23 Resources
•
Integrate Apple Sign-In on Android using Flutter
•
KMM in a simple language learning app: was it worth it?
•
Improve your Flutter app performance with this small trick
•
Build an iOS & Android app in 100% Kotlin with Compose Multiplatform
•
Full Guide on Building your first Kotlin Multiplatform Project with Kobweb
•
NativePHP: десктопные приложения на PHP
Разработка
• Работа в Европе для мобильных разработчиков
• Неизменная ценность ручных тестировщиков: важность и преимущества в эпоху автоматизации
• Проектируем функционал сторис
• Алгоритмическое собеседование в Яндекс в прямом эфире
• Постоянные отказы на собеседованиях: что мне делать
• На шаг ближе к метавселенной, или Как мы оживили аватары пользователей в VK Звонках
• Как сделать аналог Firebase App Distribution
• Ozon Tech Intro Meetup: как работают системы поиска, рекомендаций и рекламы
• Значение совещаний и некоторые альтернативы
• 43% программистов снится работа
•
Game On: UI Design Meets Gamification
•
On Becoming a VP of Engineering, Part 1: The Path to VP + Part 2: Doing the Job
•
Platform engineering is just DevOps with a product mindset
•
Building Startups as a Developer: Learning from My Mistakes
•
Iosevka: шрифт для кода
Аналитика, маркетинг и монетизация
• $18.2 млн в Серии B: Airvet — телемедицина для домашних животных
• Маркетинг подписных приложений 2023 — отчет AppsFlyer и Liftoff
• Новая AR-платформа Mirrorscape улучшает Dungeons & Dragons
• Reddit после закрытия API: загрузки выросли, но доходы упали
•
The ultimate guide to A/B testing
AI, Устройства, IoT
• Как создавать качественные ML-системы. Часть 2: приручаем хаос + Часть 1
• Подключаем Zigbee-устройства к контроллеру Wiren Board и пишем сценарии на wb-rules
• Высокоточное измерение ЭКГ
• Stability AI выпускает Stable Diffusion XL 1.0
• Умные колонки Assistant не перейдут на Fuchsia
• У Flipper Zero появился магазин приложений
•
Chat with your databases using LangChain
•
The Ultimate Tech Stack for Building AI Products
•
A comprehensive guide to running Llama 2 locally
•
Automating Web Scraping with ChatGPT Code Interpreter
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!
![](https://habrastorage.org/webt/1s/nl/xe/1snlxe2wqzls0dmng3jx_9nwx1w.jpeg)
Хотим в очередной раз пригласить вас в опрос Developer Nation. Расскажите, что вам нравится или не нравится в популярных инструментах и платформах. Опрос охватывает 13 направлений: мобильные, десктопные, облачные и веб-приложения, промышленный Интернет вещей, игры, машинное обучение, искусственный интеллект и т.п. Опрос доступен на 10 языках, в том числе и на русском. Можно начать и сохранить для продолжения. Можно выиграть призы. Главное — внести свой вклад в развитие сообщества разработчиков.
![](https://habrastorage.org/getpro/habr/post_images/f19/30a/c49/f1930ac4945596eb9707bc7a01bc5bdc.png)
• Разбираю Swift Runtime на детали
• Как в Swift Package Manager сэкономить гигабайты трафика и места на диске
• Библиотека криптования ChaCha20
• OptionSet в деталях
• Distributed actors и где они обитают
• Apple определила API, использование которых надо будет объяснять
• Эксперты App Store: онлайн-сессии в августе
• Apple принимает заявки на Vision Pro Developer Kit
• Любовное письмо к Objective-C
•
![](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/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.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)
• Фризы и ANR? Проверьте утечки памяти!
• Настраиваем интерфейс Android-приложения с помощью тем
• 7 книг по Android-разработке, на которые стоит обратить внимание в 2023 году
• Переиспользование модулей в многомодульных Android приложениях
• Секретная фича в Android Studio: логируем, пока дебажим, не меняя сам код
• Google Play начнет пессимизировать приложения, не поддерживающие планшеты
• Вышла стабильная версия Android Studio Giraffe
• 5 советов Kotlin-разработчикам для повышения чистоты кодовой базы
•
![](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/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.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)
• Cocos Creator: Это самый мощный игровой движок, о котором вы не знали
• Под капотом анимаций в React Native. Часть 1/2: Animated and Bridge
• Зачем нужны PWA-приложения: примеры успешного использования
• Кодогенерация для Flutter: что, как и зачем
•
![](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/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
•
![](https://habrastorage.org/files/967/16b/cb9/96716bcb926741e79bb1c284a88083ca.png)
![](https://habrastorage.org/getpro/habr/post_images/708/1c6/34e/7081c634ec176ab6b953d9d19e82a09a.png)
• Работа в Европе для мобильных разработчиков
• Неизменная ценность ручных тестировщиков: важность и преимущества в эпоху автоматизации
• Проектируем функционал сторис
• Алгоритмическое собеседование в Яндекс в прямом эфире
• Постоянные отказы на собеседованиях: что мне делать
• На шаг ближе к метавселенной, или Как мы оживили аватары пользователей в VK Звонках
• Как сделать аналог Firebase App Distribution
• Ozon Tech Intro Meetup: как работают системы поиска, рекомендаций и рекламы
• Значение совещаний и некоторые альтернативы
• 43% программистов снится работа
•
![](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)
• $18.2 млн в Серии B: Airvet — телемедицина для домашних животных
• Маркетинг подписных приложений 2023 — отчет AppsFlyer и Liftoff
• Новая AR-платформа Mirrorscape улучшает Dungeons & Dragons
• Reddit после закрытия API: загрузки выросли, но доходы упали
•
![](https://habrastorage.org/webt/mf/on/nm/mfonnm3hc45ymuzctglflemxffq.png)
![](https://habrastorage.org/getpro/habr/post_images/853/812/9f5/8538129f5e7b404a720121cb9c3814db.jpg)
• Как создавать качественные ML-системы. Часть 2: приручаем хаос + Часть 1
• Подключаем Zigbee-устройства к контроллеру Wiren Board и пишем сценарии на wb-rules
• Высокоточное измерение ЭКГ
• Stability AI выпускает Stable Diffusion XL 1.0
• Умные колонки Assistant не перейдут на Fuchsia
• У Flipper Zero появился магазин приложений
•
![](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)
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.