Преимущества:
• Мощная система плагинов для автоматизации процессов и повторного использования любой бизнес-логики по вашему желанию
• Создавайте полностью асинхронные, реактивные и параллельные приложения - без необходимости ручной синхронизации потоков
• Создавайте кроссплатформенные компоненты бизнес-логики без использования кода платформ, с подключаемым пользовательским интерфейсом
• Автоматическое восстановление после любых ошибок и предотвращение сбоев
• Автоматическая обработка жизненного цикла многоплатформенной системы
• Встроенная поддержка отладки, протоколирования, тестирования, отмены/повтора, кэширования и длительного выполнения задач
• Автоматическое сжатие, сохранение и восстановление состояния на любой платформе
• Никаких базовых классов, сложных интерфейсов или фабрик фабрик - логика декларативна и строится с помощью DSL
• Перезапускаемые, многократно используемые компоненты бизнес-логики без внешних зависимостей и выделенных жизненных циклов
• Создавайте безопасные машины состояний во время компиляции с помощью понятного DSL
• Первоклассная поддержка Compose Multiplatform, оптимизированная для производительности и простоты использования
• Используйте как MVVM+ (функциональный), так и MVI (model-driven) стиль программирования
• Основная библиотека зависит только от корутинов Kotlin, больше зависимостей нет
• Основная библиотека полностью покрыта тестами
FlowMVI на GitHub: https://github.com/respawn-app/FlowMVI
Платформа: Android/кроссплатформа
⭐️: 249
Если у вас есть библиотеки, открытые или просто интересные пет-проекты, делитесь. Будем публиковать.
Please open Telegram to view this post
VIEW IN TELEGRAM
Kotlin Coroutines под капотом
Вероятнее всего у вас спрашивали на собесе «как работают корутины под капотом?», вы не долго думая выбрасывали что‑то в стиле «там под капотом стейт‑машина, она определяет какая suspend функция будет выполняться», но понимали ли вы на самом деле всё о чем говорили? Возможно, только вам это известно, но если честно я очень плохо понимал собственные ответы на такие вопросы как бы это парадоксально не звучало и даже после десятка пройденных собесов у меня не было полноценной картины как работает внутрянка этой поистине невероятной библиотеки «сладкой асинхронщины».
Статья: https://habr.com/ru/articles/827866/
Платформа: Android
Вероятнее всего у вас спрашивали на собесе «как работают корутины под капотом?», вы не долго думая выбрасывали что‑то в стиле «там под капотом стейт‑машина, она определяет какая suspend функция будет выполняться», но понимали ли вы на самом деле всё о чем говорили? Возможно, только вам это известно, но если честно я очень плохо понимал собственные ответы на такие вопросы как бы это парадоксально не звучало и даже после десятка пройденных собесов у меня не было полноценной картины как работает внутрянка этой поистине невероятной библиотеки «сладкой асинхронщины».
Статья: https://habr.com/ru/articles/827866/
Платформа: Android
Видео и подкасты за неделю @AppFiles
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Делитесь в комментариях тем, что вы смотрели!
#ios #android #mobile #video
•
(iOS Ru) Что нового в Swift 6?•
(iOS En) Zoom Transitions - SwiftUI•
(iOS En) AI Features in Xcode 16: is it Good or Bad?•
(iOS En) Laying out views with ContainerRelativeFrame in SwiftUI•
(iOS En) Animated Scroll Wheel Picker - SwiftUI•
(iOS En) Removing More Button from Tab bar - SwiftUI•
(iOS En) Create Interactive In-App Polls With SwiftUI•
(And Ru) Как обойти множественное наследование в Kotlin и Java. Агрегация и композиция•
(And En) The Top 5 Practices That Make My Android Architecture More Scalable•
(And En) Generating Kotlin SDKs with Smithy•
(And En) Kotlin/Native BigDecimal: A drop-in replacement for java.math.BigDecimal•
(And En) K2: How to Make a Better Compiler but Keep Kotlin the Same•
(And En) It's Compose O'Clock, Draw on My Watch!•
(And En) Crashlytics for your Android apps•
(And En) Kotlin Code Reuse: Composing like you're Inheriting•
(Crs En) HTTP Requests in Kotlin Multiplatform With Ktor - KMP for Beginners•
(Crs En) Compose Multiplatform performance on iOS•
(Crs En) Code push for Flutter•
(Dev Ru) System Design-интервью для практиков•
(Dev Ru) 10 тупых вопросов на собеседовании (и как на них отвечать) + все собеседования•
(Dev Ru) Локальная разработка в Авито•
(Dev En) AI on Mac Made Easy: How to run LLMs locally with OLLAMA in Swift/SwiftUI•
(Dev En) Learn TypeScript - Full Course for BeginnersДелитесь в комментариях тем, что вы смотрели!
#ios #android #mobile #video
👎1
Добавляем в приложение SwiftUI холст Freeform, чат и видеозвонки
В этом руководстве мы научимся внедрять в приложения SwiftUI холст Freeform, обмен сообщениями в чате, голосовые вызовы и видеозвонки. Воспользуемся фреймворком PencilKit от Apple с легким в освоении холстом для рисования и разнообразным инструментарием для создания рукописных заметок и набросков.
Статья: https://nuancesprog.ru/p/22560/
Платформа: iOS
В этом руководстве мы научимся внедрять в приложения SwiftUI холст Freeform, обмен сообщениями в чате, голосовые вызовы и видеозвонки. Воспользуемся фреймворком PencilKit от Apple с легким в освоении холстом для рисования и разнообразным инструментарием для создания рукописных заметок и набросков.
Статья: https://nuancesprog.ru/p/22560/
Платформа: iOS
Библиотека нашего читателя, Александра, ведущего SwiftUI Dev. SwipeActions - библиотека для создания свайпов на любом представлении SwiftUI, аналогичных Apple
SwipeActions на GitHub: https://github.com/c-villain/SwipeActions
Платформа: iOS
⭐️: 197
swipeActions(edge:allowsFullSwipe:content:), которые доступны с iOS 15 и только в List. Вы можете использовать SwipeActions в проекте, ориентированном на iOS 13, с любым представлением (например, Text или VStack).SwipeActions на GitHub: https://github.com/c-villain/SwipeActions
Платформа: iOS
⭐️: 197
Расширяем возможности мобильного приложения на WebView. Опыт Ozon Банк
Часто разработчики используют только встроенный API взаимодействия JavaScript c нативными кодом, например Web API, но нам этого оказалось мало, и мы расширили спектр возможностей подхода web-native. Внутри статьи я расскажу, какой подход выбрал, как к этому пришёл, и, как обошёл возникшие проблемы. Подчеркну плюсы и минусы использования своего решения и в конце предложу несколько идей дальнейшего развития выбранного пути.
Статья: https://habr.com/ru/companies/ozontech/articles/828186/
Платформа: iOS
Часто разработчики используют только встроенный API взаимодействия JavaScript c нативными кодом, например Web API, но нам этого оказалось мало, и мы расширили спектр возможностей подхода web-native. Внутри статьи я расскажу, какой подход выбрал, как к этому пришёл, и, как обошёл возникшие проблемы. Подчеркну плюсы и минусы использования своего решения и в конце предложу несколько идей дальнейшего развития выбранного пути.
Статья: https://habr.com/ru/companies/ozontech/articles/828186/
Платформа: iOS
Видео с прозрачностью на Jetpack Compose – запросто
В статье я хочу показать простой способ решения известной в Android-разработке проблемы – проигрывания видео-файла с полноценной прозрачностью. В Compose для этого пока нет готовых компонентов, поэтому разработчику приходится придумывать разные хитрости. Какая может быть польза от этого решения? Ответ очевиден – любая сложная анимация в приложении с минимальным размером.
Статья: https://habr.com/ru/companies/finam_broker/articles/828322/
Платформа: Android
В статье я хочу показать простой способ решения известной в Android-разработке проблемы – проигрывания видео-файла с полноценной прозрачностью. В Compose для этого пока нет готовых компонентов, поэтому разработчику приходится придумывать разные хитрости. Какая может быть польза от этого решения? Ответ очевиден – любая сложная анимация в приложении с минимальным размером.
Статья: https://habr.com/ru/companies/finam_broker/articles/828322/
Платформа: Android
Проверяем, есть ли новая версия приложения в App Store
Как разработчики, когда мы выпускаем новую версию нашего приложения с новыми функциями и исправлениями ошибок, мы хотим, чтобы наши пользователи как можно скорее обновились до последней версии.
Однако у многих пользователей на устройствах не включены автоматические обновления, и если они не открывают сам App Store и не ищут доступные обновления, они могут так и не узнать, что вышла новая версия вашего приложения.
Статья: https://apptractor.ru/info/articles/proveryaem-est-li-novaya-versiya-prilozheniya-v-app-store.html
Платформа: iOS
Как разработчики, когда мы выпускаем новую версию нашего приложения с новыми функциями и исправлениями ошибок, мы хотим, чтобы наши пользователи как можно скорее обновились до последней версии.
Однако у многих пользователей на устройствах не включены автоматические обновления, и если они не открывают сам App Store и не ищут доступные обновления, они могут так и не узнать, что вышла новая версия вашего приложения.
Статья: https://apptractor.ru/info/articles/proveryaem-est-li-novaya-versiya-prilozheniya-v-app-store.html
Платформа: iOS
Film Time - очередное учебное приложение с фильмами. Сделано на основе MVVM, Kotlin, Jetpack Compose, корутин, Hilt, Retrofit и Room с применением ktlint.
Film Time на GitHub: https://github.com/moallemi/Film-Time
Платформа: Android
⭐️: 249
Film Time на GitHub: https://github.com/moallemi/Film-Time
Платформа: Android
⭐️: 249
Кастомные макеты в Compose — стопка карточек с кошками
В приложении, которое я создала, есть кошки — много кошек — и вы можете получить еще больше. Фотографии кошек представлены в виде карточек. Я хотела складывать карточки в стопку, просто потому что думала, что смогу это сделать — и я смогла! Поэтому в этом блоге я расскажу о том, как создать макет стопки карточек. И немного о кошках.
Статья: https://apptractor.ru/info/articles/kastomnye-makety-v-compose-stopka-kartochek-s-koshkami.html
Платформа: Android
В приложении, которое я создала, есть кошки — много кошек — и вы можете получить еще больше. Фотографии кошек представлены в виде карточек. Я хотела складывать карточки в стопку, просто потому что думала, что смогу это сделать — и я смогла! Поэтому в этом блоге я расскажу о том, как создать макет стопки карточек. И немного о кошках.
Статья: https://apptractor.ru/info/articles/kastomnye-makety-v-compose-stopka-kartochek-s-koshkami.html
Платформа: Android
Парсим данные из Google Sheets с помощью Kotlin и Retrofit в Android
В этой статье был рассмотрен процесс преобразования данных Google Sheets из JSON формата в классы Kotlin. Более того, в статье фигурировала suspend функция — «Best wishes, coroutines» — с расчётом на то, что читатель имеет минимальные представления о том, как работать с этими функциями.
Статья: https://habr.com/ru/articles/828812/
Платформа: Android
В этой статье был рассмотрен процесс преобразования данных Google Sheets из JSON формата в классы Kotlin. Более того, в статье фигурировала suspend функция — «Best wishes, coroutines» — с расчётом на то, что читатель имеет минимальные представления о том, как работать с этими функциями.
Статья: https://habr.com/ru/articles/828812/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Еще одна библиотека нашего читателя. Animatable - модификатор анимации для кнопок, скелетов и других представлений на чистом SwiftUI. Есть с десяток предопределенных анимаций, можно их комбинировать.
Animatable на GitHub: https://github.com/c-villain/Animatable
Платформа: iOS
⭐️: 48
Если у вас есть библиотеки, открытые или просто интересные пет-проекты, делитесь. Будем публиковать.
Animatable на GitHub: https://github.com/c-villain/Animatable
Платформа: iOS
⭐️: 48
Если у вас есть библиотеки, открытые или просто интересные пет-проекты, делитесь. Будем публиковать.
Как запустить нативный код из WKWebView
Я iOS-разработчик, который твердо верит в нативные приложения, и как вы можете догадаться, конечно, я не самый большой поклонник веб-представлений. Поэтому видеть, как веб-представление используется для реализации основной функции популярного приложения, было довольно неожиданно и тревожно! Но если подумать, то этот выбор имеет большой смысл: Википедия — это, прежде всего, веб-сайт, и его содержимое было создано для отображения с помощью HTML и CSS.
Статья: https://apptractor.ru/info/news/kak-zapustit-nativnyy-kod-iz-wkwebview.html
Платформа: iOS
Я iOS-разработчик, который твердо верит в нативные приложения, и как вы можете догадаться, конечно, я не самый большой поклонник веб-представлений. Поэтому видеть, как веб-представление используется для реализации основной функции популярного приложения, было довольно неожиданно и тревожно! Но если подумать, то этот выбор имеет большой смысл: Википедия — это, прежде всего, веб-сайт, и его содержимое было создано для отображения с помощью HTML и CSS.
Статья: https://apptractor.ru/info/news/kak-zapustit-nativnyy-kod-iz-wkwebview.html
Платформа: iOS
Video-to-GIF-Converter.gif
17.7 MB
Overscroll анимация в Jetpack Compose
Overscroll анимация используется для того, чтобы указать пользователю, когда он достиг границ прокручиваемого элемента. В этой статье мы создадим пользовательский модификатор, использующий вложенную прокрутку, который поможет нам создать собственную анимацию для этого действия.
Но прежде чем я начну, позвольте мне пояснить, что это немного обходной путь. В Jetpack Compose уже есть OverscrollEffect, который мы можем использовать для создания собственных overscroll анимаций. Проблема в том, что мы можем применять его только к прокручиваемым спискам, которые мы создаем с помощью Modifier.scrollable.
Это не очень удобно, так как большинство списков, которые мы создаем в Compose, являются LazyLists (HorizontalPager, LazyColumn и т.д.). В этих Composables нет параметра overscrollEffect, который мы могли бы настроить.
Статья: https://www.sinasamaki.com/overscroll-animations-in-jetpack-compose/
Платформа: Android
Overscroll анимация используется для того, чтобы указать пользователю, когда он достиг границ прокручиваемого элемента. В этой статье мы создадим пользовательский модификатор, использующий вложенную прокрутку, который поможет нам создать собственную анимацию для этого действия.
Но прежде чем я начну, позвольте мне пояснить, что это немного обходной путь. В Jetpack Compose уже есть OverscrollEffect, который мы можем использовать для создания собственных overscroll анимаций. Проблема в том, что мы можем применять его только к прокручиваемым спискам, которые мы создаем с помощью Modifier.scrollable.
Это не очень удобно, так как большинство списков, которые мы создаем в Compose, являются LazyLists (HorizontalPager, LazyColumn и т.д.). В этих Composables нет параметра overscrollEffect, который мы могли бы настроить.
Статья: https://www.sinasamaki.com/overscroll-animations-in-jetpack-compose/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Пет-проект нашего читателя. Finch - отладочное меню для Android-приложений с поддержкой логирования сетевой активности и множеством других полезных функций. Оно не влияет на рабочий код, только помогает понимать, что в нем происходит. Разработчики могут легко добавить свои собственные функции отладки с помощью простых шагов.
Finch на GitHub: https://github.com/kernel0x/finch
Платформа: Android
⭐️: 249
Если у вас есть библиотеки, открытые или просто интересные пет-проекты, делитесь. Будем публиковать.
Finch на GitHub: https://github.com/kernel0x/finch
Платформа: Android
⭐️: 249
Если у вас есть библиотеки, открытые или просто интересные пет-проекты, делитесь. Будем публиковать.
👍3
Скрытая (на виду) сила KeyPath'ов
Меня зовут Максим Черноусов, и я занимаюсь iOS-разработкой в Райфе. Я обожаю использовать и дизайнить классные API. А один из самых часто используемых строительных блоков для хороших API в Swift — это KeyPath'ы. Сегодня о них и поговорим.
KeyPath`ы сегодня используются повсеместно. Давайте узнаем, как с их помощью проектировать лучшие API.
Статья: https://habr.com/ru/companies/raiffeisenbank/articles/828896/
Платформа: iOS
Меня зовут Максим Черноусов, и я занимаюсь iOS-разработкой в Райфе. Я обожаю использовать и дизайнить классные API. А один из самых часто используемых строительных блоков для хороших API в Swift — это KeyPath'ы. Сегодня о них и поговорим.
KeyPath`ы сегодня используются повсеместно. Давайте узнаем, как с их помощью проектировать лучшие API.
Статья: https://habr.com/ru/companies/raiffeisenbank/articles/828896/
Платформа: iOS
Сериализация в Kotlin - ошибки, которые я допустил с полиморфизмом и не только
Приходилось ли вам сталкиваться с ошибками полиморфной сериализации в ваших проектах на Kotlin? Если да, то вы не одиноки. Полиморфная сериализация, хотя и невероятно мощная, может быть сложной для правильной работы. От неожиданных несоответствий типов до тонких проблем с конфигурацией - многие подводные камни могут привести к досадным ошибкам и недоразумениям.
В этой статье мы рассмотрим сериализацию Kotlin, сосредоточившись на объекте Json. Я дам практические рекомендации по ее эффективному использованию, особенно при работе с полиморфными сериализованными классами. К концу этого руководства вы будете обладать знаниями, позволяющими использовать возможности сериализации Kotlin.
Статья: https://medium.com/@kerry.bisset/kotlin-serialization-json-mistakes-i-made-with-polymorphism-and-more-e8ae367dc90a
Платформа: Android
Приходилось ли вам сталкиваться с ошибками полиморфной сериализации в ваших проектах на Kotlin? Если да, то вы не одиноки. Полиморфная сериализация, хотя и невероятно мощная, может быть сложной для правильной работы. От неожиданных несоответствий типов до тонких проблем с конфигурацией - многие подводные камни могут привести к досадным ошибкам и недоразумениям.
В этой статье мы рассмотрим сериализацию Kotlin, сосредоточившись на объекте Json. Я дам практические рекомендации по ее эффективному использованию, особенно при работе с полиморфными сериализованными классами. К концу этого руководства вы будете обладать знаниями, позволяющими использовать возможности сериализации Kotlin.
Статья: https://medium.com/@kerry.bisset/kotlin-serialization-json-mistakes-i-made-with-polymorphism-and-more-e8ae367dc90a
Платформа: Android
👍2
Компонентная архитектура приложений на Flutter: почему выбрать BLoC недостаточно
Меня зовут Никита Королев, я тимлид Flutter‑команды в компании IBS. Уже год я работаю на проекте компании «Атом» — разработчика российского электромобиля. На данный момент наша команда занимается разработкой приложений для направления «Такси». В этой статье расскажу о подходе к архитектуре приложений, который мы разработали и используем в наших проектах, а также почему нам недостаточно одного только BLoC.
Статья: https://habr.com/ru/companies/ibs/articles/828428/
Платформа: Flutter/кроссплатформа
Меня зовут Никита Королев, я тимлид Flutter‑команды в компании IBS. Уже год я работаю на проекте компании «Атом» — разработчика российского электромобиля. На данный момент наша команда занимается разработкой приложений для направления «Такси». В этой статье расскажу о подходе к архитектуре приложений, который мы разработали и используем в наших проектах, а также почему нам недостаточно одного только BLoC.
Статья: https://habr.com/ru/companies/ibs/articles/828428/
Платформа: Flutter/кроссплатформа