SlideShare une entreprise Scribd logo
1  sur  46
Реактивные
расширения для JavaScript...
...и пусть события сами идут
Где мы используем
события?
ВЕЗДЕ
Что не так с событиями?
● как компоновать?
● как фильтровать?
● как собирать данные от разных событий?
● как не сойти с ума от асинхронности?
● как не строить Пирамиды Обратных
Вызовов?
● … (еще примерно 42 пункта)
О ужасный callback!
$('#some-element').animate({
width: 100,
height: 50
}, {
duration: 300,
complete: function() {
// Step 2:
$('#another-element').fadeOut(300, function() {
// Step 3:
setTimeout(function() {
// Step 4:
$.ajax({
url: 'http://google.com',
}).done(function() {
// Step 5:
setTimeout(function() {
// Step 6:
$('#third-element').remove();
}, 250);
});
}, 300);
});
}
});
О ужасный callback!
step1(function (value1) {
step2(value1, function(value2) {
step3(value2, function(value3) {
step4(value3, function(value4)
{
// Do something with
value4
});
});
});
});
О ужасный callback! (и доступ к данным)
step1(function (value1) {
step2(value1, function(value2) {
step3(value2, function(value3) {
if (value2 === 4) return null
step4(value3, function(value4)
{
if (value2 > value3)
work() });
});
});
});
Варианты решения а-ля promise...
Q.fcall(step1)
.then(step2)
.then(step3)
.then(step4)
.then(function (value4) {
// Do something with value4
})
.done();
https://github.com/kriskowal/q/
A tool for making and composing asynchronous promises in JavaScript (282 362 forks at
Github).
...или настоящими promise
function successFunc(){ console.log( “success!” ); }
function failureFunc(){ console.log( “failure!” ); }
$.when(
$.ajax("/main.php" ),
$.ajax("/modules.php" ),
$.ajax(“/lists.php” )
).then( successFunc, failureFunc );
Все равно не хватает контроля над данными!
Reactive Extensions for
JS
...is a library to compose asynchronous and
event-based programs using observable
collections and LINQ-style query operators.
Реактивные
расширения
...библиотека для создания асинхронных и
основанных на событиях программ
используя наблюдаемые коллекции и LINQ
операторы.
Состав RxJS:
● объекты для представления асинхронных
потоков данных
● операторы для создания, фильтрации и
управления подобными объектами и
данными внутри них
● немного магии
Реактивное программирование
- парадигма, ориентированная на потоки данных и
распространение изменений.
Это означает, что должна существовать возможность
легко выражать статические и динамические потоки
данных, а также то, что выполняемая модель должна
автоматически распространять изменения сквозь
поток данных.
2 примера реактивности из жизни
1. Excel 2. Ищем работу:
обзванивать
вакансииpull vs
разместить резюме
ждать звонков
push
Основа идеологии
Наблюдатель
Observer
Наблюдаемое
(поток)
Observable
подписывается (subscribe) ⇒
⇐ присылает сообщения (onNext)
Наблюдаемая последовательнсть
RxJS против не-RxJS
$('button').clickAsObservable
()
.skip(2)
.take(2)
.timeInterval()
.doAction(flickerButton)
.subscribe(logClicks)
var i= 0, lastTs = new Date(),
nowTs
$('button').click(function(){
i++;
if (i<=2 || i>=4) return
nowTs = new Date()
flickerButton()
logClicks(diff(lastTs,
nowTs))
})
query
Используем привычные функции
Array
● concat
● every
● filter
● map
● reduce
● some
● forEach
Observable
● concat
● all
● where
● select
● aggregate
● any
● subscribe
Поддержка родных событий jQuery
•bind - bindAsObservable
•delegate - delegateAsObservable
•live - liveAsObservable
•on - onAsObservable
•$.Deferred.toObservable / Rx.Observable.toDeferred
Мышь и клавиатура
•change - changeAsObservable
•click - clickAsObservable
•dblclick - dblclickAsObservable
•focus - focusAsObservable
•focusin - focusinAsObservable
•focusout - focusoutAsObservable
•hover - hoverAsObservable
•keydown - keydownAsObservable
•keypress - keypressAsObservable
•keyup - keyupAsObservable
•load - loadAsObservable
•mousedown - mousedownAsObservable
•mouseenter - mouseenterAsObservable
•mouseleave - mouseleaveAsObservable
•mousemove -
mousemoveAsObservable
•mouseout - mouseoutAsObservable
•mouseenter - mouseenterAsObservable
•mouseleave - mouseleaveAsObservable
•mousemove -
mousemoveAsObservable
•mouseout - mouseoutAsObservable
Ajax и анимация
• ajax - ajaxAsObservable
• get - getAsObservable
• getJSON - getJSONAsObservable
• getScript - getScriptAsObservable
• post - postAsObservable
• animate - animateAsObservable
• fadeIn - fadeInAsObservable
• fadeOut - fadeOutAsObservable
• fadeTo - fadeToAsObservable
• fadeToggle - fadeToggleAsObservable
• hide - hideAsObservable
• show - showAsObservable
• slideDown - slideDownAsObservable
• slideToggle - slideToggleAsObservable
• slideUp - slideUpAsObservable
Состав RxJS:
● объекты для представления асинхронных
потоков данных
● операторы для создания, фильтрации и
управления подобными объектами и
данными внутри них
● немного магии
Операторы объединения
● Amb
● Merge
● Concat
● CombineLatest
● Zip
● Repeat
stream y
stream x
result
result = fn(x, y, …, n)
Операторы фильтрации и выбора
● where (filter) / whereTrue / whereFalse
● take / takeUntil / takeWhile
● skip / skipUntill / skipWhile
● select (map) / selectMany / selectProperty
stream x
result
result = fn.apply(x)
Операторы для данных
● scan
● count
● min
● max
● groupBy
● distinct / distinctUntilChanged
● throttle
Временные диаграммы
Временные диаграммы вживую
j q u
t
result = source.throttle(1500)
j qu jqu
source
result
jqu
jque
jque
1,5 сек 1,5 сек
0,3 сек
.select()
negativeStream =
stream.select(function(value) { return -value });
negativeStream = stream.select(invert);
function invert(value) { return -value });
.where()
negativeStream = stream
.where(function(value) { return value % 2 == 0 });
negativeStream = stream.where(isEven);
xStream.merge(yStream)
xStream.combineLatest(yStream)
x.zip(y)
.bufferWithTime(3000)
.bufferWithCount(3)
.bufferWithTimeOrCount(3000, 3)
dots.delay(1000)
Операторы - over 9000
aggregate
all
amb
and
any
asObservable
average
buffer
bufferWithCount
bufferWithTime
bufferWithTimeOrCount
case | switchCase
catch | catchException
catch | catchException
combineLatest
concat
connect
contains
count
create
createWithDisposable
defaultIfEmpty
defer
delay
delayWithSelector
dematerialize
distinct
distinctUntilChanged
do | doAction
doWhile
elementAt
elementAtOrDefault
empty
every
expand
filter
finally | finallyAction
find
findIndex
first
firstOrDefault
flatMap
flatMapLatest
for | forIn
forkJoin
fromArray
generate
generateWithAbsoluteTime
generateWithRelativeTime
groupBy
groupByUntil
groupJoin
if | ifThen
ignoreElements
interval
isEmpty
join
last
lastOrDefault
manySelect
map
max
maxBy
merge
mergeObservable
min
minBy
multicast
never
observeOn
onErrorResumeNext
onErrorResumeNext
pluck
publish
publishLast
publishValue
range
reduce
refCount
repeat
repeat
replay
retry
return | returnValue
sample
scan
select
selectMany
selectSwitch
single
singleOrDefault
skip
skipLast
skipLastWithTime
skipUntil
skipWhile
some
start
startWith
subscribe
subscribeOn
sum
switch | switchLatest
take
takeLast
takeLastBuffer
takeLastBufferWithTime
takeLastWithTime
takeUntil
takeWhile
throttle
throttleWithSelector
throw | throwException
timeInterval
timeout
timeoutWithSelector
timer
timestamp
toArray
toAsync
using
when
where
while | whileDo
window
windowWithCount
windowWithTime
windowWithTimeOrCount
zip
Языки с библиотеками RX
1. node.js
2. Java
3. Ruby
4. Python
5. ObjectiveC
6. C++
7. ...
8. https://github.com/Reactive-Extensions
Демо
закрепим в jsFiddle полученные знания
Большое приложение
основанное на RxJS
selectedItem =>
{id: 1, title: “Матрешка”}
loadPanelStatus =>
{status: true}
pageSelection =>
{page: 4}
loadPanelStatus =>
{status: true}
couponChanges =>
{id: undefined}
itemRemoval =>
{id: 1}
Модуль
корзины
Модуль
каталога
КонтролерselectedItem {id: 1}
selectedItem
loadPanelStatus
couponChanges
itemRemoval
input
streams
itemRemoval {id: 2}
Модуль
корзины
Модуль
каталога
Контролер
couponChanges
.selectPropert(‘id’) => {id: “couponId”} => “couponId”
.select(affectedItems) => “couponId” => [1,2,4]
.subscribe(updateItemsPrice)
itemRemoval
.skipUntil(loadPanelStatus.whereTrue())
.takeUntil(loadPanelStatus.whereFalse())
.subscribe(markItemAsRemoved) <= {id: 1}
function affectedItems(coupon) {
return $(‘.items.’+coupon).map(function(item){ return $(item).data(‘id’) })
}
selectedItem {id: 1}
selectedItem
loadPanelStatus
couponChanges
itemRemoval
input
streams
itemRemoval {id: 2}
Вредные советы
● одноразовые потоки
● потоки-сироты
● превращаем все события в потоки, все!
● общие названия потоков (dataStream)
● свои операторы не читая документацию
Полезные советы
● простые данные в сообщениях
● говорящие названия для потоков
● простая логика для объединения
● промежуточные потоки
● функциональный подход
Фото кода
Литература:
1. http://www.introtorx.com/Content/v1.0.10621.0/00_Foreword.html
2. https://github.com/Reactive-Extensions
3. https://github.com/Reactive-Extensions/RxJS/tree/master/doc
4. http://blogs.microsoft.co.il/blogs/bnaya/archive/2010/02/25/rx-for-beginners-toc.aspx
5. http://www.slideshare.net/mattpodwysocki/cascadiajs-dont-cross-the-streams
6. http://www.slideshare.net/panesofglass/rx-workshop
7. http://www.infoq.com/reactive-extensions/
8. http://mywebbasedcomputer.com/users/johngslater/tech/rx/bubbleDiagrams.html
9. https://github.com/Netflix/RxJava/wiki/Observable-Utility-Operators
10. Matthew Podwysocki
Спасибо!
Виктор Русакович из Минска, Беларусь
nemiga@gmail.com
Вопросы?

Contenu connexe

Tendances

Михаил Давыдов — JavaScript: Асинхронность
Михаил Давыдов — JavaScript: АсинхронностьМихаил Давыдов — JavaScript: Асинхронность
Михаил Давыдов — JavaScript: АсинхронностьYandex
 
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...Alexey Paznikov
 
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...Ontico
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Mikhail Kurnosov
 
Something about Golang
Something about GolangSomething about Golang
Something about GolangAnton Arhipov
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksMikhail Kurnosov
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...Alexey Paznikov
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonovComputer Science Club
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Yandex
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в DjangoMoscowDjango
 
Профилирование и отладка Django
Профилирование и отладка DjangoПрофилирование и отладка Django
Профилирование и отладка DjangoVladimir Rudnyh
 
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017Mikhail Matrosov
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода Pavel Tsukanov
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Mikhail Kurnosov
 
Перспективы функционального подхода
Перспективы функционального подходаПерспективы функционального подхода
Перспективы функционального подходаIgor Kashkuta
 

Tendances (20)

Михаил Давыдов — JavaScript: Асинхронность
Михаил Давыдов — JavaScript: АсинхронностьМихаил Давыдов — JavaScript: Асинхронность
Михаил Давыдов — JavaScript: Асинхронность
 
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
ПВТ - весна 2015 - Лекция 3. Реентерабельность. Сигналы. Локальные данные пот...
 
Clojure #1
Clojure #1Clojure #1
Clojure #1
 
Clojure #2 (2014)
Clojure #2 (2014)Clojure #2 (2014)
Clojure #2 (2014)
 
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...ObjectManager, или как работать с большим количеством объектов на карте, Мари...
ObjectManager, или как работать с большим количеством объектов на карте, Мари...
 
Векторизация кода (семинар 3)
Векторизация кода (семинар 3)Векторизация кода (семинар 3)
Векторизация кода (семинар 3)
 
Progr labrab-4-2013-c++
Progr labrab-4-2013-c++Progr labrab-4-2013-c++
Progr labrab-4-2013-c++
 
Javascript
JavascriptJavascript
Javascript
 
Something about Golang
Something about GolangSomething about Golang
Something about Golang
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
 
Performance optimisation in javascript
Performance optimisation in javascriptPerformance optimisation in javascript
Performance optimisation in javascript
 
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
ПВТ - осень 2014 - Лекция 4 - Стандарт POSIX Threads. Реентерабельность. Сигн...
 
20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov20130429 dynamic c_c++_program_analysis-alexey_samsonov
20130429 dynamic c_c++_program_analysis-alexey_samsonov
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
Производительность в Django
Производительность в DjangoПроизводительность в Django
Производительность в Django
 
Профилирование и отладка Django
Профилирование и отладка DjangoПрофилирование и отладка Django
Профилирование и отладка Django
 
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
Повседневный С++: алгоритмы и итераторы @ C++ Russia 2017
 
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
 
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
 
Перспективы функционального подхода
Перспективы функционального подходаПерспективы функционального подхода
Перспективы функционального подхода
 

En vedette

Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...
Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...
Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...solit
 
WebCamp:Front-end Developers Day. Александр Мостовенко "Rx.js - делаем асинхр...
WebCamp:Front-end Developers Day. Александр Мостовенко "Rx.js - делаем асинхр...WebCamp:Front-end Developers Day. Александр Мостовенко "Rx.js - делаем асинхр...
WebCamp:Front-end Developers Day. Александр Мостовенко "Rx.js - делаем асинхр...GeeksLab Odessa
 
Rethink Async With RXJS
Rethink Async With RXJSRethink Async With RXJS
Rethink Async With RXJSRyan Anklam
 
Add Some Fun to Your Functional Programming With RXJS
Add Some Fun to Your Functional Programming With RXJSAdd Some Fun to Your Functional Programming With RXJS
Add Some Fun to Your Functional Programming With RXJSRyan Anklam
 
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...Chris Richardson
 
Functional Reactive Programming with RxJS
Functional Reactive Programming with RxJSFunctional Reactive Programming with RxJS
Functional Reactive Programming with RxJSstefanmayer13
 

En vedette (6)

Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...
Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...
Solit 2014, Непрерывная интеграция сложного проекта. Кто все сломал?, Русаков...
 
WebCamp:Front-end Developers Day. Александр Мостовенко "Rx.js - делаем асинхр...
WebCamp:Front-end Developers Day. Александр Мостовенко "Rx.js - делаем асинхр...WebCamp:Front-end Developers Day. Александр Мостовенко "Rx.js - делаем асинхр...
WebCamp:Front-end Developers Day. Александр Мостовенко "Rx.js - делаем асинхр...
 
Rethink Async With RXJS
Rethink Async With RXJSRethink Async With RXJS
Rethink Async With RXJS
 
Add Some Fun to Your Functional Programming With RXJS
Add Some Fun to Your Functional Programming With RXJSAdd Some Fun to Your Functional Programming With RXJS
Add Some Fun to Your Functional Programming With RXJS
 
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
 
Functional Reactive Programming with RxJS
Functional Reactive Programming with RxJSFunctional Reactive Programming with RxJS
Functional Reactive Programming with RxJS
 

Similaire à Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, Русакович Виктор

Mike ponomarenko java17-fork-v1.2
Mike ponomarenko java17-fork-v1.2Mike ponomarenko java17-fork-v1.2
Mike ponomarenko java17-fork-v1.2Alex Tumanoff
 
"FRP — делаем жизнь проще", Трдат Мкртчян, MoscowJS 19
"FRP — делаем жизнь проще", Трдат Мкртчян, MoscowJS 19"FRP — делаем жизнь проще", Трдат Мкртчян, MoscowJS 19
"FRP — делаем жизнь проще", Трдат Мкртчян, MoscowJS 19MoscowJS
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Vasya Petrov
 
FPUG Dzyga presentation
FPUG Dzyga presentationFPUG Dzyga presentation
FPUG Dzyga presentationIvan Filimonov
 
Web весна 2013 лекция 9
Web весна 2013 лекция 9Web весна 2013 лекция 9
Web весна 2013 лекция 9Technopark
 
Observable как атом приложения
Observable как атом приложенияObservable как атом приложения
Observable как атом приложенияArtem Bey
 
DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6Dmitry Soshnikov
 
I tmozg js_school
I tmozg js_schoolI tmozg js_school
I tmozg js_schoolITmozg
 
8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)Smolensk Computer Science Club
 
Web осень 2012 лекция 9
Web осень 2012 лекция 9Web осень 2012 лекция 9
Web осень 2012 лекция 9Technopark
 
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...OdessaFrontend
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksMikhail Kurnosov
 
JavaScript. Async (in Russian)
JavaScript. Async (in Russian)JavaScript. Async (in Russian)
JavaScript. Async (in Russian)Mikhail Davydov
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3Eugeniy Tyumentcev
 

Similaire à Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, Русакович Виктор (20)

Mike ponomarenko java17-fork-v1.2
Mike ponomarenko java17-fork-v1.2Mike ponomarenko java17-fork-v1.2
Mike ponomarenko java17-fork-v1.2
 
"FRP — делаем жизнь проще", Трдат Мкртчян, MoscowJS 19
"FRP — делаем жизнь проще", Трдат Мкртчян, MoscowJS 19"FRP — делаем жизнь проще", Трдат Мкртчян, MoscowJS 19
"FRP — делаем жизнь проще", Трдат Мкртчян, MoscowJS 19
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1
 
FPUG Dzyga presentation
FPUG Dzyga presentationFPUG Dzyga presentation
FPUG Dzyga presentation
 
Web весна 2013 лекция 9
Web весна 2013 лекция 9Web весна 2013 лекция 9
Web весна 2013 лекция 9
 
Observable как атом приложения
Observable как атом приложенияObservable как атом приложения
Observable как атом приложения
 
DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6DevConf. Дмитрий Сошников - ECMAScript 6
DevConf. Дмитрий Сошников - ECMAScript 6
 
Reactive extensions
Reactive extensionsReactive extensions
Reactive extensions
 
I tmozg js_school
I tmozg js_schoolI tmozg js_school
I tmozg js_school
 
8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)8 встреча — Язык программирования Python (В. Ананьев)
8 встреча — Язык программирования Python (В. Ананьев)
 
Charming python sc2-8
Charming python sc2-8Charming python sc2-8
Charming python sc2-8
 
Web осень 2012 лекция 9
Web осень 2012 лекция 9Web осень 2012 лекция 9
Web осень 2012 лекция 9
 
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
Функциональное программирование с использованием библиотеки fp-ts | Odessa Fr...
 
лекция 3
лекция 3лекция 3
лекция 3
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 
JavaScript. Async (in Russian)
JavaScript. Async (in Russian)JavaScript. Async (in Russian)
JavaScript. Async (in Russian)
 
Zagursky
ZagurskyZagursky
Zagursky
 
Async
AsyncAsync
Async
 
Luxoft async.net
Luxoft async.netLuxoft async.net
Luxoft async.net
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 

Plus de solit

Jazz team cooperation roadmap
Jazz team cooperation roadmapJazz team cooperation roadmap
Jazz team cooperation roadmapsolit
 
JazzTeam company presentation
JazzTeam company presentationJazzTeam company presentation
JazzTeam company presentationsolit
 
Solit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко Антон
Solit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко АнтонSolit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко Антон
Solit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко Антонsolit
 
Solit 2014, Scrum guide 2013, Семенченко Антон
Solit 2014, Scrum guide 2013, Семенченко АнтонSolit 2014, Scrum guide 2013, Семенченко Антон
Solit 2014, Scrum guide 2013, Семенченко Антонsolit
 
Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...
Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...
Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...solit
 
Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...
Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...
Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...solit
 
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...solit
 
Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...
Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...
Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...solit
 
Solit 2014, Cемантическое ядро сайта, Нагибович Юлия
Solit 2014, Cемантическое ядро сайта, Нагибович ЮлияSolit 2014, Cемантическое ядро сайта, Нагибович Юлия
Solit 2014, Cемантическое ядро сайта, Нагибович Юлияsolit
 
Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...
Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...
Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...solit
 
Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...
Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...
Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...solit
 
Solit 2014, Как эффективно организовать Автоматизацию, Семенченко Антон
Solit 2014, Как эффективно организовать Автоматизацию, Семенченко АнтонSolit 2014, Как эффективно организовать Автоматизацию, Семенченко Антон
Solit 2014, Как эффективно организовать Автоматизацию, Семенченко Антонsolit
 
Solit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter Reitsma
Solit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter ReitsmaSolit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter Reitsma
Solit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter Reitsmasolit
 
Solit 2014, Мифы и легенды SEO, Крылов Александр
Solit 2014, Мифы и легенды SEO, Крылов АлександрSolit 2014, Мифы и легенды SEO, Крылов Александр
Solit 2014, Мифы и легенды SEO, Крылов Александрsolit
 
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...solit
 
Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...
Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...
Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...solit
 
Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...
Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...
Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...solit
 
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...solit
 
Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил
Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил
Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил solit
 
Solit 2014, Наивный заказчик Vs. лживый seo. Как распознать seo-мошенника: ин...
Solit 2014, Наивный заказчик Vs. лживый seo. Как распознать seo-мошенника: ин...Solit 2014, Наивный заказчик Vs. лживый seo. Как распознать seo-мошенника: ин...
Solit 2014, Наивный заказчик Vs. лживый seo. Как распознать seo-мошенника: ин...solit
 

Plus de solit (20)

Jazz team cooperation roadmap
Jazz team cooperation roadmapJazz team cooperation roadmap
Jazz team cooperation roadmap
 
JazzTeam company presentation
JazzTeam company presentationJazzTeam company presentation
JazzTeam company presentation
 
Solit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко Антон
Solit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко АнтонSolit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко Антон
Solit 2014, Agile ValueTeam, учимся понимать Scrum, Семенченко Антон
 
Solit 2014, Scrum guide 2013, Семенченко Антон
Solit 2014, Scrum guide 2013, Семенченко АнтонSolit 2014, Scrum guide 2013, Семенченко Антон
Solit 2014, Scrum guide 2013, Семенченко Антон
 
Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...
Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...
Solit 2014, Подготовка специалистов в сфере It на факультетe информационных т...
 
Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...
Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...
Solit 2014, Адраджэнне Памяти аб продках пачынаецца з дзеянняу нашчадкау, Уру...
 
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
Solit 2014, Централизованное управление тестами с помощью TestLink, Зубович В...
 
Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...
Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...
Solit 2014, Инструменты автоматизации тестирования мобильных приложений. Срав...
 
Solit 2014, Cемантическое ядро сайта, Нагибович Юлия
Solit 2014, Cемантическое ядро сайта, Нагибович ЮлияSolit 2014, Cемантическое ядро сайта, Нагибович Юлия
Solit 2014, Cемантическое ядро сайта, Нагибович Юлия
 
Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...
Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...
Solit 2014, Геоанамальные зоны и сейсмоакустика. Субъективный взгляд. Миснико...
 
Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...
Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...
Solit 2014, Обзор белоруского интернет потребителя и рекламодателя. Что хочет...
 
Solit 2014, Как эффективно организовать Автоматизацию, Семенченко Антон
Solit 2014, Как эффективно организовать Автоматизацию, Семенченко АнтонSolit 2014, Как эффективно организовать Автоматизацию, Семенченко Антон
Solit 2014, Как эффективно организовать Автоматизацию, Семенченко Антон
 
Solit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter Reitsma
Solit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter ReitsmaSolit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter Reitsma
Solit 2014, Freelance and Nearshoring from a Dutch Perspective, Peter Reitsma
 
Solit 2014, Мифы и легенды SEO, Крылов Александр
Solit 2014, Мифы и легенды SEO, Крылов АлександрSolit 2014, Мифы и легенды SEO, Крылов Александр
Solit 2014, Мифы и легенды SEO, Крылов Александр
 
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
Solit 2014, Измеряем производительность Webприложения на сторне клиента с пом...
 
Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...
Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...
Solit 2014, 3 этапа развития аналитики вашего бизнеса. Как правильно определи...
 
Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...
Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...
Solit 2014, Опыт участия в конкурсе по спортивному программированию Russian A...
 
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
Solit 2014, MapReduce и машинное обучение на hadoop и mahout, Слисенко Конста...
 
Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил
Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил
Solit 2014, Зачем нужен филиал Creative Сommons в Беларуси?, Волчек Михаил
 
Solit 2014, Наивный заказчик Vs. лживый seo. Как распознать seo-мошенника: ин...
Solit 2014, Наивный заказчик Vs. лживый seo. Как распознать seo-мошенника: ин...Solit 2014, Наивный заказчик Vs. лживый seo. Как распознать seo-мошенника: ин...
Solit 2014, Наивный заказчик Vs. лживый seo. Как распознать seo-мошенника: ин...
 

Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, Русакович Виктор