В новом дайджесте изучаем Swift OpenAPI Generator и работу Spotify на Bazel, вспоминаем 15 лет Android и обозреваем невизуальную доступность, внедряем карты, пишем бесполезные программы, возвращаемся к Windows Phone и многое другое!
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Готов ли Swift OpenAPI Generator для продуктивного кода?
• Как Spotify бесшовно перешел на сборки Bazel
• SwiftUI: от сомнений к успешному внедрению
• Keyboard Layout Guide
• Автоматизация ревью ресурсных картинок в iOS
• Реальное iOS собеседование в Яндекс
• Поваренная книга SwiftUI: настройка фона и границ представления + Создание View и его модификаторов
• SwiftSyntax Code Generation Notes
• How (not) to monitor SwiftUI @State
• Observation Evolution: SwiftUI 5’s Shift from Combine
• Animating with Elegance: Exploring Phased Animations in SwiftUI 5
• Create a Pie or Donut chart with SwiftUI Charts in iOS 17
• Unsafe memory mutation
• Preparing your App for VoiceOver: use Accessibility Label
• iOS Single App Mode Escape
• My Toddler Loves Planes, So I Built Her A Radar
• Typewriter Text Animation In SwiftUI
• Bad practice: not using Phantom Types
• Use TensorFlow Lite model in SwiftUI Application
• Find Ancestor Types
• Swift Metatypes: What They Are and Why You Should Care
• Bad practice: not using multiline strings
• Generating Random Numbers Elegantly in Swift
• TestFlight makes it even simpler to manage testers
• SwiftUI Tutorial — Animated TabBar
• How to Integrate Camera APIs using SwiftUI
• Custom Swift Logger in Xcode 15
• Swift Metatypes: What They Are and Why You Should Care
• Mastering TipKit: Advanced
• Create a Spotify-Style Lyric View in SwiftUI
• Beautify Code Without Optionals in Swift
• Mastering TipKit in iOS 17
• SwiftUI: Building Notes App + SwiftData + CRUD
• Build a Twitch-Like Live Streaming App With SwiftUI
• Resizable Custom Tab Bar for macOS
• Lock SwiftUI View With Biometric/Custom Number Lock — Local Authentication
• Tagged: обертка типов для выразительного кода
• Dime: красивый трекер финансов для iOS
Android
• Воспоминания о 15 годах Android
• Как зловредные приложения могут скрывать работу с буфером обмена в Android 14
• Оптимизируя sequences — или как мой код попал в Kotlin
• Построение графа покрытия UI-тестами бизнес-логики на основе VisualFSM
• Обзор невизуальной доступности смартфонов под управлением операционной системы Android
• Реализация экранов авторизации и регистрации с помощью Custom View и Firebase
• Stone: знакомство с API
• Вопросы с собеседований: для чего нужен Data class в Kotlin
• Собеседование в Яндекс: платформа Android
• По ту сторону EditText. Программная клавиатура в Android
• Kodein в Android. Что за зверь и как его готовить
• Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
• Как OkHttpClient повышает сетевую производительность
• На 65% меньше APK и на 70% меньше потребление памяти: оптимизация приложения для Android — память
• Adopt Compose for View-based libraries
• Custom Dialog Animation in Jetpack Compose
• Dependency Injection in Legacy Code
• Interaction Latency: Square’s User-Centric Mobile Performance Metric
• What’s new in Jetpack Benchmark 1.2.0
• Kotlin and Variance: Navigating Type Relationships
• From Blank to Beautiful: Implementing Shimmer Effect in Compose
• Device Streaming: The latest devices you need, when you need them
• Google Play Games on PC Developer Emulator
• How to write less code in tests
• Rethinking Base/Core Classes and Modules in Android Software Development
• Modularization of Android project in practice
• How I Fell in Kotlin’s RunBlocking Deadlock Trap, and How You Can Avoid It
• Currying in Kotlin
• Data caching using Room in Kotlin, Remote Mediator API, MVI Architecture
• Details on Google Play’s Photo and Video Permissions policy
• Kotlin Coroutines vs Threads Performance Benchmark
• Automatically Mirroring Images for RTL Layouts
• #TheAndroidShow: faster and easier to build excellent apps, across devices!
• Play PolicyBytes
• 95% Don’t Understand THIS About Coroutines (Main-Safety)
• Which Compile Options Should You Choose? (Java & Kotlin Version)
• Building a Spotify Music Player with Real-Time Lyrics using Flutter
• Beginner Guide to Mutation Testing in Kotlin
• Image Toolbox: графический редактор для Android на чистой архитектуре
• ComposeDialogs: расширяемые диалоги в Material 3
Кроссплатформа
• Flutter Yandex Mapkit: как внедрить основные инструменты Яндекс Карт в проект на Flutter. Часть 1 и Часть 2
• Решаем трудности адаптации мобильных приложений с Responsive_framework
• Setting up Kotlin Multiplatform with KSP
• Flutter theme made easy
• Testing in Flutter and Dart: Unit Testing + II
• Flutter’s Overlay Widget and OverlayEntry: A Comprehensive Guide
• The Flutter Forest — Demystifying Flutter trees
• Mastering Error Handling in Flutter with Dio
• Building a Spotify Music Player with Real-Time Lyrics using Flutter
• Full Flutter Beginner Course
• Twine: мультиплатформенный RSS-ридер на Kotlin и Compose
Разработка
• Пишите больше «бесполезных» программ
• Как интегрировать мультиаккаунт в уже работающий сервис и не поломать всё
• Road Run, или как я свою первую игру делал. Часть 1
• Что будет с мобильными релизами, если улучшать и автоматизировать процессы
• Адаптивный дизайн приложений на Gtk
• Как изменились подходы к автоматизированному тестированию в Тинькофф
• Avito Platform engineering meetup #2
• Ozon Tech Community ML&DS Meetup
• Полный курс по QA. Как правильно писать тесты?
• Сатья Наделла признает, что отказ от Windows Phone и мобильных устройств был ошибкой
• Скриншот-тесты — это ручные тесты
• Respawn: лучшее приложение для саморазвития в мире
• Больше всего денег для счастья нужно программистам
• Разработка мобильных приложений: чем Android лучше iOS?
• Startup CTO Handbook
• An Interactive Introduction to Fourier Transforms
• How does macOS manage virtual cores on Apple silicon?
• Courier: Reimagining How We Send Push Notifications
• Step by Step Guide to Succeed in Mobile System Design Interviews
• An aborted experiment with server Swift
• How Tinder designs product (and why)
• Where are all the laid-off software developers going?
• UK games jobs vacancies reaches three-year low
Аналитика, маркетинг и монетизация
• Luminar Neo упрощает использование ИИ в обработке фотографий
• Wyzr Friends — приложение поиска друзей для взрослых
• Daylyy — еще один анти-I*****
• Возврат к Windows Phone позволяет блокировать рекламу на YouTube
• Сторонние приложения ChatGPT теряют прибыль
• Q3 2023 Regional Market Pulse from Data.ai
• India Festive Report 2023
AI, Устройства, IoT
• От Style Transfer до диффузии: эволюция визуальных эффектов на смартфонах
• ChatGPT в мобильной разработке: как использовать, чтобы получить пользу
• $30.5 млн в посевном раунде: CentML — оптимизация обучения и работы ИИ-моделей
• В стандарте Matter 1.2 появилась крупная бытовая техника
• Сделано с помощью ИИ Google — новая серия видео
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подписывайтесь на на наш Telegram-канал Mobile Insights, где еще больше материалов для мобильных разработчиков. А в IT Insights — много об интересном коде и технологиях.
iOS
• Готов ли Swift OpenAPI Generator для продуктивного кода?
• Как Spotify бесшовно перешел на сборки Bazel
• SwiftUI: от сомнений к успешному внедрению
• Keyboard Layout Guide
• Автоматизация ревью ресурсных картинок в iOS
• Реальное iOS собеседование в Яндекс
• Поваренная книга SwiftUI: настройка фона и границ представления + Создание View и его модификаторов
• SwiftSyntax Code Generation Notes
• How (not) to monitor SwiftUI @State
• Observation Evolution: SwiftUI 5’s Shift from Combine
• Animating with Elegance: Exploring Phased Animations in SwiftUI 5
• Create a Pie or Donut chart with SwiftUI Charts in iOS 17
• Unsafe memory mutation
• Preparing your App for VoiceOver: use Accessibility Label
• iOS Single App Mode Escape
• My Toddler Loves Planes, So I Built Her A Radar
• Typewriter Text Animation In SwiftUI
• Bad practice: not using Phantom Types
• Use TensorFlow Lite model in SwiftUI Application
• Find Ancestor Types
• Swift Metatypes: What They Are and Why You Should Care
• Bad practice: not using multiline strings
• Generating Random Numbers Elegantly in Swift
• TestFlight makes it even simpler to manage testers
• SwiftUI Tutorial — Animated TabBar
• How to Integrate Camera APIs using SwiftUI
• Custom Swift Logger in Xcode 15
• Swift Metatypes: What They Are and Why You Should Care
• Mastering TipKit: Advanced
• Create a Spotify-Style Lyric View in SwiftUI
• Beautify Code Without Optionals in Swift
• Mastering TipKit in iOS 17
• SwiftUI: Building Notes App + SwiftData + CRUD
• Build a Twitch-Like Live Streaming App With SwiftUI
• Resizable Custom Tab Bar for macOS
• Lock SwiftUI View With Biometric/Custom Number Lock — Local Authentication
• Tagged: обертка типов для выразительного кода
• Dime: красивый трекер финансов для iOS
Android
• Воспоминания о 15 годах Android
• Как зловредные приложения могут скрывать работу с буфером обмена в Android 14
• Оптимизируя sequences — или как мой код попал в Kotlin
• Построение графа покрытия UI-тестами бизнес-логики на основе VisualFSM
• Обзор невизуальной доступности смартфонов под управлением операционной системы Android
• Реализация экранов авторизации и регистрации с помощью Custom View и Firebase
• Stone: знакомство с API
• Вопросы с собеседований: для чего нужен Data class в Kotlin
• Собеседование в Яндекс: платформа Android
• По ту сторону EditText. Программная клавиатура в Android
• Kodein в Android. Что за зверь и как его готовить
• Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
• Как OkHttpClient повышает сетевую производительность
• На 65% меньше APK и на 70% меньше потребление памяти: оптимизация приложения для Android — память
• Adopt Compose for View-based libraries
• Custom Dialog Animation in Jetpack Compose
• Dependency Injection in Legacy Code
• Interaction Latency: Square’s User-Centric Mobile Performance Metric
• What’s new in Jetpack Benchmark 1.2.0
• Kotlin and Variance: Navigating Type Relationships
• From Blank to Beautiful: Implementing Shimmer Effect in Compose
• Device Streaming: The latest devices you need, when you need them
• Google Play Games on PC Developer Emulator
• How to write less code in tests
• Rethinking Base/Core Classes and Modules in Android Software Development
• Modularization of Android project in practice
• How I Fell in Kotlin’s RunBlocking Deadlock Trap, and How You Can Avoid It
• Currying in Kotlin
• Data caching using Room in Kotlin, Remote Mediator API, MVI Architecture
• Details on Google Play’s Photo and Video Permissions policy
• Kotlin Coroutines vs Threads Performance Benchmark
• Automatically Mirroring Images for RTL Layouts
• #TheAndroidShow: faster and easier to build excellent apps, across devices!
• Play PolicyBytes
• 95% Don’t Understand THIS About Coroutines (Main-Safety)
• Which Compile Options Should You Choose? (Java & Kotlin Version)
• Building a Spotify Music Player with Real-Time Lyrics using Flutter
• Beginner Guide to Mutation Testing in Kotlin
• Image Toolbox: графический редактор для Android на чистой архитектуре
• ComposeDialogs: расширяемые диалоги в Material 3
Кроссплатформа
• Flutter Yandex Mapkit: как внедрить основные инструменты Яндекс Карт в проект на Flutter. Часть 1 и Часть 2
• Решаем трудности адаптации мобильных приложений с Responsive_framework
• Setting up Kotlin Multiplatform with KSP
• Flutter theme made easy
• Testing in Flutter and Dart: Unit Testing + II
• Flutter’s Overlay Widget and OverlayEntry: A Comprehensive Guide
• The Flutter Forest — Demystifying Flutter trees
• Mastering Error Handling in Flutter with Dio
• Building a Spotify Music Player with Real-Time Lyrics using Flutter
• Full Flutter Beginner Course
• Twine: мультиплатформенный RSS-ридер на Kotlin и Compose
Разработка
• Пишите больше «бесполезных» программ
• Как интегрировать мультиаккаунт в уже работающий сервис и не поломать всё
• Road Run, или как я свою первую игру делал. Часть 1
• Что будет с мобильными релизами, если улучшать и автоматизировать процессы
• Адаптивный дизайн приложений на Gtk
• Как изменились подходы к автоматизированному тестированию в Тинькофф
• Avito Platform engineering meetup #2
• Ozon Tech Community ML&DS Meetup
• Полный курс по QA. Как правильно писать тесты?
• Сатья Наделла признает, что отказ от Windows Phone и мобильных устройств был ошибкой
• Скриншот-тесты — это ручные тесты
• Respawn: лучшее приложение для саморазвития в мире
• Больше всего денег для счастья нужно программистам
• Разработка мобильных приложений: чем Android лучше iOS?
• Startup CTO Handbook
• An Interactive Introduction to Fourier Transforms
• How does macOS manage virtual cores on Apple silicon?
• Courier: Reimagining How We Send Push Notifications
• Step by Step Guide to Succeed in Mobile System Design Interviews
• An aborted experiment with server Swift
• How Tinder designs product (and why)
• Where are all the laid-off software developers going?
• UK games jobs vacancies reaches three-year low
Аналитика, маркетинг и монетизация
• Luminar Neo упрощает использование ИИ в обработке фотографий
• Wyzr Friends — приложение поиска друзей для взрослых
• Daylyy — еще один анти-I*****
• Возврат к Windows Phone позволяет блокировать рекламу на YouTube
• Сторонние приложения ChatGPT теряют прибыль
• Q3 2023 Regional Market Pulse from Data.ai
• India Festive Report 2023
AI, Устройства, IoT
• От Style Transfer до диффузии: эволюция визуальных эффектов на смартфонах
• ChatGPT в мобильной разработке: как использовать, чтобы получить пользу
• $30.5 млн в посевном раунде: CentML — оптимизация обучения и работы ИИ-моделей
• В стандарте Matter 1.2 появилась крупная бытовая техника
• Сделано с помощью ИИ Google — новая серия видео
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.