Сегодня последний день в опросе Developer Nation, так что всех призываю еще раз воспользоваться шансом - пройти опрос, внести свой вклад в будущее сообщества и получить ценные призы, вплоть до MacBook Pro 13" M2.
Разработка
• CodeSignal запускает платформу обучения с ИИ-помощником
• 7 must-know object-oriented software patterns (and their pitfalls)
• Mobile search: which pattern should you choose?
Маркетинг
• Сколько зарабатывает Medium на мобильных подписках?
• How to get your first 10,000 mobile app installs
Кроссплатформа
• hello_chirag/top-6-react-native-best-practices-for-2024-d90763aeedfc">Top 6 React Native Best Practices for 2024
• Extreme UI Adaptability in Flutter — How Google Earth supports every use case on earth
iOS
• Масштабирование iOS в Bumble: вызовы
• Как поддерживать недельный релизный цикл и ничего не забывать
• Вопросы с собеседований: Что такое модификатор памяти weak в Swift
• Delta: эмулятор классических видеоигр для iOS
• Disabling Core Data CloudKit Logging
• Screen vs View in SwiftUI
• Create an animated transition with Matched Geometry Effect in SwiftUI
• Senior iOS Tip: Xcode Templates
#ios
Пришел порекомендовать вам онлайн-вебинар, пропустить который будет большим упущением!
Тема: «Реклама в вашем приложении: от регистрации в РСЯ до начала монетизации»
Дата и время: 14 февраля 12:00
Разберемся с экспертом, как зарегистрироваться в Рекламной сети Яндекса, интегрировать Yandex Mobile Ads SDK в приложение на Android, настроить свой первый рекламный блок, начать показ рекламы и получать доход.
Регистрируйтесь прямо сейчас — будет полезно и интересно https://bit.ly/3SVZPrp?erid=LdtCJxq7T
Кто ты, обманывающий на технических собеседованиях?
Подборка всех материалов за прошлую неделю - SwiftData и код доставки пиццы на Android, будущее swift-testing и мастерство программирования, обман на технических собеседованиях с помощью ChatGPT, самые скачиваемые и зарабатывающие приложения в России в январе, Мобильные игры в продуктовых приложениях и многое другое!
С мест докладывают, что в бете 17.4 для европейского союза перестали работать PWA-приложения. Вместо этого они открываются в Safari. Как шутят в Х, “наконец-то iOS одинаково относится ко всем браузерам, когда дело доходит до PWA. Раньше только Safari мог устанавливать и запускать PWA-приложения. С выходом бета-версии iOS 17.4 в ЕС ни один браузер не может устанавливать PWA-приложения, даже Safari”. Судя по всему, связано это с внедрением альтернативных браузеров, так что все в стиле Apple - “черт с ними, сделаем, но чтобы все взвыли”.
Разработка
• Apple продолжает работу над складными устройствами
• Новая ИИ модель Apple может редактировать изображения с помощью естественного языка
• Design Perfect Date Picker
Маркетинг
• SocialPeta выпустила Глобальный Аналитический Доклад о мобильных приложениях за 2023 год
Кроссплатформа
• Реализация чата на Flutter при помощи вебсокетов
• Как создать shader в Flutter для эффектной анимации в приложении?
• Best Flutter Packages Of 2023
• narendardiscover/flutter-screen-navigation-d49349178f11">Flutter: Screen Navigation
• Tracking Lifecycle changes in Compose Multiplatform: IOS and Android
iOS
• Glur: прогрессивный блюр для SwiftUI
• Записываем видео App Preview в симуляторе Xcode
• Стеки и Очереди в Swift
• Using SwiftNIO - Channels
• The power of self-sufficient features
• What is @testable Annotation in Swift?
• jipedev/first-thoughs-about-the-composable-architecture-in-ios-f2dff99216f5">First thoughs about The Composable Architecture in iOS
• sharmadhruv1516/building-a-passcode-lock-screen-in-swiftui-a-step-by-step-guide-3870b06f76df">Building a Passcode Lock Screen in SwiftUI: A Step-by-Step Guide
#ios
А Android 15 готовится облегчить использование смартфона для пожилых
В Android 14 QPR3 вы можете обнаружить скрытую страницу для новой функции под названием Easy pre-set. Этот режим, судя по всему, призван облегчить использование Android для людей, которые не так подкованы в технологиях или у которых могут быть проблемы со зрением.
1. Согласно строкам конфигурации, простой режим оптимизирует пользовательский интерфейс Android для "улучшения читаемости и простоты навигации". В частности, он "увеличивает иконки и текст, добавляет контрастность и жирный шрифт, а также добавляет кнопки навигации в нижнюю часть экрана".
2. Хотя можно вручную запустить страницу настроек для новой функции легкой предварительной настройки, включить новый режим пока невозможно.
3. Хотя эта функция присутствует в версии Android 14 QPR3 Beta 1, маловероятно, что Google планирует выпустить ее вместе со стабильным обновлением Android 14 QPR3 в июне. Более вероятно, что она выйдет в составе Android 15 позже в этом году
И что: многие другие OEM-производители предлагают подобную функцию, а в Google Play есть сторонние лаунчеры, предназначенные для пожилых или менее подкованных в технике людей. Но все равно приятно видеть, что Google добавляет подобную функцию в стоковую версию Android.
Android
• Apk.sh: реврерс-инжиниринг Android-приложений
• Intersection Types in Kotlin
• Kotlin’s Sealed Interfaces in Android
• Jetpack Compose 🚀 Beginner’s Series
#android
Вчера еще обозрел топ скачиваемых и зарабатывающих приложений в России и, в общем-то, там без особых изменения. Зато занятно было понаблюдать за всплеском Wink - в ноябре на фоне запуска “Слова пацана” он поднялся аж на 161 позицию в топе, в декабре стал номером 1(!) по загрузкам, а в январе снова отправился в "отрицательный рост" - в прошлом месяце он был уже 18. Попутно приложение выпилили из App Store, так что сказать о доходах практически невозможно, да и думается большинство подписок идет через сайт. Но как один сериал бустанул приложение - эталонный кейс :) Если кто читает из Wink - напишите, сделаем интервью.
Разработка
• Когда следует отказаться от проекта, который не работает?
• Эксперимент: насколько сложно обмануть на технических собеседованиях с помощью ChatGPT?
• В Roblox заработал переводчик чатов в реальном времени на основе ИИ
• Scaling smoothly: RevenueCat’s data-caching techniques for 1.2 billion daily API requests
• GitHub Actions: Introducing the new M1 macOS runner available to open source!
• Why We Can't Have Nice Software
Маркетинг
• Three core psychological factors in marketing (and how to integrate them)
Кроссплатформа
• DVDB: кроссплатформенная векторная база данных
• How to use Resources in Compose Multiplatform
• Flutter Testing: A Comprehensive Guide to Unit, Widget, and Integration Testing
iOS
• Кто ты, SwiftData
• Oversimplifying SwiftUI View Code using ViewState and SwiftUI’s ViewBuilder
• ugurelsevket/swift-developer-roadmap-2024-with-7-samples-app-8d6fffd9c468">Swift Developer Roadmap 2024: With 7 Samples App
• Building a Dynamic TreeView in SwiftUI
• The Swift Method Dispatch Deep Dive
• App Preview Videos Capturing using the Xcode simulator
#ios
📅 14 февраля, 16:00
⏰ Как удаленно тестировать мобильные приложения?
Коллеги из @Selectel запустили новый продукт – ферму мобильных устройств. Это инфраструктурное решение для удаленного тестирования и сборки приложений. А 14 февраля они проводят вебинар, на котором покажут, как проводить параллельные тесты приложений из любой точки мира. Без закупки техники и настройки инфраструктуры. Расскажут, как использовать ферму мобильных устройств для мануального тестирования и автотестов.
Программа вебинара:
◽️Что такое мобильная ферма и как она устроена?
◽️Чем ферма отличается от других методов тестирования?
◽️Мануальное тестирование и автотесты с Appium с помощью фермы.
◽️Сравнение тестов на телефоне, подключенном к ноутбуку, эмуляторе и мобильной ферме Selectel.
Зарегистрируйтесь на мероприятие и и получите эксклюзивный бонус для тестирования вашего приложения: https://slc.tl/2v6p0Реклама ООО «Селектел» erid 2Vtzqv3ctjz
Самый популярный пост в программинге на Reddit - про ИИ. О том, что модель может код и напишет, но все остальное - уточнение требований, переговоры, технический дизайн, анализ компромиссов и интеграцию в кодовую базу - не сделает. Доля правды в этом, конечно, есть, и программистов ИИ пока не заменит. Другой вопрос, сколько времени у ИИ займет научиться всему этому. Судя по темпам развития не так уж и много.
Разработка
• Написание кода никогда не было самой сложной частью
• Самые высокооплачиваемые вакансии января в сфере разработки приложений
• Пережил ли Evernote свой расцвет?
• Apple выпустила язык программирования Pkl для описывания конфигураций
• Найти работу в кризис: джун, мидл и сеньёр
• Вопросы с собеседований: Что такое хеширование
• Проектирование невизуальных интерфейсов: основа, смыслы, примеры
• Подходы и инструменты кастомизации процессов разработки
• Кем вы видите себя в компании через 5 лет? Отвечает Head of Mobile
• Podlodka: NeRF – последний шанс для VR?
• Топ-5 примеров комментирования кода
• When should you give up on a project that doesn't work?
• Detecting Speech and Music in Audio Content
Маркетинг
• Самые скачиваемые и зарабатывающие приложения в России в январе 2024
• План самообразования по профессии продуктового аналитика
• Peter Yang’s 10 rules for making products that customers love
Кроссплатформа
• Flutter Dev Podcast #44: Как стать Flutter-разработчиком? Часть 2
• Experimenting with Composable Presenters in Kotlin Multiplatform
• Creating a Figma clone app with Flutter and Supabase
iOS
• На долю ЕС приходится 7% мирового дохода App Store
• Как избежать утечек памяти при использовании Task, Combine, CurrentValueSubject и AsyncStream
• WhisperKit: распознавание речи с помощью Whisper
• Поваренная книга SwiftUI: использование AppStorage и SceneStorage для хранения состояния
• Apple объявила о более чем 600 приложениях, оптимизированных для Vision Pro
• Remaking the app store
• Case insensitive string comparison in Swift
• Support Swift macros with CocoaPods
• Demystifying Parameterized Protocols in Swift
• Scaling iOS at Bumble
• Migrating Our iOS Build System from Buck to Bazel
#ios
Apple открыла язык программирования Pkl для создания конфигураций
Разработчики создали Pkl (произносится как "Пикл"), потому что считают, что конфигурация лучше всего проявляется как смесь между статическим языком и языком программирования общего назначения. Они хотят взять лучшее из обоих миров; предоставить язык, который является декларативным и простым для чтения и написания, но расширен возможностями, заимствованными из языков общего назначения. При написании Pkl вы можете использовать привычные функции языка, такие как классы, функции, условия и циклы. Вы можете создавать уровни абстракции и обмениваться кодом, создавая пакеты и публикуя их. Самое главное, что Pkl можно использовать для решения различных задач конфигурирования. Его можно использовать для создания статических конфигурационных файлов в любом формате или встраивать в качестве библиотеки в среду выполнения другого приложения.
Pkl разработали с тремя главными целями:
1. Обеспечить безопасность, отлавливая ошибки валидации до развертывания.
2. Масштабирование от простых до сложных сценариев использования.
3. Чтобы было приятно писать, благодаря лучшим в своем классе интеграциям с IDE.
Подробнее в анонсе или на официальном сайте.
Android
• Предварительный просмотр представлений Jetpack Compose за считанные секунды
• Podcaster: реализация Jetpack Media3 в реальном приложении
• Запускаем автотесты Android на EMCEE
• Мобильные игры в продуктовых приложениях
• Разбор кода приложения по доставке пиццы
• В Android Studio заработал Device streaming
• Изи freestyle Android приложения на Kivy (Python), Google collab и ваш не любимый ChatGPT
• What Every Android Developer Should Have in Their GitHub?
• Abstraction design: Introduction
• Crafting Android bytecode analysis tooling using a secret ingredient
• How We Made the CES 2024 AR Experience: Android Virtual Guide, powered by Geospatial Creator
• Jetpack Compose: Divider
#android
Сколько зарабатывает Medium на мобильных подписках
Все мы знаем Medium по назойливому пейволу - многие посты в блогах предназначены только для подписчиков. И если вы всегда хотели узнать, сколько же дохода они приносят, то у AppFigures уже есть ответ.
1. С 2017 года доходы Medium от мобильных устройств выросли на 6,968%.
2. В 2023 году чистый доход (после налога Apple и Google) Medium вырос на 14% в годовом исчислении и составил 9.4 млн долларов. И это только подписки на мобильных устройствах, не считая веб.
3. 2023 год не был самым быстрым годом роста выручки Medium, но он стал годом с наибольшей выручкой. Самым “быстрым” годом для Medium стал 2018-й, когда рост на 1061% привел к первому миллиону долларов с мобильных устройств, а второй по темпам роста год — 2019, когда доходы выросли еще на 173%.
4. США — крупнейший поставщик денег Medium, на долю которого приходится более 57% всех доходов. Великобритания, Индия, Канада и Австралия замыкают пятерку лидеров, каждый из которых имеет однозначный кусок пирога.
И что: в то время, когда все больше изданий отказываются от подписки, интересно видеть, как краудсорсинговое издание все-таки может монетизироваться.
Стриминг устройств в Android Studio перешел в стадию открытого альфа-тестирования
Device streaming в Android Studio позволяет безопасно подключаться к удаленным физическим Android-устройствам, размещенным в защищенных центрах обработки данных Google.
1. Это самый быстрый и простой способ протестировать приложение на физических устройствах некоторых новейших моделей Android, включая Google Pixel 8 и 8 Pro, Pixel Fold, некоторые устройства Samsung и другие. Кроме того, сервис поддерживает некоторое количество старых устройств, так что у вас будет доступ к широкому спектру конфигураций и уровней API.
2. После подключения к устройству вы можете развернуть свое приложение, видеть дисплей, взаимодействовать с устройством (в том числе поворачивать или разворачивать его) и делать все остальное, что можно делать с устройством через прямое ADB-соединение по SSL — и все это не выходя из Android Studio.
3. Когда вы закончите использовать устройство, Google сотрет все ваши данные и сбросит его на заводские настройки, прежде чем предоставить его другому разработчику.
4. Во время Open Alpha тарификация отключена. Это означает, что вы и ваша команда можете использовать потоковую передачу данных с устройств в Android Studio бесплатно. Однако использование ограничено определенным количеством часов в день для каждого проекта.
Видео и подкасты за неделю:
• (iOS Ru)
Как поддерживать недельный релизный цикл и ничего не забывать
• (iOS En)
SwiftUI: Stretchy Slider Like in iOS 17
• (iOS En)
How To Save A Struct In SwiftData
• (iOS En)
Introducing Vortex: High-performance particle effects for SwiftUI
• (iOS En)
PencilKit and SwiftUI: Build a Collaborative Drawing App
• (iOS En)
SwiftUI: Universal Hero Effect
• (And Ru)
Мобильные игры в продуктовых приложениях
• (And Ru)
Разбор кода приложения по доставке пиццы
• (And Ru)
Запускаем автотесты Android на EMCEE
• (And En)
Now in Android: 99 - Jetpack Compose, Google AI on Samsung Galaxy, Play recovery tools, and more
• (And En)
The Ultimate Beginners Guide to Realm DB on Android (CRUD with Multi-Relations)
• (And En)
How to Implement Swipe to Delete with Material3
• (And En)
Intersection Types in Kotlin
• (Crs En)
Build Swift Windows News App with WinSDK
• (Dev En)
Google Cloud region is Johannesburg, MobileDiffusion, and more dev news!
Что вы посмотрели/послушали интересного про разработку?
🌐 @AppFiles
Android
• Работаем с размером шрифта для обеспечения доступности
• Android 15 готовится облегчить использование смартфона для пожилых
• One-Time Events, StateFlow VS. Channel
• vikasacsoni9211/quest-for-android-excellence-interview-edition-2024-part-i-11d5c517e9f6">Android Interview Questions: 2024
• Pixel Perfect: Designing for Every Screen, Every Fold
• On-Device Machine Learning In Android: Frameworks and Ecosystem
#android
Напиши музыкальный плеер для iOS
✨ Отус приглашает 15 февраля в 20:00 по мск на бесплатный практический урок "Пишем музыкальный виджет на SwiftUI".
Ведущий: Анна Жаркова – руководитель группы разработки.
Вебинар является часть полноценного онлайн курса «iOS Developer. Professional». Курс доступен в рассрочку!
➡️ Регистрация на вебинар: https://otus.pw/W2Rw/?erid=LjN8KSB1a
На вебинаре:
✔️ создадим приложение с использованием музыкального сервиса MusicKit и интерактивный виджет к нему;
✔️ познакомимся со SwiftUI, узнаем, как создавать виджеты с помощью WidgetKit и AppIntents для их интерактивности;
✔️ ответим на все возникающие вопросы.
Apple выпустила модель, которая позволяет пользователям описывать на понятном языке, что они хотят изменить в фотографии
Модель MGIE, над которой Apple работала совместно с Калифорнийским университетом в Санта-Барбаре, позволяет обрезать, изменять размер, переворачивать и добавлять фильтры к изображениям с помощью текстовых подсказок.
1. При редактировании фотографии с помощью MGIE пользователю нужно просто набрать то, что он хочет изменить в изображении. В статье приводится пример редактирования изображения пиццы пепперони. Набрав запрос «сделать ее более здоровой», можно добавить овощные начинки.
2. Apple сделала MGIE доступной на GitHub, а также выпустила веб-демонстрацию на Hugging Face Spaces. Компания не сообщила, какие у нее планы на эту модель, помимо исследовательских.
И что: я уже писал, что iOS 18 должна стать самой «амбициозной и неотразимой». И, судя по всему, во многом неотразимость будет касаться ИИ-функций. Так что ждем MGIE в iOS.
Перевел на Хабре вчерашнюю статью о мастерстве программирования (мастерство в данном случае - craftsmanship, то есть некое красивое ручное ремесло создания правильных вещей). Автор довольно интересно говорит об уходящем искусстве создания кода и объясняет это скоростью поставки фич, методологиями, изменившимся подходом к дистрибуции софта. Вряд ли можно с ним не согласиться - “****, **** и в продакшен” уже норма. Так что вдохновившись статьей поставьте “+” и помните, как когда-то код был искусством.
Разработка
• Где-то в пути мы забыли о мастерстве программирования
• Направо пойдешь — в бэкенд придешь, налево — в мобилки…
• Key takeaways from Airbnb’s winter redesign
• Keeping code simple: moving fast by avoiding over-engineering
Маркетинг
• Spotify стал поставщиком аудиокниг №2 после Audible
• Приложение Blush выводит онлайн-знакомства в реальный мир
• Stellar Sleep — первый цифровой инструмент для борьбы с хронической бессонницей
• Любовь живет в приложении: мобильные тренды ко Дню Святого Валентина
• Вся наша жизнь – игра: или как прижилась геймификация внутри мобильного приложения в ритейле
• Мобильная версия Elden Ring разрабатывается Tencent
• Как 6 экранов в приложении увеличили конверсию в два раза
Кроссплатформа
• Как с помощью ChatGPT реализовать раскраску во Flutter
• technicatalyst78/efficient-api-calls-in-flutter-025af33f02e9">Efficient API Calls in Flutter
• How to build a real-time multiplayer game with Flutter Flame
• niranjanky14/20-most-used-kotlin-multiplatform-libraries-7e6bda7f2dd7">20 🍓most used Kotlin Multiplatform libraries
iOS
Обратите внимание. С 29 апреля для размещения приложений в App Store нужен будет Xcode 15.
• Ранний взгляд на будущее тестирования с swift-testing
• Building Modular iOS Apps: A Guide to SPM, MVVM, SwiftUI, and Combine/Async-Await
• Apple to require Xcode 15 for App Store submissions staring April 29
• Setting up SharePlay on an iOS app
• Bad practice: using .lowercased() to compare strings
• pranav_ps/swiggy-ios-interview-experience-ad1018f12353">Swiggy iOS interview experience
• SwiftUI Hero Animation with Matched Geometry Effect
#ios
Android
• Копаемся в встроенном приложении камеры старого Xiaomi. Часть 1
• Exploring Jetpack Compose: Aspect Ratio Modifier
• Extended ADB: En Vogue
• Font Size Considerations for Accessibility
• Graceful Exits: Implementing Close Confirmation for Jetpack Compose ModalBottomSheet
• Android UI with TwoPane Composable - Drag, Split, & RTL Magic
#android
🚀 Affise Mobile Attribution предлагает передовые решения для атрибуции и аналитики мобильных приложений 📱📈
Affise MMP поможет расширить и максимизировать действия ваших рекламных кампаний по привлечению пользователей, обеспечивай точный трекинг и аналитику 📊, позволяя в разы увеличить ваш ROI 💰 и при этом остаться защищенным от фрода 🛠
Переведите эффективность вашего приложения на новый уровень
Готовы попробовать? Начните бесплатно и наблюдайте за своими результатами!
👉 Узнать больше
Эксперимент: насколько сложно обмануть на технических собеседованиях с помощью ChatGPT?
Ребята с сайта для технических интервью провели эксперимент - использовали ChatGPT для ответов на вопросы интервью.
1. Средний уровень прохождения интервью БЕЗ всего - 53%.
2. При использовании интервьюером "дословных" задач с LeetCode и кандидатом ChatGPT прохождение интервью достигает 73%.
3. Если используются слегка модифицированные задачи с LeetCode - человек с ChatGPT проходит их в 67% случаев.
4. Кастомные задачи убивают ИИ напрочь - только 25% кандидатов с ИИ прошли интервью.
5. НИКТО не был пойман на списывании. Правда, это были интервью без видео. Но судя по публикуемым сторонним записям, видео тоже не очень помогает от использования ИИ.
И что: Компаниям надо использовать в интервью свои собственные вопросы - это и поможет от списывания и разработчикам они больше нравятся. Разработчикам не нужно переживать - читеров разоблачат, с ИИ проходить интервью сложнее и лучше направить все усилия на практику, которая сослужит вам хорошую службу.
Android
• Neo Store: клиент F-Droid с красивым UI
• Compose Navigation Codelab: проходим кодлаб от Google
• Построение multi-app архитектуры
• Старт карьеры в Android-разработке до 18 лет
• Performance In Jetpack Compose — Stability & Immutability
• Creating Anvil-like annotation for Hilt using KSP
• Preview Jetpack Compose Views in Seconds
• robert.baricevicpetrus/kotlin-flows-animated-55640aa48ac9">Kotlin Flows Animated
• Timing API: Mastering Time with Kotlin
• daniel.atitienei/translucent-status-bar-with-edge-to-edge-jetpack-compose-d7a88e7be755">Translucent Status Bar with Edge-To-Edge Jetpack Compose
• Accessibility Amplified: A Journey to Inclusive Android Apps
#android
Сегодня рассмотрим раннер параллельного запуска нативных автотестов мобильных приложений. Раннер Emcee прогоняет тысячи тестов за 15 минут.
А если подробнее, то инструмент базируется на трёх компонентах:
📌очереди, которая распределяет тесты по воркерам и возвращает клиентам;
📌 воркерах, которые управляют эмуляторами и собирают результаты;
📌 клиентах, которые отправляют тесты в очередь и принимают результат.
Инженеры AvitoTech очень подробно рассмотрели как эта система работает, на демо-прогоне для Android. Ребята в собственном образовательном видеопроекте avito.code рассказывают как запускать раннер в облаке и разворачивать с помощью Docker Compose.Реклама ООО "Авито Тех", ИНН 9710089440 erid:LdtCKCf8N
Что нового в лучших практиках
Подборка всех материалов за прошлую неделю - новинки iOS 17.4 и лучшие практики Code Review для Android, повышение производительности модульных тестов и inline-функции изнутри, обрезка изображений без сторонних библиотек, гайд по Aurora, работа в кризис, зарплаты и многое другое.