В нашем новом дайджесте снова история уменьшения размера приложения, Android System Design и проектирование для больших экранов, мобильные таблицы, сообщения об ошибках, «антивирусный» Mastodon и многое другое!
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!
iOS
• Как я уменьшил размер моего приложения на 73%
• Шифруем CoreML
• «Оживляем» наше iOS-приложение с помощью Live Activity
• Как устроено приложение Календарь в iPhone
• Пишем собственный CustomStepper в Swift
• Работая в Xcode: создаем реюзабельные цветовые палитры, которыми можно поделиться
• Core Data в современном интерьере SwftUI. Некоторые уточнения и заблуждения. часть 1 + часть 2
• Загружаем dSYM в Firebase Crashlytics через Xcode Cloud
• Месячная заруба с Apple. Встраиваем On-Demand Resources. Часть 1
• Observer (Наблюдатель) — шаблон проектирования на примере Swift
• Видение вариативных дженериков в Swift
• How Does Swift Concurrency Prevents Thread Explosions?
• Five ways to break Swift Concurrency
• SwiftUI Labeled Content
• The 5 Best iOS Developer Communities You Should Join
• When to use Swift For-in and ForEach
• Q&A: 10 Questions with Design Evangelism
• How to implement sound waves in iOS by using ZEGOCLOUD SDK
• Make swift ‘contains()’ and ‘filter()’ ready for iOS Development
• The Chain of Responsibility Pattern in Swift
• The Ultimate Domain Language: Declarative Swift
• Dissect the PKCE Authorization Code Grant Flow on iOS
• Get Started with Unit Testing in Swift
• SwiftUI Binding Extensions
• Get Started With The Dynamic Island and Live Activities in iOS 16.1
• Dependency Injection in Swift 5
• 7 iOS Projects to Hack on This Weekend
• Swift Charts Tutorial: Getting Started
• A Deep Dive Into the Swift Concurrency Bottleneck
• Swift and Objective-C Interoperability With @objc and @objcMembers
• DALL-E API in Swift — Generate Faces
• How to Create Your Xcode Cloud Workflow
• Two Practical Uses of Enum in Swift
• Removing 30% of our iOS crashes
• Introducing N26 Backend Driven Navigation: FlowKit
• PromiseKit: промисы для Swift и ObjC
• KeyboardKit: кастомные клавиатуры для iOS
Android
• Собеседование Android System Design
• Шаблоны проектирования для больших экранов
• Orange Pi OS: операционная система от создателей конкурента Raspberry Pi. Возможности ОС
• Вращаем невращаемое, или Как повернуть экран звонка
• Удалённая сборка Android проектов на сервере прямо из Android Studio
• Как можно хранить стабы для MockWebServer в Android-тестах
• Поиск не вставая с дивана, или как подружить приложение со Сбер Ассистентом
• Системный подход к улучшению старта Android-приложения
• Компилируем validatekeymaps из Android для запуска в браузере
• Deep Dive Into Deep Link. Часть 5. Нюансы: port, mime, path, диспетчеризация, обратная совместимость
• Трудности, с которыми мы столкнулись при модуляризации нашего приложения — Часть 1
• Удовлетворенность экосистемой Kotlin — исследование JetBrains
• Google TV и Android TV переходят на Android App Bundle
• AGSL: Made in the Shade®
• Under the hood of Relay, Android Studio plugin for exporting Figma components to compose
• Faster Jetpack Compose <-> View interop with App Startup and baseline profile
• Rethinking Android Runtime with Profile-Guided Optimizations
• Compose by example: BoxWithConstraints
• Solving the Moshi enumeration problem using generics
• Fixing Dependency Metadata in Gradle
• Do you follow these Kotlin Best Practices?
• Card Flip Animation with Jetpack Compose
• Most Asked Android Interview Questions In 2022
• Why go with Paparazzi? Our journey with Android Screenshot Testing
• How to Customize the Switch Slider in Android
• Coroutine: Make it faster and Efficient
• Retrofitting null-safety onto Java at Meta
• Development on steroids: Ping-pong Programming and TDD
• You Must Be 64-Bit to Ride This Ferry
• Mercado Libre Android app is on a diet: Dynamic Features
• Just your type: Variable fonts in Compose
• How Kotlin Is Going To Fix Your Pains in 2023
• Cloudy: blur для Jetpack Compose
• Android App Starter Template: шаблон правильного приложения
Кроссплатформа
• Создаём сложные интерфейсы и спецэффекты на базе Qt. Часть II
• Bender postmortem
• How to Build a Game for the Playdate Console Using the Playdate SDK and Lua
• In App Update — The Flutter Way
• Flutter vs Jetpack Compose: The Battle of the Decade
• Top 8 Flutter Animation Packages
• Dart Extensions Tutorial: Improve your Flutter Code
• Integrate Payment in Flutter with Stripe
• Blurhash — an image placeholder for React Native
• How react-native became performant as native with the new architecture
• Kotlin for backend, is it that good?
• Difference Between Ephemeral State & App State In Flutter
Разработка
• Как отобразить таблицу на экране мобильного устройства: решения
• Использование Rust в стартапе: поучительная история
• Что такое Black Box Testing?
• Будьте другом своему пользователю, пишите осмысленные сообщения об ошибках
• Пользовательские истории в разработке
• Как доработка UX помогла сократить время прохождения сценария заказа еды на 70%. Часть 1
• Flower: как работает чат-бот платформа Авито
• Podlodka #295: финмониторинг и банковский compliance
• Alphabet планирует сократить 10,000 сотрудников
• Самые высокооплачиваемые вакансии ноября в области разработки приложений
• Niantic показала будущее AR-игр
• The Architecture of a Modern Startup
• The Difference Between The Clever Developer & The Wise Developer
• Coding is simple. Engineering is hard.
• How I’m a Productive Programmer With a Memory of a Fruit Fly
• Why Some Developers Will Never Improve
• Bullshit Software Projects
• Real-Time Game Server Internals: Basic Theory, Architecture, Optimization, Auto-Scaling
• Are Developers Costs or Assets?
• Learn Kubernetes with Google
• This Simple Question Made Me Hire a Couple of Junior Programmers
• Elimination of programmers
• Rhasspy: голосовой помощник
Аналитика, маркетинг и монетизация
• Альтернатива Твиттеру: почему Mastodon сделан так, чтобы быть «антивирусным»
• Appodeal представил обновленный SDK 3.0 c улучшенным функционалом
• МТС запустила свой магазин приложений AppBazar
• Аудитория RuStore выросла в шесть раз
• Исследование “Бенчмарки продуктового опыта 2022”
• Careem app – сервисы в одно окно
• 97% доходов игр идет от повторных покупок
• App Store собирает все данные о действиях пользователей
• Самые зарабатывающие приложения США в октябре
AI, Устройства, IoT
• Тестируем ультра-производительные кроссоверы для встраиваемых систем
• AlertBox Radio: ещё больше магии (плюс ETH, RS485, RTC, WDG, SD)
• Переделка оповещателя пожарной сигнализации для отправки тревоги в Home Assistant
• Google работает над новым ИИ для написания кода
• Kite, занимавшийся ИИ автодополнения кода, закрывается
• Amazon Alexa: «колоссальный провал», который в этом году может стоить $10 млрд
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.
В нашем Telegram-канале Mobile Insights, еще больше материалов для разработчиков — подключайтесь!
iOS
• Как я уменьшил размер моего приложения на 73%
• Шифруем CoreML
• «Оживляем» наше iOS-приложение с помощью Live Activity
• Как устроено приложение Календарь в iPhone
• Пишем собственный CustomStepper в Swift
• Работая в Xcode: создаем реюзабельные цветовые палитры, которыми можно поделиться
• Core Data в современном интерьере SwftUI. Некоторые уточнения и заблуждения. часть 1 + часть 2
• Загружаем dSYM в Firebase Crashlytics через Xcode Cloud
• Месячная заруба с Apple. Встраиваем On-Demand Resources. Часть 1
• Observer (Наблюдатель) — шаблон проектирования на примере Swift
• Видение вариативных дженериков в Swift
• How Does Swift Concurrency Prevents Thread Explosions?
• Five ways to break Swift Concurrency
• SwiftUI Labeled Content
• The 5 Best iOS Developer Communities You Should Join
• When to use Swift For-in and ForEach
• Q&A: 10 Questions with Design Evangelism
• How to implement sound waves in iOS by using ZEGOCLOUD SDK
• Make swift ‘contains()’ and ‘filter()’ ready for iOS Development
• The Chain of Responsibility Pattern in Swift
• The Ultimate Domain Language: Declarative Swift
• Dissect the PKCE Authorization Code Grant Flow on iOS
• Get Started with Unit Testing in Swift
• SwiftUI Binding Extensions
• Get Started With The Dynamic Island and Live Activities in iOS 16.1
• Dependency Injection in Swift 5
• 7 iOS Projects to Hack on This Weekend
• Swift Charts Tutorial: Getting Started
• A Deep Dive Into the Swift Concurrency Bottleneck
• Swift and Objective-C Interoperability With @objc and @objcMembers
• DALL-E API in Swift — Generate Faces
• How to Create Your Xcode Cloud Workflow
• Two Practical Uses of Enum in Swift
• Removing 30% of our iOS crashes
• Introducing N26 Backend Driven Navigation: FlowKit
• PromiseKit: промисы для Swift и ObjC
• KeyboardKit: кастомные клавиатуры для iOS
Android
• Собеседование Android System Design
• Шаблоны проектирования для больших экранов
• Orange Pi OS: операционная система от создателей конкурента Raspberry Pi. Возможности ОС
• Вращаем невращаемое, или Как повернуть экран звонка
• Удалённая сборка Android проектов на сервере прямо из Android Studio
• Как можно хранить стабы для MockWebServer в Android-тестах
• Поиск не вставая с дивана, или как подружить приложение со Сбер Ассистентом
• Системный подход к улучшению старта Android-приложения
• Компилируем validatekeymaps из Android для запуска в браузере
• Deep Dive Into Deep Link. Часть 5. Нюансы: port, mime, path, диспетчеризация, обратная совместимость
• Трудности, с которыми мы столкнулись при модуляризации нашего приложения — Часть 1
• Удовлетворенность экосистемой Kotlin — исследование JetBrains
• Google TV и Android TV переходят на Android App Bundle
• AGSL: Made in the Shade®
• Under the hood of Relay, Android Studio plugin for exporting Figma components to compose
• Faster Jetpack Compose <-> View interop with App Startup and baseline profile
• Rethinking Android Runtime with Profile-Guided Optimizations
• Compose by example: BoxWithConstraints
• Solving the Moshi enumeration problem using generics
• Fixing Dependency Metadata in Gradle
• Do you follow these Kotlin Best Practices?
• Card Flip Animation with Jetpack Compose
• Most Asked Android Interview Questions In 2022
• Why go with Paparazzi? Our journey with Android Screenshot Testing
• How to Customize the Switch Slider in Android
• Coroutine: Make it faster and Efficient
• Retrofitting null-safety onto Java at Meta
• Development on steroids: Ping-pong Programming and TDD
• You Must Be 64-Bit to Ride This Ferry
• Mercado Libre Android app is on a diet: Dynamic Features
• Just your type: Variable fonts in Compose
• How Kotlin Is Going To Fix Your Pains in 2023
• Cloudy: blur для Jetpack Compose
• Android App Starter Template: шаблон правильного приложения
Кроссплатформа
• Создаём сложные интерфейсы и спецэффекты на базе Qt. Часть II
• Bender postmortem
• How to Build a Game for the Playdate Console Using the Playdate SDK and Lua
• In App Update — The Flutter Way
• Flutter vs Jetpack Compose: The Battle of the Decade
• Top 8 Flutter Animation Packages
• Dart Extensions Tutorial: Improve your Flutter Code
• Integrate Payment in Flutter with Stripe
• Blurhash — an image placeholder for React Native
• How react-native became performant as native with the new architecture
• Kotlin for backend, is it that good?
• Difference Between Ephemeral State & App State In Flutter
Разработка
• Как отобразить таблицу на экране мобильного устройства: решения
• Использование Rust в стартапе: поучительная история
• Что такое Black Box Testing?
• Будьте другом своему пользователю, пишите осмысленные сообщения об ошибках
• Пользовательские истории в разработке
• Как доработка UX помогла сократить время прохождения сценария заказа еды на 70%. Часть 1
• Flower: как работает чат-бот платформа Авито
• Podlodka #295: финмониторинг и банковский compliance
• Alphabet планирует сократить 10,000 сотрудников
• Самые высокооплачиваемые вакансии ноября в области разработки приложений
• Niantic показала будущее AR-игр
• The Architecture of a Modern Startup
• The Difference Between The Clever Developer & The Wise Developer
• Coding is simple. Engineering is hard.
• How I’m a Productive Programmer With a Memory of a Fruit Fly
• Why Some Developers Will Never Improve
• Bullshit Software Projects
• Real-Time Game Server Internals: Basic Theory, Architecture, Optimization, Auto-Scaling
• Are Developers Costs or Assets?
• Learn Kubernetes with Google
• This Simple Question Made Me Hire a Couple of Junior Programmers
• Elimination of programmers
• Rhasspy: голосовой помощник
Аналитика, маркетинг и монетизация
• Альтернатива Твиттеру: почему Mastodon сделан так, чтобы быть «антивирусным»
• Appodeal представил обновленный SDK 3.0 c улучшенным функционалом
• МТС запустила свой магазин приложений AppBazar
• Аудитория RuStore выросла в шесть раз
• Исследование “Бенчмарки продуктового опыта 2022”
• Careem app – сервисы в одно окно
• 97% доходов игр идет от повторных покупок
• App Store собирает все данные о действиях пользователей
• Самые зарабатывающие приложения США в октябре
AI, Устройства, IoT
• Тестируем ультра-производительные кроссоверы для встраиваемых систем
• AlertBox Radio: ещё больше магии (плюс ETH, RS485, RTC, WDG, SD)
• Переделка оповещателя пожарной сигнализации для отправки тревоги в Home Assistant
• Google работает над новым ИИ для написания кода
• Kite, занимавшийся ИИ автодополнения кода, закрывается
• Amazon Alexa: «колоссальный провал», который в этом году может стоить $10 млрд
← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.