Железо для типизированных ошибок
Новая подборка всех статей за неделю - макросы и типизированные ошибки, форматирование кода и Unit-тесты, «железо» для Android Studio, переход на docs as code, возвращение Myspace для Поколения Z, AirPods с камерами и многое другое. Подключайтесь!
В App Store в США на первое место вышла новая социальная сеть для Поколения Z - noplace. Профессионалы говорят, что noplace отчаянно напоминает современный Myspace. В новом приложении есть красочные настраиваемые профили, которые позволяют людям делиться всем: от статуса отношений до того, что они слушают или смотрят, что они читают или делают, и многим другим. Правда, пока только в тексте. Так что заодно напоминает и Х на заре своей деятельности. В общем, вот идеальный рецепт для нового приложения - берете какой-нибудь закрывшийся 20 лет назад проект и выпускаете его “для Поколения Z”. Опа, вот и “волшебный и веселый Интернет” возвращается.
Разработка
• Генеративный ИИ появился в сервисе VK для сбора и анализа ошибок в приложениях
• Should you learn C to "learn how the computer works"?
Маркетинг
• Социальная сеть noplace, смесь Twitter и Myspace для Поколения Z, заняла первое место в App Store
Кроссплатформа
• Simplify Network Management with CMPConnectivityMonitor in Compose Multiplatform
• rishad2002/concurrency-is-crucial-in-mobile-app-development-because-it-allows-an-app-to-perform-multiple-tasks-398faeb56f9d">Understanding Concurrency in Flutter
iOS
• ZLPhotoBrowser — фотопикер в стиле Wechat
• Адаптируем VoiceOver для людей
• Принципы SOLID на примере iOS-разработки
• dfs.techblog/evolution-of-sdui-in-ios-app-development-c53adade164d">Evolution of SDUI in iOS App development
• AsyncStream and AsyncSequence for Swift Concurrency
#ios
Разработка
• My programming beliefs as of July 2024
• Solving a math problem with planner programming
Маркетинг
• Figma отключит ИИ-функцию, которая копирует дизайн других приложений
Кроссплатформа
• Widget тесты с помощью ApprovalTests | Flutter / Dart
• Create PDF file in your app
• Exploring Hidden Treasures in Flutter: Lesser-Known Widgets Unveiled
iOS
• Типизированные ошибки (typed throws) в Swift с примерами
• Уязвимости в CocoaPods позволяли манипулировать библиотеками
• Макросы — напишут код за вас, но есть нюанс…
• Mastering the Swift Testing Framework
• Mastering ScrollView in SwiftUI. Scroll Phases
• Advanced Async Sequences in Swift
• Swift 6: Incrementally migrate your Xcode projects and packages
#ios
Figma отключит ИИ-функцию, которая копирует дизайн других приложений
Не, ну а как его еще тренировать? 🤖
• На прошлой неделе Figma представила ИИ-функцию Make Design, которая позволяет генерировать макеты и компоненты пользовательского интерфейса на основе текстовых подсказок. «Просто опишите, что вам нужно, и функция предоставит вам первый набросок», — так компания анонсировала запуск функции.
• Компания объяснила, что она не обучалась на контенте Figma, файлах сообщества или дизайне существующих приложений.
• Однако, при просьбе сделать дизайн погодного приложения, Make Design постоянно воспроизводит приложение Погода от Apple.
• По словам гендира Figma проблема заключается в слишком низкой вариативности, а вовсе не в использовании чужих приложений.
И что: сейчас Figma временно отключила функцию Make Design. До тех пор, пока команда не будет уверена, что может быть «ответственной за результаты». То есть, похоже, навсегда.
Android
• Маппинг данных в Kotlin
• sujathamudadla1213/when-should-you-use-stateflow-over-livedata-in-android-development-11e0030bf6c8">When should you use StateFlow over LiveData in Android development?
• simonmisles/understanding-viewmodel-persistence-during-configuration-and-screen-rotation-88227033b6df">Understanding ViewModel Persistence During Configuration and Screen Rotation
• hasina.anddev/android-adventure-flow-of-views-to-composable-flow-3b77bf2545da">Android Adventure: Flow of Views to Composable Flow
• mpavicic99/integrating-code-formatting-into-your-android-projects-663d0056dbe7">Integrating Code Formatting into Your Android Projects
#android
Пройдите новый опрос Developer Nation - ответьте на ряд вопросов о языках программирования, инструментах разработчика и платформах. Ваши ответы помогут людям и компаниям заметить новые тенденции и создать лучшие инструменты для поддержки разработчиков. Опрос охватывает 13 областей разработки, включая веб и мобайл, десктопы и облака, промышленный IoT, игры, машинное обучение и ИИ. Он доступен на 10 языках, в том числе и на русском. Каждый, кто завершит опрос, получит бесплатный виртуальный пакет с доступом к бесплатным ресурсам. И вот еще - как оказалось, не все сервисы оказались идиотами, так что поддержите Россию в этом мировом опросе. Вперед!
Разработка
• Самые высокооплачиваемые вакансии июня в сфере разработки приложений
• Роль дизайнера в проекте
• Что дальше после разработчика в Google
• Все софт скиллы — про преодоление страха и силу воли
• LLM Compiler оптимизирует код и компиляторы
• Aptabase — открытая аналитика для приложений
• Уязвимость в Rabbit R1 позволяет третьим лицам просматривать ответы ИИ
• How Google migrated billions of lines of code from Perforce to Piper
Маркетинг
• AAA-игры не пользуются спросом на iOS
• Directo упрощает прямое бронирование жилья с помощью расширения Chrome
• Маркетологи в мобайле: Ольга Бигбашева (Rendez-Vous)
Кроссплатформа
• PeopleInSpace — люди в космосе Kotlin Multiplatform
• mobileatexxeta/enhancing-flutter-apps-implementing-unique-charts-540fc1ab2749">Enhancing Flutter apps: Implementing unique charts
iOS
• Apple выпустит AirPods с камерами
• Мне кажется, или SwiftUI еще не готов к проду? — обсуждение на Reddit
• XCStrings Tool — константы для строк локализации
• А так ли нужны акторы в Swift Concurrency?
• Почему паттерн Синглтон небезопасен в iOS-разработке
• Swift 5.9: разбираем интероп и «женим» с С++
• Реактивный Swift Concurrency
• Mixing colors in SwiftUI and Xcode 16
• Displaying tips based on parameters and events with TipKit
• Build a Jenga game in Vision OS
• AdAttributionKit: What subscription apps need to know
#ios
Как мы искали применение техдолгу
Новая подборка всех статей за неделю - поиск применения App Clip и небезопасность Синглтона, инструменты Android-разработчика и победа над техдолгом в RuStore, архитектура кроссплатформенного многомодульного приложения, миллионы за считыватели QR-кодов, как мог бы выглядеть Windows Phone в 2024 и многое другое. Подключайтесь!
Разработка
• Google анонсирует новые Pixel 13 августа
• 8 микрокомпьютеров для работы с искусственным интеллектом
• ozanani/software-architecture-is-hard-71fe3ddafb60">Software Architecture is Hard
• Getting 100% code coverage doesn't eliminate bugs
Маркетинг
• Must-know LTV benchmarks for app marketers
Кроссплатформа
• sepehrtabeian/improve-your-dart-code-with-dependency-injection-understanding-loose-and-tight-coupling-4637968b925a">Improve Your Dart Code with Dependency Injection: Understanding Loose and Tight Coupling
• Advanced Theming Techniques in Flutter: Effortless Color Schemes
Android
• Scroll Block — трекер использования социальных сетей для Android
• Почему умение дебажить один из самых важных навыков для разработчика
• Как мы победили техдолг в RuStore
• 7 Kotlin Stdlib Features You Might Have Overlooked
• hrdebraj/unleashing-the-debugging-magic-cracking-android-native-shared-libraries-77efdfdf2556">Unleashing the Debugging Magic: Cracking Android Native Shared Libraries
• 4 Strategies to Secure API keys in Android Applications
#android
Android
• Топ-10 вопросов о корутинах 2024
• Как мы создали свой инструмент для доставки сборок Android-приложений
• Инструменты Android-разработчика
• Low performer в Android 2024
• How Baseline Profile Improve Skeelo Android App Performance
• A robust MVI implementation with Jetpack Compose
• How to Use ViewModel with Jetpack Compose
#android
RuStore станет обязательным
В Госдуму внесли законопроект, обязывающий продавать в России смартфоны и планшеты с установленным RuStore.
• В пояснительной записке необходимость принятия инициативы объясняется тем, что отдельные производители, прежде всего производители Apple, ограничивают установку российских приложений. Законопроект запрещает установку запретительных условий и обязывает продавать устройства с уже установленным на них магазином RuStore.
• Правда, iOS-версии магазина приложений RuStore еще нет. В случае принятия законопроекта до ее окончательного внедрения нововведения коснутся только устройств под управлением операционной системы Android.
• Однако, один из авторов проекта написал, что iOS-версия RuStore уже разработана и может появиться у пользователей техники Apple на следующий день после вступления закона в силу.
• Он отметил, что инициатива упростит жизнь российских разработчиков, которые сталкиваются с проблемами при размещении своих приложений в App Store. Принятие проекта также избавит российских пользователей от риска «нарваться на фейковые и мошеннические аппы, которых, в App Store хватает».
Предполагается, что изменения должны вступить в силу с 1 сентября 2025 года.
Android
• iCore — модульные компоненты для быстрого создания Android-приложений
• Как устроены аннотации в Kotlin. Часть 1
• Подробное руководство по Logcat в Android Studio с примерами
• Как избавиться от рекурсии, или Как мой код попал в Google
• Микширование аудиопотоков в Android
• Как мы победили техдолг в проекте Android RuStore
• What Are Dynamic App Shortcuts?
• Seamless Screenshot Testing for Compose with Screenshotbot
• Using Lists in Compose Previews
• The Starter kit for Android Platform Engineering
• Automatic (almost) resource generation from Figma for Compose
#android
Видео и подкасты за неделю @AppFiles
• (iOS Ru)
Как побеждать в конкурсах от Telegram
• (iOS En)
SwiftUI Draggable Tab Bar
• (iOS En)
SwiftUI Re-Orderable Tab bar
• (iOS En)
SwiftUI Swipe to Hide Header
• (iOS En)
Mastering Swift Testing: Run Serialized Tests with One Line of Code
• (iOS En)
Explicit ViewBuilder
• (iOS En)
My Favorite SwiftUI Updates in iOS 18
• (iOS En)
Exploring Predictive Code Completion in Xcode 16
• (iOS En)
Pomodoro Timer App - SwiftUI
• (And Ru)
Переходишь на Compose? Не спеши!
• (And Ru)
Как работает ТВ в Android TV?
• (And Ru)
Нужны ли Android-разработчики на заводе?
• (And Ru)
Gradle DSL изнутри
• (And Ru)
Kotlin DSL как единый источник правды для решения многих задач
• (And En)
Lifecycles, Coroutines and Scopes
• (And En)
Developer first Gradle builds
• (And En)
DataFrame: Kotlin's Innovative Approach to Data Structures
• (And En)
Texts, dates, numbers, currencies, plurals, etc. App internationalization guide
• (Crs Ru)
Multiplatform UI с Compose
• (Crs En)
Unit & UI Testing With Compose Multiplatform
• (Crs En)
Full Guide to Dependency Injection With Koin for Compose Multiplatform
• (Crs En)
Kotlin Multiplatform Libraries Evolution
• (Crs En)
React Native & Expo Router Course – Build a Meditation App
• (Dev Ru)
Чистый код – не значит правильный: clean code, паттерны, лучшие практики
• (Dev Ru)
Менеджмент — ловушка или лучший карьерный путь для разработчика?
• (Dev Ru)
Разработка библиотек с использованием подхода Request for Comments
• (Dev Ru)
Пишем приложение на Ktor
• (Dev Ru)
Kotlin Script: для кого, зачем и как
• (Dev En)
AI and Kotlin: A Perfect Mix
• (Dev En)
Go for Absolute Beginners – Tutorial
Делитесь тем, что вы смотрели!
#ios #android #mobile #video
Android
• Интеграция форматирования кода в Android-проекты
• Android Studio: debugging is a kind of hell for years and years
• akshaynagamalla23/on-device-machine-learning-with-tensorflow-lite-ec4544acfb50">On-Device Machine Learning with TensorFlow Lite
• nitinjain1236/complete-guide-to-ace-an-android-developer-interview-47fe6fdaf507">Complete Guide to Ace an Android Developer Interview
#android
В Tracer генеративный ИИ анализирует ошибки
В сервисе Tracer появился генеративный ИИ, который помогает анализировать сбои и проблемы в приложениях, а также предлагает решение для них.
• Tracer — инструмент VK для мониторинга стабильности приложений для Android и iOS в реальном времени (было видео про него на Мобиусе). При выявлении проблем сервис создает стектрейс — детальный отчет о сбое, который включает анализ конкретных зависимостей, разделов и модулей приложения, где мог произойти сбой.
• Новая ИИ-модель анализирует стектрейс и определяет возможные причины ошибки, выделяя наиболее вероятную, или же составляет перечень факторов, которые могли привести к сбою.
• После определения корневой причины нейросеть генерирует конкретные советы по устранению ошибки. Например, предлагает изменения в коде, обновление библиотек или другие действия, которые помогут избежать повторного сбоя.
• ИИ учитывает специфику приложения, его архитектуру и используемые технологии, что позволяет сервису давать рекомендации, адаптированные к конкретным условиям и потребностям разработчиков.
И что: в целом отличное применение ИИ, вопрос в том, можно ли будет доверять "советам" ИИ 1️⃣2️⃣3️⃣4️⃣5️⃣
Android
Команда Яндекс Практикума провела исследование и готова рассказать, как обстоят дела в найме начинающих Android-разработчиков: какие навыки требуются джуниорам для трудоустройства, о чём их спрашивают на собеседованиях и какого опыта достаточно, чтобы получить предложение о работе.
• Android-разработчики в 2024 году: какие нужны скилы и как проходит процесс найма
• Entity It — генератор Entity классов
• Stop Using the Wrong Loop! From for to onEach: Ultimate Guide to Kotlin Loops
• stevdza-san/remote-config-with-google-sheets-is-crazy-android-8fe032d6f294">Remote Config with Google Sheets is Crazy!
• Cancellation in Kotlin Coroutines
#android
Уязвимости в CocoaPods позволяли манипулировать библиотеками ☕️
Пишут, что уязвимы были миллионы iOS и macOS приложений. Конечно, это не совсем так, но все же.
• Первая из трех уязвимостей, обнаруженных EVA, связана с небезопасным механизмом проверки электронной почты, используемым для аутентификации разработчиков отдельных библиотек.
• Вторая уязвимость позволяла злоумышленникам получить контроль над Pod-ами, которые были заброшены их разработчиками, но продолжали использоваться приложениями. Эта функция работала 10 лет.
• Третья уязвимость позволяла злоумышленникам выполнить код на магистральном (trunk) сервере.
Открытой эксплуатации уязвимостей вроде не было. Мантейнеры CocoaPods все исправили, Исследователи советуют разработчикам, использующим CocoaPods в своих приложениях, всегда проверять зависимости CocoaPods и запускать сканирование безопасности для обнаружения вредоносного кода во всех внешних библиотеках.
Вчера появились слухи о том, что в новых AirPods планируют сделать ИК-камеры, которые смогут “видеть” пространство вокруг. Камера будет определять, когда окружение пользователя меняется, обычно из-за того, что он двигает головой. В частности, говорят, что если пользователь поворачивает голову и смотрит в определенном направлении, Apple Vision Pro будет знать, что нужно подчеркнуть звук, связанный с тем, на что он смотрит. Но вероятных возможностей, конечно, гораздо больше. Еще при выходе первых наушников я говорил, что потенциал такого носимого компьютера даже больше, чем у смартфона (и появления устройств нового поколения, вроде всяких Rabbit R1, только подтверждают это). Так что даже как то жаль, что Apple развивает AirPods такими неспешными темпами 🎧
Разработка
• Защита персональных данных в мобильных приложениях: как не нарушить закон
• Developer workflow tips no one tells you about
• The gifts of 40
Маркетинг
• Fortnite и Epic Games Store запускаются на iOS в Европе
Кроссплатформа
• Dropdown — выпадающее меню на Compose Multiplatform
• Xamarin alternatives for cross-platform mobile development
• Exploring the Viability of Cross-Platform UI Development with Compose Multiplatform
• How we built it: Creating the I/O Crossword puzzle, powered by AI
iOS
• Typed throws in Swift explained with code examples
• Consolidated ViewState
• SwiftUI and Accessibility: Creating Inclusive iOS Applications (eBook)
• Exploring the Navigation Split View
#ios
Android
• Как запускать задачи в фоне на Android. РАЗБОР
• Эволюция Android тестов с Marathon Test Runner
• Mastering SDUI: A Deep Dive into Server-Driven UI
• Migrating from Play Core Library
• Все видео droidcon Italy 2023
• Android Studio — Show Color and Icon Previews in Autocompletion
• duaaawan/pinterest-inspired-android-ui-development-with-jetpack-compose-1090d7b9ee99">Pinterest-Inspired Android UI Development With Jetpack Compose
• How LiveData Updates 100 Observers in Android
#android
Мне кажется, или SwiftUI еще не готов к проду? — обсуждение на Reddit
Примерно раз в полгода обсуждаем, готов ли SwiftUI к проду или нет. Автор главного поста в этом треде страдает от многих аспектов и его ответ - не особо:
SwiftUI делает простые вещи более простыми, а сложные — еще более сложными. Конечно, на SwiftUI очень приятно писать базовые приложения в стиле самой iOS, но по мере усложнения приложения это становится крайне неприятным.
Видео и подкасты за неделю @AppFiles
• (iOS Ru)
А так ли нужны акторы в Swift Concurrency?
• (iOS Ru)
Swift 5.9: разбираем интероп и «женим» с С++
• (iOS Ru)
Реактивный Swift Concurrency
• (iOS En)
SwiftUI Custom Time Picker Like Apple Timer App
• (iOS En)
iOS 18 TextField Selection API - SwiftUI
• (iOS En)
Xcode 16 Navigation Shortcuts in 12 Minutes
• (And Ru)
Как запускать задачи в фоне на Android. РАЗБОР
• (And Ru)
Эволюция Android тестов с Marathon Test Runner
• (And En)
Now in Android: 108 - Android 15 Beta 3, Google AI Studio, Gemini in Android Studio, and more
• (And En)
Compose UI for... a Light Switch
• (And En)
Write your own Kotlin lint checks
• (And En)
Tap it! Shake it! Fling it! Sheep it! - The Compose Gesture Animations Dance
• (And En)
Animations with Jetpack Compose
• (And En)
7 Features in Kotlin's Standard Library that You Might Have Overlooked
• (Crs En)
How to Share Resources in Compose Multiplatform
• (Crs En)
Expect/Actual in Kotlin Multiplatform
• (Crs En)
Kotlin Multiplatform Alchemy: Making Gold out of Your Swift Interop
• (Dev Ru)
Все софт скиллы — про преодоление страха и силу воли
• (Dev Ru)
Что дальше после разработчика в Google
• (Dsg Ru)
Роль дизайнера в проекте
Посоветуйте в комментариях интересные каналы по мобильной или не очень разработке?
#ios #android #mobile #video
iOS
• Использование TextRenderer для создания выделенного текста
• Как я участвовал в iOS Widget Challenge и что из этого вышло
• kalidoss.shanmugam/why-singleton-is-not-safe-in-swift-for-ios-development-c4e231cb49a7">Why Singleton is Not Safe in Swift for iOS Development
• ryan_willis/navigating-accessibility-a-swiftui-vs-uikit-comparison-40dfc94cfffa">Navigating Accessibility: A SwiftUI vs. UIKit Comparison
• How to quickly run your iOS app in a different language
• iOS 18 TextField Selection API - SwiftUI
#ios
Еврокомиссия предварительно выдала заключение, что Apple таки нарушает основополагающие принципы DMA. В данном конкретном случае, по мнению Еврокомиссии, сторонние разработчики должны иметь возможность бесплатно информировать клиентов об альтернативных возможностях покупки и прямо указывать цены за них. Но расследование ведется и в отношении CTF, и в отношении комиссии Apple за оплату в интернете, и за сложную установку сторонних магазинов. Грозит Apple 10% от мирового оборота, так что несложно предположить, что все эти вещи компания скоро отменит/изменит 🈸
Разработка
• Как мог бы выглядеть Windows Phone в 2024
• Our Experience with CodeRabbit: A Game-Changer in Automated Code Review
Маркетинг
• RuStore станет обязательным
• 6 шагов успешного продвижения e-commerce приложения — кейс Технопарк и Rocket10
• Apple нарушает закон ЕС о цифровых рынках
Кроссплатформа
• Flutter: Detecting Cyclic Dependencies in a Monorepo
• shakilbd/kotlin-multiplatform-vs-flutter-08f8f6178011">Kotlin MultiPlatform vs Flutter
iOS
• InjectionIII — Hot Reloading для Swift
• Running a package from Xcode Build phase
• Using multi-step animations in SwiftUI
• Using TextRenderer to create highlighted text
#iOS
Еще одна новинка WWDC - Apple анонсировала открытие нового API, позволяющего разработчикам интегрировать инструмент перевода Apple в свои приложения. Можно переводить строки, тексты, наборы строк и т.п. Работает все на основе собственного приложения Translate, его словарей и моделей - я так понял, что если их нет, то и перевода нет (впрочем, это не точно). Это так же означает, что работает все на устройстве и не требует денег. Так что если вы запарились копировать/вставлять все в онлайн переводчики - Apple все придумала за вас.
Разработка
• Как решать задачи на Leetcode
• ИИ в работе: как упростить жизнь мобильного разработчика
• Дали менторить джуна… Все пропало?
• Как устроен сетевой код в играх
• Как я развиваю свое приложение для хранения прочитанных книг?
• From the 80's to 2024 - how CI tests were invented and optimized
• Programmers Should Never Trust Anyone, Not Even Themselves
Маркетинг
• Владельцы iPhone платят миллионы за считыватели QR-кодов
• WWDC 24: что нового во встроенных покупках
• Google приостанавливает распространение игр на реальные деньги в Play Store
Кроссплатформа
• Архитектура кроссплатформенного многомодульного приложения
• Опыт внедрения Kotlin и Compose Multiplatform в продакшн-решение
• What can I do with “Extension Types” in Dart?
• Measure and optimize your Flutter app size
iOS
• Hero анимация в SwiftUI с помощью NavigationTransition
• Apple открывает Translate API
• Xcode 16 потребует 16 Гб для работы Predictive Code Completion
• Как мы искали применение App Clip… и нашли?
• AccessorySetupKit будет проще подключать сторонние устройства
• TPPDF — создание PDF для iOS и macOS приложений
• iOS-приложения под защитой Apple! Или нет?
• Exploring Translation Framework: Language Availability
• What’s new in SwiftUI for iOS 18
• Extend your Xcode Cloud workflows
• Is it just me or I still find SwiftUI lacking in major areas as my app scales up?
#ios