Путешествия во времени
как метод разработки
2016 © Алексей Дзюба
Что происходит в моем коде?
St= f( St-1, At-1 )
Состояние
программы в
текущий момент
времени
Состояние
программы в
предыдущий
момент времени
Действия
пользователя или
другие события
Программный код
Спасибо за внимание!
Что на самом деле происходит в моем коде?
код
состоя
ние
код
состоя
ние
код
состоя
ние
код
состоя
ниекод
состоя
ние
код
состоя
ние
код
состоя
ние
Чистые функции
Тестирование
Отладка
Потокобезопасность
Горячая замена кода
Неизменяемые
данные
Функционально чистое отображение данных: React JS
Компонент
Компонент Компонент
Компонент Компонент Компонент
данные,колбеки
DOMдеревоотображения
V = f( S )
отображение компонент данные
React JS: JSX
function header(state) { return (
<div>
<h1>{state.title}</h1>
{state.history.length > 0 ?
<undo count={state.history.length}/> : ''}
</div>
)}
function undo(state) { return (
<button>Undo ({state.count}) items</button>
)}
Immutable state
Состояние приложения
(неизменяемая структура
данных)
Действия
Фистые
функции
(reducers)
Новая версия
состояния
приложения
Отображение,
сохранение...События
Простой пример: Конвертер градусов
Общий
код
Отображение
Логика
Immutable state: UNDO
state:
nodes: -
history: -
state:
nodes:
- text: ''
history:
- action: ...
nodes: -
action:
type: ADD_NODE
position: ...
action:
type: EDIT_NODE
text: A
state:
nodes:
- text: 'A'
history:
- action: ...
nodes: ...
- action: ...
nodes: ...
action:
type: UNDO
action:
type: UNDO
Хватит ли памяти?
S
..N
A
B
C
S
N
B
Вставка узла D после B
0
1
2
0
1
3
2
nodes other nodesother
Обновления и конфликты
S0
S0
S1 S2 S3
S0
S4
A0 A1 A2
S4 S5 S6 S7
A0 A1 A2
S4S0
На сервере ничего не менялось
Кто-то обновил состояние
✓
✘
✓
S3
S7
Спасибо за внимание!
λ
● http://redux.js.org/
● https://facebook.github.io/react/
● https://github.com/atamurius/conwork

More Related Content

PDF
Дмитрий Долгов
PDF
Константин Осипов
PDF
Конструктор карточек Docsvision 5: конструктор состояний
PPT
Облачная система документооборота Docloud
PPTX
Конструктор карточек Docsvision 5: конструктор разметок
PPTX
Конструктор согласований Docsvision
PDF
Электронная подпись в Docsvision 5
PPTX
Ya.islands how to
Дмитрий Долгов
Константин Осипов
Конструктор карточек Docsvision 5: конструктор состояний
Облачная система документооборота Docloud
Конструктор карточек Docsvision 5: конструктор разметок
Конструктор согласований Docsvision
Электронная подпись в Docsvision 5
Ya.islands how to

Viewers also liked (20)

PDF
IME-USP - Panorama de Carreiras Técnicas 2016
PDF
Oltre parigi - AESS SaveAtWork
PDF
Just Jobs - Digital Platform to Connect Skills and Opportunities
PPTX
PDF
Twitter y el Marketing de Contenidos
PDF
20161202 成大演講 自由軟體運動與社群專案
PPTX
Vision & mouth fitness
PDF
افضل 5 كتب عن كيفية تحقيق الثراءpdf
PDF
ZDG_CMO_folder_online_4_1
PDF
從敏捷思考讀書會創業與人生
PDF
뉴스룸의 변화와 전망 - hackable newsroom
PDF
The Impacts of Missed Requirements in Agile Delivery
PPTX
Planejamento de Comunicação Digital
PDF
Идеята за социална онтология и принципът на релевантността
PPT
Baris dan deret aritmatika
PDF
[HeXathon] 발표자료 - 세모알
PDF
Top Issues Faced by Field Service Businesses & The Solution
PDF
Ensteam proposal
PDF
Bontrager 7 Edição
PDF
LinkedInspiratiesessie Zozijn
IME-USP - Panorama de Carreiras Técnicas 2016
Oltre parigi - AESS SaveAtWork
Just Jobs - Digital Platform to Connect Skills and Opportunities
Twitter y el Marketing de Contenidos
20161202 成大演講 自由軟體運動與社群專案
Vision & mouth fitness
افضل 5 كتب عن كيفية تحقيق الثراءpdf
ZDG_CMO_folder_online_4_1
從敏捷思考讀書會創業與人生
뉴스룸의 변화와 전망 - hackable newsroom
The Impacts of Missed Requirements in Agile Delivery
Planejamento de Comunicação Digital
Идеята за социална онтология и принципът на релевантността
Baris dan deret aritmatika
[HeXathon] 발표자료 - 세모알
Top Issues Faced by Field Service Businesses & The Solution
Ensteam proposal
Bontrager 7 Edição
LinkedInspiratiesessie Zozijn

More from Sumy PHP User Grpoup (7)

PDF
PDF
Using Elastic Search Outside Full-Text Search
PPTX
High Availability в жизни обычного разработчика
PPTX
Service approach for development REST API in Symfony2
PPTX
Service approach for development Rest API in Symfony2
PPTX
Php micro frameworks
PPTX
Oro open source solutions
Using Elastic Search Outside Full-Text Search
High Availability в жизни обычного разработчика
Service approach for development REST API in Symfony2
Service approach for development Rest API in Symfony2
Php micro frameworks
Oro open source solutions

Путешествия во времени