Видео и подкасты за неделю @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#ios #android #mobile #video
•
(iOS En) SwiftUI Custom Popups - iOS 17 & 18•
(iOS En) SwiftUI TextRenderer•
(iOS En) SwiftUI Reorderable Scroll View - Custom Drag & Drop With Scroll Detection - iOS 18•
(iOS En) Create Modular iOS Apps with Swift Packages: Step-by-Step Guide!•
(iOS En) SwiftUI - Reorder a List (2 Ways)•
(iOS En) Fix This Problem with SwiftUI Lists•
(And Ru) Организация кода в проекте — в какой пакет положить Kotlin класс•
(And En) Building for the future of Android•
(And En) What's new in Android Studio Koala•
(And En) Master Kotlin Coroutines & Flows•
(And En) Build your own compiler with KSP•
(And En) Applying the State Pattern in Kotlin•
(Dev Ru) Архитектурное собеседование — по обе стороны баррикад (+ все собеседования)•
(Dev Ru) Backend-Driven UI и конструкторы. Благо или зло?•
(Dev Ru) Открытое собеседование — технический руководитель: разбор кейса•
(Dev Ru) Как работает авторизация и аутентификация — OAuth, JWT, webauthn, RBAC, ABAC#ios #android #mobile #video
👍1
Как я разрушил свои стереотипы об автотестах, или Мой путь от Appium до Kaspresso
В этой статье хочу рассказать, как я прошел путь от Appium до open-source-фреймворка Kaspresso, с чего начинал, какие делал для себя открытия, как разрушались мои стереотипы и какие по итогу были сделаны выводы.
Статья: https://habr.com/ru/companies/kaspersky/articles/841136/
Платформа: Android
В этой статье хочу рассказать, как я прошел путь от Appium до open-source-фреймворка Kaspresso, с чего начинал, какие делал для себя открытия, как разрушались мои стереотипы и какие по итогу были сделаны выводы.
Статья: https://habr.com/ru/companies/kaspersky/articles/841136/
Платформа: Android
Темная сторона однонаправленных архитектур Swift
В этой статье речь пойдет о главной проблеме всех однонаправленных архитектур Swift. Собственно говоря, это не проблема однонаправленных архитектур как таковых. Скорее, это проблема моделирования действий или событий как значений. Я ее называю “пинг-понг-проблемой”. Все дело в “скачках” между разными местами кода, которые приходится преодолевать, чтобы получить целостное представление обо всем потоке.
Статья: https://nuancesprog.ru/p/21632/
Платформа: iOS
В этой статье речь пойдет о главной проблеме всех однонаправленных архитектур Swift. Собственно говоря, это не проблема однонаправленных архитектур как таковых. Скорее, это проблема моделирования действий или событий как значений. Я ее называю “пинг-понг-проблемой”. Все дело в “скачках” между разными местами кода, которые приходится преодолевать, чтобы получить целостное представление обо всем потоке.
Статья: https://nuancesprog.ru/p/21632/
Платформа: iOS
• Все, что вы хотели знать о флагах в эмодзи (но не знали, что вам это нужно)
• Как я решал задачу получения доступа к данным банковских приложений на iOS
• Дружим iPhone и ESP32. Часть 1. ESP Arduino Core
• Как встроить распознавание звуков в ваше iOS приложение на Swift с использованием SoundAnalysis
• Время сборки и верификация модулей
• Поваренная книга SwiftUI: списки и навигация — Часть 1
• Я получил новый iPhone, но мой аккаунт в социальных сетях заблокирован
• Apple забанила аккаунт компании победителя WWDC
• Темная сторона однонаправленных архитектур Swift
•
(En) JavaScript to Swift and back: Bridging location services in WKWebView•
(En) SwiftData’s new Index and Unique macros•
(En) Elevate Your Testing Game with Swift Testing•
(En) Limit Swift Concurrency’s cooperative pool•
(En) Custom hover effects in SwiftUI•
(En) Backport SwiftUI modifiers•
(En) Hiding A SwiftUI View From Switch Control•
(En) Animating SF Symbols on iOS 18•
(En) The AirDrop Conundrum: Passing Custom Models From and To Your App•
(En) SwiftUI Modifiers Deep Dive: containerRelativeFrame•
(En) How-to: Symbolicate MetricKit Crashdiagnostics•
(En) Walmart Software Engineer III — IOS (IN3) My Interview Experience•
•
•
•
•
•
•
•
Please open Telegram to view this post
VIEW IN TELEGRAM
AppTractor
Все, что вы хотели знать о флагах в эмодзи (но не знали, что вам это нужно)
Это гораздо лучше, чем вести словарь.
👍1
• Интересные приёмы, взятые из исходников Android
• Создаем атомный лоадер на Jetpack Compose
• Композим иконки. Улучшаем семантику и скорость отрисовки
• NFC на Android: создание системы предоплаты с использованием NDEF меток
• Фокус в Android TV
• Многопоточность в Android: тогда и сейчас
• Советы по обработке Insets для обеспечения edge-to-edge на Android 15
• Как я разрушил свои стереотипы об автотестах, или Мой путь от Appium до Kaspresso
• Защита мобильных приложений. Записки охотника: Почему Appdome иногда такой себе Dome
• Организация кода в проекте — в какой пакет положить Kotlin класс
• Android 15 опубликован в AOSP
•
(En) String vs StringBuffer vs StringBuilder•
(En) Coroutine Testing — Never ending tests & backgroundScope•
(En) Avoiding unintentional device exclusion in an Android app•
(En) Android Studio Koala Feature Drop is Stable!•
(En) Transforming Figma UI Designs into Jetpack Compose Code with Google AI Studio: A Step-by-Step Guide•
(En) Composable-scoped ViewModel: An interesting experiment•
(En) Loading Initial Data in LaunchedEffect vs. ViewModel•
(En) How to Provide Photos to the Gallery for Running UI Automated Tests•
(En) Mastering Navigation in Jetpack Compose: A Guide to Using the inclusive Attribute•
(En) How to Create an Atomic Loader in Jetpack Compose•
(En) Insets handling tips for Android 15’s edge-to-edge enforcement•
(En) Kotlin KSP — how to automate everything in the world•
(En) Best way to keep state in a ViewModel•
(En) Unlock Android Jetpack Components: Hidden Tricks to Build Successful App•
(En) Android Compose Videos with ExoPlayer•
(En) Android dev very overengineered and difficult to get into?•
(En) Anti-Pattern: Stop Leaking Kotlin Flow Collectors in Your Android ViewModel•
•
•
•
•
•
•
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Интересные приёмы, взятые из исходников Android
Интересные приёмы, взятые из исходников Android В процессе чтения исходников Android SDK я замечал интересные механики и приёмы написания кода, какие-то из них до сих пор используются при создании...
Learn Kotlin Coroutines - изучение корутин на реальных примерах для Android. Этот проект предназначен для тех, кто хочет начать изучать асинхронное программирование в применении к мобильным приложениям. Автор постарался добавить примеры, которые он сам часто реализует в своем проекте.
Learn Kotlin Coroutines на GitHub: https://github.com/amitshekhariitbhu/Learn-Kotlin-Coroutines
Платформа: Android
⭐️: 373
Learn Kotlin Coroutines на GitHub: https://github.com/amitshekhariitbhu/Learn-Kotlin-Coroutines
Платформа: Android
⭐️: 373
Как я решал задачу получения доступа к данным банковских приложений на iOS
Вы пользуетесь кешбэком, может даже выбираете категории повышенного кешбэка каждый месяц? Когда у вас несколько карт разных банков с кешбэком, становится непросто запомнить, какую из них лучше использовать для конкретной покупки в этом месяце.
Можно было бы эти категории записывать на листик или куда‑то в заметки, но я решил сделать iOS приложение, в котором можно добавлять выбранные категории кешбэка, а они уже будут выводиться в виде виджета.
Заполнять данные о категориях вручную мне показалось неудобно, поэтому я начал думать, как упростить пользователю получение и ввод этих данных из банковских приложений. О том, как я решил эту задачу, расскажу в этой публикации.
Статья: https://habr.com/ru/articles/840138/
Платформа: iOS
Вы пользуетесь кешбэком, может даже выбираете категории повышенного кешбэка каждый месяц? Когда у вас несколько карт разных банков с кешбэком, становится непросто запомнить, какую из них лучше использовать для конкретной покупки в этом месяце.
Можно было бы эти категории записывать на листик или куда‑то в заметки, но я решил сделать iOS приложение, в котором можно добавлять выбранные категории кешбэка, а они уже будут выводиться в виде виджета.
Заполнять данные о категориях вручную мне показалось неудобно, поэтому я начал думать, как упростить пользователю получение и ввод этих данных из банковских приложений. О том, как я решил эту задачу, расскажу в этой публикации.
Статья: https://habr.com/ru/articles/840138/
Платформа: iOS
Композим иконки. Улучшаем семантику и скорость отрисовки
Во время работы над новыми экранами мне часто приходилось использовать множество различных иконок, разбросанных по всему проекту. Это навело на мысль: было бы здорово собрать все иконки в UI Kit в единственном экземпляре и использовать их только оттуда — по аналогии с тем, как это делают дизайнеры в Figma. И тогда я вспомнил об одной особенности Jetpack Compose. С момента появления в нём существует новый способ отрисовки иконок с помощью кода. На мой взгляд, этот метод отличается удобной семантикой и несколько более высокой производительностью.
Статья: https://habr.com/ru/companies/vk/articles/840862/
Платформа: Android
Во время работы над новыми экранами мне часто приходилось использовать множество различных иконок, разбросанных по всему проекту. Это навело на мысль: было бы здорово собрать все иконки в UI Kit в единственном экземпляре и использовать их только оттуда — по аналогии с тем, как это делают дизайнеры в Figma. И тогда я вспомнил об одной особенности Jetpack Compose. С момента появления в нём существует новый способ отрисовки иконок с помощью кода. На мой взгляд, этот метод отличается удобной семантикой и несколько более высокой производительностью.
Статья: https://habr.com/ru/companies/vk/articles/840862/
Платформа: Android
DDLoggerSwift - терминал, который работает с логами приложений, и который может генерировать общий лог-файл и отладочную информацию, когда реальный смартфон не подключен к Xcode. Вы можете делиться записями, фильтровать логи и выполнять другие операции. Можно использовать SQLite для хранения информации, есть поддержка совместного использования системы и отображения на экране
DDLoggerSwift на GitHub: https://github.com/DamonHu/DDLoggerSwift
Платформа: iOS
⭐️: 33
DDLoggerSwift на GitHub: https://github.com/DamonHu/DDLoggerSwift
Платформа: iOS
⭐️: 33
Основы Jetpack Compose: как обеспечить стабильность вашего кода
По моему опыту, многие кто начинают писать на Compose, делают это интуитивно. Почему? Чтобы привыкнуть, понять, осознать подход к декларативному UI — нужно много времени, и поэтому к пониманию стабильности приходят, как правило, сильно позже. Однако это важно, ведь правильно организованная стабильность уменьшает количество рекомпозиций, что улучшает производительность и плавность работы приложения.
Статья: https://habr.com/ru/companies/yandex/articles/841154/
Платформа: Android
По моему опыту, многие кто начинают писать на Compose, делают это интуитивно. Почему? Чтобы привыкнуть, понять, осознать подход к декларативному UI — нужно много времени, и поэтому к пониманию стабильности приходят, как правило, сильно позже. Однако это важно, ведь правильно организованная стабильность уменьшает количество рекомпозиций, что улучшает производительность и плавность работы приложения.
Статья: https://habr.com/ru/companies/yandex/articles/841154/
Платформа: Android
Может хотя бы один заказать широкий?
В этой статье вы узнаете, как выборочно отключить предложения по автозавершению в Android Studio (IntelliJ IDE).
Статья: https://apptractor.ru/info/articles/izbegaem-lovushek-avtozaversheniya-v-android-studio.html
Платформа: Android
В этой статье вы узнаете, как выборочно отключить предложения по автозавершению в Android Studio (IntelliJ IDE).
Статья: https://apptractor.ru/info/articles/izbegaem-lovushek-avtozaversheniya-v-android-studio.html
Платформа: Android
Memory Guardian - это небольшое приложение для Android, которое повышает уровень конфиденциальности и безопасности пользователей, автоматически очищая буфер обмена через заданные промежутки времени. Это помогает защитить конфиденциальную информацию, например пароли, от возможной утечки в другие приложения.
Memory Guardian на GitHub: https://github.com/hashemi-hossein/memory-guardian
Платформа: Android
⭐️: 373
Memory Guardian на GitHub: https://github.com/hashemi-hossein/memory-guardian
Платформа: Android
⭐️: 373
Проверка доступности языка для перевода в фреймворке Translation
Новый фреймворк Translation использует локальные модели машинного обучения для перевода контента в наших приложениях, но не все языки доступны для перевода. Если пользователь пытается запросить перевод текста с языка, который еще не поддерживается, мы должны правильно с этим справиться.
Статья: https://apptractor.ru/info/articles/proverka-dostupnosti-yazyka-dlya-perevoda-v-freymvorke-translation.html
Платформа: iOS
Новый фреймворк Translation использует локальные модели машинного обучения для перевода контента в наших приложениях, но не все языки доступны для перевода. Если пользователь пытается запросить перевод текста с языка, который еще не поддерживается, мы должны правильно с этим справиться.
Статья: https://apptractor.ru/info/articles/proverka-dostupnosti-yazyka-dlya-perevoda-v-freymvorke-translation.html
Платформа: iOS
Защита мобильных приложений. Записки охотника: Почему Appdome иногда такой себе Dome
Приложение очень крупной, с точки зрения прохождение через нее денежных потоков, компании. Суть приложения в том, чтобы обеспечивать верификацию пользователя при выполнении важных действий со своим счетом. Основное приложение работает на десктопе в браузере. Но, когда необходимо выполнить важную операцию, в браузере появляется запрос на верификацию. Пользователь должен открыть приложение на телефоне, после чего приложением будет собран определенный набор данных и отправлен на сервер. Сервер и решит - настоящий это пользователь или нет. Если нет - то транзакция не пройдет. Я не описываю все тонкости, но основная суть такая.
Приложение защищено и не работает на эмуляторе, на устройствах с root, и вообще, при любом отклонении, выдает сообщение о наличии угрозы и закрывается.
Цель исследования - выяснить возможность автоматического запуска приложения и верификации с заранее заданными параметрами.
Статья: https://habr.com/ru/articles/840920/
Платформа: Android
Приложение очень крупной, с точки зрения прохождение через нее денежных потоков, компании. Суть приложения в том, чтобы обеспечивать верификацию пользователя при выполнении важных действий со своим счетом. Основное приложение работает на десктопе в браузере. Но, когда необходимо выполнить важную операцию, в браузере появляется запрос на верификацию. Пользователь должен открыть приложение на телефоне, после чего приложением будет собран определенный набор данных и отправлен на сервер. Сервер и решит - настоящий это пользователь или нет. Если нет - то транзакция не пройдет. Я не описываю все тонкости, но основная суть такая.
Приложение защищено и не работает на эмуляторе, на устройствах с root, и вообще, при любом отклонении, выдает сообщение о наличии угрозы и закрывается.
Цель исследования - выяснить возможность автоматического запуска приложения и верификации с заранее заданными параметрами.
Статья: https://habr.com/ru/articles/840920/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Изучаем WidgetKit: пишем виджет для Control Center в iOS 18
Архитектура настолько похожа на другие виджеты, что я за пятнадцать минут создал простой элемент управления для своего приложения Fusion, чтобы напрямую воспроизводить станцию в Apple Music.
Статья: https://apptractor.ru/info/articles/izuchaem-widgetkit-pishem-vidzhet-dlya-control-center-v-ios-18.html
Платформа: iOS
Архитектура настолько похожа на другие виджеты, что я за пятнадцать минут создал простой элемент управления для своего приложения Fusion, чтобы напрямую воспроизводить станцию в Apple Music.
Статья: https://apptractor.ru/info/articles/izuchaem-widgetkit-pishem-vidzhet-dlya-control-center-v-ios-18.html
Платформа: iOS
Heat - это нативный клиент с открытым исходным кодом для iOS и macOS, позволяющий взаимодействовать с самыми популярными LLM-сервисами. Фичи:
• Поддержка популярных LLM-провайдеров (OpenAI, Mistral, Anthropic, Gemini)
• Поддержка локальных LLM с открытым исходным кодом с помощью Ollama
• Поддержка генерирования изображений (Stable Diffusion и Dall-e)
• Поиск и просмотр веб-страниц для повышения точности ответов
• Чтение и понимание календаря
• Поиск в файловой системе (только для десктопа)
• Базовое сохранение данных в памяти
• Никаких зависимостей от сервера, кроме доступа к моделям
Heat на GitHub: https://github.com/nathanborror/Heat
Платформа: iOS
⭐️: 201
• Поддержка популярных LLM-провайдеров (OpenAI, Mistral, Anthropic, Gemini)
• Поддержка локальных LLM с открытым исходным кодом с помощью Ollama
• Поддержка генерирования изображений (Stable Diffusion и Dall-e)
• Поиск и просмотр веб-страниц для повышения точности ответов
• Чтение и понимание календаря
• Поиск в файловой системе (только для десктопа)
• Базовое сохранение данных в памяти
• Никаких зависимостей от сервера, кроме доступа к моделям
Heat на GitHub: https://github.com/nathanborror/Heat
Платформа: iOS
⭐️: 201
Ускоряем Android-приложения с помощью Baseline Profiles
Наша команда отвечает за производительность приложения Авито: мы следим за скоростью старта приложения и отрисовки экранов, качеством скролла, отслеживаем сетевые ошибки и занимаемся оптимизациями.
В этой статье я расскажу, что такое Baseline Profiles, как он ускоряет запуск программы и каким приложениям он принесет больше пользы. В качестве примера возьму наш эксперимент, который ускорил время запуска приложения на 15%. Также расскажу, как мы автоматизировали добавление профилей в каждый релиз.
Статья: https://habr.com/ru/companies/avito/articles/842218/
Платформа: Android
Наша команда отвечает за производительность приложения Авито: мы следим за скоростью старта приложения и отрисовки экранов, качеством скролла, отслеживаем сетевые ошибки и занимаемся оптимизациями.
В этой статье я расскажу, что такое Baseline Profiles, как он ускоряет запуск программы и каким приложениям он принесет больше пользы. В качестве примера возьму наш эксперимент, который ускорил время запуска приложения на 15%. Также расскажу, как мы автоматизировали добавление профилей в каждый релиз.
Статья: https://habr.com/ru/companies/avito/articles/842218/
Платформа: Android
👍1
Утечка памяти: детективная история с Xcode
Недавно я столкнулся с забавной ошибкой, связанной с глубокими ссылками.
Иногда при нажатии на push-уведомление некоторые пользователи сообщали, что целевой экран появляется дважды - приложение открывалось, переходило на нужный экран, но переход между экранами происходил дважды.
Я начал расследование, не подозревая, насколько глубокой окажется эта кроличья нора.
Статья: https://apptractor.ru/info/articles/utechka-pamyati-detektivnaya-istoriya-s-xcode.html
Платформа: iOS
Недавно я столкнулся с забавной ошибкой, связанной с глубокими ссылками.
Иногда при нажатии на push-уведомление некоторые пользователи сообщали, что целевой экран появляется дважды - приложение открывалось, переходило на нужный экран, но переход между экранами происходил дважды.
Я начал расследование, не подозревая, насколько глубокой окажется эта кроличья нора.
Статья: https://apptractor.ru/info/articles/utechka-pamyati-detektivnaya-istoriya-s-xcode.html
Платформа: iOS
❤1
Peristyle - простое приложение-менеджер обоев для Android, созданное с использованием библиотек Material и рекомендаций по дизайну. Фичи - сканирование каталогов, динамическое применение фильтров размытия и цвета к любым обоям, автоматическая смена обоев, простая, но красивая анимация с надлежащей оптимизацией, поддержка биометрической блокировки, Material You дизайн с Edge to Edge.
Peristyle на GitHub: https://github.com/Hamza417/Peristyle
Платформа: Android
⭐️: 196
Peristyle на GitHub: https://github.com/Hamza417/Peristyle
Платформа: Android
⭐️: 196
🔥1
Видео и подкасты за неделю @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
#ios #android #mobile #video
•
(iOS Ru) Эволюция презентационных паттернов SwiftUI•
(iOS En) Custom Keyboards SwiftUI•
(iOS En) SwiftUI - File / Folder & Architecture Setup for New Projects•
(iOS En) iOS 18 SystemFormatStyle and TimeDataSource•
(iOS En) SwiftUI Responsive UI Design - Adaptive Layout•
(And Ru) «Ленивый граф», или Как мы оптимизировали старт приложения•
(And Ru) В сетях сетевого слоя•
(And En) Видео droidcon Berlin 24•
(And En) Compose animations - Android Developers Backstage•
(And En) Navigation Compose meet Type Safety•
(And En) Flow layouts - Jetpack Compose Tips•
(And En) Full Guide to Deep Linking With Type-Safe Jetpack Compose Navigation•
(And En) Upload a File With Progress Bar Using Ktor•
(And En) Building Responsive Applications with RxKotlin•
(Crs Ru) Многомодульное приложение на Flutter•
(Crs Ru) Архитектура white-label на Flutter: тонем в абстракциях•
(Crs En) Cleaner Flutter code with Dart 3•
(Dev Ru) Junior-разработчики — обучение программированию, тестовое задание•
(Dev Ru) Аутсорсинг в IT: взгляд изнутри•
(Dev Ru) Мобильные приложения — кто и как их создаёт?•
(Dev Ru) Тестовый скрининг с карьерным ментором + Какие софт-скиллы необходимы разработчику•
(Dev En) Productivity as a Developer – Full Course#ios #android #mobile #video
Джейлбрейк с помощью ссылки: удаленное выполнение кода на iOS
Это история цепочки эксплойтов Trident: 3 уязвимости нулевого дня в iOS, которые позволили сделать первый удаленный джейлбрейк. Часть первая посвящена внутренностям среды выполнения JavaScriptCore, в которой в WebKit скрывается уязвимость, способная вскрыть ваш iPhone.
Статья: https://jacobbartlett.substack.com/p/jailbreak-enemies-with-a-link-remote-execution
Платформа: iOS
Это история цепочки эксплойтов Trident: 3 уязвимости нулевого дня в iOS, которые позволили сделать первый удаленный джейлбрейк. Часть первая посвящена внутренностям среды выполнения JavaScriptCore, в которой в WebKit скрывается уязвимость, способная вскрыть ваш iPhone.
Статья: https://jacobbartlett.substack.com/p/jailbreak-enemies-with-a-link-remote-execution
Платформа: iOS
🔥1