SlideShare una empresa de Scribd logo
1 de 71
Descargar para leer sin conexión
Пара слов про
Константин Буркалёв, @KSDaemonMoscowJS, июль 2014
≠
WAMP
Windows, Apache,
MySQL, PHP
Протокол прикладного уровня, 1
реализует 2 паттерна:
• Publish/Subscribe (PubSub)1
• Remote Procedure Calls (RPC)
=
WAMP
Основные компоненты и понятия
• Идентификаторы ресурсов
• Транспорт
• Сериализатор
• Сессия
• Realm - домен, namespace
• Peer, узел
• Клиент
• Роутер
• Роль
Архитектура
Идентификаторы ресурсов
• Подписок
• Процедур
• Ошибок
Необходимы для:
Представляют собой URI
• system.send.file
• chat.message
• users.admins.message
• user.profile.updated
Сериализация и типы данных
• integer
• string
• bool
• list (array)
• dict
Поддерживаемые сериализаторы:
• JSON • MsgPack
Поддерживаемые типы данных:
Обязательные: Дополнительно:
любые, зависит
от поддержки в
сериализаторе
Сообщения и полезная нагрузка
• [HELLO,	
  Realm|uri,	
  Details|dict]	
  
1
• [PUBLISH,	
  Request|id,	
  Options|dict,	
  Topic|uri]	
  
• [PUBLISH,	
  Request|id,	
  Options|dict,	
  Topic|uri,	
  Arguments|list]	
  
• [PUBLISH,	
  Request|id,	
  Options|dict,	
  Topic|uri,	
  Arguments|list,	
  ArgumentsKw|dict]	
  
1
• [CALL,	
  Request|id,	
  Options|dict,	
  Procedure|uri]	
  
• [CALL,	
  Request|id,	
  Options|dict,	
  Procedure|uri,	
  Arguments|list]	
  
• [CALL,	
  Request|id,	
  Options|dict,	
  Procedure|uri,	
  Arguments|list,	
  ArgumentsKw|dict]	
  
1
• [RESULT,	
  CALL.Request|id,	
  Details|dict]	
  
• [RESULT,	
  CALL.Request|id,	
  Details|dict,	
  YIELD.Arguments|list]	
  
• [RESULT,	
  CALL.Request|id,	
  Details|dict,	
  YIELD.Arguments|list,	
  YIELD.ArgumentsKw|dict]
• Массивов | Array | List
• Словарей | Hash-table | Dictionary
Параметры-данные могут быть в виде:
Транспорт
• Websocket
• Raw TCP
• HTTP long-polling (в разработке)
• Unix sockets
• В основе лежат сообщения
• Сообщения упорядочены
• Двунаправленный обмен сообщениями
Транспорт и сессия
Клиент Роутер
Транспорт и сессия
HELLO
Клиент Роутер
Транспорт и сессия
HELLO
WELCOME
Клиент Роутер
Транспорт и сессия
HELLO
WELCOME
ABORT
Клиент Роутер
Транспорт и сессия
HELLO
WELCOME
GOODBYE
ABORT
Клиент Роутер
Транспорт и сессия
HELLO
WELCOME
GOODBYE
ABORT
GOODBYE
Клиент Роутер
Транспорт и сессия
HELLO
WELCOME
GOODBYE
ABORT
GOODBYE
GOODBYE
Клиент Роутер
Транспорт и сессия
HELLO
WELCOME
GOODBYE
ABORT
GOODBYE
GOODBYE
GOODBYE
Клиент Роутер
Publish / Subscribe
Publisher Broker Subscriber
Publish / Subscribe
SUBSCRIBE
Publisher Broker Subscriber
Publish / Subscribe
SUBSCRIBE
SUBSCRIBED
Publisher Broker Subscriber
Publish / Subscribe
SUBSCRIBE
SUBSCRIBED
ERROR
Publisher Broker Subscriber
Publish / Subscribe
SUBSCRIBE
SUBSCRIBED
ERROR
PUBLISH
Publisher Broker Subscriber
Publish / Subscribe
SUBSCRIBE
SUBSCRIBED
ERROR
PUBLISH
PUBLISHED
Publisher Broker Subscriber
Publish / Subscribe
SUBSCRIBE
SUBSCRIBED
ERROR
PUBLISH
PUBLISHED
ERROR
Publisher Broker Subscriber
Publish / Subscribe
SUBSCRIBE
SUBSCRIBED
ERROR
PUBLISH
PUBLISHED
ERROR
EVENT
Publisher Broker Subscriber
Publish / Subscribe
SUBSCRIBE
SUBSCRIBED
UNSUBSCRIBE
ERROR
PUBLISH
PUBLISHED
ERROR
EVENT
Publisher Broker Subscriber
Publish / Subscribe
SUBSCRIBE
SUBSCRIBED
UNSUBSCRIBE
UNSUBSCRIBED
ERROR
PUBLISH
PUBLISHED
ERROR
EVENT
Publisher Broker Subscriber
Publish / Subscribe
SUBSCRIBE
SUBSCRIBED
UNSUBSCRIBE
UNSUBSCRIBED
ERROR
ERROR
PUBLISH
PUBLISHED
ERROR
EVENT
Publisher Broker Subscriber
Remote Procedure Calls
Caller Dealer Callee
Remote Procedure Calls
REGISTER
Caller Dealer Callee
Remote Procedure Calls
REGISTER
REGISTERED
Caller Dealer Callee
Remote Procedure Calls
REGISTER
REGISTERED
ERROR
Caller Dealer Callee
Remote Procedure Calls
REGISTER
REGISTERED
ERROR
CALL
Caller Dealer Callee
Remote Procedure Calls
REGISTER
REGISTERED
ERROR
CALL
INVOCATION
Caller Dealer Callee
Remote Procedure Calls
REGISTER
REGISTERED
ERROR
CALL
INVOCATION
YIELD
Caller Dealer Callee
Remote Procedure Calls
REGISTER
REGISTERED
ERROR
CALL
INVOCATION
YIELD
ERROR
Caller Dealer Callee
Remote Procedure Calls
REGISTER
REGISTERED
ERROR
CALL
RESULT
INVOCATION
YIELD
ERROR
Caller Dealer Callee
Remote Procedure Calls
REGISTER
REGISTERED
ERROR
CALL
RESULT
INVOCATION
YIELD
ERROR
ERROR
Caller Dealer Callee
Remote Procedure Calls
REGISTER
REGISTERED
UNREGISTER
ERROR
CALL
RESULT
INVOCATION
YIELD
ERROR
ERROR
Caller Dealer Callee
Remote Procedure Calls
REGISTER
REGISTERED
UNREGISTER
UNREGISTERED
ERROR
CALL
RESULT
INVOCATION
YIELD
ERROR
ERROR
Caller Dealer Callee
Remote Procedure Calls
REGISTER
REGISTERED
UNREGISTER
UNREGISTERED
ERROR
ERROR
CALL
RESULT
INVOCATION
YIELD
ERROR
ERROR
Caller Dealer Callee
Профили
• Basic profile
• Advanced profile
Набор функциональных возможностей
в рамках каждого паттерна (PubSub, RPC)
Advanced profile
• Управление сессией
• Аутентификация
• Heartbeat
Advanced profile
• Publish / Subscribe
• белый и черный списки
• идентификация издателя
• подписки по паттернам
• метасобытия
• список подписчиков
• список событий
Advanced profile
• Remote Procedure Calls
• белый и черный списки
• идентификация вызывающего
• регистрация RPC по паттернам
• отмена выполнения
• прогрессивное выполнение
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
subscribe to ‘ready.for.chat’
subscribe to ‘ready.for.chat’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
WAMP Router
(realm 2)
Применение
Онлайн-консультант
subscribe to ‘chat.taken’
subscribe
to
‘chat.taken’
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
subscribe to ‘user.chat.id1235’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
publish event to ‘ready.for.chat’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
receive event in ‘ready.for.chat’
receive event in ‘ready.for.chat’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
publish event to ‘chat.taken’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client receive
eventin
‘chat.taken’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
publish event to ‘user.chat.id1235’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
receive event in ‘user.chat.id1235’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
subscribe to ‘user.chat.id2425’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
publish event to ‘ready.for.chat’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
receive event in ‘ready.for.chat’
receive event in ‘ready.for.chat’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
publish
eventto
‘chat.taken’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
receive event in ‘chat.taken’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
publish event to ‘user.chat.id2425’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
receive event in ‘user.chat.id2425’
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Browser
Embedded
app
client
Browser
Embedded
app
client
Browser
Backoffice
app
client
Browser
Backoffice
app
client
WAMP Router
(realm 1)
Browser
Embedded
app
client
Browser
Embedded
app
client
WAMP Router
(realm 2)
Применение
Онлайн-консультант
Применение
Browser
Browser
Server side infrastructure
WAMP Router
Mobile
Desktop
REGISTERRPC
REGISTERRPC
REGISTERRPC
SUBSCRIBE to TOPICs
Internal
service 1
SUBSCRIBE to TOPICs
Internal
service 2
Internal
service 3
Frontoffice
app
client
Frontoffice
app
client
CRUD
Nginx/HAProxy CRUD
CRUD
Backoffice
app
client
SUBSCRIBE to TOPICs
PUBLISHEvent
PUBLISHEvent
CALL RPCs
Nginx/HAProxy
Backoffice
app
client
DB
CRUD CRUD
Backoffice app
serverside
Frontoffice app
serverside
Большое интеграционное решение
ProvidesRPC
Publishevents
Subscribe
to topics
ProvidesRPC
Publishevents
Service
Provider 1
Service
Provider 2
Service
Provider 3
Service
Provider 4
Service
Provider 5
Publish
events
WAMP Router
(realm 1, realm 2, realm 3, ....)
CallRPC
CallRPC
Subscribe
to topics
Publishevents
Consumer 1 Consumer 2 Consumer 3 Consumer 4 Consumer 5
Применение
WAMP как основа композитных SOA решений
Применение
WAMP как основа композитных SOA решений
• Унифицированная сервисная шина
• Асинхронное выполнение процедур
• Стандартизация интерфейсов взаимодействия
• Минимальные накладные расходы
• Гибкая инфраструктура
• Изолированность и слабая связанность сервисов
• Легкость подключения новых сервисов
Существующие реализации
• JavaScriptA
• Autobahn|JS (browser, node.js)
• Wampy.js (browser)
• JavaA
• Autobahn|Android (скоро)
• .NETA
• WampSharp (в процессе)
• PHPA
• Thurway
Клиентские библиотеки
• PythonA
• Autobahn|Python
• C++A
• Autobahn|Cpp
• ErlangA
• Erwa
• Objective-CA
• MDWamp
• Lua (в процессе)
Роутеры
• PythonA
• Autobahn|Python
• Crossbar.io
• ErlangA
• Erwa
• PHPA
• Thurway
• LuaA
• Wiola
Итоги
• Простой и открытый протокол
• RPC + PubSub из коробки
• Унифицированная маршрутизация
• Транспорт и сериализация на любой вкус
• Минимальные накладные расходы
• Нативное использование в веб-приложениях
• Позволяет строить распределенные приложения
со слабым связыванием компонентов
• Множество реализаций на разных языках
• Open source & комьюнити
Полезные ссылки
• http://wamp.wsA
• Описание
• Спецификация
• Реализации
• https://groups.google.com/group/wampws
• http://autobahn.ws
• https://github.com/crossbario/crossbar/wiki
• Crossbar.io
• Примеры клиентов на разных языках
Вот и все!1
Но, возможно, есть вопросы
?
Константин Буркалёв
Спасибо за внимание!
• Mail: kostik@ksdaemon.ru
• Twitter: @KSDaemon
• GitHub: KSDaemon
• Blog: blog.ksdaemon.ru

Más contenido relacionado

Similar a Пара слов про WAMP — Константин Буркалев — MoscowJS 13

Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
Andrey Smirnov
 
банк презентация речевых сервисов голосовой интерактив
банк презентация речевых сервисов голосовой интерактивбанк презентация речевых сервисов голосовой интерактив
банк презентация речевых сервисов голосовой интерактив
robotspeech
 
Алексей Бережной — «HTTP-протокл»
Алексей Бережной — «HTTP-протокл»Алексей Бережной — «HTTP-протокл»
Алексей Бережной — «HTTP-протокл»
Yandex
 
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Cisco Russia
 

Similar a Пара слов про WAMP — Константин Буркалев — MoscowJS 13 (20)

Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
 
OWASP: безопасное программирование на PHP.
OWASP: безопасное программирование на PHP.OWASP: безопасное программирование на PHP.
OWASP: безопасное программирование на PHP.
 
Возможности систем коллтрекинга или подаем клиента горячим
Возможности систем коллтрекинга или подаем клиента горячимВозможности систем коллтрекинга или подаем клиента горячим
Возможности систем коллтрекинга или подаем клиента горячим
 
банк презентация речевых сервисов голосовой интерактив
банк презентация речевых сервисов голосовой интерактивбанк презентация речевых сервисов голосовой интерактив
банк презентация речевых сервисов голосовой интерактив
 
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
 
Queue metrics решение для мониторинга колл-центров на базе asterisk
Queue metrics   решение для мониторинга колл-центров на базе asteriskQueue metrics   решение для мониторинга колл-центров на базе asterisk
Queue metrics решение для мониторинга колл-центров на базе asterisk
 
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVCАрхитектура кода нового 2ГИС Web API или куда мы дели MVC
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
 
Алексей Бережной — «HTTP-протокл»
Алексей Бережной — «HTTP-протокл»Алексей Бережной — «HTTP-протокл»
Алексей Бережной — «HTTP-протокл»
 
Алексей Бережной - http-протокол
Алексей Бережной - http-протоколАлексей Бережной - http-протокол
Алексей Бережной - http-протокол
 
Опыт разработки и тестирования RESTful JSON сервиса
Опыт разработки и тестирования RESTful JSON сервисаОпыт разработки и тестирования RESTful JSON сервиса
Опыт разработки и тестирования RESTful JSON сервиса
 
"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС"Создание системы логирования" Литуненко Андрей, 2ГИС
"Создание системы логирования" Литуненко Андрей, 2ГИС
 
Successful Business Solution - Rus.
Successful Business Solution - Rus.Successful Business Solution - Rus.
Successful Business Solution - Rus.
 
Использование технологий распознавания русской речи в Cisco Contact Center и ...
Использование технологий распознавания русской речи в Cisco Contact Center и ...Использование технологий распознавания русской речи в Cisco Contact Center и ...
Использование технологий распознавания русской речи в Cisco Contact Center и ...
 
Продакшен-кластер для Docker одним кликом
Продакшен-кластер для Docker одним кликомПродакшен-кластер для Docker одним кликом
Продакшен-кластер для Docker одним кликом
 
Как зарабатывать больше на службе доставки еды?
Как зарабатывать больше на службе доставки еды?Как зарабатывать больше на службе доставки еды?
Как зарабатывать больше на службе доставки еды?
 
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarktQA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
QA Fes 2016. Игорь Любин. Об автоматическом тестировании бэкенда в MediaMarkt
 
Об автоматическом тестировании бэкенда в Media markt
Об автоматическом тестировании бэкенда в Media marktОб автоматическом тестировании бэкенда в Media markt
Об автоматическом тестировании бэкенда в Media markt
 
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
Кулинарный мастер-класс "Готовим безопасный офис нового поколения на основе C...
 
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow Zabbix в сервисной компании  ОНЛАНТА -  Zabbix Meetup Moscow
Zabbix в сервисной компании  ОНЛАНТА - Zabbix Meetup Moscow
 
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
 

Más de MoscowJS

Más de MoscowJS (20)

Александр Русаков - TypeScript 2 in action
Александр Русаков - TypeScript 2 in actionАлександр Русаков - TypeScript 2 in action
Александр Русаков - TypeScript 2 in action
 
Виктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public APIВиктор Розаев - Как не сломать обратную совместимость в Public API
Виктор Розаев - Как не сломать обратную совместимость в Public API
 
Favicon на стероидах
Favicon на стероидахFavicon на стероидах
Favicon на стероидах
 
E2E-тестирование мобильных приложений
E2E-тестирование мобильных приложенийE2E-тестирование мобильных приложений
E2E-тестирование мобильных приложений
 
Reliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkeyReliable DOM testing with browser-monkey
Reliable DOM testing with browser-monkey
 
Basis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA FrameworkBasis.js - Production Ready SPA Framework
Basis.js - Production Ready SPA Framework
 
Контекст в React, Николай Надоричев, MoscowJS 31
Контекст в React, Николай Надоричев, MoscowJS 31Контекст в React, Николай Надоричев, MoscowJS 31
Контекст в React, Николай Надоричев, MoscowJS 31
 
Верстка Canvas, Алексей Охрименко, MoscowJS 31
Верстка Canvas, Алексей Охрименко, MoscowJS 31Верстка Canvas, Алексей Охрименко, MoscowJS 31
Верстка Canvas, Алексей Охрименко, MoscowJS 31
 
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
Веб без интернет соединения, Михаил Дунаев, MoscowJS 31
 
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
Angular2 Change Detection, Тимофей Яценко, MoscowJS 31
 
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
Создание WYSIWIG-редакторов для веба, Егор Яковишен, Setka, MoscowJs 33
 
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
Предсказуемый Viewport, Вопиловский Константин, KamaGames Studio, MoscowJs 33
 
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
Promise me an Image... Антон Корзунов, Яндекс, MoscowJs 33
 
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
Регрессионное тестирование на lenta.ru, Кондратенко Павел, Rambler&Co, Moscow...
 
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter..."Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...
 
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
"Во все тяжкие с responsive images", Павел Померанцев, MoscowJS 29
 
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
"AMP - технология на три буквы", Макс Фролов, MoscowJS 29
 
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
"Observable и Computed на пример KnockoutJS", Ольга Кобец, MoscowJS 29
 
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
«Пиринговый веб на JavaScript», Денис Глазков, MoscowJS 28
 
"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27"Доклад не про React", Антон Виноградов, MoscowJS 27
"Доклад не про React", Антон Виноградов, MoscowJS 27
 

Пара слов про WAMP — Константин Буркалев — MoscowJS 13