Напиши музыкальный плеер для 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 разработчик
Яндекс
Москва/Санкт-Петербург
гибрид
middle, senior, team lead
Какие задачи вас ждут
- участвовать в построении инфраструктуры приложения;
- продумывать и разрабатывать новые функции продукта;
- анализировать и улучшать производительность приложения;
- взаимодействовать со смежными командами.
Мы ждём, что вы
- отлично знаете Swift и особенности разработки для iOS;
- имеете значительный опыт написания клиент-серверных приложений;
- понимаете плюсы и минусы разных паттернов проектирования мобильных приложений.
Будет плюсом, если вы
- знакомы с Kotlin и концепциями Kotlin Multiplatform;
- имеете опыт работы со SwiftUI.
Откликнуться
Для связи в тг @maslova_y94
А 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
Google Play запустил функцию обновления старых версий приложений
Google представил новый автоматический инструмент, который предлагает пользователям обновиться.
1. Инструмент Play теперь сам может предложить пользователю, использующему определенную старую версию вашего приложения, обновить его. Срабатывает при каждом холодном старте. Ничего встраивать в приложение не надо.
2. Работает только с App Bundle.
3. Подсказку можно показывать по версии приложения, по стране/региону, версии Android.
4. Работает все через Google Play Console или через Play Developer API, и в скором времени функция будет расширена, чтобы позволить вам нацеливаться на несколько версий приложений одновременно.
И что: даешь такое в App Store!