В нашей новой еженедельной подборке история Goose Maps и WebView, продолжение неочевидного про Fragment API, перепады высот, эмуляторы, симуляторы, тестовые фермы и многое другое!
Подключайтесь к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.
iOS
• История Goose Maps, первых автономных офлайн карт для Apple Watch
• Логи в iOS, эпизод 1: os_log
• State Machine в SwiftUI
• Пишем типизированный DI-контейнер для iOS приложения. Часть 1
• Asychronous Flow Kit — Objective-C тулкит для асинхронных операций
• Auto Layout настройка кодом
• Пишем библиотеку для запроса оценки в AppStore
• Stage Manager заработал на старых iPad
• Compose UI for iOS
• Aspect Fit Layout Guide
• Replacing if let in Swift 5.7
• Native iOS Game Development w/ Rust
• iOS App as a Microservice — Build Robust App Architecture
• New in SwiftUI 4: Stacked Bar Chart
• Protocol Oriented Design and Protocol Oriented Design Patterns
• SwiftUI Lists Are Broken And Can’t Be Fixed
• Swift Combine: Understanding Publisher-Subscriber Pattern in 2 seconds
• How to Create Custom Header & Footer Using UIHostingConfiguration
• How To Create Interactive Maps Using SwiftUI
• Integrate SwiftLint to the iOS project
• Using Sequence Function to Solve Math Problem in Swift
• Build Time Optimizations (Xcode)
• How to Use SwiftUI Table and Charts to Display Housing Data
• SwiftLint — iOS Apps Code Inspection
• DIFlowLayout: поток subview для SwiftUI
• DVIA-v2: чертовски уязвимое iOS-приложение
Android
• Как заменить стандартное окно сбоя своим экраном ошибки
• Неочевидное про Fragment API. Часть 2. (Не) создаем инстанс
• Миграция с Rx на корутины — опыт «Тинькофф Мобайл»
• Новый Logcat в Android Studio Dolphin превосходен
• Android NDK. Как писать под Android на C++
• На твой телефон пришло новое сообщение
• Java из Python и обратно на Android
• Размер имеет значение! Часть 3
• Видео Droidcon New York 22
• Google Play Store оптимизировали для «не телефонов»
• Android Lint and Detekt warnings in GitHub pull requests
• How to review Pull Requests using Android Studio?
• 5 Gotchas of Android’s Deep Link Implementation
• Migrating the AOSP QuickSearchBox App to Kotlin
• How to make a shaped text background just like in Instagram
• Jetpack compose ViewModel decoupling mechanism: Wireless ViewMode
• A Brief History of Android: Founding, Evolution & Industry Impact
• Kotlin: What are the differences between lateinit and Delegates.notNull?
• New Android Logcat: Top 5 features
• Optimize for Android Go: Lessons from Google apps
• Getting Dynamic Notch On Android
• Understanding Google Play Billing Library v5.0
• My Mistake as an Android Developer, which I do not want others to make
• Kotlin 1.7.20 Released
• ViewLifecycleLazy and other ways to avoid View memory leaks in Android Fragments
• 7 Useful Android Libraries You Should Use in Your Next Project
• Travel: планирование путешествий на Compose
• Koreography: простая анимация в Compose
Кроссплатформа
• Flutter: Настройка тем приложения
• Расплывающаяся менюшка
• Authentication flows on Flutter Web and Mobile with AWS Amplify
• Dynamically sized, animated carousel in Flutter
• Build a Collaborative Pixel Art App With Flutter and Firebase
• An iOS purist thrown into Flutter
• Why haven’t PWAs killed native apps yet?
• Roadmap to becoming a Flutter developer
Разработка
• Все видео Mobius 2022 Spring
• WebView: забыть нельзя интегрировать
• Как мы научились учитывать перепады высот по геокоординатам в мобильном приложении
• Когда тестирование выпало из DevOps, и как его туда вернуть
• Мобильное ТОРО: ускоряем ремонты и бережем лес
• Как Junior-разработчика уволили и оштрафовали за работу над сторонними проектами в рабочее время
• Charles для начинающего QA: от настройки до использования
• Эмуляторы, симуляторы или тестовые фермы. Что выбрать для мобильного тестирования?
• Что такое Quality Gates?
• Как победить выгорание, синдром самозванца и прокраситанцию: советы IT психолога
• Podlodka #287: стейблкойны
• Epic Games и Autodesk привносят 3D в архитектуру и инженерию
• Meta* впервые в истории сокращает персонал
• «Счастье разработчиков 2022» — отчет ZenHub
• Вакансий для IT-специалистов начального уровня стало меньше на 62%
• Loopin помогает повысить продуктивность митингов
• The Open Mainframe Project выпустил обучающий курс по COBOL
• Самые высокооплачиваемые вакансии сентября в области разработки приложений
• The Art of the Error Message
• What we learned after I deleted the main production database by mistake
• 30 knowledge base tools for developers in 2022
• Amazon Software Engineer Interview Handbook (2022)
• UI/UX case study: Wave App
• Designing for inclusivity with WhatsApp’s product designers
• Keep your views separate
• How we reduced our annual server costs by 80% — from $1M to $200k — by moving away from AWS
• Awesome Scalability: список чтения по масштабируемости систем
• SAD (Slack-Anti-Delete): сохранение удаленных сообщений в Slack
Аналитика, маркетинг и монетизация
• RuStore стал первым по аудитории среди отечественных магазинов приложений
• Как эффективно продвигать финансовые продукты на myTarget — кейс «Тинькофф Инвестиции» и Rocket10
• The OG App — Instagram* без рекламы и рекомендаций + The OG App удалили из App Store
• Все приложения VK удалили из App Store
• «Приложения для образования в США 2022» — отчет Sensor Tower
• 65% маркетологов приложений ищут новые способы таргетинга
AI, Устройства, IoT
• Почему я не верю в бум беспилотных машин в ближайшие пять лет
• Lavritech V7.1 Lite: младший брат Wirenboard на ESP32
• Открытый проект мультизонного термосенсора с логированием и блютусом
• Защитить IoT-устройства — что предлагают регуляторы
• Экскурсия в backend Интернета вещей
• How to Become a Data Engineer: Complete Roadmap
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
Подключайтесь к нашему Telegram-каналу Mobile Insights, где подборки статей и новостей выходят каждый день.
iOS
• История Goose Maps, первых автономных офлайн карт для Apple Watch
• Логи в iOS, эпизод 1: os_log
• State Machine в SwiftUI
• Пишем типизированный DI-контейнер для iOS приложения. Часть 1
• Asychronous Flow Kit — Objective-C тулкит для асинхронных операций
• Auto Layout настройка кодом
• Пишем библиотеку для запроса оценки в AppStore
• Stage Manager заработал на старых iPad
• Compose UI for iOS
• Aspect Fit Layout Guide
• Replacing if let in Swift 5.7
• Native iOS Game Development w/ Rust
• iOS App as a Microservice — Build Robust App Architecture
• New in SwiftUI 4: Stacked Bar Chart
• Protocol Oriented Design and Protocol Oriented Design Patterns
• SwiftUI Lists Are Broken And Can’t Be Fixed
• Swift Combine: Understanding Publisher-Subscriber Pattern in 2 seconds
• How to Create Custom Header & Footer Using UIHostingConfiguration
• How To Create Interactive Maps Using SwiftUI
• Integrate SwiftLint to the iOS project
• Using Sequence Function to Solve Math Problem in Swift
• Build Time Optimizations (Xcode)
• How to Use SwiftUI Table and Charts to Display Housing Data
• SwiftLint — iOS Apps Code Inspection
• DIFlowLayout: поток subview для SwiftUI
• DVIA-v2: чертовски уязвимое iOS-приложение
Android
• Как заменить стандартное окно сбоя своим экраном ошибки
• Неочевидное про Fragment API. Часть 2. (Не) создаем инстанс
• Миграция с Rx на корутины — опыт «Тинькофф Мобайл»
• Новый Logcat в Android Studio Dolphin превосходен
• Android NDK. Как писать под Android на C++
• На твой телефон пришло новое сообщение
• Java из Python и обратно на Android
• Размер имеет значение! Часть 3
• Видео Droidcon New York 22
• Google Play Store оптимизировали для «не телефонов»
• Android Lint and Detekt warnings in GitHub pull requests
• How to review Pull Requests using Android Studio?
• 5 Gotchas of Android’s Deep Link Implementation
• Migrating the AOSP QuickSearchBox App to Kotlin
• How to make a shaped text background just like in Instagram
• Jetpack compose ViewModel decoupling mechanism: Wireless ViewMode
• A Brief History of Android: Founding, Evolution & Industry Impact
• Kotlin: What are the differences between lateinit and Delegates.notNull?
• New Android Logcat: Top 5 features
• Optimize for Android Go: Lessons from Google apps
• Getting Dynamic Notch On Android
• Understanding Google Play Billing Library v5.0
• My Mistake as an Android Developer, which I do not want others to make
• Kotlin 1.7.20 Released
• ViewLifecycleLazy and other ways to avoid View memory leaks in Android Fragments
• 7 Useful Android Libraries You Should Use in Your Next Project
• Travel: планирование путешествий на Compose
• Koreography: простая анимация в Compose
Кроссплатформа
• Flutter: Настройка тем приложения
• Расплывающаяся менюшка
• Authentication flows on Flutter Web and Mobile with AWS Amplify
• Dynamically sized, animated carousel in Flutter
• Build a Collaborative Pixel Art App With Flutter and Firebase
• An iOS purist thrown into Flutter
• Why haven’t PWAs killed native apps yet?
• Roadmap to becoming a Flutter developer
Разработка
• Все видео Mobius 2022 Spring
• WebView: забыть нельзя интегрировать
• Как мы научились учитывать перепады высот по геокоординатам в мобильном приложении
• Когда тестирование выпало из DevOps, и как его туда вернуть
• Мобильное ТОРО: ускоряем ремонты и бережем лес
• Как Junior-разработчика уволили и оштрафовали за работу над сторонними проектами в рабочее время
• Charles для начинающего QA: от настройки до использования
• Эмуляторы, симуляторы или тестовые фермы. Что выбрать для мобильного тестирования?
• Что такое Quality Gates?
• Как победить выгорание, синдром самозванца и прокраситанцию: советы IT психолога
• Podlodka #287: стейблкойны
• Epic Games и Autodesk привносят 3D в архитектуру и инженерию
• Meta* впервые в истории сокращает персонал
• «Счастье разработчиков 2022» — отчет ZenHub
• Вакансий для IT-специалистов начального уровня стало меньше на 62%
• Loopin помогает повысить продуктивность митингов
• The Open Mainframe Project выпустил обучающий курс по COBOL
• Самые высокооплачиваемые вакансии сентября в области разработки приложений
• The Art of the Error Message
• What we learned after I deleted the main production database by mistake
• 30 knowledge base tools for developers in 2022
• Amazon Software Engineer Interview Handbook (2022)
• UI/UX case study: Wave App
• Designing for inclusivity with WhatsApp’s product designers
• Keep your views separate
• How we reduced our annual server costs by 80% — from $1M to $200k — by moving away from AWS
• Awesome Scalability: список чтения по масштабируемости систем
• SAD (Slack-Anti-Delete): сохранение удаленных сообщений в Slack
Аналитика, маркетинг и монетизация
• RuStore стал первым по аудитории среди отечественных магазинов приложений
• Как эффективно продвигать финансовые продукты на myTarget — кейс «Тинькофф Инвестиции» и Rocket10
• The OG App — Instagram* без рекламы и рекомендаций + The OG App удалили из App Store
• Все приложения VK удалили из App Store
• «Приложения для образования в США 2022» — отчет Sensor Tower
• 65% маркетологов приложений ищут новые способы таргетинга
AI, Устройства, IoT
• Почему я не верю в бум беспилотных машин в ближайшие пять лет
• Lavritech V7.1 Lite: младший брат Wirenboard на ESP32
• Открытый проект мультизонного термосенсора с логированием и блютусом
• Защитить IoT-устройства — что предлагают регуляторы
• Экскурсия в backend Интернета вещей
• How to Become a Data Engineer: Complete Roadmap
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.