Мобильная разработка за неделю #513 (30 октября — 6 ноября)

В этом дайджесте задачи Yandex Cup и сложные фичи, стабильный Kotlin Multiplatform и собеседования в SberDevices, стартапы из одного человека, игры с помощью нейросетей, интерактивные виджеты и многое другое!

Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.

jqw6xiixagm_ewndvsa1pisv3sa.jpeg

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• Как я стал iOS разработчиком
• Разбор задачи A отборочного этапа Yandex Cup 2023 — iOS
• Как создать интерактивные виджеты на iOS 17
• Кнопки красить — это вам не деревья вертеть
• Поваренная книга SwiftUI: тени для представлений
• Подходы к верстке в UIKit
• Все видео Swift Connection 2023
• 377ae0333d0f4b7b97307c9eea5ee21a.gifShow Callers in Xcode 15
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAutomerge for Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCombine charts to create stunning designs with Swift Charts
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHacking iOS Alerts in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI Tutorial: Keyframe Animations for iOS 17
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to get a SwiftData model container and context in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifPackaging Libraries in iOS: A Comprehensive Guide v2
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSeamless Flow: Streamlining iOS Projects with CI/CD Tools and Tactics
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to setup your Xcode project for testing with Unit and UI Tests in 4 simple steps
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSwiftUI: Introducing MVI How to Easily Implement MVI in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifServer-side Swift? Why not?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBuilder Design Pattern in iOS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSingleton Design Pattern in iOS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe Future of Accessing User Location in SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe curious case of ShareLink with plain text strings
• 377ae0333d0f4b7b97307c9eea5ee21a.gifModular Navigation in SwiftUI: A Comprehensive Guide
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUsing Real-World Analogies to Demystify Creational Design Patterns in Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Observe Data Changes in SwiftData Using Persistent History Tracking
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMastering iOS Debugging with User Defaults
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngNew SwiftUI Photo Picker — Single & Multiple Selection
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwiftData CRUD Operations
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngHow to solve nested Observable Objects issue
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngSwift Connection 2023 Videos
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngCleaner, Safer Code with Swift KeyPaths
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngA Tour of Xcode Cloud
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAn Easier Dev Life with Kaleidoscope
• 96716bcb926741e79bb1c284a88083ca.pngtouchHLE: высокоуровневый эмулятор iPhone OS
• 96716bcb926741e79bb1c284a88083ca.pngMoya: сетевые абстракции для Swift
• 96716bcb926741e79bb1c284a88083ca.pngAidoku: открытый ридер манги для iOS

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• Байт-код — это просто! Как сделать DI по-настоящему быстрым
• Что будет если команда, не видавшая Compose, решила делать новую сложную фичу на нём?
• В помощь тем, кто погружается в Smali
• Как сделать тесты на Espresso более читабельными и стабильными
• Как стилизовать текст на Compose через Spannable
• Как реализовать приостановку трансляции и фоновый стриминг на Android с помощью опенсорс-библиотеки
• Собеседование с Михаилом Левченко
• Управление сложностью состояния
• Google опубликовал новые данные по распространению версий Android
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCatGPT — or How to Position Elements on Overlays
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding a Speedometer with Compose Canvas API
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHarmonizing Modifiers in Jetpack Compose: A Tale of Flexibility and Usability
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMaterial Design Components for Android 1.10.0
• 377ae0333d0f4b7b97307c9eea5ee21a.gifRegional Preferences in Android 14
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBeyond MVVM: Hierarchical State Management with Molecule and Compose
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to create list sections with animated shapes
• 377ae0333d0f4b7b97307c9eea5ee21a.gifA step-by-step tutorial in codelab format for Android UI testing
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin 101: Unit Tests Cheat Sheet for Paging Library and Room Database
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFinding the Right Balance in Gradle Dependency Strategy
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAvoid Primitive Obsession in Kotlin with zero-cost abstractions
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSimple and secure sign-in on Android with Credential Manager and passkeys
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to Use Render Effects in Jetpack Compose for Stunning Visuals
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin Coroutines vs Threads Memory Benchmark
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe Syntax Chronicles: Implementing Google Sheets API in your Android app
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin 1.9.20 Released
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe Android Backstage of Mercado Libre Warehouses
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHilt Version 1.1.0
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBest Practises For Writing Testable Code In Kotlin
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngNow in Android: 94 — #TheAndroidShow, Jetpack Glance, Google Play policy updates, and more
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngAndroidX, Gradle and Metalava — Android Developers Backstage
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngWhen Should You Migrate to Jetpack Compose?
• gtu1iaz0-ajkbqpeq8n6dmql4zq.png3 Clean Code Hacks I Bet You Didn«t Know
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngWhat«s new in Kotlin 1.9.20
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngMaking Threads for Android
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngKotlin & Android Development Course: Build a Quiz Application
• 96716bcb926741e79bb1c284a88083ca.pngComposeNumericRoller: анимация цифр на Compose
• 96716bcb926741e79bb1c284a88083ca.pngFlorisBoard: открытая клавиатура для Android

malx8hbgozt6lee8rmxmg96_s6a.pngКроссплатформа

• Kotlin Multiplatform стал стабильным
• Kotlin Multiplatform перешёл в stable. Что это значит?
• Padding vs SizedBox. Что выбрать для вёрстки отступов Column и Row
• Можно ли обойтись без нативных языков, разрабатывая на Flutter и RN?
• Как использовать нативный платежный сервис SberPay в кроссплатформенном приложении на Flutter
• Flutter. Локальная база данных
• Flutter и работа с нативным кодом на примере библиотеки для работы с NFC
• 377ae0333d0f4b7b97307c9eea5ee21a.gifWriting Swift-Friendly Kotlin Multiplatform APIs
• 377ae0333d0f4b7b97307c9eea5ee21a.gifEmbrace Functional Programming with /Dart 3.1/
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBuild SwiftUI apps for iOS and Android with Skip
• 377ae0333d0f4b7b97307c9eea5ee21a.gifState Management With Provider
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter Integration Testing and CI/CD
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBuilding a Compose Multiplatform app with an Architectural pattern
• 377ae0333d0f4b7b97307c9eea5ee21a.gifExploring Flutter«s new Sliver API: A Comprehensive Guide
• 377ae0333d0f4b7b97307c9eea5ee21a.gif12 Image Tips and Best Practices for the Best UX Performance in Flutter
• 377ae0333d0f4b7b97307c9eea5ee21a.gifNetworking in Kotlin Multiplatform Mobile Using Ktor
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow to create a Flutter plugin step by step
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFlutter: State Management with pure MVVM
• 377ae0333d0f4b7b97307c9eea5ee21a.gifKotlin Multiplatform by Tutorials
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAhead of the Curve: Rubikkube«s Kotlin Multiplatform Journey
• gtu1iaz0-ajkbqpeq8n6dmql4zq.pngA Complete Guide on «Login with WhatsApp» in Flutter Apps (w/ backend)
• 96716bcb926741e79bb1c284a88083ca.pngSkip: транспилятор Swift/SwiftUI в Kotlin/Compose

7081c634ec176ab6b953d9d19e82a09a.pngРазработка

• Как устроены собеседования в SberDevices — Максим Сидоров
• Не Unity единым…
• Backend Driven UI с точки зрения бэкенда: к чему готовиться, если вы решили на него перейти
• $5 млн в посевном раунде: Factory — автоматизация жизненного цикла разработки с помощью ИИ
• Backend Driven… Аналитика!
• Podlodka #341: рендеринг текста проклят
• Открыта регистрация на олимпиаду по программированию для школьников «Технокубок»
• 10 уроков успеха от стартапов, созданных одним человеком
• Делаем многократно используемые компоненты не делая их многократно используемыми
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUse Abstraction to Improve Function Readability
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe most valuable trait of top software engineers
• 377ae0333d0f4b7b97307c9eea5ee21a.gif6 Software Engineering Templates I Wish I Had Sooner
• 377ae0333d0f4b7b97307c9eea5ee21a.gifAdvice to a novice programmer
• 377ae0333d0f4b7b97307c9eea5ee21a.gif10 Mobile App Projects to Elevate Your Skills to Senior Developer Level
• 377ae0333d0f4b7b97307c9eea5ee21a.gifTech Interview Handbook
• 377ae0333d0f4b7b97307c9eea5ee21a.gifSheet, dialog, or snackbar — what should a designer go for?
• 377ae0333d0f4b7b97307c9eea5ee21a.gifRedesigning Swiggy«s new user onboarding — A product design case study
• 377ae0333d0f4b7b97307c9eea5ee21a.gifHow Discord Stores Trillions of Messages — Curious Case of System Design
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe Worst Code I Ever Wrote, And Why I«m Still Happy About It

509dc9bde69347ecbe0c21ff2973d7e7.jpgАналитика, маркетинг и монетизация

• Flavrs с помощью ИИ хочет стать главной платформой для едоков во всем мире
• Click, Download, Play! Как использовать геймплей в создании перформящих креативов: часть первая
• Самые скачиваемые и зарабатывающие приложения в России в октябре 2023
• Google и Match Group достигли мирового соглашения по антимонопольному делу о магазине приложений
• 377ae0333d0f4b7b97307c9eea5ee21a.gifUnity«s Runtime Fee debacle caused 15% of its US advertisers to jump ship
• 377ae0333d0f4b7b97307c9eea5ee21a.gifThe creative testing blueprint: Strategies for high-impact ad campaigns
• 377ae0333d0f4b7b97307c9eea5ee21a.gifMastering search engine optimization for your mobile app
• 377ae0333d0f4b7b97307c9eea5ee21a.gif3Q23 Mobile Ad Network Trends

8538129f5e7b404a720121cb9c3814db.jpgAI, Устройства, IoT

• От идеи до реализации: создание игры с помощью нейросетей
• Умный дом на Raspberry Pi и Home Assistant: добавляем диммеры и реле Wiren Board
• 8 профилировщиков потребляемой мощности для embedded и IoT систем
• Скромное обаяние ClimateGuard CG Mini
• LYWSD03MMC: ZigBee сеть на термометрах
• Poe от Quora запускает партнерскую программу для создателей чат-ботов
• Apple представила процессоры серии M3
• Apple M3 Pro медленнее в работе с памятью, чем M1/M2 Pro
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFixing the Volume on my Bluetooth Earbuds
• 96716bcb926741e79bb1c284a88083ca.pngLocal AI Stack: создание локальных ИИ-приложений

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

© Habrahabr.ru