Технический гайд по сторис – часть 4: как мы добавили видео формат

Привет! Меня зовут Владислав Фальзан, я работаю android-разработчиком в М2. Наша команда мобильной разработки развивает приложение – онлайн-платформу для решения вопросов с недвижимостью. Основные пользователи приложения – физические лица (B2C) и риелторы (B2B2C). Эта статья – технический гайд для android-разработчиков о том, как реализовать видео сторис у себя в приложении или как использовать нашу библиотеку для работы с ними. Из статьи вы поймете: как запустить видео сторис в своем приложении, как работать с несколькими видео, как сделать из этого полноценный плагин, если вы хотите инкапсулировать логику в отдельном модуле и подключать ее только при необходимости, или как использовать нашу библиотеку для этих целей. Для удобства изучения статьи я решил разбить ее на блоки:

https://habr.com/ru/companies/m2tech/articles/1037398/

#android #ddd #compose #stories #mvvm #kotlin #coroutines #clean_architecture #room

Технический гайд по сторис – часть 4: как мы добавили видео формат

Привет! Меня зовут Владислав Фальзан, я работаю android-разработчиком в М2. Наша команда мобильной разработки развивает приложение – онлайн-платформу для решения вопросов с недвижимостью. Основные...

Хабр

Переезд с XML на Jetpack Compose на проде: базовые классы, архитектура, сложности и готовые решения

Меня зовут Родион, и я уже около 2,5 лет работаю в VK Android-разработчиком в крупном многомодульном проекте с сотнями экранов и довольно большой аудиторией. Когда я попал на проект, стек был классическим и проверенным: XML-вёрстка, навигация через Cicerone, Dagger 2 для DI, Coroutines и Flow для асинхронщины, а в качестве архитектурного паттерна — MVVM. Рано или поздно любая растущая кодовая база упирается в потолок своих архитектурных решений. У нас этот момент настал, когда количество экранов выросло до нескольких сотен и команда начала тратить больше времени на борьбу с неконсистентным состоянием UI. Классическая связка XML + ViewBinding + MVVM работала, но с каждым новым экраном мы всё острее чувствовали её ограничения: разрозненные StateFlow, дублирование кода во фрагментах, сложность переиспользования компонентов. Нужно было что-то менять — пересмотреть сам подход к построению UI. Так мы начали миграцию на Jetpack Compose (который на момент начала перехода уже был стабильным и самодостаточным). Полтора года спустя, пройдя через рефакторинг базовых классов, переход с MVVM на MVI и постепенную замену содержимого всех фрагментов, мы получили стек, на котором разработка ускорилась, а баги, связанные с состоянием экрана, практически исчезли. Полный переход на Jetpack Compose мы разделили на три больших этапа: - переписываем содержимое всех фрагментов на ComposeView; - переходим с Dagger2 на Koin; - меняем навигацию с Cicerone на Compose-навигацию. О втором и третьем этапах кратко расскажу ниже — в главе стратегии перехода, а на первом этапе остановлюсь подробнее. В этой статье не будет разбора плюсов и минусов Jetpack Compose, скорее она будет полезна тем, кто уже знаком с технологией, хочет её использовать, но боится нести в проект. Я расскажу, как мы шаг за шагом выполняли первый этап, и к чему в итоге пришли.

https://habr.com/ru/companies/vk/articles/1036772/

#android #jetpackcompose #мобильная_разработка #архитекура_приложений #kotlin #mvvm #mvi

Переезд с XML на Jetpack Compose на проде: базовые классы, архитектура, сложности и готовые решения

Меня зовут Родион, и я уже около 2,5 лет работаю в VK Android-разработчиком в крупном многомодульном проекте с сотнями экранов и довольно большой аудиторией. Когда я попал на проект, стек был...

Хабр

Проектирование иерархии моделей данных в многослойном приложении

При проектировании многослойной архитектуры приложения одной из главных задач является формирование набора моделей данных каждого слоя и определение порядка взаимодействия моделей данных между собой. Под взаимодействием понимаются потоки данных, передаваемые из одной модели данных в другую. В общем случае взаимодействие между моделями данных двунаправленное. Рассмотрим модель данных application model, которая потребуется в дальнейшем изложении и которая используется в паттерне CQRS. Реализация архитектурного паттерна CQRS, используемого в приложении для функционала application logic, представляет собой набор классов наследников базовых классов QueryHandler / CommandHandler и набор классов данных, которые являются наследниками базовых классов Query / Command. Классы наследники Query / Command представляют собой модель данных application logic. Такую модель данных логично назвать application model. Используя application model и другие известные модели данных слоёв приложения можно построить полную схему моделей данных многослойной архитектуры приложения.

https://habr.com/ru/articles/1026944/

#многослойная_архитектура_приложения #модель_данных #mvvm #c# #java #c++

Проектирование иерархии моделей данных в многослойном приложении

При проектировании многослойной архитектуры приложения одной из главных задач является формирование набора моделей данных каждого слоя и определение порядка взаимодействия моделей данных между собой....

Хабр
.NET MAUI State Management: From ViewModels to App Stores | Syncfusion Blogs

Learn production-ready state management in .NET MAUI using MVVM, VSM, DI app-wide stores, and MVU, plus guidance on when to use each.

Syncfusion
C# で MVVM を学ぶならまずこれ!CommunityToolkit.Mvvm で理解する基本の流れ - Qiita

「MVVMって聞いたことあるけど、結局どう使えばいいの?」 「ViewModel と Model の違いがよく分からない…」 そんなふうに感じたことはありませんか。 この記事では、C# × MVVM をこれから学びたい人に向けて、できるだけシンプルに、そして“実際に手を動か...

Qiita

Почему многие неверно реализуют MVVM или способы создания абстракций

Привет, Хабр! Меня зовут Кирилл Маканков, я iOS-разработчик в ПСБ. Сегодня хочу поговорить про особенности реализации MVVM. Не с практической, а с теоретической стороны. С практической стороны этот архитектурный шаблон давно уже объезжен и в хвост, и в гриву. А вот теоретических исследований, особенно применимых к Swift (и в общем, и к SwiftUI в частности), не так уж и много. Давайте вместе попробуем закрыть этот пробел и обосновать с теоретической точки зрения те или иные вариации реализаций в нашей ежедневной работе. Мобильным разработчикам на ObjC, Java и Kotlin данное исследование и обсуждение тоже будет полезно. Присоединяйтесь! Если Вы уже хорошо знакомы с MVVM, то в конце приведен опрос об используемой лично Вами реализации. Давайте вместе определим, какая из реализаций самая популярная.

https://habr.com/ru/companies/psb/articles/1010690/

#swift #swift__разработка #swift_development #абстракция #mvvm #архитектура #архитектура_приложений #архитектура_androidприложений

Почему многие неверно реализуют MVVM или способы создания абстракций

Привет, Хабр! Меня зовут Кирилл Маканков, я iOS-разработчик в ПСБ.   Сегодня хочу поговорить про особенности реализации MVVM. Не с практической, а с теоретической стороны. С практической...

Хабр

Coordinator в iOS: как я перестал бояться кнопки «Назад» и полюбил навигацию

Эта статья - логическое продолжение нашего погружения в архитектуру. Если в первой части мы навели порядок внутри «черного ящика» под названием ViewModel, то здесь мы выйдем за его пределы. Вы узнаете, как выпилить логику переходов из ViewControllers и ViewModels, почему вызов navigationController?.pushViewController() прямо в экшене кнопки - это архитектурный тупик, и как построить систему навигации, которая не превратит ваш проект в спагетти при добавлении десятого экрана. Мы разберем концепцию Child Coordinators, решим проблему утечек памяти (спойлер: системная кнопка "Назад" - ваш враг) и обсудим, выжил ли этот паттерн в эпоху SwiftUI. Продолжим

https://habr.com/ru/articles/991812/

#ios #swift #архитектор #mvvm #coordinator #mobile

Coordinator в iOS: как я перестал бояться кнопки «Назад» и полюбил навигацию

Эта статья - логическое продолжение нашего погружения в архитектуру. Если в первой части мы навели порядок внутри «черного ящика» под названием ViewModel, то здесь мы выйдем за его пределы. Вы...

Хабр

MVVM-курильщика: почему ваша ViewModel — это помойка на 2000 строк, и как это исправить

Если вы когда-нибудь открывали проект, где ViewModel превратилась в свалку логики, навигации и форматирования дат - поздравляю, вы видели MVVM-курильщика. Рассказываю, почему «чистый» MVVM из учебников рассыпается в бою, как превратить ViewModel в машину состояний вместо мусорного ведра, и почему import UIKit в вашей VM - это диагноз. Без воды, с примерами кода и болью. Эта статья - не очередной пересказ документации. Вы научитесь разделять данные и их представление так, чтобы тесты писались сами собой, а ваши коллеги не проклинали вас на код-ревью. Продолжим

https://habr.com/ru/articles/991252/

#swift #swiftui #mvvm #архитектура #ios

MVVM-курильщика: почему ваша ViewModel — это помойка на 2000 строк, и как это исправить

Если вы когда-нибудь открывали проект, где ViewModel превратилась в свалку логики, навигации и форматирования дат - поздравляю, вы видели MVVM-курильщика. Рассказываю, почему «чистый» MVVM из...

Хабр

Технический гайд по сторис — часть 3: как мы написали свою библиотеку

Привет! Меня зовут Владислав Фальзан, я работаю android-разработчиком в М2. Наша команда мобильной разработки развивает приложение — онлайн-платформу для решения вопросов с недвижимостью. Основные пользователи приложения — физические лица (B2C) и риелторы (B2B2C). Эта статья — технический гайд для android-разработчиков о том, как использовать нашу новую библиотеку по сторис с деталями и нюансами реализации. Из статьи вы поймете: как использовать библиотеку на полную мощность для своих задач и как она устроена изнутри. Для удобства изучения статьи я решил разбить ее на блоки:

https://habr.com/ru/companies/m2tech/articles/980424/

#android #ddd #compose #stories #mvvm #kotlin #coroutines #clean_architecture #room

Технический гайд по сторис — часть 3: как мы написали свою библиотеку

Привет! Меня зовут Владислав Фальзан, я работаю android-разработчиком в М2. Наша команда мобильной разработки развивает приложение — онлайн-платформу для решения вопросов с недвижимостью. Основные...

Хабр
Implementing Cross-Platform In-App Billing in .NET MAUI Applications - .NET Blog

Learn how to implement in-app purchases in your .NET MAUI apps with our new cross-platform billing sample for Android, iOS, Mac Catalyst, and Windows.

.NET Blog