Развенчиваем расширение возможностей
Очередная подборка всех материалов за неделю - пишем виджет для Control Center и делаем куб для сторис, развенчиваем мифы про современную Android-разработку и оптимизируем приложение, переходим с Xamarin на Flutter, оцениваем важные вещи в программировании, используем темные паттерны, подбираем самые скачиваемые и зарабатывающие приложения в России в июне.
Яндекс устраивает Yandex Summer Mobile Party!
Приходите на вечеринку для мобильных разработчиков, где мы отдохнём, пообщаемся и совсем немного поговорим о работе.
Вас ждут нетворкинг, музыка, коктейли, короткие лайтнинги о жизни в мобильной разработке, а ещё PeerLab с обсуждением ваших кейсов! Спикеры поделятся, как преодолеть страх и ненависть в проектной деятельности, а ещё расскажут о разработке Яндекс Клавиатуры.
Регистрируйтесь уже сейчас. Мы рассмотрим вашу заявку и пришлём приглашение 16–17 июля.
Увидимся на Yandex Summer Mobile Party! 🎉
Пришла новая статистика по зарплатам от Хабр Карьеры. Медианная зарплата в первом полугодии 2024 выросла на 8%. Больше всего в регионах, в Волгограде аж на 25%. У мобильных разработчиков на 9%, в среднем до 217К. Зарплаты разработчиков в Objective-С продолжают оставаться самыми высокими в этом исследовании. Однако в первой половине 2024 медиана зарплаты у них снизилась на 10%, до 342К. Впрочем, зарплат в выборке всего 43, так что аналитика так себе (впрочем, кажется, и в общем показатели можно довольно легко накрутить). Самый ощутимый рост был у разработчиков в Kotlin (+16%), до 290К, C (+14%) до 180 000 ₽, также на 11% выросли зарплаты в Swift и Elixir.
Разработка
• Rust и Kotlin растут в TIOBE Index
• Зарплаты IT-специалистов в первой половине 2024: +8% по всей России
• Моё тестовое в Билайн на позицию стажёра
• How to set priorities?
• Weird things I learned while writing an x86 emulator
Маркетинг
• Большинство (76%) приложений и сайтов с подпиской использует темные паттерны
• How apps can innovate
Кроссплатформа
• Colors AI — генератор цветовых схем с ИИ на Flutter
• Rewriting freezed with Macros
• m1nori/codemagic-setup-with-flavors-flutter-ci-cd-0edfcb9bb24f">Codemagic setup with flavors. Flutter CI/CD
iOS
• Как работает AdAttributionKit
• Добавляем в приложение SwiftUI холст Freeform, чат и видеозвонки
• Check if your app has a newer version on the App Store using Swift
• Streamlining Menu Browsing with OCR Text Recognition
• Utilizing Apple’s oslog for Enhanced Logging in Xcode
#ios
Пляжный IT-фестиваль ULCAMP’24 ждёт тебя!
🗓19-21 июля
📍Ульяновская область, база отдыха «Славянское подворье»
ULCAMP — масштабный неформальный IT-фестиваль. Здесь встречаются все: от «джунов» до топов IT-компаний. Уже 11 лет ULCAMP собирает более 3000 человек.
В программе:
📎3 сцены с лекциями и дискуссиями про код, дизайн и науку.
📎4 баркемпа, где сами участники становятся спикерами.
📎Спортивные состязания по 7 видам спорта за Кубок ULCAMP.
📎Активности от партнёров: квизы, настолки, турниры по FIFA. И даже катание на парусной яхте!
А ещё мы подготовили музыкальную программу до самого утра!
🎶19 июля — Alfa Music Night: выступят DJ Alex Twain, Dj Kradson, группа ДИСКОПРОВОКАЦИЯ и хедлайнер — Найк Борзов!
🎶20 июля — ILWT, группа DJ Середина Лета, Богдан Титомир, Бахыт Компот, GorillaGun и Стас Экстаз.
Ждём тебя на самой незабываемой IT-тусовке этого лета!
Купить билет
ТГ-канал ULCAMP’24.
Реклама. АНО «Ульяновский совет культивации интернет-технологий». ИНН: 7325996041 erid: LjN8JwcUi
Еще один проект нашего читателя. Colors AI - это бесплатный генератор цветовых схем с открытым исходным кодом и использующий глубокое обучение на основе Colormind и Huemint API. Приложение сделано в шаблоне BLoC с помощью Flutter SDK и доступно для всех основных операционных систем, включая мобильные.
Colors AI на GitHub: https://github.com/tsinis/colors_ai
Платформа: кроссплатформа
⭐️: 117
Если у вас есть библиотеки, открытые или просто интересные пет-проекты, присылайте. Будем публиковать.
Android
В чем-то вторя вчерашней заглавной статье, первая тут подчеркивает жизненную важность анализа и оценки информации, которую вы потребляете. Очень важно отдавать предпочтение практичности, а не слепому принятию популярных практик или следованию за технологическими авторитетами 👇
• Развенчиваем 6 мифов про современную Android-разработку
• Создавай и упрощай: оптимизируем Android-приложение с видеоконтентом
• New ways of optimizing stability in Jetpack Compose
• How to Configure Android Build System?
• Kotlin Code Reuse: Composing like you're Inheriting
• janishar.ali/android-mvvm-architecture-for-a-production-ready-app-2892b6dca02f">Android MVVM Architecture for A Production Ready App
• basaransuleyman/leveraging-bff-and-dynamic-ui-in-android-applications-with-jetpack-compose-27d81edb7c7c">Leveraging BFF and Dynamic UI in Android Applications with Jetpack Compose
#android
Самые главные вещи на свете - это не вещи. А самые важные проблемы в программировании — не технические. Хотя обсуждать, на каком языке должно быть реализовано приложение, писать красивый и лаконичный код, смотреть, как далеко можно зайти в чисто функциональном программировании, - очень весело, все это вторично по отношению к определению пользовательского опыта, к разработке удобного интерфейса, к тому, чтобы все было просто и понятно, к тому, чтобы убедиться, что вы создаете что-то, чем действительно могут пользоваться люди, для которых вы это разрабатываете. Это более важные решения. Если коротко, дело не в технологии ради технологии. Речь идет о возможности реализовать свои собственные идеи.
Разработка
• Важные вещи в программировании 2024
• ChatGPT хорошо программирует в задачах, существовавших до 2021 года, но испытывает трудности с новыми
• Building and scaling Notion’s data lake
• Reverse Engineering TicketMaster's Rotating Barcodes (SafeTix)
Маркетинг
• Приложение для арт-терапии Scribble Journey позволяет выразить эмоции с помощью зарисовок
• Lamoda Tech Analytics Party: материалы встречи
Кроссплатформа
• Первый взгляд на переход с Xamarin Native на Flutter
• Build Android and iOS apps with SwiftUI
• Code push for Flutter
iOS
• Backpressure in Combine
• Building a custom application UI with SwiftUI & iOS 18 API
• Building the inverted scroll of a messaging app
• Mobile Deployment Pipelines for $0
• 5 Strategies for Managing Image Resources Effectively in iOS
#ios
ChatGPT хорошо программирует в задачах, существовавших до 2021 года, но испытывает трудности с новыми
Недавнее исследование, в ходе которого выяснялось, насколько хорошо ChatGPT программирует, показало, что он вполне неплох. По крайней мере в задачах, с которыми он знаком 🤖
• Исследование, опубликованное в июньском номере IEEE Transactions on Software Engineering, проверило GPT-3.5 на 728 задачах с LeetCode на пяти языках программирования (C, C++, Java, JavaScript и Python).
• На задачах, существовавших в LeetCode до 2021 года, ChatGPT решал легкие задачи в 89% случаев, задачи средней сложности — в 71% случаев, а трудные — в 40% случаев.
• Однако при тестировании на задачах, которые появились в LeetCode после 2021 года, результаты решения легких, средних и трудных задач снизились до 52%, 40% и 0.66% соответственно.
Когда дело доходит до проблем с алгоритмами после 2021 года, способность ChatGPT генерировать функционально корректный код страдает. Иногда он не может понять смысл вопросов даже для задач легкого уровня, — говорит исследователь. - Разумная гипотеза о том, почему ChatGPT лучше справляется с проблемами алгоритмов до 2021 года, заключается в том, что эти проблемы часто встречаются в обучающем наборе данных.
Android
• Как работает ТВ в Android TV?
• Нужны ли Android-разработчики на заводе?
• Gradle DSL изнутри
• Kotlin DSL как единый источник правды для решения многих задач
• Переходишь на Compose? Не спеши!
• Android Crypto Samples — примеры криптографии
• Architecture related decisions in Android - Error handling and Monads
• Kotlin’s @Keep Annotation: Keeping Your Code Safe and Sound
• Let's clarify some misconceptions around android development these days
• Declarative Gradle
• michalankiersztajn/top-5-android-studio-plugins-4c534ef7221d">Top 5 Android Studio Plugins
#android
Железо для типизированных ошибок
Новая подборка всех статей за неделю - макросы и типизированные ошибки, форматирование кода и 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
Американские продажи Apple Vision Pro практически мертвы
Продажи гарнитуры Vision Pro от Apple в США не достигли и 100,000 штук за квартал с момента появления в феврале, согласно данным компании IDC.
• По прогнозам, в текущем квартале продажи устройства на внутреннем рынке упадут на 75%, но запуск Vision Pro на международном рынке в этом месяце, как ожидается, отчасти компенсирует это падение.
• Отзывы об устройстве в целом неоднозначны. В основном пользователи были впечатлены аппаратным обеспечением и технологиями, представленными в Vision Pro, но есть вопросы к фактическим функциям устройства, интуитивности управления с помощью жестов, весу и удобству, а также к VR в целом.
• Пользователи также критикуют отсутствие контента для устройства. Для Vision Pro так и не появилось "киллер аппов".
И что: вроде как хотели реализовать полмиллиона устройств, но, очевидно, этого в 2024 даже близко не достигнут. Но вряд ли Apple сильно переживает. Для устройства ценой в $3500 даже на порядок меньшие продажи извне кажутся хорошими. Apple уже работает над новой версией гарнитуры, которая будет стоить гораздо меньше. По прогнозам IDC ее продажи вырастут более чем в два раза, когда она появится во второй половине 2025 года 🥽
🏝Еще один проект нашего читателя. FlowMVI - это архитектурный фреймворк Kotlin Multiplatform на основе корутинов с обширным набором функций, мощной системой плагинов и богатым DSL.
Преимущества:
• Мощная система плагинов для автоматизации процессов и повторного использования любой бизнес-логики по вашему желанию
• Создавайте полностью асинхронные, реактивные и параллельные приложения - без необходимости ручной синхронизации потоков
• Создавайте кроссплатформенные компоненты бизнес-логики без использования кода платформ, с подключаемым пользовательским интерфейсом
• Автоматическое восстановление после любых ошибок и предотвращение сбоев
• Автоматическая обработка жизненного цикла многоплатформенной системы
• Встроенная поддержка отладки, протоколирования, тестирования, отмены/повтора, кэширования и длительного выполнения задач
• Автоматическое сжатие, сохранение и восстановление состояния на любой платформе
• Никаких базовых классов, сложных интерфейсов или фабрик фабрик - логика декларативна и строится с помощью DSL
• Перезапускаемые, многократно используемые компоненты бизнес-логики без внешних зависимостей и выделенных жизненных циклов
• Создавайте безопасные машины состояний во время компиляции с помощью понятного DSL
• Первоклассная поддержка Compose Multiplatform, оптимизированная для производительности и простоты использования
• Используйте как MVVM+ (функциональный), так и MVI (model-driven) стиль программирования
• Основная библиотека зависит только от корутинов Kotlin, больше зависимостей нет
• Основная библиотека полностью покрыта тестами
FlowMVI на GitHub: https://github.com/respawn-app/FlowMVI
Платформа: Android/кроссплатформа
⭐️: 249
Если у вас есть библиотеки, открытые или просто интересные пет-проекты, делитесь. Будем публиковать.
Android
• Strong Skipping Mode — новый способ оптимизации стабильности в Jetpack Compose
• Kotlin Coroutines под капотом
• Safe your API Keys via Secrets Gradle plugin
• Ticket UI Using compose
• Improving Perceived Performance with Delayed Visibility
• From Zero to Billions: Building a High-Performance Kotlin App in Two Months
#android
Экспортируем иконки из Figma в проект одним кликом
Перенос дизайна в код — лёгкая и быстрая задача, на автоматизацию которой не хочется тратить время? А если иконок тысячи, платформ несколько, а код для пограничных случаев только плодится? Тогда нужно всё сделать по-человечески — автоматизировать.
Android-разработчик из финтех-компании Точка Александр Ворошилов рассказал про «человеческий фактор» в рутинной задаче и автоматизацию переноса иконок в проект. Всего один скрипт — и разработчик доволен!
Большинство приложений и сайтов с подпиской использует темные паттерны
Федеральная торговая комиссия США совместно с двумя другими международными сетями по защите прав потребителей объявила в четверг о результатах исследования, посвященного использованию «темных паттернов» в подписных приложениях.
• В ходе анализа 642 веб-сайтов и приложений, предлагающих услуги подписки, было обнаружено, что почти 76% использовали как минимум один темный шаблон, а почти 67% — более одного.
• Под темными паттернами понимается ряд дизайнерских приемов, которые могут тонко подталкивать пользователей к каким-либо действиям или подвергать риску их конфиденциальность. Это скрытие информации, препятствование, назойливость, принуждение к действию, социальное доказательство и другие.
И что: в другом исследовании 95% приложений содержали одну или несколько форм дарк паттернов, а в среднем у популярных приложений 7 разных паттернов. так что FTC еще подошла к вопросу с осторожностью. Но судя по долям, темные паттерны уже стали стандартом и не обманешь - не заработаешь 😞
Хороший пример того, насколько IOS разработка сложнее Android - Карты от Google. Понадобилось 5 (пять) лет, чтобы реализовать в картах спидометр и информацию об ограничениях скорости 🗺 Думаю, что это связано с персональными данными и безопасностью. А вы как думаете?
Разработка
• MobileLLM - Language Models for On-Device Use Cases
Маркетинг
• Wayther — приложение с прогнозом погоды, разработанное специально для автопутешествий
• Карты Google на iOS начали показывать спидометр (через 5 лет после Android)
Кроссплатформа
• Rive-анимация для Flutter-приложений: почему мы любим ее больше Lottie, когда ее применять и какие фишки использовать
• sachin.dev2910/google-pay-integration-in-flutter-app-payments-in-flutter-app-c85f1c7e260e">Google Pay Integration in Flutter App
iOS
• Постепенный перенос проектов и пакетов на Swift 6
• StreamUI — генерация видео в SwiftUI
• Пишем виджет в Control Center (iOS 18)
• Automating pre-production iOS app builds
• Running a package from Xcode Build phase
• syeda.annie.asad/xcuitest-ios-automation-with-pom-techniques-3f0dc733a6fb">XCUITest (iOS) Automation with POM Techniques
• froig/write-clean-and-maintainable-xcuitests-with-screen-chaining-fdb545b347fc">Write Clean and Maintainable XCUITests with Screen Chaining
• AI features in Xcode 16: is it good?
#ios
Android
• Fig — Google Таблицы в качестве удаленного конфига
• Valkyrie — генерация Compose ImageVector из SVG/XML
• Which Map Transformation Should I Use?
• Exploring Material3 Adaptive Layout
• michalankiersztajn/kotlin-builder-inference-explained-b6cca7b7ff77">Kotlin Builder Inference Explained
• RxJava to Kotlin Coroutines: The Ultimate Migration Guide
#android
Библиотека нашего читателя. Valkyrie - плагин Intellij IDEA/Android Studio для генерации Compose ImageVector из SVG/XML. Удобное форматирование кода для сгенерированной иконки, поддержка перетаскивания внутри IDE.
Valkyrie на GitHub: https://github.com/ComposeGears/Valkyrie
Платформа: Android
⭐️: 16
Если у вас есть библиотеки, открытые или просто интересные пет-проекты, присылайте. Будем публиковать.
Шоу под названием Epic vs Apple никогда не закончится твои повести нет да напишутся. На прошлой неделе Apple отклонила Epic Games Store, потом одобрила, потом сказала, что одобрила “временно”. В следующем релизе надо изменить в нем кнопки установки и покупки, потому что эти слишком похожи на «дизайн и позиционирование» Apple 🌐. Тим Суини встал на дыбы и сказал пошли вы в жопу - это абсурдно, переделывать ничего не будем. Не знаю как вам, а мне это уже поднадоело.
Разработка
• Разработка библиотек с использованием подхода Request for Comments
• Менеджмент — ловушка или лучший карьерный путь для разработчика?
• Чистый код – не значит правильный: clean code, паттерны, лучшие практики
Маркетинг
• Apple «временно» одобрила Epic Games Store, но потребовала изменений
• Самые скачиваемые и зарабатывающие приложения в России в июне 2024
• How to improve funnel conversion
Кроссплатформа
• Multiplatform UI с Compose
• tom.sabel/mastering-date-and-time-management-in-ios-with-kotlinx-datetime-a-step-by-step-guide-ba1fe3bc32fe">Mastering Date and Time Management in iOS with Kotlinx DateTime: A Step-by-Step Guide
iOS
• DSFDropFilesView — NSView для drag-and-drop файлов
• Поваренная книга SwiftUI: кнопки — Часть 1
• Как побеждать в конкурсах от Telegram
• Изучаем новые структуры данных для iOS разработчика
• Mastering Animatable and AnimatablePair in SwiftUI
• SwiftUI can be a bit... eager
• Laying out views with ContainerRelativeFrame in SwiftUI
• Make videos with SwiftUI
• Zoom transitions
#ios
Видео и подкасты за неделю @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