В нашем новом дайджесте легковесная миграция 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 :)