SkyHigh 16KB Doctor - помощь в миграции на 16 Кб
Для Android-разработчиков, использующих нативные библиотеки, появилось новое требование Google Play: обеспечить поддержку 16-килобайтных страниц памяти для приложений, нацеленных на Android 15. Ручная проверка и обновление каждой .so библиотеки может стать сложной задачей. SkyHigh 16KB Doctor - плагин Gradle, который сканирует Android APK/AAB на наличие нативных библиотек .so, проверяет значения ELF p_align (целевое значение для 16 КБ страниц), сопоставляет библиотеки с владельцами (модуль или зависимость) и создает удобные для машины и человека отчеты.
SkyHigh 16KB Doctor на GitHub: https://github.com/sparrow007/skyhigh-16kb-doctor
Платформа: Android
⭐️: 18
Для Android-разработчиков, использующих нативные библиотеки, появилось новое требование Google Play: обеспечить поддержку 16-килобайтных страниц памяти для приложений, нацеленных на Android 15. Ручная проверка и обновление каждой .so библиотеки может стать сложной задачей. SkyHigh 16KB Doctor - плагин Gradle, который сканирует Android APK/AAB на наличие нативных библиотек .so, проверяет значения ELF p_align (целевое значение для 16 КБ страниц), сопоставляет библиотеки с владельцами (модуль или зависимость) и создает удобные для машины и человека отчеты.
SkyHigh 16KB Doctor на GitHub: https://github.com/sparrow007/skyhigh-16kb-doctor
Платформа: Android
⭐️: 18
❤4
Писать код легко. Читать его — нет.
Ментальная модель — это то, что вы создаёте, читая код. Это ваша внутренняя карта того, как работает система, где находятся сложные части, что от чего зависит. Без неё вы просто смотрите на строки текста.
Статья: https://apptractor.ru/info/articles/pisat-kod-legko-chitat-ego-net.html
Платформа: разработка
Ментальная модель — это то, что вы создаёте, читая код. Это ваша внутренняя карта того, как работает система, где находятся сложные части, что от чего зависит. Без неё вы просто смотрите на строки текста.
Статья: https://apptractor.ru/info/articles/pisat-kod-legko-chitat-ego-net.html
Платформа: разработка
❤1
Повышение производительности приложения за счет лучшего сокращения ресурсов
Новый подход улучшает сокращение ресурсов за счёт полной интеграции с существующим конвейером оптимизации кода. В новом подходе R8 одновременно оптимизирует как код, так и ссылки на ресурсы, гарантируя, что все ресурсы, на которые ссылается исключительно неиспользуемый код, идентифицируются как неиспользуемые и затем удаляются. Это полностью устраняет необходимость в безусловных правилах сохранения (unconditional keep rules), генерируемых AAPT2 (инструментом упаковки ресурсов для Android), и предоставляет гораздо более детальную и точную информацию для удаления неиспользуемого кода и ресурсов.
Статья: https://apptractor.ru/info/articles/povyshenie-proizvoditelnosti-prilozheniya-za-schet-luchshego-sokrascheniya-resursov.html
Платформа: Android
Новый подход улучшает сокращение ресурсов за счёт полной интеграции с существующим конвейером оптимизации кода. В новом подходе R8 одновременно оптимизирует как код, так и ссылки на ресурсы, гарантируя, что все ресурсы, на которые ссылается исключительно неиспользуемый код, идентифицируются как неиспользуемые и затем удаляются. Это полностью устраняет необходимость в безусловных правилах сохранения (unconditional keep rules), генерируемых AAPT2 (инструментом упаковки ресурсов для Android), и предоставляет гораздо более детальную и точную информацию для удаления неиспользуемого кода и ресурсов.
Статья: https://apptractor.ru/info/articles/povyshenie-proizvoditelnosti-prilozheniya-za-schet-luchshego-sokrascheniya-resursov.html
Платформа: Android
❤1
Translate Genie - генерация переводов в задаче Gradle
Translate Genie - мощная библиотека для Android, которая автоматически генерирует переводы для всех ваших строковых ресурсов с помощью простой задачи Gradle.
Фичи:
• Автоматический перевод: переводит строки, массивы строк и формы множественного числа из файла strings.xml по умолчанию
• Различные типы ресурсов: поддерживает элементы <string>, <string-array> и <plurals>
• Настраиваемость: простая конфигурация параметров перевода на основе JSON
• Поддержка нескольких проектов: автоматическая обработка всех проектов в сборке Gradle
• Умная обработка: атрибуты, комментарии и структура XML, экранирование специальных символов
• Восстановление после ошибок: обработка продолжается даже при сбое отдельных переводов.
• Безопасность: использует безопасный парсинг XML для предотвращения XXE-атак
Translate Genie на GitHub: https://github.com/sarimmehdi/Translate-Genie
Платформа: Android
⭐️: 2
Translate Genie - мощная библиотека для Android, которая автоматически генерирует переводы для всех ваших строковых ресурсов с помощью простой задачи Gradle.
Фичи:
• Автоматический перевод: переводит строки, массивы строк и формы множественного числа из файла strings.xml по умолчанию
• Различные типы ресурсов: поддерживает элементы <string>, <string-array> и <plurals>
• Настраиваемость: простая конфигурация параметров перевода на основе JSON
• Поддержка нескольких проектов: автоматическая обработка всех проектов в сборке Gradle
• Умная обработка: атрибуты, комментарии и структура XML, экранирование специальных символов
• Восстановление после ошибок: обработка продолжается даже при сбое отдельных переводов.
• Безопасность: использует безопасный парсинг XML для предотвращения XXE-атак
Translate Genie на GitHub: https://github.com/sarimmehdi/Translate-Genie
Платформа: Android
⭐️: 2
👍2
Compose + Koin + Jetpack Navigation: что мы поняли за 2 года
Сегодня поделюсь нашим опытом развития архитектуры приложения на Jetpack Compose: с какими ограничениями мы столкнулись, как укротили навигацию от Google и какими молитвами всё это подружили с Koin. В начале мы затронем структуру модулей, затем обсудим скоупы в Koin для многомодульных проектов, и завершим это все библиотекой Jetpack Navigation.
Статья: https://habr.com/ru/companies/wildberries/articles/939526/
Платформа: Android
Сегодня поделюсь нашим опытом развития архитектуры приложения на Jetpack Compose: с какими ограничениями мы столкнулись, как укротили навигацию от Google и какими молитвами всё это подружили с Koin. В начале мы затронем структуру модулей, затем обсудим скоупы в Koin для многомодульных проектов, и завершим это все библиотекой Jetpack Navigation.
Статья: https://habr.com/ru/companies/wildberries/articles/939526/
Платформа: Android
🔥2
Media Picker - настраиваемый медиа пикер на SwiftUI
Media Picker - кастомный медиа пикер на SwiftUI с возможностью съемки. Функции: выбор фото и видео, один или несколько файлов, полноэкранный режим, Live photo превью и съемка, полная настройка.
Media Picker на GitHub: https://github.com/exyte/MediaPicker
Платформа: iOS
⭐️: 410
Media Picker - кастомный медиа пикер на SwiftUI с возможностью съемки. Функции: выбор фото и видео, один или несколько файлов, полноэкранный режим, Live photo превью и съемка, полная настройка.
Media Picker на GitHub: https://github.com/exyte/MediaPicker
Платформа: iOS
⭐️: 410
👍1
OuterTune - музыкальный плеер для Android
OuterTune - музыкальный плеер для Android в Material 3. Умеет проигрывать музыку с YouTube Music и локальные файлы (MP3, OGG, FLAC и т.п.), получать и синхронизировать слова песен, нормализовать аудио, использовать аудио-эффекты, поддерживать Android Auto.
OuterTune на GitHub: https://github.com/OuterTune/OuterTune
Платформа: Android
⭐️: 2.6K
OuterTune - музыкальный плеер для Android в Material 3. Умеет проигрывать музыку с YouTube Music и локальные файлы (MP3, OGG, FLAC и т.п.), получать и синхронизировать слова песен, нормализовать аудио, использовать аудио-эффекты, поддерживать Android Auto.
OuterTune на GitHub: https://github.com/OuterTune/OuterTune
Платформа: Android
⭐️: 2.6K
👍2
•
(iOS En) Sticky Header For List View - SwiftUI•
(iOS En) Notification OnBoarding Animation Using SwiftUI•
(iOS En) iOS 26 Lock Screen Carousel With Reflection Effect Using SwiftUI•
(And Ru) 20 секретов Android, спрятанных в настройках разработчика•
(And En) How to migrate to 16 KB pages•
(And En) Is Google going even more downhill with Android? - No more side-loading of Android apps•
(And En) Dependencies and Kotlin Native•
(And En) Code Quality at Scale: Future Proof Your Android Codebase with KtLint and Detekt•
(And En) The Life and Death of a Kotlin Native Object•
(And En) Get inspiration and learn from the Best - Patterns for Success•
(And En) Create custom CI/CD metrics: Analyzing build performance with Develocity Analytics•
(Crs En) Two Years with Kotlin Multiplatform: From Zero to 55% Shared Code•
(Dev Ru) SQLite. Невероятно быстро•
(Dev Ru) IT рынок умер•
(Dev Ru) Какие угрозы несет AI — AI Safety, AGI, AI Alignment•
(Dev Ru) Управление изменениями•
(Dev En) Learn to Build with Gemini Nano-Banana (Gemini 2.5 Flash Image)•
(Dev En) Godot Game Development for Beginners•
(Mrk En) Как найти ключевые слова, которые действительно сработаютПрошлогодние видео:
•
(iOS Ru) Эволюция презентационных паттернов SwiftUI•
(And Ru) «Ленивый граф», или Как мы оптимизировали старт приложения•
(And Ru) В сетях сетевого слоя•
(Crs Ru) Многомодульное приложение на Flutter•
(Dev Ru) Junior-разработчики — обучение программированию, тестовое заданиеPlease open Telegram to view this post
VIEW IN TELEGRAM
Стратегии определения области действия компонентов: профессиональное управление зависимостями
В статье рассматриваются стратегии определения области видимости компонентов (component scoping) в разработке программного обеспечения, что является ключевым аспектом управления зависимостями. Автор сравнивает этот процесс с организацией работы ресторана: как шеф-повара не заставляют варить кофе, так и в приложении дорогостоящие объекты, вроде подключения к базе данных или сетевого клиента, не должны создаваться заново для каждой мелкой задачи. Определение области видимости помогает установить жизненный цикл зависимости, её доступность и правила создания/уничтожения, что напрямую влияет на производительность, использование памяти и тестируемость приложения.
Статья: https://blog.stackademic.com/component-scoping-strategies-managing-dependencies-like-a-pro-8f51324e9c91 (как читать ©)
Платформа: Android
В статье рассматриваются стратегии определения области видимости компонентов (component scoping) в разработке программного обеспечения, что является ключевым аспектом управления зависимостями. Автор сравнивает этот процесс с организацией работы ресторана: как шеф-повара не заставляют варить кофе, так и в приложении дорогостоящие объекты, вроде подключения к базе данных или сетевого клиента, не должны создаваться заново для каждой мелкой задачи. Определение области видимости помогает установить жизненный цикл зависимости, её доступность и правила создания/уничтожения, что напрямую влияет на производительность, использование памяти и тестируемость приложения.
Статья: https://blog.stackademic.com/component-scoping-strategies-managing-dependencies-like-a-pro-8f51324e9c91 (как читать ©)
Платформа: Android
❤2
Scout - ведение логов в CloudKit
Scout — это мощная платформа для ведения логов. Она поддерживает различные уровни логирования, форматы вывода и места размещения, что упрощает интеграцию и настройку в соответствии с вашими потребностями. Независимо от того, разрабатываете ли вы небольшой проект или масштабную систему, Scout гарантирует наличие подробных и структурированных логов для эффективного мониторинга и отладки приложений.
Scout предлагает бесшовную интеграцию с CloudKit, позволяя вам легко хранить и управлять логами в облаке. Используя CloudKit, вы можете:
• Централизовать хранение: хранить журналы с нескольких устройств и приложений в одном централизованном месте
• Получать доступ в режиме реального времени: получать доступ к журналам в режиме реального времени из любой точки мира, обеспечивая оперативный мониторинг производительности и проблем ваших приложений
• Масштабировать логи: использовать масштабируемость CloudKit для обработки больших объемов данных журналов без ущерба для производительности
• Сделать логи безопасными: обеспечить безопасное хранение и передачу ваших логов в соответствии со стандартами безопасности
Scout на GitHub: https://github.com/kasianov-mikhail/scout
Платформа: iOS
⭐️: 18
Scout — это мощная платформа для ведения логов. Она поддерживает различные уровни логирования, форматы вывода и места размещения, что упрощает интеграцию и настройку в соответствии с вашими потребностями. Независимо от того, разрабатываете ли вы небольшой проект или масштабную систему, Scout гарантирует наличие подробных и структурированных логов для эффективного мониторинга и отладки приложений.
Scout предлагает бесшовную интеграцию с CloudKit, позволяя вам легко хранить и управлять логами в облаке. Используя CloudKit, вы можете:
• Централизовать хранение: хранить журналы с нескольких устройств и приложений в одном централизованном месте
• Получать доступ в режиме реального времени: получать доступ к журналам в режиме реального времени из любой точки мира, обеспечивая оперативный мониторинг производительности и проблем ваших приложений
• Масштабировать логи: использовать масштабируемость CloudKit для обработки больших объемов данных журналов без ущерба для производительности
• Сделать логи безопасными: обеспечить безопасное хранение и передачу ваших логов в соответствии со стандартами безопасности
Scout на GitHub: https://github.com/kasianov-mikhail/scout
Платформа: iOS
⭐️: 18
👍1
Циклы в Swift: скрытые трюки для повышения производительности, которые сделают ваш код в 10 раз быстрее
В начале своего пути в программировании я думал, что циклы — это просто… циклы. Знаете, те самые базовые for и while, которые изучают на первых уроках? Как же я ошибался.
Только когда я начал отлаживать кошмарное приложение, которое тратило больше трёх секунд на отрисовку простого списка, я понял, что система циклов Swift гораздо сложнее, чем показывают большинство руководств. Тот самый невинный цикл for-in, который я везде копировал? Да, он был узким местом.
Вот в чём дело: Swift предоставляет нам три основных типа циклов, но знание того, когда использовать каждый из них, может радикально повлиять на производительность вашего приложения. Мы говорим о разнице между плавной прокруткой со скоростью 60 кадров в секунду и тем, как пользователи в ярости удаляют ваше приложение.
Статья: https://apptractor.ru/info/articles/swift-loops.html
Платформа: iOS
В начале своего пути в программировании я думал, что циклы — это просто… циклы. Знаете, те самые базовые for и while, которые изучают на первых уроках? Как же я ошибался.
Только когда я начал отлаживать кошмарное приложение, которое тратило больше трёх секунд на отрисовку простого списка, я понял, что система циклов Swift гораздо сложнее, чем показывают большинство руководств. Тот самый невинный цикл for-in, который я везде копировал? Да, он был узким местом.
Вот в чём дело: Swift предоставляет нам три основных типа циклов, но знание того, когда использовать каждый из них, может радикально повлиять на производительность вашего приложения. Мы говорим о разнице между плавной прокруткой со скоростью 60 кадров в секунду и тем, как пользователи в ярости удаляют ваше приложение.
Статья: https://apptractor.ru/info/articles/swift-loops.html
Платформа: iOS
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
SnapNotify - Snackbar для Jetpack Compose
SnapNotify - легковесная, потокобезопасная библиотека Snackbar для Jetpack Compose с предельно простой настройкой. Показывайте снекбары из любого места с красивой стилизацией, управлением очередью и опциональной интеграцией с Hilt. Полностью на Kotlin.
SnapNotify на GitHub: https://github.com/ivamsi/snapnotify
Платформа: Android
⭐️: 18
SnapNotify - легковесная, потокобезопасная библиотека Snackbar для Jetpack Compose с предельно простой настройкой. Показывайте снекбары из любого места с красивой стилизацией, управлением очередью и опциональной интеграцией с Hilt. Полностью на Kotlin.
SnapNotify на GitHub: https://github.com/ivamsi/snapnotify
Платформа: Android
⭐️: 18
👍1
Превратите свои фотографии в миниатюрное волшебство с помощью Nano Banana
В статье разработчик Питер Фризе подробно описывает, как интегрировать новую модель генерации изображений от Google, известную как "Nano Banana" (официальное название gemini-2.5-flash-image-preview), в iOS-приложения. Автор объясняет, что с помощью Firebase AI Logic можно безопасно использовать возможности Gemini для создания и редактирования изображений прямо в приложении, не храня на устройстве пользователя API-ключи. В качестве примера он создает приложение для генерации миниатюрных диорам комнат, демонстрируя, как с помощью нескольких строк кода на Swift можно превращать текстовые описания и существующие фотографии в новые уникальные изображения.
Статья: https://peterfriese.dev/blog/2025/gemini-nano-banana-ios/
Платформа: iOS
В статье разработчик Питер Фризе подробно описывает, как интегрировать новую модель генерации изображений от Google, известную как "Nano Banana" (официальное название gemini-2.5-flash-image-preview), в iOS-приложения. Автор объясняет, что с помощью Firebase AI Logic можно безопасно использовать возможности Gemini для создания и редактирования изображений прямо в приложении, не храня на устройстве пользователя API-ключи. В качестве примера он создает приложение для генерации миниатюрных диорам комнат, демонстрируя, как с помощью нескольких строк кода на Swift можно превращать текстовые описания и существующие фотографии в новые уникальные изображения.
Статья: https://peterfriese.dev/blog/2025/gemini-nano-banana-ios/
Платформа: iOS
👍1
Вопрос на 16 КБ: почему так важны изменения в памяти Android и как подготовить приложение
Годами Android управлял памятью блоками по 4 КБ. Но с появлением современных устройств с большим объёмом оперативной памяти это стало неэффективным. С 1 ноября 2025 года Google Play требует, чтобы все новые приложения и обновления для Android 15 (API 35) или выше были совместимы с этим новым размером страницы в 16 КБ.
Если ваше приложение полностью написано на Kotlin/Java, вы, вероятно, можете расслабиться. Но если ваше приложение использует нативный код (C/C++) — а вы удивитесь, как много таких приложений используют благодаря сторонним SDK, — вам нужно действовать прямо сейчас.
Давайте разберёмся, что на самом деле означает это изменение, почему это хорошо, и разберём чёткий трёхэтапный план подготовки вашего приложения.
Статья: https://apptractor.ru/develop/16kb-question.html
Платформа: Android
Годами Android управлял памятью блоками по 4 КБ. Но с появлением современных устройств с большим объёмом оперативной памяти это стало неэффективным. С 1 ноября 2025 года Google Play требует, чтобы все новые приложения и обновления для Android 15 (API 35) или выше были совместимы с этим новым размером страницы в 16 КБ.
Если ваше приложение полностью написано на Kotlin/Java, вы, вероятно, можете расслабиться. Но если ваше приложение использует нативный код (C/C++) — а вы удивитесь, как много таких приложений используют благодаря сторонним SDK, — вам нужно действовать прямо сейчас.
Давайте разберёмся, что на самом деле означает это изменение, почему это хорошо, и разберём чёткий трёхэтапный план подготовки вашего приложения.
Статья: https://apptractor.ru/develop/16kb-question.html
Платформа: Android
👍1
StepsShare - трекер шагов на Compose Multiplatform
StepsShare - cовременное кроссплатформенное приложение для отслеживания шагов, созданное на Kotlin Multiplatform и Compose Multiplatform. Отслеживайте количество шагов за день, ставьте персональные цели и отслеживайте свой прогресс на устройствах Android и iOS.
Внутри, кроме KMP и CMP, Material Design 3 с анимациями, MVVM, Compose Navigation, локальное хранение данных в Room, Koin, Compose Charts, Kotlinx Serialization.
StepsShare на GitHub: https://github.com/tamtom/StepsShare-oss
Платформа: кроссплатформа
⭐️: 78
StepsShare - cовременное кроссплатформенное приложение для отслеживания шагов, созданное на Kotlin Multiplatform и Compose Multiplatform. Отслеживайте количество шагов за день, ставьте персональные цели и отслеживайте свой прогресс на устройствах Android и iOS.
Внутри, кроме KMP и CMP, Material Design 3 с анимациями, MVVM, Compose Navigation, локальное хранение данных в Room, Koin, Compose Charts, Kotlinx Serialization.
StepsShare на GitHub: https://github.com/tamtom/StepsShare-oss
Платформа: кроссплатформа
⭐️: 78
👍1
Как я научил Jetpack Compose показывать рекомпозиции в реальном времени
Представьте, вы открываете пул‑реквест и взгляд цепляется за знакомые паттерны: нестабильный параметр в Composable‑функции, remember без ключа, применение трансформаций на Layout‑фазе. Сразу хочется написать комментарий‑лекцию о том, почему это ударит по производительности и почему лучше так не делать.
Вот только объяснения отнимают время и не всегда наглядно доносят суть проблемы. Особенно это актуально для новичков, которым сложно сопоставить абстракции с реальным поведением UI. А ведь для сложных асинхронных штук вроде RxJava или корутин есть визуализаторы — RxMarbles и FlowMarbles, а для самой частой головной боли в Compose до сих пор нет. Вот бы вместо стены текста просто кинуть ссылку со словами: «Смотри, вот что твой код делает на самом деле».
В этой статье я расскажу о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.
Статья: https://habr.com/ru/companies/yandex/articles/945276/
Платформа: Android
Представьте, вы открываете пул‑реквест и взгляд цепляется за знакомые паттерны: нестабильный параметр в Composable‑функции, remember без ключа, применение трансформаций на Layout‑фазе. Сразу хочется написать комментарий‑лекцию о том, почему это ударит по производительности и почему лучше так не делать.
Вот только объяснения отнимают время и не всегда наглядно доносят суть проблемы. Особенно это актуально для новичков, которым сложно сопоставить абстракции с реальным поведением UI. А ведь для сложных асинхронных штук вроде RxJava или корутин есть визуализаторы — RxMarbles и FlowMarbles, а для самой частой головной боли в Compose до сих пор нет. Вот бы вместо стены текста просто кинуть ссылку со словами: «Смотри, вот что твой код делает на самом деле».
В этой статье я расскажу о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.
Статья: https://habr.com/ru/companies/yandex/articles/945276/
Платформа: Android
❤2
Как Swift Runtime влияет на производительность iOS-приложений
Для больших iOS-приложений, написанных на Swift, понимание работы Swift Runtime и его влияния на производительность — важный навыĸ разработчиĸов. Swift Runtime при исполнении ĸода отвечает за фундаментальные вещи языĸа Swift: управление памятью и систему типов в рантайме.
В статье сосредоточимся на механизмах приведения типов и создания generic-типов внутри Swift Runtime и рассмотрим один ĸонĸретный метод, ĸоторый является узĸим местом в производительности приложения. Разберем примеры ĸода, демонстрирующие, ĸогда и почему этот метод вызывается, ĸаĸово его влияние на отзывчивость приложения и ĸаĸие стратегии использовать для смягчения негативного воздействия.
Статья: https://habr.com/ru/companies/tbank/articles/947486/
Платформа: iOS
Для больших iOS-приложений, написанных на Swift, понимание работы Swift Runtime и его влияния на производительность — важный навыĸ разработчиĸов. Swift Runtime при исполнении ĸода отвечает за фундаментальные вещи языĸа Swift: управление памятью и систему типов в рантайме.
В статье сосредоточимся на механизмах приведения типов и создания generic-типов внутри Swift Runtime и рассмотрим один ĸонĸретный метод, ĸоторый является узĸим местом в производительности приложения. Разберем примеры ĸода, демонстрирующие, ĸогда и почему этот метод вызывается, ĸаĸово его влияние на отзывчивость приложения и ĸаĸие стратегии использовать для смягчения негативного воздействия.
Статья: https://habr.com/ru/companies/tbank/articles/947486/
Платформа: iOS
👍2
ImmutableData - простое управление состояниями для SwiftUI
ImmutableData - новый подход к архитектуре приложений для SwiftUI, основанный на более чем десятилетнем опыте работы с декларативными UI-фреймворками. Вдохновленная принципами Flux и Redux, архитектура использует современные возможности Swift, чтобы сделать ваш код чище, быстрее и проще для понимания. Вместо традиционного императивного и объектно-ориентированного программирования, авторы делают ставку на декларативное мышление, функциональный стиль и неизменяемые (immutable) данные. В основе всего — однонаправленный поток данных, который обеспечивает строгое разделение ответственности: действия декларируют, что произошло; слой состояния реагирует на эти действия, изменяя данные; а представления (views) — просто отображают обновлённое состояние.
Это строгое разделение позволяет избавиться от таких проблем, как двусторонняя привязка данных и "спагетти-код", вызванный изменяемыми объектами. Архитектура ImmutableData делает код надёжнее, его легче тестировать, а новичкам — проще в нём разобраться. Пакет предоставляет три основных модуля: ImmutableData для управления данными, ImmutableUI для работы с представлениями SwiftUI и AsyncSequenceTestUtils для тестирования. Чтобы начать, достаточно добавить пакет в свой проект через Swift Package Manager. Например, для простого счётчика вам нужно определить состояние, действия и редьюсер, а затем использовать @ImmutableUI.Selector и @ImmutableUI.Dispatcher, чтобы связать ваш UI с глобальным состоянием приложения. Это позволяет создавать масштабируемые и легко поддерживаемые приложения.
ImmutableData на GitHub: https://github.com/Swift-ImmutableData/ImmutableData
Платформа: iOS
⭐️: 37
ImmutableData - новый подход к архитектуре приложений для SwiftUI, основанный на более чем десятилетнем опыте работы с декларативными UI-фреймворками. Вдохновленная принципами Flux и Redux, архитектура использует современные возможности Swift, чтобы сделать ваш код чище, быстрее и проще для понимания. Вместо традиционного императивного и объектно-ориентированного программирования, авторы делают ставку на декларативное мышление, функциональный стиль и неизменяемые (immutable) данные. В основе всего — однонаправленный поток данных, который обеспечивает строгое разделение ответственности: действия декларируют, что произошло; слой состояния реагирует на эти действия, изменяя данные; а представления (views) — просто отображают обновлённое состояние.
Это строгое разделение позволяет избавиться от таких проблем, как двусторонняя привязка данных и "спагетти-код", вызванный изменяемыми объектами. Архитектура ImmutableData делает код надёжнее, его легче тестировать, а новичкам — проще в нём разобраться. Пакет предоставляет три основных модуля: ImmutableData для управления данными, ImmutableUI для работы с представлениями SwiftUI и AsyncSequenceTestUtils для тестирования. Чтобы начать, достаточно добавить пакет в свой проект через Swift Package Manager. Например, для простого счётчика вам нужно определить состояние, действия и редьюсер, а затем использовать @ImmutableUI.Selector и @ImmutableUI.Dispatcher, чтобы связать ваш UI с глобальным состоянием приложения. Это позволяет создавать масштабируемые и легко поддерживаемые приложения.
ImmutableData на GitHub: https://github.com/Swift-ImmutableData/ImmutableData
Платформа: iOS
⭐️: 37
🤔1
Андроид всё еще не готов к RAW-видео
Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW-видео предпочитают не говорить.
Я разберу лишь основные моменты, которые и убедили меня в том, что эффективная съемка RAW‑видео на Андроид на сегодняшний день невозможна без »костылей» и ухищрений. Костылей, которые нивелируют все те преимущества RAW, которые так жаждут получить на своих смартфонах видеографы. Ухищрений, которые по итогу делают менее ресурсоемкие форматы записи видео на смартфоне даже более эффективными и качественными, чем RAW.
Да, будет интересно!
Статья: https://habr.com/ru/articles/947578/
Платформа: Android
Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW-видео предпочитают не говорить.
Я разберу лишь основные моменты, которые и убедили меня в том, что эффективная съемка RAW‑видео на Андроид на сегодняшний день невозможна без »костылей» и ухищрений. Костылей, которые нивелируют все те преимущества RAW, которые так жаждут получить на своих смартфонах видеографы. Ухищрений, которые по итогу делают менее ресурсоемкие форматы записи видео на смартфоне даже более эффективными и качественными, чем RAW.
Да, будет интересно!
Статья: https://habr.com/ru/articles/947578/
Платформа: Android
To Do - ведение дел на Jetpack Compose
To Do - простое приложение для ведения дел на Jetpack Compose с настраиваемыми темами Material Design 3.
To Do на GitHub: https://github.com/Super12138/ToDo
Платформа: Android
⭐️: 41
To Do - простое приложение для ведения дел на Jetpack Compose с настраиваемыми темами Material Design 3.
To Do на GitHub: https://github.com/Super12138/ToDo
Платформа: Android
⭐️: 41
•
(iOS Ru) Пишем видеоплеер под iOS с нуля•
(iOS En) The curious case of RETROACTIVE attribute in Swift•
(iOS En) iOS 26 Custom Animated ToolBar Using SwiftUI•
(iOS En) Mastering iOS 26 Toolbars & Modal Sheets in SwiftUI •
(And Ru) Разбор кода: пиксельная погода на Kotlin•
(And En) Shadows In Compose | Jetpack Compose Tips•
(And En) Firebender - TypeAlias Show•
(Crs En) Multi-Module Architecture in KMP for Beginners (Kotlin Multiplatform)•
(Crs En) Building a macOS Screen Saver with Kotlin•
(Dev Ru) Давайте потестируем Webview•
(Dev Ru) Сколько кнопок нажимает ваш автотест?•
(Dev Ru) Язык программирования Gleam — Gleam, Erlang VM, BEAM, Elixir vs Gleam•
(Dev En) Charts, Code, and Sails: Winning a Regatta with Kotlin NotebookПрошлогодние видео:
•
(And Ru) Бессмертное приложение•
(And Ru) Укрощаем UDF state-based архитектуры. Реальные кейсы в больших приложениях•
(Dev Ru) Заработок на Open Source. Decompose. Будущее KMP. Аркадий Иванов•
(Dev Ru) Грейд в IT•
(Dev Ru) Как устроен Yandex Mobile Ads SDK•
(Dev Ru) Паттерны SDUIPlease open Telegram to view this post
VIEW IN TELEGRAM