build your own multistack js startup

121

Upload: -

Post on 25-May-2015

221 views

Category:

Internet


3 download

DESCRIPTION

Pics.io team presentation about latest technologies

TRANSCRIPT

Page 1: Build your own multistack JS startup
Page 2: Build your own multistack JS startup

Кто это?

● Gameloft● DevPro● Pics.io

@blackrabbit99

Page 3: Build your own multistack JS startup

Назад в будущее

Page 4: Build your own multistack JS startup
Page 5: Build your own multistack JS startup
Page 6: Build your own multistack JS startup
Page 7: Build your own multistack JS startup
Page 8: Build your own multistack JS startup
Page 9: Build your own multistack JS startup
Page 10: Build your own multistack JS startup
Page 11: Build your own multistack JS startup
Page 12: Build your own multistack JS startup

JS binary data

Page 13: Build your own multistack JS startup

Задача● Принять/загрузить файл● ????????● Profit

Page 14: Build your own multistack JS startup
Page 15: Build your own multistack JS startup

DNG is open

Page 16: Build your own multistack JS startup

Что делать с закрытыми?

Искать open source конверторы

Page 17: Build your own multistack JS startup

Что делать с закрытыми?

Экспериментировать

Page 18: Build your own multistack JS startup
Page 19: Build your own multistack JS startup

Canvas Fast drawing

Page 20: Build your own multistack JS startup

Целочисленные значения

ctx.drawImage(myImage, 0.3, 0.5)

Page 21: Build your own multistack JS startup

CSS3 transform

Page 22: Build your own multistack JS startup

Nearest-neighbour rendering

Page 23: Build your own multistack JS startup

Не скейлить с помощью drawImage

Page 24: Build your own multistack JS startup

Minimize Garbage Collection

Page 25: Build your own multistack JS startup

Pool common objects and classes

Page 26: Build your own multistack JS startup

Не создавайте мусор● Array.slice● Array.splice● Function.bind

Page 27: Build your own multistack JS startup

Асинхронный localStorage API с IndexedDB

Page 28: Build your own multistack JS startup

Микрооптимизация● Use x | 0 instead of Math.floor● Clear arrays with .length = 0 to avoid creating a new Array● Use if .. else over switch● Use TypedArrays for floats or integers (e.g. vectors and matrices)

Page 29: Build your own multistack JS startup

Debouncing

● Реальный вызов происходит только в случае, если с момента последней

попытки прошло время, большее или равное задержке.

● Реальный вызов происходит сразу, а все остальные попытки вызова

игнорируются, пока не пройдет время, большее или равное задержке,

отсчитанной от времени последней попытки.

Page 30: Build your own multistack JS startup

Троттлинг

● выполнение метода не чаще одного раза в указанный период, даже если он будет вызван много раз в течение этого периода

Page 31: Build your own multistack JS startup

Веб воркеры

Page 32: Build your own multistack JS startup

WebRTC В production уже сегодня

Захарченко Артем[email protected]@blackrabbit99

Page 33: Build your own multistack JS startup

Немного ностальгии

Page 34: Build your own multistack JS startup

Mosaic

Page 35: Build your own multistack JS startup

IE

Page 36: Build your own multistack JS startup

Netscape

Page 37: Build your own multistack JS startup

И тут понеслась

Page 38: Build your own multistack JS startup

Общее введение

Page 39: Build your own multistack JS startup

И тут понеслась

Page 41: Build your own multistack JS startup

Структура WebRTC приложения

Page 42: Build your own multistack JS startup

Media Stream

Page 44: Build your own multistack JS startup

RTCPeerConnection

Page 45: Build your own multistack JS startup

ICE framework

● сбор местных IP и порт. ● проверка подключения между пирами● keep alive соединения

Page 46: Build your own multistack JS startup

Signaling server

● Инициализация связи● Сетевые настройки● Информация о кодеках/браузерах

Page 47: Build your own multistack JS startup
Page 48: Build your own multistack JS startup
Page 49: Build your own multistack JS startup
Page 50: Build your own multistack JS startup
Page 51: Build your own multistack JS startup
Page 52: Build your own multistack JS startup
Page 53: Build your own multistack JS startup
Page 54: Build your own multistack JS startup
Page 55: Build your own multistack JS startup
Page 56: Build your own multistack JS startup
Page 57: Build your own multistack JS startup
Page 58: Build your own multistack JS startup
Page 59: Build your own multistack JS startup

Stun

Page 60: Build your own multistack JS startup
Page 61: Build your own multistack JS startup
Page 62: Build your own multistack JS startup
Page 63: Build your own multistack JS startup
Page 64: Build your own multistack JS startup
Page 65: Build your own multistack JS startup
Page 66: Build your own multistack JS startup
Page 67: Build your own multistack JS startup
Page 68: Build your own multistack JS startup
Page 69: Build your own multistack JS startup
Page 70: Build your own multistack JS startup
Page 71: Build your own multistack JS startup
Page 72: Build your own multistack JS startup
Page 73: Build your own multistack JS startup
Page 74: Build your own multistack JS startup
Page 75: Build your own multistack JS startup
Page 76: Build your own multistack JS startup
Page 77: Build your own multistack JS startup
Page 78: Build your own multistack JS startup
Page 79: Build your own multistack JS startup
Page 80: Build your own multistack JS startup

SDP

Page 81: Build your own multistack JS startup

RTCPeerConnection

1. Обработка потерянных пакетов2. Подавление эха3. Пропускная способность 4. Динамическая буферизация5. Снижение и подавление шума 6. Очистка изображения

Page 83: Build your own multistack JS startup

All fine

Page 84: Build your own multistack JS startup

Где же проблемы?

Page 85: Build your own multistack JS startup

А вот и они!

Page 86: Build your own multistack JS startup

Идеальный мир

Page 87: Build your own multistack JS startup

Реальный мир

Page 88: Build your own multistack JS startup

Turn

Page 90: Build your own multistack JS startup

RTCDataChannel

Page 91: Build your own multistack JS startup

Основные проблемы

● Скорость● Размер файлов● Размер чанков

Page 92: Build your own multistack JS startup

Поддержка

Page 93: Build your own multistack JS startup

Safari

RIP???

Page 94: Build your own multistack JS startup

Safari

Page 95: Build your own multistack JS startup

IE

● CU-RTC-Web● или Google Chrome Frame

Page 96: Build your own multistack JS startup

Статистика

Page 97: Build your own multistack JS startup

Open Source

● PeerJs● EasyRTC● PubNub● ShareFest● WebRTC.io

Page 98: Build your own multistack JS startup

Chrome OS packaged apps

Page 99: Build your own multistack JS startup

Зачем это все?● Запуск offline● Доступ к возможностям платформы● Невероятнейший user experience● Установка и апдейты прямо из Chrome Market

Page 100: Build your own multistack JS startup

Из Web

Page 101: Build your own multistack JS startup

в Offline

Page 102: Build your own multistack JS startup

Жизнь в офлайне● Файлы хранятся локально● Online features работают только при наличии

подключения● Храним данные локально● HTML5 Filesystem API

Page 103: Build your own multistack JS startup

Структура приложения

Page 104: Build your own multistack JS startup

Пример. chrome.storage

Page 105: Build your own multistack JS startup

Доступ к платформе

Page 106: Build your own multistack JS startup

Доступ к платформе● File● USB● Bluetouth● Socket

Page 107: Build your own multistack JS startup

Безопасность и CSP● Никакого eval● Никаких new Function● Забываем о существовании Iframe● Указываем откуда приходит контент

Page 108: Build your own multistack JS startup

Пример кода

Page 109: Build your own multistack JS startup

Еще секьюрити● Вставка контента через

WebView

● Доступ к удаленным ресурсамXHR, blob, filesystem

● ШаблонизаторПрекомпилируемые библиотеки или MustacheSandox для вызовов eval/new Function

Page 110: Build your own multistack JS startup

Итог● Offline

Написание не зависимых приложений

● CouldХраним данные в google хранилищах

● UI/UXКаждый js-ер хотел сделать нативные окошки

● Доступ к железуfile system/usb

● Не забываем о безопасности

Page 111: Build your own multistack JS startup

Backbonexs

Page 112: Build your own multistack JS startup

Что мы хотим?

1. Бизнес логика не зависит от UI и backend

2. Абсолютно автономная инициализация

3. Single responsibility principe

Page 113: Build your own multistack JS startup
Page 114: Build your own multistack JS startup

SUPERVISING PRESENTER

Page 115: Build your own multistack JS startup

MVVM

Page 116: Build your own multistack JS startup

HMVC

Page 117: Build your own multistack JS startup

jQuery?

Page 118: Build your own multistack JS startup
Page 119: Build your own multistack JS startup

Exoskeleton

No jQueryNo Undescore

Page 120: Build your own multistack JS startup

Frameworks

MarionetteChaplinThorax

Page 121: Build your own multistack JS startup

Aura