SlideShare a Scribd company logo
Путешествия во времени
как метод разработки
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

Viewers also liked

IME-USP - Panorama de Carreiras Técnicas 2016
IME-USP - Panorama de Carreiras Técnicas 2016IME-USP - Panorama de Carreiras Técnicas 2016
IME-USP - Panorama de Carreiras Técnicas 2016
Contratado.me
 
Oltre parigi - AESS SaveAtWork
Oltre parigi - AESS SaveAtWorkOltre parigi - AESS SaveAtWork
Oltre parigi - AESS SaveAtWork
Luca Lombroso
 
Just Jobs - Digital Platform to Connect Skills and Opportunities
 Just Jobs - Digital Platform to Connect Skills and Opportunities Just Jobs - Digital Platform to Connect Skills and Opportunities
Just Jobs - Digital Platform to Connect Skills and Opportunities
Just.Jobs
 
Produtos Amway
Produtos AmwayProdutos Amway
Twitter y el Marketing de Contenidos
Twitter y el Marketing de ContenidosTwitter y el Marketing de Contenidos
Twitter y el Marketing de Contenidos
Alfredo Vela Zancada
 
20161202 成大演講 自由軟體運動與社群專案
20161202 成大演講 自由軟體運動與社群專案20161202 成大演講 自由軟體運動與社群專案
20161202 成大演講 自由軟體運動與社群專案
政嘉 曾
 
Vision & mouth fitness
Vision & mouth fitnessVision & mouth fitness
Vision & mouth fitness
Aravinda Koithyar
 
افضل 5 كتب عن كيفية تحقيق الثراءpdf
افضل 5 كتب عن كيفية تحقيق الثراءpdfافضل 5 كتب عن كيفية تحقيق الثراءpdf
افضل 5 كتب عن كيفية تحقيق الثراءpdf
osmanabdelrhman
 
從敏捷思考讀書會創業與人生
從敏捷思考讀書會創業與人生從敏捷思考讀書會創業與人生
從敏捷思考讀書會創業與人生
MaoYang Chien
 
뉴스룸의 변화와 전망 - hackable newsroom
뉴스룸의 변화와 전망 - hackable newsroom뉴스룸의 변화와 전망 - hackable newsroom
뉴스룸의 변화와 전망 - hackable newsroom
Sungkyu Lee
 
The Impacts of Missed Requirements in Agile Delivery
The Impacts of Missed Requirements in Agile DeliveryThe Impacts of Missed Requirements in Agile Delivery
The Impacts of Missed Requirements in Agile Delivery
Blueprint Software Systems
 
Planejamento de Comunicação Digital
Planejamento de Comunicação Digital Planejamento de Comunicação Digital
Planejamento de Comunicação Digital
Rafael Guimaz
 
Идеята за социална онтология и принципът на релевантността
Идеята за социална онтология и принципът на релевантносттаИдеята за социална онтология и принципът на релевантността
Идеята за социална онтология и принципът на релевантността
Nick Nickoloff
 
Baris dan deret aritmatika
Baris dan deret aritmatikaBaris dan deret aritmatika
Baris dan deret aritmatika
Gabrielaworang
 
[HeXathon] 발표자료 - 세모알
[HeXathon] 발표자료 - 세모알[HeXathon] 발표자료 - 세모알
[HeXathon] 발표자료 - 세모알
NAVER D2
 
Top Issues Faced by Field Service Businesses & The Solution
Top Issues Faced by Field Service Businesses & The SolutionTop Issues Faced by Field Service Businesses & The Solution
Top Issues Faced by Field Service Businesses & The Solution
Fingent Corporation
 
Ensteam proposal
Ensteam proposalEnsteam proposal
Ensteam proposal
Krzysztof Serwatka
 
Bontrager 7 Edição
Bontrager 7 Edição Bontrager 7 Edição
Bontrager 7 Edição
Dan Mehler
 
LinkedInspiratiesessie Zozijn
LinkedInspiratiesessie ZozijnLinkedInspiratiesessie Zozijn
LinkedInspiratiesessie Zozijn
Innovata
 

Viewers also liked (20)

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

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

Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
Pavlo Iuriichuk
 
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehaveЭволюция к Behavior Driven Development на примере популярного фреймворка JBehave
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehaveReturn on Intelligence
 
LvivJS 2014 - Win-win c React.js
LvivJS 2014 - Win-win c React.jsLvivJS 2014 - Win-win c React.js
LvivJS 2014 - Win-win c React.js
Max Klymyshyn
 
Victor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsVictor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsAndrew Mayorov
 
Приемочные тесты на огурце
Приемочные тесты на огурцеПриемочные тесты на огурце
Приемочные тесты на огурце
Alexander Byndyu
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...it-people
 
Введение в Microsoft Silverlight 3.0
Введение в Microsoft Silverlight 3.0Введение в Microsoft Silverlight 3.0
Введение в Microsoft Silverlight 3.0
akrakovetsky
 
Java c человеческим (и даже богатым) лицом / Филипп Дельгядо
Java c человеческим (и даже богатым) лицом / Филипп ДельгядоJava c человеческим (и даже богатым) лицом / Филипп Дельгядо
Java c человеческим (и даже богатым) лицом / Филипп ДельгядоOntico
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java scriptNoveo
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Media Gorod
 
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Герман Криммель
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
Sergey Skvortsov
 
анализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияанализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестирования
Ruslan Shevchenko
 
Автоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюАвтоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решению
SQALab
 
Статический анализ кода в DDD
Статический анализ кода в DDDСтатический анализ кода в DDD
Статический анализ кода в DDD
Aleksei Alekseev
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
Andrii Dzynia
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
jazzteam
 
Как я перестал беспокоиться и полюбил Redux
Как я перестал беспокоиться и полюбил ReduxКак я перестал беспокоиться и полюбил Redux
Как я перестал беспокоиться и полюбил Redux
IT61
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
GoSharp
 
Обзор и архитектура MS Visual Studio Team System 2008
Обзор и архитектура MS Visual Studio Team System 2008Обзор и архитектура MS Visual Studio Team System 2008
Обзор и архитектура MS Visual Studio Team System 2008
Александр Шамрай
 

Similar to Путешествия во времени (20)

Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehaveЭволюция к Behavior Driven Development на примере популярного фреймворка JBehave
Эволюция к Behavior Driven Development на примере популярного фреймворка JBehave
 
LvivJS 2014 - Win-win c React.js
LvivJS 2014 - Win-win c React.jsLvivJS 2014 - Win-win c React.js
LvivJS 2014 - Win-win c React.js
 
Victor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsVictor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platforms
 
Приемочные тесты на огурце
Приемочные тесты на огурцеПриемочные тесты на огурце
Приемочные тесты на огурце
 
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
DUMP-2012 - Мобильные технологии - "Как мы выстраиваем разработку сервиса под...
 
Введение в Microsoft Silverlight 3.0
Введение в Microsoft Silverlight 3.0Введение в Microsoft Silverlight 3.0
Введение в Microsoft Silverlight 3.0
 
Java c человеческим (и даже богатым) лицом / Филипп Дельгядо
Java c человеческим (и даже богатым) лицом / Филипп ДельгядоJava c человеческим (и даже богатым) лицом / Филипп Дельгядо
Java c человеческим (и даже богатым) лицом / Филипп Дельгядо
 
Web internship java script
Web internship   java scriptWeb internship   java script
Web internship java script
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
Диагностика проблем в рабочей среде при помощи IntelliTrace и Visual Studio 2...
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
 
анализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияанализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестирования
 
Автоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решениюАвтоматизация тестирования iOS приложений: от идеи к готовому решению
Автоматизация тестирования iOS приложений: от идеи к готовому решению
 
Статический анализ кода в DDD
Статический анализ кода в DDDСтатический анализ кода в DDD
Статический анализ кода в DDD
 
iOS and Android Mobile Test Automation
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
 
Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...Расширяемая платформа для создания и управления автоматизированными тестами н...
Расширяемая платформа для создания и управления автоматизированными тестами н...
 
Как я перестал беспокоиться и полюбил Redux
Как я перестал беспокоиться и полюбил ReduxКак я перестал беспокоиться и полюбил Redux
Как я перестал беспокоиться и полюбил Redux
 
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NETОпыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
Опыт разработки сложных клиент-серверных приложений на TypeScript и ASP.NET
 
Обзор и архитектура MS Visual Studio Team System 2008
Обзор и архитектура MS Visual Studio Team System 2008Обзор и архитектура MS Visual Studio Team System 2008
Обзор и архитектура MS Visual Studio Team System 2008
 

More from Sumy PHP User Grpoup

Web and IoT
Web and IoTWeb and IoT
Using Elastic Search Outside Full-Text Search
Using Elastic Search Outside Full-Text SearchUsing Elastic Search Outside Full-Text Search
Using Elastic Search Outside Full-Text Search
Sumy PHP User Grpoup
 
High Availability в жизни обычного разработчика
High Availability в жизни обычного разработчикаHigh Availability в жизни обычного разработчика
High Availability в жизни обычного разработчика
Sumy PHP User Grpoup
 
Service approach for development REST API in Symfony2
Service approach for development REST API in Symfony2Service approach for development REST API in Symfony2
Service approach for development REST API in Symfony2
Sumy PHP User Grpoup
 
Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2
Sumy PHP User Grpoup
 
Php micro frameworks
Php micro frameworksPhp micro frameworks
Php micro frameworks
Sumy PHP User Grpoup
 
Oro open source solutions
Oro open source solutionsOro open source solutions
Oro open source solutions
Sumy PHP User Grpoup
 

More from Sumy PHP User Grpoup (7)

Web and IoT
Web and IoTWeb and IoT
Web and IoT
 
Using Elastic Search Outside Full-Text Search
Using Elastic Search Outside Full-Text SearchUsing Elastic Search Outside Full-Text Search
Using Elastic Search Outside Full-Text Search
 
High Availability в жизни обычного разработчика
High Availability в жизни обычного разработчикаHigh Availability в жизни обычного разработчика
High Availability в жизни обычного разработчика
 
Service approach for development REST API in Symfony2
Service approach for development REST API in Symfony2Service approach for development REST API in Symfony2
Service approach for development REST API in Symfony2
 
Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2Service approach for development Rest API in Symfony2
Service approach for development Rest API in Symfony2
 
Php micro frameworks
Php micro frameworksPhp micro frameworks
Php micro frameworks
 
Oro open source solutions
Oro open source solutionsOro open source solutions
Oro open source solutions
 

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