🔥 Хотите научиться писать сетевой слой для iOS-приложений и подключать его к SwiftUI?
👉 Ждем вас на открытом вебинаре 22 августа в 20:00 мск, где мы разберём:
- как писать сетевой слой приложения оптимально;
- как подключать его к приложению на SwiftUI;
- чем нативный фреймворк отличается от Alamofire и Moya.
🔆 Урок подходит начинающим и продолжающим iOS-разработчикам.
👉 Встречаемся в преддверии старта курса «Специализация iOS Developer». Все участники вебинара получат специальную цену на обучение! 🔥
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/czm6cB
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Основы излишеств
Новая еженедельная подборка - закрытие CocoaPods и излишества чистой архитектуры, деструктуризация в Kotlin с примерами и знакомство с Flutter GPU, архитектура мобильного приложения в разрезе высоких нагрузок и построения экосистем, кто может стать программистом, сокращение количества вакансий для разработчиков и многое другое.
После пандемического бума количество вакансий для разработчиков сократилось до минимума с 2020 года. Если за 100 взять 1 февраля 2020 года, то пик в 230 был в начале 2022 года, а потом все время шел спад. Сейчас индекс - 69. Интерпретировать это можно как перенастройку после чрезмерного найма в период пандемии. Аналогичным образом, результаты опроса разработчиков Stack Overflow за 2024 год показали, что средняя зарплата разработчиков снизилась на 10 тысяч долларов. Это так же можно рассматривать как восстановление статус-кво после предложения аномально высоких ставок в период карантина. Маленький свет в конце - прогноз Бюро трудовой статистики США на декаду обнадеживает, ставя разработчика программного обеспечения на второе место в списке профессий с наибольшим ростом — в стране по прогнозу появится более 400 тыс. новых рабочих мест.
Разработка
• Количество вакансий для разработчиков сокращается
• Как провести IT-обучение и не остаться в пустой аудитории. Опыт подготовки команды к SwiftUI и лайфхаки для менторов
• Вредные советы, как приходить с вопросами к техлиду
• Practices of Reliable Software Design
• Apple Design Award Winner Devin Davies Shares His Learning Strategies
Маркетинг:
• Spotify начал показывать цену на сайте в iOS
Кроссплатформа
• Как мы создали приложение для ТСД на Flutter с интеграцией 1С и внедрили его на 200 фабриках в Китае
• Полный гайд по тестированию на Flutter. Часть 9: Best practices написания Unit-тестов
• swathirandillath0/ensuring-seamless-user-experience-implementing-in-app-updates-in-flutter-7100e3acdbb7">Ensuring Seamless User Experience: Implementing In-App Updates in Flutter
#mobiledev
iOS
• Apple открывает доступ к NFC в iOS 18.1
• Apple разрабатывает настольного робота
• Основы фреймворка Combine для ML в Swift
• Recursive enums in Swift
• The Tale of Method Sizzling: A Coding Adventure
#ios
🍎Apple разрабатывает настольного робота
Согласно сообщению Марка Гурмана из Bloomberg, у Apple есть «команда из нескольких сотен человек», работающая над новым продуктом.
• Это настольное устройство - у него будет дисплей в стиле iPad на роботизированной руке, которая способна наклонять его вверх и вниз, а также вращать на 360 градусов 🦾
• Устройство сможет отвечать на команды с помощью Siri или функций Apple Intelligence, таких как "посмотри на меня", которые смогут, например, наклонять экран, чтобы повернуться лицом к пользователю во время видеозвонка.
• Источники говорят, что компания планирует запустить устройство в 2026 или 2027 году, а его стоимость может составить около 1000 долларов.
И что: а как вы сможете использовать такую руку в своих приложениях? 🙈
Android
• Использование Чистой Архитектуры в Android излишество? — Обсуждение на Reddit
• rajputmukesh748/destructuring-in-kotlin-explained-with-examples-7928c83177b5">Destructuring in Kotlin: Explained with Examples
• kerry.bisset/jetpack-compose-theme-with-composition-local-spacing-shaping-and-status-colors-a00890724f9c">Jetpack Compose Theme with Composition Local: Spacing, Shaping, and Status Colors
• Efficient Render Passes — On Tile-Based Rendering Hardware
#android
Использование Чистой Архитектуры в Android излишество?
Один из разработчиков спрашивает на Reddit:
Лично я предпочитаю использовать MVVM или вообще не использовать архитектуру в Android. Является ли использование чистой архитектуры излишеством для Android или я просто неопытен и неинформирован?
В ответах ему накидали в панамку говорят о том, что для любого более или менее крупного проекта чистая архитектура это необходимость:
• Если этого не сделать, то любое изменение, внесенное в одну область, может повлиять на другие взаимосвязанные части, превращая обслуживание приложения в кошмар. Для простых приложений с несколькими экранами использование чистой архитектуры или MVVM может оказаться излишним. Однако для долгосрочного проекта, такого как банковское приложение, которое необходимо поддерживать в будущем, написание чистого кода с правильной архитектурой не просто необходимо — оно обязательно.
• Я бы сказал, что это неопытность в работе с большими кодовыми базами. Для больших приложений каждый раз, когда требования меняются или добавляются, если у вас нет слоя абстракции, вас ждут большие неприятности.
• Чистая архитектура — это не про добавление как можно большего количества слоев, а про то, чтобы основной/доменный код не зависел от фреймворков, IO, UI и т.д.
• Если цель — создать приложение и на этом закончить, то да, чистый код, хорошая архитектура и куча юнит-тестов будут излишеством. Но когда вам нужно иметь возможность быстро добавлять функции и исправлять ошибки в приложении, которое будет продолжать расти и должно жить 10+ лет, уравнение полностью меняется.
В конечном счете, наша цель — писать понятный, лаконичный, расширяемый и сопровождаемый (и тестируемый) код, причем не только для себя, но и для своих коллег. Таким образом, следуя «общим» принципам чистой архитектуры, вы достигаете чего-то достойного, знакомого всем.Читать полностью…
Google только что провел презентацию своих новых устройств Made by Google 2024. Выше даю ссылку на обзор TechCrunch, но в целом ничего революционно нового не появилось. Как и в случае с Apple, Google сделал акцент на внедрение ИИ - Gemini будет работать на Pixel локально и делать все уже более или менее виденное (самари звонков, обработку фотографий, поиск товаров по изображениям и т.п.). Может быть завтра подъедет еще информация, но пока как то "скучно, девочки" (С).
Разработка
• How we deleted 4195 code files in 9 hours
• Enterprise Mobile Apps Development Principles
Маркетинг
• Patreon будет платить 30% комиссию Apple
Кроссплатформа
• Внедрять Kotlin Multiplatform легко. Масштабировать сложно.
• Что думают про Flutter техлиды: инсайты из опроса
• Rust GUI library via Flutter, done simple
• punnyarthabanerjee/foreground-services-in-flutter-run-tasks-when-your-app-is-minimized-dbc24f2c099d">Foreground Services in Flutter: Run tasks when your App is minimized
iOS
• Реверс-инжиниринг iOS-приложения
• Как вернуть контроль над состоянием данных с RemoteResult
• Tracking geometry changes in SwiftUI
• Cancellable withObservationTracking in Swift
#ios
Android
• Используем библиотеку Android Security Lints для Android
• Zoomable — увеличение жестами в Jetpack Compose
• Когда ваше приложение умирает – жизненный цикл activity в Android для QA
• Android Release Automation - Our Journey to Fully Automated Weekly Releases
• Composing Suspend Functions
• Using Clean Architecture on Android, is it an overkill?
#android
Как автоматически обнаруживать подводные камни
Подборка всех материалов за неделю - автоматическое обнаружение утечек памяти в CI/CD с помощью UI-тестов, эффективная работа с legacy кодом Medium и новая версия Flutter, знакомство с Mobile Farm, тестирование платежей в проде, дейтинг-приложение, работающее только по четвергам и многое другое. Подключайтесь!
Видео и подкасты за неделю @AppFiles
• (iOS Ru)
Итоги одного года мобильной разработки с использованием NLP
• (iOS Ru)
Combine с нуля — реактивщина это просто
• (iOS En)
Building Compositional Grid Layout With iOS 18 APIs
• (iOS En)
The Best iOS Dev Portfolio Strategy
• (iOS En)
How to Reduce Log Verbosity in the Xcode Debug Console
• (iOS En)
Getting the MOST out of Xcode 16
• (iOS En)
Building App Intro Animations with Shape Morphing Effect Using SwiftUI
• (And En)
Targeting Android 15 - Why Your App Is NOT Ready
• (And En)
Channels in Kotlin Coroutines
• (And En)
Guide to Improving Compose Performance
• (And En)
Background Work in Android: Strategies and Best Practices
• (And En)
Applying the Strategy Pattern in Kotlin
• (Crs En)
Lifecycle path to Multiplatform
• (Crs En)
Kotlin Multiplatform in Google Workspace
• (Crs En)
KMP in Action A Production Case Study
• (Dev Ru)
Тулкиты кодогенерации Android vs iOS
• (Dev Ru)
Ускоряем карьерный рост в FAANG
• (Dev Ru)
Алгоритмы — самый провальный этап собеседований (+ все собеседования)
• (Dev En)
Operating Systems Course for Beginners
Что вы посмотрели за неделю?
#ios #android #mobile #video
Разработка
• Жутко, но факт: как Uber тестирует платежи в продакшене
Маркетинг
• Приложение ChatGPT поставило рекорд по выручке
• Кейс Ozon и Bidease: как снизить CAC и CPO более чем на 30%
Кроссплатформа
• xayilmaz/how-to-develop-a-super-app-with-react-native-fe18fbe002c5">How to Develop a Super App with React Native?
• alexey.inkin/deep-dive-into-writing-macros-in-dart-3-5-a1dd50914a7d">Deep dive into writing macros in Dart 3.5
#mobiledev
iOS
• Как автоматически обнаруживать утечки памяти в CI/CD с помощью UI-тестов
• Disk — хранение структур, изображений и данных
• Exploring HealthKit: Working with State of Mind APIs
• bellaposa/ios-app-reverse-engineering-de33ab6ca462">iOS App Reverse Engineering
• Have Fun with Apple’s Virtualization.Framework
#ios
🌐🤖 Продвижение в сторах 2024
О большом потоке халявных органических пользователей из сторов грезит каждый первый владелец приложений. Хотите, узнать как их получить? Записывайтесь на вебинар «Тенденции и успешные кейсы продвижения в сторах: итоги лета 2024».
Темы:
• стратегии продвижения в поиске и работе с репутацией, которые принесут максимум результата
• как работают CSL (Custom Store Listing) под поисковые запросы в Google Play и почему их стоит использовать
• какие возможности для органического продвижения дают новые ASO-инструменты
• всё о новом функционале платформы Appbooster: мотив на зарубежные страны для Android, мультишаговые офферы, корректировка рейтинга, CPE-офферы для iOS.
Когда: 22 августа (чт) 16:00 мск
Длительность: 1-1,5 ч
Стоимость: бесплатно
Зарегистрироваться на вебинар
Реклама. ООО "АППБУСТЕР". ИНН 6316226020. erid: LjN8KMmnT
Epic Games Store с Fortnite запустился на iOS
Fortnite наконец-то вернулся на iOS, спустя чуть более четырех лет после того, как Apple удалила игру из iOS App Store, но доступна она только в ЕС. Игра запускается сегодня как в новой версии Epic Games Store для iPhone, так и через AltStore PAL, другой сторонний магазин приложений. Магазин Epic Games Store также запускается сегодня для пользователей Android по всему миру.
В настоящее время в мобильном Epic Games Store представлено всего три игры, но компания уже ведет переговоры со сторонними мобильными разработчиками.
По словам вице-президента и генерального директора Epic Games Store Стива Эллисона, в декабре Epic планирует представить в мобильном магазине «курируемый» выбор игр от сторонних разработчиков, а самопубликация (которая уже возможна на ПК) появится в начале 2025 года. Epic также планирует перенести в магазин «все», что предлагает на ПК: 88% долю доходов для разработчиков, бесплатные игры для игроков и возможность для разработчиков использовать свои собственные платежные платформы.
Видео и подкасты за неделю @AppFiles
• (iOS Ru)
Поиск работы iOS разработчиком в текущих условиях 2024
• (iOS En)
Expandable Search Bar + Progressive Blur Effect
• (iOS En)
iOS 18 SwiftUI ScrollView DeepDive
• (iOS En)
SwiftUI: Test Push Notifications With iOS Simulators
• (And Ru)
ByteWeaver. Инструментирование байт-кода во имя великого блага
• (And En)
How to Get Access to ALL External Media Files (Works on Android 15!)
• (And En)
How to Pass Custom NavTypes in Compose Type-Safe Navigation
• (And En)
Kotlin's Elegant Deceptions Simple APIs, Unusual Tactics
• (And En)
Harmonizing Kotlin codebases with Konsist
• (And En)
Android, Compose, Multiplatform & Server - Inject them all with Koin
• (And En)
Elevating Android App Resilience: Incident Management Strategies
• (Crs Ru)
Почему вам не нужен Kotlin Multiplatform
• (Crs Ru)
Создание indoor-карты здания во Flutter
• (Crs En)
Diving into Advanced Compose Multiplatform Modifiers and Their Impact on Multiplatform Development
• (Dev Ru)
Кто реально может стать программистом?
• (Dev Ru)
30 вопросов команде и себе — техника и практика формулировка хороших вопросов
• (Dev Ru)
VK Звонки: поднимаем планку качества WebRTC-звонков
• (Dev Ru)
Как пользоваться DivKit
• (Dev En)
Kotlin for Data Analysis: Exploring Dataframes and Visualizations in Notebooks
• (Dev En)
AWS Certified Developer Associate Certification Course
• (Dsg En)
Design a Car mobile app for iOS 18 in Figma
Что вы посмотрели за неделю?
#ios #android #mobile #video
Android
• Деструктуризация в Kotlin с примерами
• Jetpack Compose Endless Horizontal Pager Animation — демо горизонтального пейджера
• Prefer Composition over Inheritance
• Android Process Lifecycle + Coroutines == ❤️
• Advanced Bottom Sheet With Flexible Configuration for Compose
#android
Тестирование — это кропотливый труд. Но иногда найти полезные ресурсы бывает сложнее, чем отыскать баг. Попросили коллег-тестировщиков из selectel">@Selectel поделиться рекомендациями, которые помогают им в работе и улучшении навыков ✅
В материале на канале @Selectel найдете найдете избранные инструменты, библиотеки и книги от практикующих экспертов. Читайте подборку по ссылке, а потом подписывайтесь на их канал, чтобы не пропустить топовые IT-материалы в удобном формате.
Реклама АО «Селектел». ИНН: 7810962785
Erid: 2Vtzqvwy4PE
FYI: Мир узнал дипфейках (да и дипфейки, конечно, улучшились)! За последние несколько дней пакет под названием Deep Live Cam (выложен на GitHub) получил широкую освещение в социальных сетях, потому что он может взять лицо человека из одной фотографии и применить его к видео с веб-камеры в реальном времени, следя за позой, освещением и выражением лица человека, который снимается. Хотя результаты не идеальны, программа показывает, как быстро развиваются технологии и как возможность обманывать других людей удаленно становится все проще с течением времени.
Разработка
• Deep Live Cam заменяет лицо в трансляции в реальном времени
• RePalm: Towards the first unauthorized PalmOS port
Кроссплатформа
• От Web к Native с React
• Знакомимся с Flutter GPU
• PWA vs Native: где приложения для iOS и Android больше никогда не пригодятся
• Оптимизация производительности Flutter приложений
• piyushhh01/flutter-magic-changing-app-icons-dynamically-even-on-stubborn-android-fff02c3829dc">Flutter Magic: Changing App Icons Dynamically (Even on Stubborn Android!)
iOS
• Swift Fluent Icon — fluent иконки от Microsoft
• CocoaPods прекращает развитие и переходит в режим поддержки
• Exploring SwiftUI: Animating Mesh Gradient with Colors in iOS 18
• Considerations for Using Codable and Enums in SwiftData Models
• Extend Your App’s Controls Across the System
• shibinbshaji007/exploring-local-storage-in-ios-istorageenumv2-0-e8e91af79c32">Exploring Local Storage in iOS: iStorageEnumV2.0
#ios
☕️ CocoaPods прекращает развитие и переходит в режим поддержки
CocoaPods уже около 13 лет, и за это время платформа настолько упростила процесс работы с библиотеками, что де-факто превратилась в способ обмена кодом в сообществе iOS и Mac.
В 2015 году Apple объявила о том, что проект CocoaPods будет заменен собственным решением, поскольку они собираются создать свой собственный менеджер пакетов - Swift Package Manager. Этот шаг фактически уничтожил весь энтузиазм разработчиков CocoaPods, замедлив активное развитие проекта, поскольку конкуренция с Apple на их собственной территории редко стоит часов, потраченных на волонтерскую работу.
Cейчас CocoaPods переходит в то состояние, когда работа будет обусловлена только внешними причинами. Это могут быть проблемы безопасности или изменения в Xcode, которые требуют изменить некоторые настройки и сделать новую сборку. Никаких новый фич не будет.
Долгосрочный план - через несколько лет сделать проект Read-only. В целом же разработчикам рекомендуют переходить на Swift Package Manager.
Android
• Cat Activity — трансляция активности в IDE в Discord
• galou.minisini/advanced-kotlin-flow-cheat-sheet-for-android-engineer-cb8157d4f848">Advanced Kotlin Flow Cheat sheet (for Android Engineer)
• Made by Google 2024
#android
Если вы думаете, что в дейтинге ничего нового не изобрести, то вы сильно ошибаетесь. Представляю Thursday - дейтинг, который работает только по четвергам. Более того - в полночь все совпадения исчезают. Идея заключается в том, что ограничение доступа только одним днем в неделю побудит потенциальных пользователей быстрее назначить встречу в реальной жизни - как раз (наверное) на пятницу. Мораль - каким бы абсурдным ограниче лично вам не казалось, кто-то может придумать как извлечь из него выгоду.
Разработка
• Apple готовит новый Mac Mini на M4
• Тулкиты кодогенерации Android vs iOS
• Ускоряем карьерный рост в FAANG
• Алгоритмы — самый провальный этап собеседований
• Алгоритм Дейкстры — вопросы с собеседований
• Cursor, конкурент GitHub Copilot, привлек Cерию A на $60 млн при оценке в $400 млн
• Архитектура мобильного приложения в разрезе высоких нагрузок и построения экосистем
• Variability, Not Repetition, is the Key to Mastery
• Following Industry Trends Can Be a Career Trap
• How I Created 175 Fonts Using Rust
Маркетинг
• Дейтинг-приложение Thursday работает только по четвергам
Кроссплатформа
• Полный гайд по тестированию на Flutter. Часть 7: Ошибки, которые усложняют написание тестов
• Piloting Kotlin Multiplatform is Easy. Scaling is Hard.
#mobile #dev
iOS
• Apple объявила о новой структуре сборов для приложений в ЕС
• Swift Semantic Search — семантический поиск в реальном времени на устройстве
• Итоги одного года мобильной разработки с использованием NLP
• Combine с нуля — реактивщина это просто
• Swift Navigation: Powerful navigation tools for all Swift platforms
• Embedded Swift Tutorial - Getting Started (Everything you need to know)
• Key Lessons When Moving Towards a Modular Codebase
#ios
🔥 Начните изучение SwiftUI с Otus. Присоединяйтесь к открытому уроку и узнайте, как создать видеоплеер на SwiftUI и работать с AVPlayer.
👉 На открытом вебинаре «Пишем приложение-видеоплеер на SwiftUI» 13 августа в 20:00 мск мы разберём всё, что нужно знать, чтобы создать простое и функциональное приложение на SwiftUI.
🔆 Вы узнаете:
- как создать простое приложение на SwiftUI;
- как воспроизвести аудио и видео в iOS-приложении;
- как использовать UIView в SwiftUI и взаимодействовать с ним.
👉 Вы научитесь работать с AVPlayer, делать простую верстку с SwiftUI и встраивать UIView в SwiftUI.
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cz0VLb
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Apple объявила о новой структуре сборов для приложений в ЕС
После июньского решения Евросоюза, согласно которому политики Apple и App Store официально нарушают Закон о цифровых рынках, компания Apple объявила о внесении очередных изменений. В частности, эти изменения касаются правил, связанных с размещением разработчиками приложений внешних ссылок для информирования пользователей об альтернативных способах оплаты.
• Ранее Apple применяла строгие правила, определяющие, как приложениям разрешается размещать ссылки. Требовалось, чтобы ссылка была статической и вела непосредственно на собственный сайт, без каких-либо параметров для идентификации вошедшего пользователя в URL. Это ограничивало возможности приложений напрямую направлять пользователей на веб-страницу, где они могли заплатить за функции в своем аккаунте.
• Согласно сегодняшним изменениям, все эти ограничения теперь отменены. Приложения могут предлагать действующие ссылки с любым количеством динамических URL. Эти ссылки могут вести пользователя куда угодно, в том числе для продвижения других каналов продаж, например альтернативных магазинов приложений. URL-адреса могут содержать параметры, если эти параметры не используются для рекламы или профилирования пользователей.
• Apple также обновила страницу раскрытия информации для пользователей, добавив более дружелюбный дизайн и включив в интерфейс переключатель, позволяющий пользователям в будущем отказаться от просмотра страницы раскрытия информации при переходе по внешним ссылкам на покупки.Core Technology Fee
• Взамен Apple вводит двухуровневую систему сборов для приложений, которые ссылаются на веб-страницы для оплаты. Кроме Core Technology Fee. это теперь плата за первоначальное приобретение (Initial Acquisition Fee) и плата за услуги магазина (Store Services Fee).
• Изменения запутаны — настолько, что даже Spotify пока не совсем понимает, что с ними делать,. Однако компания все же осудила изменения, основываясь на своем нынешнем понимании того, как будет работать новая политика:
На первый взгляд, требуя до 25% за базовое общение с пользователями, Apple в очередной раз грубо игнорирует фундаментальные требования Закона о цифровых рынках (DMA). Европейская комиссия ясно дала понять, что взимание периодической платы за такие базовые элементы, как ценообразование и ссылки, неприемлемо. Мы призываем Комиссию ускорить расследование, ввести ежедневные штрафы и обеспечить соблюдение DMA.
Android
• Пишем своё приложение для установки PIN на другие приложения
• Что стоит знать о Jetpack Compose: руководство для начинающих
• michellbak/building-an-effective-abstraction-layer-for-ui-resources-on-android-1806448caf50">Building an effective abstraction layer for UI resources on Android
• sandeepkella23/how-suspend-functions-work-in-kotlin-under-the-hood-in-android-01b1ad641869">How Suspend Functions Work in Kotlin: Under the Hood in Android
• MutableState or MutableStateFlow: A Perspective on what to use in Jetpack Compose
• ps.sujith/decompile-and-recompile-apk-using-apktool-beginners-guide-4ad03c2c5b8f">Decompile and Recompile APK using APKTOOL : Beginners Guide
#android
Жутко, но факт: как Uber тестирует платежи в продакшене
Тестирование в проде давно стало предметом для шуток и мемов. А вот, например, Uber там проводит большую часть тестов системы оплаты - одной из важнейших подсистем для приложения такси. Почему так?
Тестовы среды ограничены и в них невозможно реализовать все условия реального мира. Ошибки, которые в них можно выявить, просты и элементарны, а глубинных проблем вы никогда не поймете. Поэтому быстро прогнали тесты - и в прод.
Uber перерос идею о том, что дефекты могут быть полностью устранены на этапе тестирования.
Вместо того чтобы напрягаться по поводу идеального релиза, Uber внедрил инструменты для раннего обнаружения производственных сбоев и быстрого и простого отката к заведомо безопасному состоянию.
Эти инструменты соответствуют трем ключевым концепциям: Развертывание с учетом бизнес-показателей, тщательный выбор региона первого развертывания и постепенное развертывание.