Тестирование — это кропотливый труд. Но иногда найти полезные ресурсы бывает сложнее, чем отыскать баг. Попросили коллег-тестировщиков из 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 внедрил инструменты для раннего обнаружения производственных сбоев и быстрого и простого отката к заведомо безопасному состоянию.
Эти инструменты соответствуют трем ключевым концепциям: Развертывание с учетом бизнес-показателей, тщательный выбор региона первого развертывания и постепенное развертывание.
Android
• Google TV Streamer — преемник Chromecast и центр умного дома
• Google запускает базу знаний о безопасности Android-приложений
• Precise Intent Resolution - Android 15
• Applying the Strategy Pattern in Kotlin
• The best way to load data in ViewModels
#android
Google запускает базу знаний о безопасности Android-приложений
База знаний по безопасности приложений Android (Android Application Security Knowledge Base, AAKB) содержит рекомендации по написанию безопасного программного обеспечения для Android. Она представляет собой хранилище распространенных проблем в коде с примерами их устранения и пояснениями по реализации конкретных моделей.
• База знаний была составлена с учетом того, что разработчикам необходимо знать не только о том, какие уязвимости были обнаружены в их приложениях, но и о том, как устранить проблемы и как избежать подобных неприятностей в будущем.
• Цель AAKB — создать руководство по написанию безопасного программного обеспечения для Android. Информация об уязвимостях и советы соответствуют стандартам OWASP MASVS, которые являются отраслевыми стандартами безопасности для мобильных приложений.
Руководство доступно на домашней странице AAKB или прямо в Android Studio, которая «ссылается на AAKB в результатах проверок линтера».
Android
• Реализация Server-Driven UI в Android
• В Android 15 режим edge-to-edge обязателен, но Google добавил возможность отказаться от него
• WhatsApp Clone Compose — копия WhatsApp на Compose и Stream SDK
• ccansuccanturk/fts4-full-text-search-in-android-273366e488ae">Full-Text Search in Android: Integrating FTS4 with Room
• My notes on Android optimization. Part 1. Measuring startup time
• Android Device Streaming: Announcing Early Access to Samsung, Xiaomi, and Oppo Device Labs
#android
У мобильного рынка новый победитель - MONOPOLY GO! быстрее всех заработала 3 миллиарда долларов. За 473 дня против 594 у предыдущего победителя, Genshin Impact. Интересно, что разработка MONOPOLY GO! заняла целых 7 лет и один из директоров Scopely Уолтер Драйвер подчеркнул, что процесс был долгим и сложным, отметив: «Есть старая поговорка, что большинство мгновенных успехов создаются десятилетиями, и в случае с MONOPOLY GO! это очень верно».
Разработка
• Алгоритмическая сессия на собеседовании
• Автоматическая генерация верстки под Server-driven UI из макетов Figma
• Учимся договариваться о деньгах — Офферы, Зарплаты, Повышение
• Самые высокооплачиваемые вакансии июля в сфере разработки приложений
• How to perform geoqueries on Firestore (somewhat) efficiently
• The way we interact with apps is changing, so should the way they are designed.
Маркетинг
• MONOPOLY GO! быстрее всех заработала $3 млрд
Кроссплатформа
• KMP на ОС Аврора: проблемы и пути их решения
• Полный гайд по тестированию на Flutter. Часть 6: Тестовые двойники: Faking vs Mocking
• Архитектура Flutter проекта простым языком. Clean Arch (MVVM, DI, Bloc, Inversion of Control)
🍎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
Давно хочу сделать уютный ламповый чат для инди-разработчиков (проектов). Вход только с указанием продукта, может быть по подписке, обсуждаем всякую индюшатину - ниши, аналитику, хаки, код, пейволы и пр. Не для Enterprise, а что можно сделать совсем или почти бесплатно в рамках пет-проектов. Интересно?
Разработка
• Flighty использует машинное обучение, чтобы предсказывать задержки рейсов
• VK проведет конференцию по мобильной разработке — VK JT Mobile
• Препарируем электрохомяка
• The Senior Engineer Illusion: What I Thought vs. What I Learned
• How Uber Tests Payments In Production
Маркетинг
• Маркетологи в мобайле: Денис Лазаричев (руководитель проектов performance-
Кроссплатформа
• PWA вместо приложения: плюсы, минусы, подводные камни
• What’s new in Flutter 3.24
• Getting started with Flutter GPU
• mouhanedakermi383/custom-render-boxes-and-painting-in-flutter-dbabe02094aa">Custom Render Boxes and Painting in Flutter
iOS
• Дизайн-система в SwiftUI
• В чём отличие асинхронности и многопоточности — вопросы с собеседований
• iOS Clean Architecture — чистая архитектура, MVVM и Combine
• Exploring SwiftUI: Creating a BottomSheet
• Nested Grid Layout Anomaly: Analysis Approach and Resolution Strategies for SwiftUI Layout Issues
• How to automatically manage, monitor & rollout new machine learning models across your iOS app user base
• How to automatically detect memory leaks on CI/CD using UI tests
#ios
Не очень понял как так получилось, но лидер июльского топа загрузок в России - CHOOLBOY RUNAWAY. Игра про школьника, которому нужно сбежать от родителей, получила за месяц почти 4.5 миллиона установок и опередила Телеграм и Wildberries, а TikTok и WhatsApp так вообще вместе взятых. Сколько заработала не очень понятно, так как IAP нет, есть только реклама. Но, кажется. неплохо. Так что мораль - никогда не надо недооценивать силу школьников 👨🎓
Разработка
• ОС «Аврора» — веб-сервер в кармане
• Trade My Spin строит бизнес на поддержанных тренажерах Peloton
• FlowMapp/what-type-of-loading-and-progress-indicators-implement-in-the-app-4efc0a1657d8">What Type of Loading and Progress Indicators Implement in the App?
• "20% for tech debt" doesn't work
Маркетинг
• Самые скачиваемые и зарабатывающие приложения в России в июле 2024
Кроссплатформа
• pomis172/understanding-composited-layers-to-improve-the-performance-of-flutter-apps-7b91079b4dd1">Understanding Composited Layers to improve the performance of Flutter apps
• Convert Your Native Project to Kotlin Multiplatform
• How BigPay Increased Flutter Developer Velocity
iOS
• SwiftUI Design System
• Useful packages to improve your SwiftUI development workflow
• islammoussa.eg/implementing-seamless-app-version-management-in-ios-with-cloudkit-bf5715b78283">Implementing Seamless App Version Management in iOS with CloudKit
#ios
Android
• Google Play сможет обновлять сторонние приложения
• Compose Game Engine — 2D игровой движок
• Нужно ли учить Java для Android-разработки в 2024
• «Арендовал телефон — стал фермером»: знакомство с Mobile Farm
• Hassle-free Snackbar in Jetpack Compose
• Making security easy: How we are helping you fix vulnerabilities in your Android apps
• Jetpack Compose Previews: Delving Deep Into Their Inner Workings
• michalankiersztajn/clean-datasources-in-android-aadc5e1aca5f">Clean Data Sources in Android
#android