iOS
• Как iOS-команда Medium эффективно работает с legacy кодом
• Переводим текст в SwiftUI-приложении с помощью фреймворка Translation
• Как пиратские приложения обходят проверку App Store
• Почему Metal перестал быть страшным
• Локализация iOS-приложения за 1$ в 2024 году
• SafeDI — безопасная Compile-time инъекция зависимостей в Swift
• Non-Sendable types are cool too you know
• Async await in Swift: The Full Toolkit
• How to add animation to MeshGradient in SwiftUI
• alessandromanilii/olympic-logo-in-swiftui-dee37cbd53f1">Olympic Logo in SwiftUI
• iOS App Launch Optimization: How Cityflo Achieved 2.22x Faster Load Times
#ios
Конвейеры симуляции
В новом дайджесте конвейеры мобильного развертывания за $0 и нестрашный Metal, Selenoid без симуляции и странные описания в Play Store, адаптивная верстка на React Native, упадок мобильной разработки, оптимизация пейвола и многое другое. Подключайтесь!
Исследователи безопасности обнаружили интересную уязвимость в некоторых дейтинг-приложениях. Хотя ни одно из этих приложений не указывает точное местоположение в их профилях, они используют точное местоположение для функции «фильтры». Чтобы определить точное местоположение целевого пользователя, исследователи использовали новую технику, которую они назвали «предсказательной трилатерацией» (oracle trilateration). На первом этапе человек, который хочет определить местоположение своей цели, «приблизительно оценивает местоположение жертвы», например, на основе местоположения, отображаемого в профиле цели. Затем злоумышленник использует фильтры и по земле перемещается с определенным шагом “до тех пор, пока приложение не укажет, что жертва больше не находится поблизости, и так для трех разных направлений. Теперь у злоумышленника есть три позиции с известным точным расстоянием, и он может трилатеризировать жертву”.
Разработка
• Bumble и Hinge позволяли определять местоположение пользователей с точностью до 2 метров
• I recreated Shazam's algorithm with Go
Маркетинг
• Рынок приложений в первом полугодии 2024 года — отчет Apptica
• ИИ генерирует странные описания в Play Store
Кроссплатформа
• Адаптивная верстка на React Native
• App clip with React Native and New Arch (and Swift)
• Shake It Up with CMPShakeDetection: Integrating Fun in Compose Multiplatform
iOS
Автор приложения про “самолетный радар для малышки” написал о том, как он без затрат поднимает CI на основе Fastlane и GitHub Actions. Для больших проектов, наверное, не подойдет, но если у вас есть пет или инди проект - посмотрите. И для понимания процессов и для ускорения релизов.
• Конвейеры мобильного развертывания за $0
• How to programmatically parse the contents of an XCResult bundle
• Translating text in your SwiftUI app with the Translation framework
• How the Medium iOS team works effectively with legacy code
• Building an iOS Networking SDK
#ios
Google предлагает новый полный "путь обучения" по основам машинного обучения (Machine Learning Engineer). Как пишет Google, инженер по машинному обучению проектирует, создает, производит, оптимизирует, эксплуатирует и обслуживает ML-системы. В рамках этого курса вы пройдете через подборку курсов, лабораторных работ и тестов, которые позволят вам получить реальный практический опыт использования технологий Google Cloud, необходимых для работы такого инженера. После прохождения курса вы сможете получить сертификат Google Cloud Machine Learning Engineer. В потоке всего 15 курсов, каждый отдельный требует от 8 до 32 часов. Впрочем, все можно изучать самостоятельно и бесплатно.
Разработка
• Инженер по машинному обучению — новый путь обучения от Google
• I Built a 2D Game in 40 Minutes with Ebiten
• 80% of developers are unhappy. The problem is not AI, nor is coding
Маркетинг
• Как интернет-аптека снизила стоимость установок приложения и увеличила количество заказов на сайте
Кроссплатформа
• Desktop app development with Flutter
• Build an Uber clone with Flutter and Supabase
iOS
• DominantColors — главные цвета на изображении
• Apple выпустила библиотеку гомоморфного шифрования для Swift
• Командуем Алисой и ее Умным Домом с Apple Watch и других устройств Apple
• How to Tile Images in SwiftUI
• Xcode is actually a great IDE
• Navigation Patterns in SwiftUI
#ios
С мест снова докладывают, что нативная мобильная разработка пришла в упадок. Начинается все с алфавитного супа из сладких шаблонов проектирования, добавляется любовью всех программистов к усложнению, приправляется Биг Техом в лице Google и Apple, которые постоянно что-то меняют просто для того, чтобы менять, да еще берут за это 30%. Получается, что для мобильных устройств становится все сложнее разрабатывать приложения и разработчики покидают платформы из-за разочарования и раздражения. Куда покидают? В веб. Говорят, там такого нет, да еще все бесплатно. Так что если вам все надоело в мобайле - бросайте все ехай(те) на... веб.
Разработка
• Упадок мобильной разработки
• Going Indie: From Side Project to Going Independent
• Google's secret to painless code reviews
Маркетинг
• Оптимизация пейвола — история успеха
• Топ-3 приложения Short Drama стриминга зарабатывают $3 млн в день
Кроссплатформа
• Reducing App Size and Memory Usage in Flutter
• How to Combine animations with AnimatedBuilder
iOS
• Вышла бета-версии iOS 18.1 с зачатками Apple Intelligence
• Accessibility Setting Nuggets from iOS 18
• Async and Await in Swift: Advanced Guide for Senior iOS Developers
• Announcing Swift Homomorphic Encryption
• The Meme that gave me Imposter Syndrome
#ios
Перевел статью Uber о том, как они в предверии WWDC 2022 реализовывали Live Activity. Из интересного - прокидывание ресурсов из приложений в уведомления с помощью костылей, "полуописательный" DSL, отдаваемый сразу на iOS и Android, разработка Out Of App Service, отвечающего за балансировку количества обновлений, доставляемых в службу Apple Push Notifications Service, ну и в целом, как устроена разработка в компании размера Uber (планирование на полгода вперед, my ass!).
Разработка
• Личный бренд разработчика
• Роман Елизаров про Kotlin, корутины и работу в Jetbrains
• Ход королевы: как российское шахматное приложение покорило мир
• The Decline Of Mobile Development
• How Passwordless Authentication Works - A Deep Dive
• Perfectionism - one of the biggest productivity killers in the engineering industry
Маркетинг
• В Google Play появились «Коллекции» и «Комиксы»
• Epic удаляет Fortnite из Galaxy Store
• Сеть Chick-fil-A запустила в приложении игру и достигла наибольшего количества ежедневных загрузок в истории
• A Paywall Optimization Success Story
Кроссплатформа
• Fantasy Premier League — фэнтези-футбол на Kotlin Multiplatform
• Особенности сервиса Яндекс Про и будущее Flutter
• Flutter Dev Podcast: навигация во Flutter
• Why Kotlin Multiplatform Teams Should Share Source, not Binaries
iOS
• Водитель приедет через 3 минуты: реализация Uber Live Activity на iOS
• Разбор SwiftUI проекта стартапа с AI на борту
• Вам не нужно хранилище в приложении
• HealthLens — экспорт данных для HealthKit
• SwiftUI app lifecycle: issues with ScenePhase and using AppDelegate adaptors
• Using @DebugDescription in Xcode 16
• Building Swift Executables
• Creating a Sunburst Chart
#ios
Видео и подкасты за неделю @AppFiles
• (iOS Ru)
Разбор SwiftUI проекта стартапа с AI на борту
• (iOS Ru)
Вам не нужно хранилище в приложении
• (iOS En)
SwiftUI Coverflow Carousel
• (iOS En)
My Story & iOS Dev Career Advice
• (iOS En)
Building iOS 18 Photos App UI
• (iOS En)
Zoom Transitions SwiftUI
• (iOS En)
Custom Operators in Swift
• (And Ru)
Роман Елизаров про Kotlin, корутины и работу в Jetbrains
• (And En)
Advanced layout animations in Compose (Shared elements)
• (And En)
Refactoring to Expressive Kotlin
• (And En)
From Zero to Billions: Building a High-Performance Kotlin App in Two Months
• (And En)
Managing Complexity With Ktor
• (Crs Ru)
Flutter Dev Podcast: навигация во Flutter
• (Crs Ru)
Особенности сервиса Яндекс Про и будущее Flutter
• (Crs En)
Permission Handling in Compose Multiplatform
• (Crs En)
Create a Splash Screen in Compose Multiplatform for iOS & Android
• (Crs En)
Uniting Native SDKs into Kotlin Multiplatform
• (Crs En)
Compose Multiplatform on Mobile at Instabee for Over a Year
• (Dev Ru)
Личный бренд разработчика
• (Dev Ru)
Ход королевы: как российское шахматное приложение покорило мир
• (Dev En)
Building an Effective Data Product Strategy
• (Dev En)
System Design Concepts Course and Interview Prep
Что вы посмотрели за неделю?
#ios #android #mobile #video
Не особо верилось, но в магазине AltStore PAL появились первые сторонние приложения - целых четыре штуки. Это iTorrent, торрент-клиент для iOS, который можно использовать без джейлбрейка iPhone или iPad, и qBitControl, удаленный клиент qBittorrent для iOS-устройств. Плюс PeopleDrop — это ориентированная на знакомства «платформа социальных открытий», которая соединяет вас с другими пользователями в реальном мире, когда они проходят мимо. Кроме того, есть приложение UTM SE для эмуляции других операционных систем, таких как Windows, Linux и macOS, на iOS. Apple запрещает все торрент-приложения в своем собственном магазине iOS, утверждая, что они «часто используются для нарушения прав третьих лиц». Но теперь, когда Закон ЕС о цифровых рынках ослабил возможности технологического гиганта по контролю за своим «огороженным садом», пользователи iOS в пределах континента могут получить немного больше пиратства свободы.
Разработка
• Инженеры-программисты не являются (и не должны являться) техниками
• Результаты опроса разработчиков Stack Overflow 2024
• Mistral выпускает Large 2 как ответ ChatGPT и Llama
• The Process That Kept Dying
Маркетинг
• Как управлять вниманием пользователя
• Building an Effective Data Product Strategy
Кроссплатформа
• Полный гайд по тестированию на Flutter. Часть 3: Mocking и Stubbing
• Пишем собственный макрос на Dart 3.5: глубокий разбор
• Free Flutter Icons by Hugeicons
iOS
• В AltStore PAL появились первые сторонние приложения
• Что такое guard в Swift — вопросы с собеседований
• Разработка игр под Apple Vision Pro: ARKit, realityKit, Reality Composer Pro
• Exploring Indie Life: Reducing Friction by CI/CD
#ios
Результаты опроса разработчиков Stack Overflow 2024
Erlang остается самой "выгодной" для разработчиков технологией. Swift и Objective-C идут почти вровень. По сравнению с прошлым годом Swift наконец-то обогнал своего старого конкурента, а Kotlin заметно отстает по зарплате. Однако оплата у всех значительно снизилась - например у Swift с $86,897 в 2023 до $75,184 в 2024. И это еще ничего, Objective-C
"подешевел" с $90,000 до $73,648, а Kotlin с $78,207 в год до $65,815.
Впрочем, зарплаты снизились почти по всем языкам, кроме Nim, Erlang и Apex.
Android
• Google объединяет 3 команды, чтобы сделать Play Store лучшей платформой для разработчиков
• Kotlin’s :: Operator Explained
• mirsaidoff/introduction-of-new-dependency-management-version-control-and-kotlin-dsl-migration-4a49bfa09065">Introduction of new Dependency Management (Version Control) and Kotlin DSL migration
• KrishVerma7/mvi-made-easy-a-beginners-guide-to-mvi-with-example-and-comparison-with-mvvm-57394b02b21e">MVI Made Easy: A Beginner’s Guide to MVI with Example and comparison with MVVM
#android
«У нас закончились столбцы» — лучшая худшая кодовая база
Хотите ужасов? Их есть у меня ☺️ Джимии Миллер написал о лучшей худшей кодовой базе, которую он видел. В ней БД была полным месивом, важные данные редактировались вручную, главные экраны загружались по неск минут. И все же... Она была свободна. От архитектуры, согласований, стилей кода и прочего.
За всю мою последующую карьеру мне никогда не доводилось работать в такой удивительно уродливой кодовой базе. Все уродливые кодовые базы, с которыми я сталкивался потом, так и не преодолели свою потребность в согласованности. Возможно, в данном случае кодовая база была покинута «серьезными» разработчиками задолго до этого. Остались лишь разношерстные стажеры и младшие разработчики. А может быть, дело в том, что между этими разработчиками и пользователями не было никакой прослойки: ни переводов, ни требований, ни карт. Просто вы стоите за столом представителя службы поддержки и спрашиваете, как сделать их жизнь лучше.
Видео и подкасты за неделю @AppFiles
• (iOS Ru)
Почему Metal перестал быть страшным
• (iOS Ru)
Локализация iOS-приложения за 1$ в 2024 году
• (iOS En)
SwiftUI Floating Bottom Sheets
• (iOS En)
How to Refactor SwiftUI into Reusable Views
• (iOS En)
SwiftUI App Intro Animation's - Shape Morphing Effect
• (iOS En)
Xcode File Headers and Macros
• (iOS En)
How to Use TextField Keyboard Focus in SwiftUI with FocusState
• (And Ru)
Нужно ли учить Java для Android-разработки в 2024
• (And En)
Compose Tips for Delightful UI
• (And En)
Compose Migration Side Effects - What Can Go Wrong?
• (And En)
Building Libraries for the Next 25 Years
• (And En)
Turbocharge Your Data: Harnessing Kotlin and gRPC to Handle Real-Time Data From Connected Cars
•(And En)
Grow with the Flow: How Kotlin Flow Became a Game Changer for our Business
• (And En)
Coroutines: Concurrency in Kotlin
• (Crs Ru)
KMP на ОС Аврора: проблемы и пути их решения
• (Crs En)
The Kotlinx DateTime API for Compose Multiplatform
• (Crs En)
How to Implement Drag & Drop in Jetpack Compose
• (Crs En)
Hitchhiker’s Guide to Kotlin Multiplatform Libraries
• (Dev Ru)
Алгоритмическая сессия на собеседовании + Все собеседования
• (Dev Ru)
Автоматическая генерация верстки под Server-driven UI из макетов Figma
• (Dev Ru)
Учимся договариваться о деньгах — Офферы, Зарплаты, Повышение
• (Dev Ru)
Дизайн системы — это слишком модно, возможно они вам не нужны
• (Dev En)
How to get a FAANG Dev Job in your 40s
Что вы посмотрели за неделю?
#ios #android #mobile #video
Android
• ImageCropView — обрезка изображений в Jetpack Compose
• Selenoid без симуляции: настройка, отладка и автоматизация на физическом Android-устройстве
• anandgaur22/android-interview-questions-with-kotlin-coroutines-3870a714924a">Android Interview Questions with Kotlin Coroutines
• Mastering Regex Groups
• Advanced layout animations in Compose (Shared elements)
#android
App Highlights в Google Play генерирует странные обобщения
Google пытается внедрить искусственный интеллект во все, начиная с рабочих пространств, таких как Docs и Sheets, и заканчивая голосовыми помощниками на Android, где Google Assistant освобождает место для Gemini. Аналогичным образом усилия ИИ касаются и Play Store, где якобы превосходный навык обобщения контента должен облегчить процесс установки и принятия решений о покупке благодаря новому разделу App Highlights.
• Новый раздел начал появляться на отдельных страницах приложений недавно вместе с виджетом “Коллекции” от Google. Он должен содержать список особенностей приложения, объясняющий основные моменты и дополняющий предоставленные разработчиком изображения и скриншоты.
• Но что-то пошло не так и ИИ ожидаемо начал галлюцинировать. Так, например, для WhatsApp ИИ выбрал редактирование аудио и аудиоформаты в качестве основных функци. Такое же описание было замечено и в приложении Phone by Google, что позволяет предположить, что это может быть текст-заготовка до следующего обновления. Но это в любом случае выглядит некрасиво.
• Описание приложения Google немногим лучше, но в нем также упоминалась «система навигации на основе жестов, аналогичная iPhone X» в качестве ключевой особенности.
И что: а) внедрять ИИ все таки нужно с осторожностью; б) улучшения Google Play как обычно делают все только хуже.
Android
• Вопросы доступности при использовании кастомного макета стопки карт
• Нужно ли учить Java для Android-разработки в 2024
• Architecture related decisions in Android - Response classes
• galou.minisini/advanced-kotlin-coroutine-cheat-sheet-for-android-engineer-15e0d180fc1f">Advanced Kotlin Coroutine Cheat sheet
• sandeepkella23/assisted-injection-a-new-update-in-hilt-0e142cdd344e">Assisted Injection a New Update in Hilt
#android
Apple выпустила библиотеку гомоморфного шифрования для Swift
Гомоморфное шифрование - это криптографическая техника, которая позволяет производить вычисления на зашифрованных данных, не раскрывая операционному процессу лежащие в их основе незашифрованные данные.
В Apple используют гомоморфное шифрование в своей работе, поэтому они рады поделиться этой Swift-реализацией с сообществом, чтобы другие могли использовать ее и вносить свой вклад.
Одним из примеров использования этой реализации в iOS 18 является новая функция Live Caller ID Lookup, которая предоставляет услуги определения номера абонента и блокировки спама. Live Caller ID Lookup использует гомоморфное шифрование для отправки зашифрованного запроса на сервер, который может предоставить информацию о телефонном номере без того, чтобы сервер знал конкретный номер телефона, указанный в запросе.
Android
• Giphy Trending — популярное с Giphy
• Kotlin Design Patterns & Best Practices - Part 1: Build a Chess Game
• imara.dharma/android-mvvm-architecture-interview-questions-785840b7dac6">Android MVVM Architecture Interview Questions
• Command Your User Inputs with Jetpack Compose— Text Field Features Hidden in Plain Sight
#android
Топ-3 приложения Short Drama стриминга заработали $3 млн в день
Весной я писал про новый тренд в стриминге - «короткометражные драмы» (Short Drama). Тогда остался вопрос - сколько продлится этот бум короткометражек. Пока рост не заканчивается.
• AppFigures показывает, что в прошлую среду три лучших коротких стриминга — DramaBox, ShortMax и ReelShort — заработали чуть больше 3 миллионов долларов. И все это всего за один день.
• Из этих 3 миллионов долларов DramaBox получил 913 тысяч долларов, ShortMax — 640 тысяч долларов, ReelShort — 581 тысячу долларов, а остальное Apple и Google забрали себе в виде налогов.
• Интересно также, что хотя большая часть доходов поступает, как и следовало ожидать, из App Store, значительный кусок денег все же приходится на Google Play. Почти половина для ShortMax.
• Все становится еще интереснее, когда мы смотрим на рост. У ReelShort, который первый побил рекорды в начале этого года, доходы по сравнению с январем выросли на 34%. Можно было бы сказать, что это очень хороший показатель, но DramaBox превзошел его с 235%, и, прежде чем вы слишком поразитесь этой цифре, доход ShortMax в этом году вырос на 642%.
И что: вправо вверх! Трудно понять, чем так привлекательны эти приложения и их контент, впрочем явно я не целевая аудитория. Ясно, что они ловко монетизируют своих пользователей. В отличие от традиционных стримеров, которые берут подписку, они берут плату за за эпизоды, но с помощью валюты в приложении. Как это делают и самые популярные игры. Так что стоит поучиться этому.
Android
• Что такое serializable и parselable объекты — вопросы с собеседований
• Command Your User Inputs with Jetpack Compose— Text Field Features Hidden in Plain Sight
• Lint Revisit: Providing Alternatives
• Creating Scalable Composables in Jetpack Compose
• Accessibility Considerations with Stacked Cards Custom Layout
• Using kotlin-inject in a Kotlin/Compose Multiplatform project
#android
❓ Только начинаете свой путь в iOS-разработке или готовитесь к этому?
👉 Представьте, что ваши приложения работают как часы, данные сохраняются и синхронизируются безупречно, пользователи довольны и благодарны, а заказчики в восторге.
Вы освоили SwiftData и умеете писать надежный слой хранилища, который делает ваши приложения быстрыми и эффективными!
🔆 Присоединяйтесь к открытому вебинару «Внедряем SwiftData в приложение» 30 июля в 20:00 мск и реализуйте это!
Урок подходит как начинающим, так и продолжающим iOS-разработчикам. После вебинара вы сможете писать локальное хранилище на SwiftData и использовать его для сохранения, запроса и синхронизации данных.
👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие:
https://otus.pw/NqY3/?erid=LjN8Jtghb
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Главные неприятности разработки
Продолжаю обозревать исследование Stack Overflow 2024 года. Самое распространенное недовольство разработчиков с большим отрывом - технический долг. Второе место практически делят сложность стека разработки, стека развертывания и надежность инструментов/систем. Далее идет отслеживание работы, обновления основных компонентов, количество используемых инструментов и необходимость показывать собственный вклад в работу. На последнем месте обеспечение безопасности. А что вам доставляет недовольство?
Android
• Paperize — смена обоев с Kotlin, Jetpack Compose и Material 3
• Blinkit Interview Experience for SDE — Android Role 2024
• Room Tutorial(Part I): Grasping the Fundamentals
• The Path from Appium to Kaspresso
#android
CodeRun: онлайн-тренажер для улучшения навыков программирования
Я часто пишу о том, что в разработке необходимо постоянное совершенствование. А что за совершенствование без практики? Будь то LeetCode, пет-проекты, даже чтение статей - все должно закрепляться созданием кода.
CodeRun - тренажер от Яндекса, который поможет улучшить ваше программирование. В нем есть каталог заданий, который составляли эксперты Яндекса и приглашенные эксперты, а сложность можно настроить под свой уровень знаний. Топ-фичи платформы: наличие тематических и авторских подборок, а также сезонные турниры. В последних можно получать призы за достижения — лидерам в рейтинге вручают мерч, сертификаты и другие плюшки.
2 сезон уже стартовал, а значит, самое время залетать и посоревноваться за ценные призы. Лучшие из лучших получат возможность попасть в штат Яндекса по упрощенному формату найма!
Весной Google объявил о масштабных перестановках в своих внутренних командах, отвечающих за аппаратное и программное обеспечение. Такие проекты, как Pixel, Chrome, Chrome OS и Android слились в «Платформах и устройствах». Тогда это преподносилось так, что компания сможет удвоить усилия в области искусственного интеллекта. Сейчас внутри этого направления возникла подгруппа, которая занимается экосистемой для разработчиков. В ней объединись команды инструментов для создания приложений (Android Studio), распространения приложения среди потребителей (Google Play) и обеспечения безопасности приложений (Ecosystem Trust). Цель - поддерживать разработчиков на протяжении всего жизненного цикла приложений, будь то создание и тестирование приложений, их выпуск и обновление, привлечение пользователей, повторное привлечение пользователей, удержание пользователей, помощь в монетизации, и все это при поддержке безопасности платформы. Пока неизвестно, как именно новая команда надеется добиться улучшений, но есть надежда, что объединение всех команд, которые раньше отвечали за разные части пути разработчика, поможет Google быстрее реагировать на проблемы и отзывы.
Разработка
• Вышла Llama 3.1, самая большая открытая модель ИИ
• Software engineers are not (and should not be) technicians
Маркетинг
• С какими проблемами сталкиваются дизайнеры, делая сервис для арабских пользователей
Кроссплатформа
• Как работают изоляты в Dart?
• Migrating A Flutter Application From GetIt To Bloc
• The Future of Flutter