11. Android-разработка. Reactive Programming. | Технострим
11. Android-разработка. Reactive Programming. | Технострим
https://www.youtube.com/watch?v=Ruy8CJsL4lg
00:05 Введение в реактивное программирование
• Реактивное программирование - это использование асинхронных потоков данных для упрощения разработки в Android.
• Реактивное программирование используется в Android для упрощения работы с потоками и переключения между ними.
09:15 Определение реактивного программирования
• Реактивное программирование - это программирование с использованием асинхронных потоков данных.
• Идея реактивного программирования не нова, но формализована и используется в современных технологиях.
12:13 Стримы данных и их использование
• Стрим данных - это последовательность событий, происходящих в течение времени.
• Реактивное программирование использует стримы данных для обработки и обработки данных.
13:44 Обзор реактивного программирования
• Видео обсуждает концепцию реактивного программирования, где значения могут быть отправлены асинхронно и могут завершиться ошибкой.
• Это упрощает работу с многопоточностью и позволяет упростить работу с интенсивными вычислениями.
• Видео предлагает пример использования реактивного программирования в контексте автомобиля и лошади.
• Автор объясняет, что хотя управление автомобилем может быть сложным для человека из 19 века, автомобиль лучше лошади в качестве основного средства передвижения.
• Это обосновывает необходимость изучения и использования реактивного программирования для современных компьютерных систем.
25:51 История реактивного программирования
• Реактивное программирование было придумано в Microsoft в 2006 году для решения проблем с серверами и данными.
• Эрик Мейер, профессор из университета, и Дэвид Карнак, исследователь из Будапешта, создали первые реализации реактивного программирования.
33:01 Реактивное программирование в Android
• Реактивное программирование популярно в Android из-за проблем с Java на старых версиях Android.
• Реактор и другие фреймворки, такие как Akka, также популярны в Android.
35:51 Основные свойства реактивного программирования
• Реактивное программирование позволяет бороться с бэк-пэшем, асинхронностью и параллелизмом.
• Реактивное программирование накладывает на разработчиков контракт, который требует, чтобы все действия были безопасными и последовательными в рамках одного потока.
43:06 Реактивный подход в программировании
• Реактивный подход позволяет использовать лямбды и другие функции, что делает программирование более удобным.
• Реактивный подход также позволяет использовать асинхронные операции, что делает программы более устойчивыми к сбоям и позволяет масштабировать их.
47:05 Определение реактивного программирования
• Реактивное программирование - это подход, который реагирует на ивенты, ошибки, действия пользователей и другие события.
• Реактивное программирование помогает решать проблемы, связанные с сложностью кода, параллельными действиями и вложенностью.
50:48 Примеры реализации реактивного программирования
• Реактивное программирование может быть реализовано с использованием различных подходов, таких как фьючерсы и реактивные потоки.
• Реактивное программирование позволяет создавать бесконечные списки и выполнять асинхронные операции.
52:44 Обзор операторов в React
• Видео начинается с обзора операторов в React, которые позволяют создавать обсеры и цепочки данных.
• Упоминается, что на сайте React Extension есть дерево событий и ветки действий, которые помогают понять, как использовать эти операторы.
53:31 Примеры использования операторов
• В видео приводятся примеры использования операторов для создания обзоров, преобразования данных и комбинирования значений.
• Упоминаются такие операторы, как обзор был, обзор был фром, обзор был таймер, обзор был интервал, обзор был фром итера, обзор был фильтр, обзор был дебаунс и обзор был ротал.
• Обсуждаются примеры использования этих операторов в реальных ситуациях, таких как поиск котировок, фильтрация значений и экономия ресурсов.
• В видео обсуждается возможность трансформации данных в стриме, например, умножение значений на 10 или выполнение арифметических действий.
• Для этого используется оператор "буфер", который позволяет объединять группы значений и обрабатывать их параллельно.
• Оператор "флэт мэп" превращает каждое значение в обзоре в отдельный обзор, что позволяет распараллелить вычисления.
• Это может быть полезно, когда нужно обработать много значений из разных источников данных.
01:02:58 Оператор "комбайн лейтес"
• Оператор "комбайн лейтес" объединяет значения из разных потоков данных в один поток, что может быть полезно, когда нужно объединить данные из разных источников.
• Он также позволяет обрабатывать данные в последовательности, когда значения приходят одно за другим.
• Оператор "мерч" объединяет значения из двух потоков данных в один, что может быть полезно, когда нужно обработать данные из разных источников одновременно.
• Он позволяет обрабатывать данные в той последовательности, в которой они приходят.
• Оператор "зип" группирует значения в пары и объединяет их в один поток, что может быть полезно, когда нужно обработать несколько значений одновременно.
• Он также может объединять данные в порядке, когда сначала проходит один поток, а затем другой.
01:07:04 Работа с потоками данных
• В видео обсуждаются различные способы работы с потоками данных в программе на языке Java.
• Упоминаются операторы, которые позволяют комбинировать данные и выполнять различные операции.
• Также обсуждаются различные способы работы с потоками, включая создание своих собственных потоков и использование стандартных потоков, таких как "Обзор был".
01:11:10 Использование сабжект для имитации значений
• В видео объясняется, как использовать сабжект для имитации значений, которые приходят из разных источников.
• Упоминаются различные типы сабжект, включая "Паблиш сабжект", "Реплей сабжект" и "Сабжект".
• Обсуждаются различные способы использования сабжект, включая сохранение последнего значения и возврат только одного значения.
01:16:03 Примеры использования сабжект
• В видео приводятся примеры использования сабжект в различных ситуациях, включая фильтрацию данных и группировку данных по определенным признакам.
• Упоминается возможность создания своих собственных потоков и использования стандартных потоков для работы с данными.
01:17:48 Использование мапинга и поиска
• В видео обсуждается использование мапинга для преобразования одного значения в другое и его использование в различных ситуациях.
• Приводится пример использования мапинга для объединения значений из списка и их преобразования в обзоры.
• Также обсуждается пример использования мапинга для поиска, когда пользователь вводит буквы в поле поиска, и приложение подписывается на изменения в этом поле.
01:19:15 Примеры использования мапинга
• В видео приводятся примеры использования мапинга для обработки данных, таких как объединение значений из массива пользователей и сохранение их в базе данных.
• Также обсуждается использование мапинга для работы с дисковыми мапами и дисковыми айо, которые позволяют возвращать значения из интерфейса дао.
01:23:52 Реализация экспонента шел быков
• В видео рассказывается о реализации экспонента шел быков, который позволяет избежать проблем с серверами, когда они временно не работают.
• В этом случае, клиенты не будут ждать, пока сервер снова заработает, а будут продолжать работать с экспонентом шел быков.
01:24:33 Реактивное программирование
• Обсуждение подхода реактивного программирования и его использования в Android.
• Упоминание имени Джейка Вортона, который написал много успешных проектов для Android.
01:31:00 Сравнение производительности
• Сравнение производительности классического подхода и реактивного подхода при обработке большого количества данных.
• Упоминание о том, что реактивный подход позволяет сэкономить на железе и поддержке кода.
01:32:53 Недостатки реактивного подхода
• Упоминание о том, что реактивный подход сложнее в поддержке и требует больше экспертов.
• Обсуждение точки "Нетфликс-пойнт", где реактивный подход становится более выгодным по стоимости по сравнению с традиционным подходом.
01:37:10 Реактивный подход в программировании
• Обсуждение сложности и стоимости разработки при использовании реактивного подхода в программировании.
• Упоминается закон Литла, который помогает оценить пропускную способность системы при использовании реактивного подхода.
01:43:25 Сложности и проблемы реактивного подхода
• Упоминаются проблемы, связанные с сложностью и сложностью понимания кода при использовании реактивного подхода.
• Обсуждаются проблемы с тестированием и дебагом кода при использовании реактивного подхода.
01:46:30 Тен девелопер и бэкпэш
• Упоминается термин "тен девелопер", который описывает человека, способного эффективно управлять командой и предлагать решения для улучшения работы.
• Обсуждаются сложности и проблемы, связанные с использованием реактивного подхода в бэкпэше.
01:49:04 Сложности и терминология
• Упоминаются сложности, связанные с использованием разных терминов и подходов при использовании реактивного подхода.
• Предлагается обратить внимание на литературу по этой теме для более глубокого понимания.