В нашем новом дайджесте легковесная миграция Core Daya и утечки памяти в iOS, реверсинжинеринг московского метро и конец любви к Flutter, бестолковый дизайн, тест на ручник для ChatGPT и многое другое.
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!

iOS
• Учимся определять способность Core Data к легковесной миграции до загрузки контейнера
• Cocoapods, Carthage, SPM: как выбрать менеджер зависимостей в iOS
• Как не потерять голову (и память) при поиске утечек в iOS
• Подводные камни локализации iOS-приложений, или Как мы локализовали Яндекс Еду
• Пет проекты для всех
•
Understanding Swift’s ConvertPoint
•
SVG to SwiftUI Converter
•
Building Large-Scale Apps with SwiftUI
•
Quick tip on how to unit test Swift optionals with XCTUnwrap
•
Introducing Khipu: My Boilerplate Code-Free Implementation of Clean Architecture in Swift
•
SwiftUI in a Nutshell – A Quick Reference Guide for Beginners
•
Handling Multiple Requests Using Combine in Swift
•
Performance testing in Swift using the XCTest framework
•
Routing in SwiftUI With NavigationStack
•
Downloading Data in SwiftUI with URLSession and async/await
•
Common mistakes in iOS Development
•
The operation couldn’t be completed: solving errors in Swift
•
10 Best Practices for Writing Clean and Efficient Code in Swift
•
5 Performance Improvements for Core Data in iOS Apps
•
From Concept to Code: Strategies for Planning Animations in SwiftUI
•
How to manage unstructured tasks with Swift’s structured concurrency
•
TextEffects With SwiftUI and Physics
•
MVVM, SwiftUI, Async/Await, and Combine: The Ultimate API Call Dream Team
•
An Aurora Gradient Animation in SwiftUI
•
Do more with Breakpoints in Xcode
•
A comprehensive guide on creating UI designs for iOS apps
•
SpoilerViewExample: спойлеры на SwiftUI
•
Yattee: конфиденциальный видеоплеер для iOS, tvOS и macOS
•
Introspect for SwiftUI: компоненты UIKit в основе SwiftUI
Android
• Реверсинжинерим московское метро
• Как правильно бегать — с пятки или с носка? Измеряем, сравниваем ударные нагрузки, время в полете. Android, акселерометр
• Расширяем Android Lint
• Мой шаблон Android приложения для Pet-проектов
• Как написать первый автотест на Android-приложение
• Вопросы и ответы для собеседования по Kotlin. Часть 1 + Часть 2
• Qualcomm добавил aptX и aptX HD в AOSP
•
Android CI/CD: Locally building and pushing to Play Store using Fastlane
•
Streamlining User Actions with the Command Pattern: A Practical Guide
•
How to leverage existing Android privacy changes to increase user trust
•
WorkManager in multi-module apps
•
Your guide to foreground services on Android
•
Everything about ArCloud Anchors Android — ArCore/Sceneview
•
Typing on a Tiny Screen
•
5 Metaball Animations in Jetpack Compose
•
Exploring the Power of Kotlin Contracts for Better Code Quality
•
Exploring Kotlin’s Context Receivers
•
Mitigating soft verification issues in R8 and D8
•
From Dagger & Hilt into the multiplatform world with kotlin-inject
•
How To Fix The Markdown Plugin Preview In Android Studio
•
ViewModel: for UI business, not UI operations
•
The Fundamentals of Android at Revolut
•
How Android ViewModel works under the hood to survive to configuration change
•
My first 6 Months as an Android Engineer in SwissBorg
•
How to Apply Stroke Effects to Text in Jetpack Compose
•
Memory Optimizations in Android
•
Jetpack Compose: Synchronize Lazycolumn With Scrollabletabrow
•
Circuit: Compose-driven архитектура для Android-приложений от Slack
•
MusicApp KMP: музыкальный плеер на Compose Multiplatform
Кроссплатформа
• Я разлюбил Flutter
• Болевые точки Dart и Flutter
• Кодогенерация Dart
• Шесть открытых библиотек от Mad Brains, которые упростят жизнь Flutter-разработчика
• SharedPreferences отличное хранилище для вашего flutter-приложения. Но есть нюансы…
•
Flutter is stepping up its game in 2023
•
I Am Falling Out Of Love With Flutter
•
Bye, React Native. Hello Native!
•
10 Best Visual Studio Code Extensions for Flutter Development
•
Real-time apps with Flutter and WebSockets
•
Adapter in Flutter
Разработка
• Бестолковый дизайн
• Из кондитера в программиста или как я училась в Geekbrains. Начало
• Создание комплексной системы ведения JSON логов для клиентских приложений Pinterest
• Мыслить как QA. Некоторые нюансы организации тестирования в небольшой компании
• «Тинькофф» запускает конкурс IT’s Tinkoff Solution Cup
• Как устроены собеседования в IT
• Сербия рай для релокантов? Как эта страна стала центром разработки
• Podlodka #312: производство лекарств
• Podlodka #311: зачем программисту YouTube
• Только 2 из 100 программистов уверены, что их работу в ближайшие 10 лет отберет ИИ
• Epic запускает Unreal Editor для Fortnite и будет платить создателям 40% дохода
• За год в российском IT стало на пятую часть меньше вакансий, а количество резюме выросло более чем на треть
• Яндекс открывает исходный код YTsaurus — своей главной платформы для работы с большими данными
• Microsoft Build 2023 пройдет 23–25 мая
•
Kotlin is the Future of Back-end Development
•
12 Websites You’ll Love As A Developer
•
How I Built a Social Network in 4 Years as a Solo Developer
•
16 little UI design rules that make a big impact
•
I Reduced My production Docker Container’s Size by 96%
•
How Do Bad Developers Hide, Thrive And Survive?
•
Jetbrains Fleet vs VsCode (Will Fleet kill VsCode?)
Аналитика, маркетинг и монетизация
• Продвижение iOS-приложения, попавшего в Top 10 платных
• Бизнес на мобильных приложениях: выбор ниши и региона
• Ключевые метрики, анализ которых позволит повысить прибыльность вашего приложения
• RuStore снизил комиссию за монетизацию приложений в 6 раз
• Valve анонсирует Counter-Strike 2
• Duolingo работает над музыкальным приложением
• Microsoft тоже готовит своя магазин игр для iOS и Android
• Доход CapCut превысил $1 млн
•
3 lessons from Bumble’s onboarding
AI, Устройства, IoT
• Сколько стоит умный дом? Рассказываю, как строил свой и что получилось за 1000 руб./м²
• ChatGPT провалил тест на ручник
• Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов
• Приделываем руки к ChatGPT: бот, который исполняет код в рантайме
• Snap предлагает AR-инструменты предприятиям
• Snap предлагает AR-инструменты предприятиям
• В GitHub Copilot X появился чат и новые функции помощи разработчикам
• ChatGPT сможет заместить 19% специальностей в США
• Саркастическое погодное приложение Carrot Weather запустило чат-бот на основе ChatGPT
• Glaze защищает изображения от использования ИИ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!

iOS• Учимся определять способность Core Data к легковесной миграции до загрузки контейнера
• Cocoapods, Carthage, SPM: как выбрать менеджер зависимостей в iOS
• Как не потерять голову (и память) при поиске утечек в iOS
• Подводные камни локализации iOS-приложений, или Как мы локализовали Яндекс Еду
• Пет проекты для всех
•
Understanding Swift’s ConvertPoint•
SVG to SwiftUI Converter•
Building Large-Scale Apps with SwiftUI•
Quick tip on how to unit test Swift optionals with XCTUnwrap•
Introducing Khipu: My Boilerplate Code-Free Implementation of Clean Architecture in Swift•
SwiftUI in a Nutshell – A Quick Reference Guide for Beginners•
Handling Multiple Requests Using Combine in Swift•
Performance testing in Swift using the XCTest framework•
Routing in SwiftUI With NavigationStack•
Downloading Data in SwiftUI with URLSession and async/await•
Common mistakes in iOS Development•
The operation couldn’t be completed: solving errors in Swift•
10 Best Practices for Writing Clean and Efficient Code in Swift•
5 Performance Improvements for Core Data in iOS Apps•
From Concept to Code: Strategies for Planning Animations in SwiftUI•
How to manage unstructured tasks with Swift’s structured concurrency•
TextEffects With SwiftUI and Physics•
MVVM, SwiftUI, Async/Await, and Combine: The Ultimate API Call Dream Team•
An Aurora Gradient Animation in SwiftUI•
Do more with Breakpoints in Xcode•
A comprehensive guide on creating UI designs for iOS apps•
SpoilerViewExample: спойлеры на SwiftUI•
Yattee: конфиденциальный видеоплеер для iOS, tvOS и macOS•
Introspect for SwiftUI: компоненты UIKit в основе SwiftUI
Android• Реверсинжинерим московское метро
• Как правильно бегать — с пятки или с носка? Измеряем, сравниваем ударные нагрузки, время в полете. Android, акселерометр
• Расширяем Android Lint
• Мой шаблон Android приложения для Pet-проектов
• Как написать первый автотест на Android-приложение
• Вопросы и ответы для собеседования по Kotlin. Часть 1 + Часть 2
• Qualcomm добавил aptX и aptX HD в AOSP
•
Android CI/CD: Locally building and pushing to Play Store using Fastlane•
Streamlining User Actions with the Command Pattern: A Practical Guide•
How to leverage existing Android privacy changes to increase user trust•
WorkManager in multi-module apps•
Your guide to foreground services on Android•
Everything about ArCloud Anchors Android — ArCore/Sceneview•
Typing on a Tiny Screen•
5 Metaball Animations in Jetpack Compose•
Exploring the Power of Kotlin Contracts for Better Code Quality•
Exploring Kotlin’s Context Receivers•
Mitigating soft verification issues in R8 and D8•
From Dagger & Hilt into the multiplatform world with kotlin-inject•
How To Fix The Markdown Plugin Preview In Android Studio•
ViewModel: for UI business, not UI operations•
The Fundamentals of Android at Revolut•
How Android ViewModel works under the hood to survive to configuration change•
My first 6 Months as an Android Engineer in SwissBorg•
How to Apply Stroke Effects to Text in Jetpack Compose•
Memory Optimizations in Android•
Jetpack Compose: Synchronize Lazycolumn With Scrollabletabrow•
Circuit: Compose-driven архитектура для Android-приложений от Slack•
MusicApp KMP: музыкальный плеер на Compose Multiplatform
Кроссплатформа• Я разлюбил Flutter
• Болевые точки Dart и Flutter
• Кодогенерация Dart
• Шесть открытых библиотек от Mad Brains, которые упростят жизнь Flutter-разработчика
• SharedPreferences отличное хранилище для вашего flutter-приложения. Но есть нюансы…
•
Flutter is stepping up its game in 2023•
I Am Falling Out Of Love With Flutter•
Bye, React Native. Hello Native!•
10 Best Visual Studio Code Extensions for Flutter Development•
Real-time apps with Flutter and WebSockets•
Adapter in Flutter
Разработка• Бестолковый дизайн
• Из кондитера в программиста или как я училась в Geekbrains. Начало
• Создание комплексной системы ведения JSON логов для клиентских приложений Pinterest
• Мыслить как QA. Некоторые нюансы организации тестирования в небольшой компании
• «Тинькофф» запускает конкурс IT’s Tinkoff Solution Cup
• Как устроены собеседования в IT
• Сербия рай для релокантов? Как эта страна стала центром разработки
• Podlodka #312: производство лекарств
• Podlodka #311: зачем программисту YouTube
• Только 2 из 100 программистов уверены, что их работу в ближайшие 10 лет отберет ИИ
• Epic запускает Unreal Editor для Fortnite и будет платить создателям 40% дохода
• За год в российском IT стало на пятую часть меньше вакансий, а количество резюме выросло более чем на треть
• Яндекс открывает исходный код YTsaurus — своей главной платформы для работы с большими данными
• Microsoft Build 2023 пройдет 23–25 мая
•
Kotlin is the Future of Back-end Development•
12 Websites You’ll Love As A Developer•
How I Built a Social Network in 4 Years as a Solo Developer•
16 little UI design rules that make a big impact•
I Reduced My production Docker Container’s Size by 96%•
How Do Bad Developers Hide, Thrive And Survive?•
Jetbrains Fleet vs VsCode (Will Fleet kill VsCode?)
Аналитика, маркетинг и монетизация• Продвижение iOS-приложения, попавшего в Top 10 платных
• Бизнес на мобильных приложениях: выбор ниши и региона
• Ключевые метрики, анализ которых позволит повысить прибыльность вашего приложения
• RuStore снизил комиссию за монетизацию приложений в 6 раз
• Valve анонсирует Counter-Strike 2
• Duolingo работает над музыкальным приложением
• Microsoft тоже готовит своя магазин игр для iOS и Android
• Доход CapCut превысил $1 млн
•
3 lessons from Bumble’s onboarding
AI, Устройства, IoT• Сколько стоит умный дом? Рассказываю, как строил свой и что получилось за 1000 руб./м²
• ChatGPT провалил тест на ручник
• Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов
• Приделываем руки к ChatGPT: бот, который исполняет код в рантайме
• Snap предлагает AR-инструменты предприятиям
• Snap предлагает AR-инструменты предприятиям
• В GitHub Copilot X появился чат и новые функции помощи разработчикам
• ChatGPT сможет заместить 19% специальностей в США
• Саркастическое погодное приложение Carrot Weather запустило чат-бот на основе ChatGPT
• Glaze защищает изображения от использования ИИ
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
tokarev
добавлю про iOS
уже с апреля 2023 для всех iOS и iPadOS приложений надо использовать iOS 16.1 SDK и Xcode 14.1
GitHub официально ответили в чем проблема с добавлением macOS 13 (читай Xcode 14.3) к себе в пул. https://github.com/actions/runner-images/issues/6426#issuecomment-1479974889
и это особенно интересно, потому что Xcode 14.3 перешел в release candidate 21-го марта. Напоминаю, что Xcode 14.3 требует macOS 13 для установки. Самое время обновить ваш CI/CD :)