Рекомпозиция в Compose: что не видно разработчику невооруженным глазом
Я рассмотрел основной и базовый механизм работы Сompose, на котором строится все остальное. В рамках статьи затронута только часть реализации, но именно это позволит понять, как все работает под капотом. Уже на данном этапе, даже не описывая реализацию remember, ясна суть устройства алгоритма работы данной функции.
А зачем знать, как это работает? Чтобы создать качественное приложение на Compose, требуется понимать правила игры. Иначе будет возникать много неочевидных моментов в виде подвисаний и некорректных отображений данных, которые в результате приводят к удалению пользователем продукта.
Статья: https://habr.com/ru/companies/astralinux/articles/810549/
Платформа: Android
Я рассмотрел основной и базовый механизм работы Сompose, на котором строится все остальное. В рамках статьи затронута только часть реализации, но именно это позволит понять, как все работает под капотом. Уже на данном этапе, даже не описывая реализацию remember, ясна суть устройства алгоритма работы данной функции.
А зачем знать, как это работает? Чтобы создать качественное приложение на Compose, требуется понимать правила игры. Иначе будет возникать много неочевидных моментов в виде подвисаний и некорректных отображений данных, которые в результате приводят к удалению пользователем продукта.
Статья: https://habr.com/ru/companies/astralinux/articles/810549/
Платформа: Android
YMFF - это небольшая библиотека, которая позволяет управлять функциями с помощью флагов функций и управлять самими флагами функций, благодаря макросам и оберткам свойств Swift.
YMFF поставляется полностью готовым к использованию прямо “из коробки” - вы получаете все необходимое для начала работы всего за несколько минут. Но вы также можете заменить практически любой компонент системы своей собственной, индивидуальной реализацией. Поставляемая реализация и протоколы хранятся в двух отдельных целях (YMFF и YMFFProtocols, соответственно).
YMFF на GitHub: https://github.com/yakovmanshin/YMFF
Платформа: iOS
⭐️: 27
YMFF поставляется полностью готовым к использованию прямо “из коробки” - вы получаете все необходимое для начала работы всего за несколько минут. Но вы также можете заменить практически любой компонент системы своей собственной, индивидуальной реализацией. Поставляемая реализация и протоколы хранятся в двух отдельных целях (YMFF и YMFFProtocols, соответственно).
YMFF на GitHub: https://github.com/yakovmanshin/YMFF
Платформа: iOS
⭐️: 27
Видео и подкасты за неделю:
•
•
•
•
•
•
•
•
•
•
•
Посоветуйте в комментариях интересные каналы по мобильной или не очень разработке? 🌐 @AppFiles
•
(iOS En) Design and build apps for watchOS 10•
(iOS En) Make features discoverable with TipKit•
(iOS En) Share files with SharePlay•
(And Ru) Всегда ли нужна чистая архитектура?•
(And En) What’s new in Android Studio Jellyfish•
(And En) Now in Android: 104 - Android Studio Jellyfish, A/B testing power consumption, AndroidX, and more•
(And En) Learn to Build a Multi-Module Running Tracker App + Wear OS App•
(And En) Three Simple Rules for Subtypes•
(Dev Ru) Будущее магазинов приложений•
(Dev Ru) 100% способ пройти собеседование•
(Dev Ru) Как увеличить свою продуктивность. Полный гайд по NotionПосоветуйте в комментариях интересные каналы по мобильной или не очень разработке? 🌐 @AppFiles
YouTube
WWDC23: Design and build apps for watchOS 10 | Apple
Dive into the details of watchOS design principles and learn how to apply them in your app using SwiftUI. We’ll show you how to build an app for the redesigned user interface to surface timely information, communicate focused content at a glance, and make…
SwiftOBD2 - это библиотека Swift, предназначенная для упрощения взаимодействия с автомобилями, использующими адаптер OBD2 (в том числе через Bluetooth Low Energy). Она предоставляет простой и мощный интерфейс для взаимодействия с бортовой системой диагностики вашего автомобиля, позволяя получать данные в реальном времени и проводить диагностику.
SwiftOBD2 на GitHub: https://github.com/kkonteh97/SwiftOBD2
Платформа: iOS
⭐️: 15
SwiftOBD2 на GitHub: https://github.com/kkonteh97/SwiftOBD2
Платформа: iOS
⭐️: 15
🔥2
Новые коллекции в Android
Зачем вообще нужно было строгать новые коллекции и переписывать старые?
На это есть как минимум три причины:
1. Эффективный расход памяти - думаю не секрет что даже при наличии 8Gb ОЗУ на вашем телефоне память не бесконечна, поэтому новые коллекции были написаны, придерживаясь принципа "минимум объектов".
2. Эффективная реализация алгоритмов - старые реализации могут содержать не очень эффективные алгоритмы и устаревшие решения, требующие рефакторинга.
3. Kotlin Multiplatform - при написании общего кода на Kotlin под разные платформы требуется минимальное количество зависимостей от платформенных структур данных, например таких как android.util.SparseArray.
А теперь перейдём к самой вкусной части статьи, разберёмся что за магические штуки наколдовали Google кодеры и самое главное как они работают под капотом.
Статья: https://habr.com/ru/articles/811415/
Платформа: Android
Зачем вообще нужно было строгать новые коллекции и переписывать старые?
На это есть как минимум три причины:
1. Эффективный расход памяти - думаю не секрет что даже при наличии 8Gb ОЗУ на вашем телефоне память не бесконечна, поэтому новые коллекции были написаны, придерживаясь принципа "минимум объектов".
2. Эффективная реализация алгоритмов - старые реализации могут содержать не очень эффективные алгоритмы и устаревшие решения, требующие рефакторинга.
3. Kotlin Multiplatform - при написании общего кода на Kotlin под разные платформы требуется минимальное количество зависимостей от платформенных структур данных, например таких как android.util.SparseArray.
А теперь перейдём к самой вкусной части статьи, разберёмся что за магические штуки наколдовали Google кодеры и самое главное как они работают под капотом.
Статья: https://habr.com/ru/articles/811415/
Платформа: Android
Создание онлайн видео плеера
Меня зовут Игорь, я занимаюсь мобильной разработкой в компании ГРИ, часть холдинга Sunlight. Сегодня хочу поделиться опытом создания плеера для воспроизведения плейлистов в форматах m3u и m3u8.
Статья: https://habr.com/ru/articles/810793/
Платформа: iOS
Меня зовут Игорь, я занимаюсь мобильной разработкой в компании ГРИ, часть холдинга Sunlight. Сегодня хочу поделиться опытом создания плеера для воспроизведения плейлистов в форматах m3u и m3u8.
Статья: https://habr.com/ru/articles/810793/
Платформа: iOS
Лучший способ структурировать iOS-проект
Важно поддерживать структуру проекта в чистоте и порядке. Когда вы работаете над большим проектом с сотнями файлов в большой команде, вы хотите, чтобы вы и ваши товарищи могли найти все, что вам нужно, в течение нескольких секунд. Проект должен быть организован с самого начала, и все члены команды должны следовать той структуре, которая у вас есть, потому что некоторые разработчики могут уйти, а новые могут присоединиться.
В этой статье я расскажу вам о некоторых распространенных ошибках, которые допускают junior-разработчики, и поделюсь тем, как я структурирую каждый проект, над которым работаю.
Статья: https://apptractor.ru/info/articles/luchshiy-sposob-strukturirovat-ios-proekt.html
Платформа: iOS
Важно поддерживать структуру проекта в чистоте и порядке. Когда вы работаете над большим проектом с сотнями файлов в большой команде, вы хотите, чтобы вы и ваши товарищи могли найти все, что вам нужно, в течение нескольких секунд. Проект должен быть организован с самого начала, и все члены команды должны следовать той структуре, которая у вас есть, потому что некоторые разработчики могут уйти, а новые могут присоединиться.
В этой статье я расскажу вам о некоторых распространенных ошибках, которые допускают junior-разработчики, и поделюсь тем, как я структурирую каждый проект, над которым работаю.
Статья: https://apptractor.ru/info/articles/luchshiy-sposob-strukturirovat-ios-proekt.html
Платформа: iOS
Kafka - приложение с бесплатными книгами и аудиокнигами. Всего в нем 41 миллион книг и текстов, 14,5 миллионов аудиозаписей - с тегами и возможностью поиска с помощью фильтров, аудиоплеером, скачиванием контента, темной темой. Внутри MVVM, корутины, Jetpack Compose, Material3, Room, Retrofit2, Dagger Hilt, ExoPlayer.
Kafka на GitHub: https://github.com/vipulyaara/Kafka
Платформа: Android
⭐️: 175
Kafka на GitHub: https://github.com/vipulyaara/Kafka
Платформа: Android
⭐️: 175
Всегда ли нужна чистая архитектура?
Все в Android разработке знакомы с чистой архитектурой — обсуждаем письмо в котором ставится под сомнение целесообразность её использования.
Подкаст: https://apptractor.ru/info/media/vsegda-li-nuzhna-chistaya-arhitektura.html
Платформа: Android
Все в Android разработке знакомы с чистой архитектурой — обсуждаем письмо в котором ставится под сомнение целесообразность её использования.
Подкаст: https://apptractor.ru/info/media/vsegda-li-nuzhna-chistaya-arhitektura.html
Платформа: Android
The Composable Architecture: мои 3 года использования
Недавно я ушел после трех лет работы в компании, использующей The Composable Architecture (TCA) от PointFree. Я хотел написать о своем опыте работы с TCA и о некоторых проблемах, которые я вижу в ней.
Статья: https://apptractor.ru/info/articles/the-composable-architecture-moi-3-goda-ispolzovaniya.html
Платформа: iOS
Недавно я ушел после трех лет работы в компании, использующей The Composable Architecture (TCA) от PointFree. Я хотел написать о своем опыте работы с TCA и о некоторых проблемах, которые я вижу в ней.
Статья: https://apptractor.ru/info/articles/the-composable-architecture-moi-3-goda-ispolzovaniya.html
Платформа: iOS
Sketch - библиотека, реализующая простое представление для рисования. В нем есть все базовые функции (карандаш, стирание, закраска, отмена/повтор, смена цветов или толщины линии, фигуры и пр.) и вы можете легко создавать приложения для рисования для iOS.
Sketch на GitHub: https://github.com/daihase/Sketch
Платформа: iOS
⭐️: 320
Sketch на GitHub: https://github.com/daihase/Sketch
Платформа: iOS
⭐️: 320
Как защитить свой код от Gemini in Android Studio
Хотя это и полезная функция, если вы работаете над проприетарной или важной кодовой базой, возможно, вы не захотите делиться своим кодом с Google.
Статья: https://apptractor.ru/info/articles/kak-zaschitit-svoy-kod-ot-gemini-in-android-studio.html
Платформа: Android
Хотя это и полезная функция, если вы работаете над проприетарной или важной кодовой базой, возможно, вы не захотите делиться своим кодом с Google.
Статья: https://apptractor.ru/info/articles/kak-zaschitit-svoy-kod-ot-gemini-in-android-studio.html
Платформа: Android
Начинаем работу с Detekt, статическим анализатором кода для Android
Как вы знаете, процесс code review занимает все больше времени по мере роста команды разработчиков. В этой статье я расскажу об инструменте, который облегчает этот процесс.
С помощью инструмента под названием Detekt вы можете выполнить любые проверки классов, написанных на Kotlin, запустить процесс ревью кода в любое время (например, перед коммитом) и сэкономить время.
Статья: https://apptractor.ru/info/articles/nachinaem-rabotu-s-detekt-staticheskim-analizatorom-koda-dlya-android.html
Платформа: Android
Как вы знаете, процесс code review занимает все больше времени по мере роста команды разработчиков. В этой статье я расскажу об инструменте, который облегчает этот процесс.
С помощью инструмента под названием Detekt вы можете выполнить любые проверки классов, написанных на Kotlin, запустить процесс ревью кода в любое время (например, перед коммитом) и сэкономить время.
Статья: https://apptractor.ru/info/articles/nachinaem-rabotu-s-detekt-staticheskim-analizatorom-koda-dlya-android.html
Платформа: Android
👍1
Анимация сетки в стиле Pinterest на Grid Animation
В этом видео показывают, как с помощью SwiftUI воссоздать эффект Pinterest Grid Expansion.
Видео: https://www.youtube.com/watch?v=fBCu7rM5Vkw
Платформа: iOS
В этом видео показывают, как с помощью SwiftUI воссоздать эффект Pinterest Grid Expansion.
Видео: https://www.youtube.com/watch?v=fBCu7rM5Vkw
Платформа: iOS
Navigation Compose Typed - compile-time type-safe аргументы для библиотеки Jetpack Navigation Compose. Основано на KotlinX.Serialization.
Основные возможности:
• Поддержка сложных типов, включая nullability для примитивных типов - единственным условием является то, что тип должен быть сериализуемым с помощью библиотеки KotlinX.Serializable.
• Библиотека основана на официальном плагине компилятора Kotlin Serialization - никаких замедлений при работе с KSP или KAPT.
• Все функции Jetpack Navigation Compose: например, navigateUp() после перехода по глубокой ссылке сохраняет общие аргументы верхнего уровня.
• Несколько простых функций, никаких новых сложных типов NavHost или NavController; это позволяет покрыть другие расширения Jetpack Navigation Compose.
• Постепенная интеграция, можно внедрять только в часть своего приложения.
Navigation Compose Type на GitHub: https://github.com/kiwicom/navigation-compose-typed
Платформа: Android
⭐️: 195
Основные возможности:
• Поддержка сложных типов, включая nullability для примитивных типов - единственным условием является то, что тип должен быть сериализуемым с помощью библиотеки KotlinX.Serializable.
• Библиотека основана на официальном плагине компилятора Kotlin Serialization - никаких замедлений при работе с KSP или KAPT.
• Все функции Jetpack Navigation Compose: например, navigateUp() после перехода по глубокой ссылке сохраняет общие аргументы верхнего уровня.
• Несколько простых функций, никаких новых сложных типов NavHost или NavController; это позволяет покрыть другие расширения Jetpack Navigation Compose.
• Постепенная интеграция, можно внедрять только в часть своего приложения.
Navigation Compose Type на GitHub: https://github.com/kiwicom/navigation-compose-typed
Платформа: Android
⭐️: 195
Result builders in Swift
Конструктор результатов можно рассматривать как встроенный предметно-ориентированный язык (DSL) для сбора деталей, которые объединяются в конечный результат. Конструкторы результатов в Swift позволяют создавать результат, используя "блоки сборки", расположенные в ряд друг за другом.
Статья: https://habr.com/ru/articles/813393/
Платформа: iOS
Конструктор результатов можно рассматривать как встроенный предметно-ориентированный язык (DSL) для сбора деталей, которые объединяются в конечный результат. Конструкторы результатов в Swift позволяют создавать результат, используя "блоки сборки", расположенные в ряд друг за другом.
Статья: https://habr.com/ru/articles/813393/
Платформа: iOS
Открываем AndroidFragment: перенос навигации из Фрагментов в Compose
Я очень рад появлению AndroidFragment, потому что нам больше не надо переписывать всех фрагменты в композабл, прежде чем мы сможем перейти на навигацию на основе Compose. Это позволит нам переходить на Compose постепенно, что является огромным преимуществом!
Статья: https://apptractor.ru/info/articles/otkryvaem-androidfragment-perenos-navigatsii-iz-fragmentov-v-compose.html
Платформа: Android
Я очень рад появлению AndroidFragment, потому что нам больше не надо переписывать всех фрагменты в композабл, прежде чем мы сможем перейти на навигацию на основе Compose. Это позволит нам переходить на Compose постепенно, что является огромным преимуществом!
Статья: https://apptractor.ru/info/articles/otkryvaem-androidfragment-perenos-navigatsii-iz-fragmentov-v-compose.html
Платформа: Android
Просим ИИ сделать рефакторинг Swift кода
Это некрасиво, но работает. Поэтому мне стало интересно, как бы инструменты искусственного интеллекта предложили мне его изменить. Ниже приведены результаты, полученные по одному и тому же запросу.
Статья: https://apptractor.ru/develop/coding/prosim-ii-sdelat-refaktoring-swift-koda.html
Платформа: ИИ
Это некрасиво, но работает. Поэтому мне стало интересно, как бы инструменты искусственного интеллекта предложили мне его изменить. Ниже приведены результаты, полученные по одному и тому же запросу.
Статья: https://apptractor.ru/develop/coding/prosim-ii-sdelat-refaktoring-swift-koda.html
Платформа: ИИ
Atoms предлагает простую, но практичную возможность справиться со сложностью современных приложений. Библиотека эффективно интегрирует решения для управления состоянием и инъекции зависимостей, позволяя нам быстро создавать надежные и тестируемые приложения. Построение состояния путем композиции атомов автоматически оптимизирует рендеринг на основе графа зависимостей. Это решает проблему снижения производительности, вызванную дополнительным повторным рендерингом, который происходит раньше, чем вы это осознаете.
Atoms на GitHub: https://github.com/ra1028/swiftui-atom-properties
Платформа: iOS
⭐️: 264
Atoms на GitHub: https://github.com/ra1028/swiftui-atom-properties
Платформа: iOS
⭐️: 264
Карантин UI-тестов в iOS
Рано или поздно большое количество UI-тестов скорее всего начнут тормозить разработку, потому что их стабильность зависит от множества факторов: стенды (API), инфраструктура (обновление Xcode, машин, СI), кодовая база. Даже из‑за проблем в самом XCUITest тесты могут начать выдавать аномалии.
Статья: https://habr.com/ru/companies/hh/articles/807351/
Платформа: iOS
Рано или поздно большое количество UI-тестов скорее всего начнут тормозить разработку, потому что их стабильность зависит от множества факторов: стенды (API), инфраструктура (обновление Xcode, машин, СI), кодовая база. Даже из‑за проблем в самом XCUITest тесты могут начать выдавать аномалии.
Статья: https://habr.com/ru/companies/hh/articles/807351/
Платформа: iOS
👍1