Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Построение мультисервисного стартапа в реалиях full-stack javascript
Кто это?
● Gameloft
● DevPro
● Pics.io
@blackrabbit99
Назад в будущее
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
JS binary data
Задача
● Принять/загрузить файл
● ????????
● Profit
Построение мультисервисного стартапа в реалиях full-stack javascript
DNG is open
Что делать с закрытыми?
Искать open source конверторы
Что делать с закрытыми?
Экспериментировать
Построение мультисервисного стартапа в реалиях full-stack javascript
Canvas Fast drawing
Целочисленные значения
ctx.drawImage(myImage, 0.3, 0.5)
CSS3 transform
Nearest-neighbour rendering
Не скейлить с помощью drawImage
Minimize Garbage Collection
Pool common objects and classes
Не создавайте мусор
● Array.slice
● Array.splice
● Function.bind
Асинхронный localStorage API с IndexedDB
Микрооптимизация
● 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)
Debouncing
● Реальный вызов происходит только в случае, если с момента последней
попытки прошло время, большее или равное задержке.
● Реальный вызов происходит сразу, а все остальные попытки вызова
игнорируются, пока не пройдет время, большее или равное задержке,
отсчитанной от времени последней попытки.
Троттлинг
● выполнение метода не чаще одного раза в
указанный период, даже если он будет вызван
много раз в течение этого периода
Веб воркеры
WebRTC В production уже сегодня
Захарченко Артем
myzlio@gmail.com
@blackrabbit99
Немного ностальгии
Mosaic
IE
Netscape
И тут понеслась
Общее введение
И тут понеслась
Начнем
● MediaStream (aka getUserMedia)
● RTCPeerConnection
● RTCDataChannel
Структура WebRTC приложения
Media Stream
Media Stream Connection
Demo
RTCPeerConnection
ICE framework
● сбор местных IP и порт.
● проверка подключения между пирами
● keep alive соединения
Signaling server
● Инициализация связи
● Сетевые настройки
● Информация о кодеках/браузерах
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Stun
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
Построение мультисервисного стартапа в реалиях full-stack javascript
SDP
RTCPeerConnection
1. Обработка потерянных пакетов
2. Подавление эха
3. Пропускная способность
4. Динамическая буферизация
5. Снижение и подавление шума
6. Очистка изображения
Посмотрим в действии
Demo
All fine
Где же проблемы?
А вот и они!
Идеальный мир
Реальный мир
Turn
RTCDataChannel передает
● String
● Blob
● ArrayBuffer
● ArrayBufferView
RTCDataChannel
Основные проблемы
● Скорость
● Размер файлов
● Размер чанков
Поддержка
Safari
RIP???
Safari
IE
● CU-RTC-Web
● или Google Chrome Frame
Статистика
Open Source
● PeerJs
● EasyRTC
● PubNub
● ShareFest
● WebRTC.io
Chrome OS packaged apps
Зачем это все?
● Запуск offline
● Доступ к возможностям платформы
● Невероятнейший user experience
● Установка и апдейты прямо из Chrome Market
Из Web
в Offline
Жизнь в офлайне
● Файлы хранятся локально
● Online features работают только при наличии
подключения
● Храним данные локально
● HTML5 Filesystem API
Структура приложения
Пример. chrome.storage
Доступ к платформе
Доступ к платформе
● File
● USB
● Bluetouth
● Socket
Безопасность и CSP
● Никакого eval
● Никаких new Function
● Забываем о существовании Iframe
● Указываем откуда приходит контент
Пример кода
Еще секьюрити
● Вставка контента через
WebView
● Доступ к удаленным ресурсам
XHR, blob, filesystem
● Шаблонизатор
Прекомпилируемые библиотеки или Mustache
Sandox для вызовов eval/new Function
Итог
● Offline
Написание не зависимых приложений
● Could
Храним данные в google хранилищах
● UI/UX
Каждый js-ер хотел сделать нативные окошки
● Доступ к железу
file system/usb
● Не забываем о безопасности
Backbonexs
Что мы хотим?
1. Бизнес логика не зависит от UI и backend
2. Абсолютно автономная инициализация
3. Single responsibility principe
Построение мультисервисного стартапа в реалиях full-stack javascript
SUPERVISING PRESENTER
MVVM
HMVC
jQuery?
Построение мультисервисного стартапа в реалиях full-stack javascript
Exoskeleton
No jQuery
No Undescore
Frameworks
Marionette
Chaplin
Thorax
Aura

More Related Content

Построение мультисервисного стартапа в реалиях full-stack javascript