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, работа в кризис, зарплаты и многое другое.
Twin Labs — стартап, который хочет создать продукт для автоматизации повторяющихся задач, таких как подключение новых сотрудников ко всем внутренним сервисам. Например, если вы принимаете человека на работу, вам может понадобиться добавить его данные в систему расчета заработной платы, отправить приглашение в Slack, создать учетную запись Google Workspace. В случае с Twin Labs самое интересное то, как они это делают. Компания использует интересный обходной хак - мультимодальные модели с возможностями зрения, такие как GPT-4 with Vision (GPT-4V), чтобы повторить то, что обычно делает человек. GPT-4V был обучен работе с множеством различных программных интерфейсов и кодовых баз. То есть модель реально смотрит на сторонние программы и с достаточной вариативностью понимает, что и как ей надо сделать.
Разработка
• Twin Labs автоматизирует повторяющиеся задачи с помощью ИИ
• Зарплаты IT-специалистов во второй половине 2023
• Metronome помогает SaaS перейти на ценообразование, основанное на использовании
• HeadHunter представил рейтинг лучших работодателей
• MobileDiffusion: Rapid text-to-image generation on-device
• How hard is it to cheat with ChatGPT in technical interviews? We ran an experiment.
Маркетинг
• Mastering onboarding: Key lessons from Luckin Coffee’s strategy
Кроссплатформа
• How to use Resources in Compose Multiplatform
• Addressing Font Size Variations in React Native Apps on Android Devices
• aditya-arya/shark-flutter-transform-your-ui-dynamically-in-real-time-2717797d724d">Shark Flutter — Transform Your UI Dynamically in Real-Time
iOS
• 3D Pokemon Card: параллакс на SwiftUI
• Детектор зависания основного потока SwiftUI
• iOS 17.4: что нового? Apple впервые разрешила использовать сторонние каталоги приложений и аналоги Apple Pay
• Introducing Vortex: High-performance particle effects for SwiftUI
• Automating SwiftUI Accessibility Audits in Xcode 15
• ganeshrajugalla/swift-nested-protocol-concept-swift-5-10-f92bd2d690df">Nested protocol concept
#ios
HeadHunter представил рейтинг лучших работодателей
Тут ко вчерашней вакансии написали всякое про Яндекс. А вот оказывается, что компания лидирует по популярности для работников. По рейтингу HH, самые популярные для работников компании в области «IT и интернет»:
1. Яндекс (2 место в общем рейтинге)
2. Ozon (7)
3. VK (8)
4. Тинькофф (13)
5. 2ГИС (18)
Так что у кого-то щи пустые, а у кого-то Яндекс мелкий.
Android
• Шаблоны корутин в Android и как они работают
• Kotlin изнутри: как работают inline-функции
• Страх, ненависть и токенизация банковских карт в Google Pay
• Google Play улучшает обновление старых приложений
• Calendar: настраиваемый календарь для View/Compose
• How to Implement MVI with Delegates on Android
• ishanvohra2/increase-performance-in-your-app-using-debouncing-0cdb29023f82">Increase performance in your app using debouncing
• Debug Android API Calls Like a Boss
• Gradle Tutorial for Android: Getting Started
#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.
Подробнее в анонсе или на официальном сайте.
Новая подборка видео и подкастов за неделю:
• (iOS Ru)
Как избежать утечек памяти при использовании Task, Combine, CurrentValueSubject и AsyncStream
• (iOS En)
SwiftUI: Universal Hero Effect
• (iOS En)
Introducing Vortex: High-performance particle effects for SwiftUI
• (iOS En)
SwiftUI Minimal Todo List With SwiftData & Interactive Widgets
• (iOS En)
Exploring AppState, a new open-source framework for SwiftUI Application State
• (iOS En)
SwiftUI Share Sheet Extension
• (And Ru)
Построение multi-app архитектуры
• (And Ru)
Старт карьеры в Android-разработке до 18 лет
• (And Ru)
Compose Navigation Codelab: проходим кодлаб от Google
• (And En)
What’s new in Jetpack Compose, Google Summer of Code 2024, and more dev news!
• (And En)
ALL Must-Know Changes in New Android Studio Hedgehog
• (And En)
This is Your 2024 Action Plan to Get Your Android Dream Job
• (Crs Ru)
Flutter Dev Podcast #44: Как стать Flutter-разработчиком? Часть 2
• (Crs En)
Prototyping apps with Project IDX, Firebase extensions and the PaLM API
• (Dev Ru)
Найти работу в кризис: джун, мидл и сеньёр
• (Dev Ru)
Проектирование невизуальных интерфейсов: основа, смыслы, примеры
• (Dev Ru)
Подходы и инструменты кастомизации процессов разработки
• (Dev Ru)
Кем вы видите себя в компании через 5 лет? Отвечает Head of Mobile
• (Dev Ru)
Podlodka: NeRF – последний шанс для VR?
• (Dev En)
Learn Accessibility - Full a11y Tutorial
• (Dev En)
Deep Learning Interview Prep Course
Что вы посмотрели/послушали интересного про разработку?
🌐 AppFiles
Android
• Повышение производительности модульных тестов в MEGA Android
• Разбираемся с MavenGate, новой атакой на цепочку поставок для Java и Android-приложений
• Introducing MavenGate: a supply chain attack method for Java and Android applications
• Android ViewModel: Single state or not?
#android
Зарплаты IT-специалистов во второй половине 2023
И еще про работу. Хабр Карьера опубликовала данные за второе полугодие 2023.
1. Медианная зарплата IT-специалистов сейчас — 141 000 ₽, это на 15% меньше, чем в первом полугодии 2023, когда рост был 10%. В основном на это повлияло снижение зарплат в регионах на 20%, где IT-специалистам сейчас платят в среднем 120 000 ₽. В Москве средняя зарплата — 187 000 ₽, а в Санкт-Петербурге — 150 000 ₽
2. Средняя зарплата мобильного разработчика — 200 тысяч рублей. Это падение на 9% по сравнению с первым полугодием.
3. Наибольшее снижение зарплат во второй половине 2023 было у разработчиков игр (-28%).
4. Зарплаты разработчиков в Objective-C продолжают оставаться самыми высокими в этом исследовании. Во второй половине 2023 медиана выросла на 21%, до 379 000 ₽. Это самый высокий рост. Впрочем, это данные по всего 30+ зарплатам из 34 тысяч, так что погрешность гигантская.
5. Во втором полугодии 2023 зарплаты в Swift опустились с третьего места на седьмое на фоне прироста в других языках, а разработчики Kotlin поднялись на шестое место. При этом зарплаты снизились только у программистов Swift — на 2%
На горизонте появился новый “молниеносный редактор кода для совместной работы” - Zed. Написан создателями Atom, по описанию эффективно использует каждое ядро CPU и GPU для мгновенного запуска, быстрой загрузки файлов и реагирования на нажатия клавиш. “Неумолимая производительность позволяет вам работать в потоке и заставляет ощущать другие инструменты медленными”. Хорошо излагает собака (С) Плюс есть “мультиплеер”, Copilot, Language Server Protocol для обеспечения автодополнения, навигации по коду, диагностики и рефакторинга. Теперь стали Open Source. Так что если вы смотрели какую-нибудь замену Notepad++ или VSCode, то может это оно.
Разработка
• Высокопроизводительный многопользовательский редактор кода Zed стал открытым
• Multitask like a pro with the WIP commit
Маркетинг
• Яндекс Путешествия запустили умную камеру для путешественников
Кроссплатформа
• Compose Multiplatform VS. Flutter
• Flutter Web Hosting With Github Pages & Custom Domain
iOS
• Swift: ссылочные типы и циклы сохранения, weak и unowned
• Step by step: интегрируем интерактивные 2D/3D-объекты в iOS-приложение
• Using reordering and selection at the same time in UITableView
• ViewModifiers: Image Picker
• How to make a completionHandler much safer
• edabdallamo/building-a-swiftui-video-annotation-app-c39ed93d983d">Building a SwiftUI Video Annotation App
#iOS