Android
• Я.Субботник по Java-разработке
• А это можно запустить в фоне?
• Lobzik: полуавтоматическая модуляризация Android-проекта
• Мой офис. Как открываются документы на смартфоне
• Okio: I/O библиотека для Android, Java и Kotlin Multiplatform
• Modern MVI и MVVM+ со всех сторон в 2023
• Как я перестал волноваться и полюбил ошибки в Kotlin корутинах: Мифы обработки ошибок в корутинах
• User-Centric Mobile Performance
• Blast Off: Managing Hundreds of UI Updates for an Emoji Cannon
• A Guide to Filament for Android
• Eliminating coroutine races
• No Mocks Allowed
#android
Решаем шахматные задачи с Chess Puzzles Set: разбор приложения
Разбираем приложение @oleg_soloviev - набор шахматных задач.
TLDR: все плохо. Вроде как отдельные части есть, а все вместе не работает. Ощущается как до конца недоведенный пет-проект.
Статья: https://apptractor.ru/info/articles/chess-puzzles-set.html
Если хотите принять участие - пишите в комменты.
SOLID архитектура для мостов и багов
Новый еженедельный дайджест - снова 117 материалов! Обязательно прочитайте, поставьте 👍 или 🖤, поделитесь или поддержите. И присоединяйтесь к IT Insights, где новости и статьи про код, технологии и все самое интересное за пределом мобайла. Вот, например, у меня там была интересная статья "Создание основ машинного обучения в реальном времени в Lyft" - о том, как компания обучает модели в реальном времени на потоковых данных.
Mobius в поиске спикеров!
Конференция по мобильной разработке Mobius 2023 Autumn будет идти четыре дня: 1–2 ноября в онлайне и 9–10 ноября в офлайне.
Расскажите о платформах, языках, архитектуре, качестве продукта или инфраструктуре. Полный список тем — на сайте. И не стесняйтесь предлагать свои.
Вы можете выступить онлайн или офлайн и выбрать любой формат выступления — доклад, воркшоп, интервью, обсуждение, BoF-сессию или придумать что-то свое.
На этапе подачи заявки подойдут даже примерные тезисы, необязательно иметь уже готовый доклад. После отправки заявки Программный комитет поможет доформулировать идею и превратить ее в доклад. А персональный куратор пройдет с вами весь путь — от идеи до продакшена: сделает ревью, поможет с доработкой, проведет репетиции и даст рекомендации по выступлению.
Подавайте заявки до 25 июля.
Android
• Разбор тестового задания на позицию Android Developer
• A flexible, modern Android app architecture: complete step-by-step
• Native UI and multiplatform Compose with Redwood
• How to build a Clean SSEClient Flow
• afolayanseyi/implementing-single-source-of-truth-in-android-9b2cc9510704">Implementing Single Source of Truth in Android
• pravishanth/migrating-from-android-api-level-30-to-31-32-or-app-crashing-after-updating-target-sdk-version-to-586e4892dfb9">Migrating from Android API level 30 to 31/32 or App Crashing After Updating Target SDK
#android
И снова хочу поделиться авторским каналом об iOS-разработке.
В нём автор рассказывает про свой опыт, поэтому будет много кода, сложных моментов и забавных историй (иногда не очень):
🔘 Как я выиграл в конкурсе Telegram и как проиграл.
🔘 Многопоточность в Swift.
⭐️ Подготовка к собеседованиям.
Заходите, если хотите узнать ответ на вопрос.
Android
• Amethyst: клиент Nostr для Android
• fadhifatah_/textinputlayout-censoring-with-password-like-method-303b986f5364">TextInputLayout Censoring with Password-like Method
• Experimenting with Android Studio Bot
• smish_/unlocking-the-power-of-jetpack-compose-fragments-stateflow-and-viewmodels-a-comprehensive-guide-f0b76f9a02ee">Unlocking the power of Jetpack Compose, Fragments, Stateflow, and ViewModels: A Comprehensive Guide
#android
Зарплаты мобильных разработчиков
В период с 1 марта по 31 мая 2023 на Хабр Карьере можно было откликнуться на 6 870 вакансий.
1. Чаще всего на Хабр Карьере ищут мидлов — этой весной доля вакансий для них составляла 53,3%.
2. Среди разработчиков самыми популярными оказались бэкендеры — для них разместили 21,6% вакансий, на втором месте фронтендеры — 6,1% вакансий. Третье место досталось разработчикам мобильных приложений — 3,9% вакансий.
3. Самые популярные разработчики мобильных приложений — мидлы и сеньоры, доли вакансий для них одинаковые — по 45,2%. Реже ищут лидов — доля 7,1%. Джунов практически не ищут - всего 2,5%.
4. Самые популярные языки в мобайле: Kotlin, Swift и Java.
5. Мидлы в разработке мобильных приложений больше всего получают в Java — 238 000 ₽. Зарплаты сеньоров в выборке начинаются от 295 000 ₽ в Java и заканчиваются на 347 000 ₽ в Swift. Лиды в мобайле больше всего зарабатывают в Swift — 430 000 ₽.
Android
• darush/build-a-simple-sort-and-filter-screen-in-your-android-app-318f0d86e228">Build a Simple Sort and Filter Screen in Your Android App
• Efficient Ways of Using Location Services in Kotlin Android Apps
• prashantdixit_87612/creating-and-publishing-your-own-android-library-in-kotlin-2023-part-1-3e542dad4ca0">Creating and publishing your own Android library in Kotlin
• The beauty of Kotlin type system
#android
По слухам, Apple сократила заказ на Vision Pro - с 1 миллиона до 400 тысяч за год. Как пишут, дело в том, что китайский производитель не может выпустить достаточное количество. Впрочем, вопрос в том, что считать успехом для Vision Pro, остается. Даже 400К инновационных устройств стоимость в $3,500, наверное, можно будет считать отличным результатом. Но, мне кажется, даже этот порог не будет достигнут. Я бы говорил о десятках тысяч. К тому же сокращать объемы предполагаемых продаж стали еще до выхода, так что вполне может быть, что это такой хитрый ход - это не мы не смогли продать, это они не смогли сделать.
Разработка
• По слухам, Apple сократила заказ Vision Pro
• $2 млн: RoboDeck — робот для обслуживания веранд и палуб
• Приложение Threads появилось в App Store
• Fight Unplanned Work, the Silent Killer of Projects
• tsecretdeveloper/we-just-hired-a-messy-coder-here-are-my-fears-c83911407728">We Just Hired a “Messy Coder”. Here Are My Fears
Маркетинг
• How Duolingo pushes users from freemium to premium
Кроссплатформа
• Строим мосты: подключение зависимостей с Cocoapods в Kotlin Multiplatform Mobile
• Метод setState() во Flutter может работать не так, как вы это представляете
• Introducing LangChain.dart
• Implementing CI/CD for Jetbrains Compose Multiplatform Android and iOS Apps using GitHub Actions
iOS
• Следующие AirPods смогут проверять слух и температуру
• Жизненный цикл объектов SwiftUI
• Mapbox Maps SDK iOS: интерактивные настраиваемые карты
• SwiftUI: Trailing label TextField
• Embracing CloudKit
• SwiftUI Data Flow 2023
• Create an Interactive Widget Using App Intents
• Async Animations in SwiftUI
• batrakov.vitaly/di-in-swiftui-9f929b50ab5c">DI in SwiftUI
• Animate SF Symbols with symbolEffect
#ios
Вероятно Twitter заDDOSил сам себя
Последние два дня Илон Маск утверждал, что Twitter подвергается атаке со стороны "нескольких сотен организаций", которые осуществляют "ЭКСТРЕМАЛЬНЫЙ уровень извлечения данных". Это вынудило компанию экстренно включить "большое количество серверов" и принять чрезвычайные меры.
1. В выходные Twitter начал блокировать доступ к Twitter всем вышедшим из системы, требуя входа в систему для просмотра любого твита или профиля. Маск назвал это "временной чрезвычайной мерой".
2. Очевидно, это не остановило наплыв трафика, и Twitter ограничил количество твитов, которые вы можете просматривать.
3. Сразу же пользователи Twitter начали видеть сообщения "Rate Limit Exceeded".
4. Неужели компании, занимающиеся разработкой искусственного интеллекта, обрушили соцсеть? Возможно, да. А возможно и нет.
5. Само веб-приложении Twitter постоянно отправляет запросы в Twitter в бесконечном цикле. "Это уморительно. Похоже, что Твиттер сам себя заDDOSил". Twitter отправляет около 10 запросов в секунду, пытаясь получить контент, который никогда не приходит. Вероятно, это создало адские условия, которые инженеры даже не предполагали, и поэтому мы получаем эту комедию ошибок, приводящую к самой эпической самоликвидации - само-DDOS.
6. С другой стороны в настоящее время неизвестно, когда этот баг появился и насколько сильно он влияет на трафик, поэтому трудно определить, этот баг вдохновил Twitter заблокировать незарегистрированный доступ и добавить ограничения скорости, или же баг был спровоцирован развертыванием этих изменений.
И что: было бы забавно, если бы эта "чрезвычайная ситуация" от начала и до конца была вызвана ошибкой, в результате которой Twitter сам себе устроил DDOS, породив все эти "интересные" решения 🤡
Топ-10 самых востребованных языков программирования
Исследование проводилось на базе данных крупнейшего в мире сервиса по поиску работы Indeed.com - 817 259 вакансий в сфере IT.
1. Топ языков - Java, SQL и Python.
2. Самый высокий дефицит IT-кадров этой весной испытывали в Европе. Среди европейских стран больше всего IT-специалистов этой весной искали в Германии (103 089), Франции (65 753), Нидерландах (32 814), Ирландии (29 995) и Польше (29 286).
3. Европа лидирует и по количеству IT-вакансий, где от соискателей требуется владение русским языком (3% от всех IT-вакансий в регионе).
4. В Европе, Латинской Америке, Азии и на Ближнем Востоке высокий спрос на senior-разработчиков. В отдельных европейских и латиноамериканских странах исследователи наблюдают также дефицит джунов. Рынок труда в США ориентирован на IT-специалистов уровня миддл.
5. Абсолютным лидером по числу открытых вакансий стал специалист технической поддержки (17%). Дальше Инженер-программист, Бизнес-аналитик, ИТ-консультант, Менеджер проектов в ИТ.
6. Невостребованными во всех исследуемых регионах оказались Data Scientist (2% от общего числа IT-вакансий) и разработчики мобильных приложений (менее 1%).
И что: "пара-пара-пам всё". Если серьезно, джунам надо в ЛатАм, а просто "разработчикам" переходить на уровень Engineer, Manager, Analyst и т.п.
Android
• Как мы снизили время запуска FullStory на Android на 75%
• TranslationPlugin: перевод текста в IntelliJ/Android Studio
• Обзор библиотек для скриншот-тестирования Android проектов. Часть 1
• Тестирование мобильных игр перед релизом: инструменты и лучшие практики в Google Play
• bapness/tools-and-tips-i-wish-i-knew-when-i-started-android-development-1dce73c491a">Tools and tips I wish I knew when I started Android development
• Records in Android Studio Flamingo
• Avoid Java double brace initialization
• Jetpack compose — How to implement Custom Pager Indicators
#android
Занятная история от разработчика screen.studio. Чувак забыл отключить скачивание обновлений - новая версия на 250 Мб скачивалась и через 5 минут… снова скачивалась, и через 5 минут… У каждого клиента. В результате за полтора месяца отдали с Google Cloud 2 петабайта данных на $8000 и отключили одному клиенту интернет из-за перерасхода трафика, а обнаружили только когда кредитка начала вопить о перерасходе средств. Смысл - ставьте триггеры на облачные расходы и особо тщательно пишите любой код, который потенциально может генерировать затраты 🤷
Разработка
• Одна строчка кода, которая стоила $8,000
• Tesla добавляет поддержку сторонних приложений
• ChatGPT запустили на Windows 3.1
• Как мы делаем тестирование прозрачным. Всё об инфраструктуре QA
• JTBD-метод на практике для решения тестового задания
• To Be A Great Software Developer — You Need a System
Маркетинг
• data.ai announces the Top Publishers in 2023
• Категория «Здоровье и фитнес» в 2022 — отчет AdQuantum и Sensor Tower
Кроссплатформа
• aliammariraq/sealed-classes-in-dart-unlocking-powerful-features-d8dba185925f">Sealed Classes in Dart: Unlocking Powerful Features
iOS
• ScrollViewLoader: бесконечный список для SwiftUI
• Использование XCFramework в крупном iOS-проекте, или Как ускорить сборку в 2 раза
• SwiftUI для большого B2C-продукта
• Async / Await в Swift
• SwiftData Suprises
• Advanced Animation in SwiftUI under iOS17
• How to use String Catalogs for pluralization in Swift
• RadialGradient in SwiftUI
• iOS: UI Testing Strategy and Tooling at Reddit
#ios
Верификация пользователей принесла Instagram более $15 млн
В начале этого года, когда все умилялись синей галочкой Twitter за 8 долларов, Instagram (запрещен) решил, что эту функцию стоит скопировать.
1. До запуска программы верификации приложение Instagram в App Store приносило Meta (запрещено) около $1.5 млн чистого дохода в месяц.
2. Верификация пользователей, которая являются почти точной копией Twitter, была запущена в США в апреле и стоила $14.99/мес.
3. Instagram закончил март с $4.4 млн. чистого дохода. Можно предположить, что верификация обеспечила около $2.5 млн из этой суммы.
4. Общая сумма выросла до $6.4 млн в апреле и $7 млн в мае. В июне доход немного снизился, на 4% до $6.8 млн. Без учета бейджей и подписок, по оценкам аналитиков, верификации принесли Instagram $16.8 млн чистого дохода в App Store с момента запуска в апреле. Общий доход приложения за эти 4 месяца составил $24.6 млн.
И что: оказывается, не все, что делаем, Маск, лютая пурга 🙂 И если правильно подойти к его идеям, то можно неплохо заработать. Да, в данном случае речь идет о масштабах Instagram, но переосмыслив наверняка можно применить и к вашим продуктам.
Видео и подкасты за неделю
• (iOS Ru)
Использование XCFramework в крупном iOS-проекте, или Как ускорить сборку в 2 раза
• (iOS Ru)
SwiftUI для большого B2C-продукта
• (iOS En)
iOS 17 VisualEffect & ScrollTransition APIs - Circular Carousel Slider
• (iOS En)
iOS Dev Job Interview - Must Know Topics
• (iOS En)
Swift Variadic Parameters
• (iOS En)
Swift Observation from Scratch
• (And Ru)
А это можно запустить в фоне?
• (And Ru)
Мой офис. Как открываются документы на смартфоне
• (And Ru)
Modern MVI и MVVM+ со всех сторон в 2023
• (And Ru)
Lobzik: полуавтоматическая модуляризация Android-проекта
• (And Ru)
Я.Субботник по Java-разработке
• (And En)
Foreground Services - Android Basics 2023
• (And En)
Broadcasts & Broadcast Receivers - Android Basics 2023
• (And En)
What's new in Kotlin 1.9.0
• (Crs En)
How to build a collision-based game using Flutter and Flame
• (Dev Ru)
Podlodka #324: 3D-графика. Почему игры тормозят?
• (Dev En)
Introducing Kotlin Notebook
Посмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻💻
Спасибо за вчерашние проекты, буду разбирать. Сегодня вышла вторая часть, практическая, про архитектуру Android, ну я попутно перевел первую - про основные принципы (космонавтом!). Новое вряд ли для себя откроете, но повторить никогда не мешает. А еще у Instagram* запустился конкурент Twitter - Threads, который сразу поставил рекорд по росту аудитории. Вы уже там? Нужен там канал, или это как Clubhouse?
Разработка
• Как создавать архитектуру Android-приложений: глубокое погружение в принципы
• Какую работу, компанию или продукт выбирают продакты
• Скажи что-нибудь на разрабском, Figma
• A Case: How To Design A Medical App
• 5 Mac accessories for developers
• Accelerating Success: Decoding the Weekly Sprint Velocity of the International Mobile Team
Маркетинг
• Threads запустился в App Store и Google Play
• Spotify окончательно отказался от покупок через App Store
Кроссплатформа
• 4 Flutter Open Source Projects From Which You Can Learn A Lot! (2023)
• Error Handling In My Flutter App
• rorystephenson/how-to-cluster-markers-with-fluttermap-d462459b7143">How to Cluster Markers with FlutterMap
• How to build a collision-based game using Flutter and Flame
• From Hacking to Shipping: Kotlin Multiplatform Mobile at Hootsuite
iOS
• Billboard: красивая и безопасная реклама
• Data-Oriented-Design — A Swift Introduction
• Mastering Swift Foundation Formatter API. Custom Format Styles
• SwiftUI apps at scale
• Swift Observation from Scratch
• Difference Between Implicit and Explicit Animations in SwiftUI
• The Ultimate Guide to Building SwiftData Applications
#ios
На примере очередной статьи про Duolingo думаю пообозревать приложения. Что нравится, что не нравится, что можно улучшить и т.п. Страница в сторе, онбординг, UX и т.д. Будет такое интересно? Накидайте в комменты ваших проектов 😊
Разработка
• Зарплаты мобильных разработчиков по данным Хабр Карьера
• Бесплатный курс по Natural Language Processing (NLP) от The Hugging Face
• Stay Technical While Leading Your Team
• The hardest part of building software is not coding, it’s requirements
Маркетинг
• Как Duolingo подталкивает пользователей к premium — 5 уроков крупнейшего образовательного приложения
Кроссплатформа
• Optimising Page Load Times in Flipkart Mobile App
• The Complete Guide to Deploy Flutter Builds Using App Center
iOS
• .xcstrings в Xcode 15
• App Intents Spotlight integration using Shortcuts
• CollectionOfOne in Swift
• dhairyavora_35186/demystifying-opaque-types-in-swift-2ac25290c331">Demystifying Opaque Types in Swift
• A Deep Dive Into Observation: A New Way to Boost SwiftUI Performance
#ios
Яндекс проводит вечеринку для сообщества мобильных разработчиков — Yandex Summer Mobile Party!
12 июля приглашаем мобильных разработчиков на вечеринку — обсудим последние новости индустрии и хорошо проведём вечер с едой, коктейлями и музыкой. Приходите общаться с ребятами из Яндекса и знакомиться с сообществом.
Что вас ждёт:
— Lightning Talks про разработку и жизнь от мобильных разработчиков;
— Лекция от популяризатора физики Дмитрия Побединского;
— Настольные игры от Яндекса, зоны отдыха и летние коктейли.
Место проведения:
Плюс Дача в Парке Горького
В этот раз формат только оффлайн. Количество мест ограничено – ждём ваши заявки, и 10 июля вышлем приглашения на почту.
До встречи!
Программа и регистрация
iOS
• Создание интерактивного виджета с помощью App Intents
• iOS Learning Materials: обучающие материалы по iOS-разработке
• Cleaner Views: Clean Code in SwiftUI
• 10 More Deadly SwiftUI Mistakes and How to Avoid Them
• Slow architecture in Swift
• iOS 17 @Observable and the Observation Framework
#ios
Android
• Paraphrase: типобезопасные форматеры для строк
• Android: смотрите на больших экранах
• Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
• Настраиваем CI/CD для тестовой инфраструктуры Android
• Migrate RecyclerView to Lazy list
• digvijaysingh.rajat/two-way-communication-between-fragments-in-a-multi-module-android-project-while-maintaining-loose-711bdcf86e42">Two-Way Communication Between Fragments in a Multi-Module Android Project while maintaining loose coupling
• Animated action menu
• Build Interactive Live Streaming Android App with Video SDK using Java
• Exploring SharedFlow in Kotlin: Understanding tryEmit() and the Importance of Buffers
• Paging in Android Jetpack compose: from caching data with Room to displaying in Lazycolumn
• Reduce Boilerplate When Running Kotlin Tests
#android
Тут в комментах к пятничному исследованию у нас написали, что все неправда. Не могу не отметить, что к любым исследованиям нужно подходить с определенной долей скептицизма. И “ехать в страну не промониторив ничего, это нужно быть альтернативно одаренным”. Но если вы в Европе за пределами 🐻 - расскажите, как у вас в стране с вакансиями, зарплатами и вообще IT?
Разработка
• Топ-10 самых востребованных у работодателей языков программирования
• Самые высокооплачиваемые вакансии июня в области разработки приложений
• Чтобы стать великим разработчиком, нужна система
• Бесплатный курс по основам Continuous Delivery
• Вероятно Twitter заDDOSил сам себя
• Видео Yandex BDUI Conf
• СЛЕЗЫ ВКАТУНА: Реальная история входа в IT в 2023
• Разгоняем BLE
• Avito Design Talk: дизайнер vs. продакт
• Охэхэнный подкаст: кто такой тимлид
• Niantic снова проводит увольнения
• Какие баги мы заложили в мобильный банк на PHDays 12: разбор конкурса $NATCH
• Moneyball for Software Teams – An Imperfect Heuristic for Quantifying Dev Performance
• The Story of Samsung’s OneUI
• Building Real-time Machine Learning Foundations at Lyft
Маркетинг
• Корейский Alwayz пытается сделать шоппинг веселым и социальным
• Реклама Facebook* в Европе позволит скачивать приложения напрямую
• Одно приложение — в 50 раз больше заказов
• Клуб миллионеров в App Store — 503 приложения зарабатывает $1 млн или больше
• MyTracker запустила инструмент для оценки портрета аудитории сайта или приложения
Кроссплатформа
• Flutter meetup от Evrone
• Колесо сансары в поиске решения бага «белый экран» в SPA приложении на React
• Shorebird: CodePush & Over-the-Air Updates for Flutter Apps
• Explore Animated Loader In Flutter
• Profiling React Native Apps With iOS and Android Tools
Переключатель фич
Новый еженедельный дайджест - 117 материалов. Обязательно прочитайте, поставьте 👍 или 🖤, поделитесь или поддержите. И присоединяйтесь к IT Insights, где новости и статьи про код, технологии и все самое интересное за пределом мобайла. Вот, например, у меня там была совершенно чумовая вещь - Boba AI, co-pilot, созданный для разработки продуктовых стратегий, генерации идей и концепций.
Видео и подкасты за неделю
• (iOS Ru)
СЛЕЗЫ ВКАТУНА: Реальная история входа в IT в 2023
• (iOS Ru)
Жизненный цикл объектов SwiftUI
• (iOS En)
Implementing Carousel Slider Inspired From Material Carousel
• (iOS
En)
SwiftUI Glassmorphism - Glass Background Effect
• (iOS En)
Easily Add Filtering In SwiftData Using Searchable
• (And Ru)
Android: смотрите на больших экранах
• (And Ru)
Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
• (And En)
Location location location, revisited - Android Developers Backstage
• (And En)
Intents & Intent Filters - Android Basics 2023
• (And En)
Resources & Qualifiers - Android Basics 2023
• (Crs Ru)
Flutter meetup от Evrone
• (Crs En)
Creating Kotlin Multiplatform SDK
• (Dev Ru)
Охэхэнный подкаст: кто такой тимлид
• (Dev Ru)
Видео Yandex BDUI Conf
• (Dev Ru)
Разгоняем BLE
• (Dev Ru)
Avito Design Talk: дизайнер vs. продакт
Посмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻💻
iOS
• iOS: Узнать и отслеживать состояние физического переключателя тихого режима
• shiny.shubham/unleashing-xcodes-potential-6-uncommon-xcode-extensions-for-senior-ios-engineers-1f0553f9dc38">Unleashing Xcode’s Potential: 6 Uncommon Xcode Extensions for Senior iOS Engineers
• vladosius/implementing-location-search-by-address-into-the-ios-app-step-by-step-guide-1131b0d17664">Implementing location search by address into the iOS app
• How to set up Gitlab CI/CD with Fastlane for iOS-project on a Mac mini
• Working with C callback functions in Swift
#ios
В AppMetrica появился удобный, простой и эффективный инструмент для быстрой визуализации событий из мобильного приложения.
С его помощью вы сможете следить за успешностью любой конкретной фичи в вашем продукте.
А на главной странице можно быстро сделать дашборд с KPI или любыми показателями, чтобы вся команда могла пользоваться единой панелью и понимать, что происходит с метриками и куда вы движетесь.
Это удобный инструмент для отслеживания эффективности привлечения трафика, LTV, ROI.