SlideShare a Scribd company logo
1 of 48
Rich Internet Applications
Дмитрий Смаль
Что плохо в
HTML / CSS / JS ?
Что плохо ?
● Плохая поддержка мультимедиа
– векторная графика
– Поддержки аудио и видео
– Графика с помощью JS
● Ограничено использование ресурсов клиента
– Хранение данных
– Фоновые вычисления
– Сетевые соединения
● Множество мелких недочетов (inputs и т.д.)
Платформы
Java Applets – полноценный GUI на Java
Java Fx – платформа, JavaFXScript
Adobe Flash – векторная графика + ActionScript
Adobe Flex – расширение Flash, XML интерфейс
MS SilverLight – аналог Adobe Flash
Возможности
● Доступ к файловой системе (ограниченный)
● Локальное хранилище данных
● Поддержка аудио и видео
● Поддержка сетевых соединений (сокеты)
● 2D / 3D графика
● Работа непосредственно с HTTP протоколом
● Работа с DOM
● Прямые и обратные вызовы JavaScript
● Регистрация своих протоколов
Как подключить ?
Устревший способ:
<embed src="mouse.swf"
type="application/x-shockwave-flash"
pluginspage="http://get.adobe.com/flashplayer/">
Хороший способ:
<object data="player.swf"
type="application/x-shockwave-flash">
<param name="flashvars" value="url=rolik.mp4">
<param name="quality" value="high">
<param name="wmode" value="opaque">
<embed … >
</object>
Java Applets
<OBJECT width="200" height="200" align="baseline"
classid="clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA"
codebase="http://java.sun.com/products/plugin/autodl
/jinstall-1_4_2-windows-i586.cab#Version=1,4,2,0">
<PARAM name="code" value="XYZApp.class">
<PARAM name="codebase" value="html/">
<PARAM name="type" value="application/x-java-
applet;jpi-version=1.4.2">
<PARAM name="model"
value="models/HyaluronicAcid.xyz">
<PARAM name="scriptable" value="true">
Java Applets are not supported !!!
</OBJECT>
Достоинства платформ
● Расширенный доступ к ресурсам
● Обеспечение безопасности, “песочница”
● Скорость работы
● Поставляются вместе со средой разработки
● Независимость от браузера
Недостатки платформ
● Объем загружаемого кода может быть большим
● Отдельная технология отдельный программист→
● Переносимость плагина
● Как правило, плагин нужно загружать
HTML 5
● Почему не прижился XHTML?
● HTML5 - не только язык разметки, это группа технологий
(JS API, CSS 3)
● Совместим с HTML4
● DOCTYPE html
● Реализуется непосредственно в браузере
● Может быть реализован частично
● Часть функционала может быть эмулирована с помощью
JS (Modernizr.js, HTML5 Enabling)
● И уже работает! http://html5readiness.com/
Совместимость ...
Graceful Degradation
vs.
Progressive Enhancement
Разметка: новые тэги
<header> - выделяет шапку страницы
<footer> - выделяет подвал страницы
<section> - раздел сайта, логическая группировка
<article> - “сущность”, предназначенная для
самостоятельного распространения
<nav> - блок навигационных ссылок, например
рубрикатор или пагинатор
<aside> - имеет косвенное отношение к содержимому,
реклама, перелинковка
Разметка: новые тэги
<canvas> - для рисования JavaScript ом
<audio> - для управления аудио
<video> - вывод видео без flash
<hgroup><h1></h1><h2></h2></hgroup>
<time datetime=”2012-05-15”>сегодня</time>
HTML5: video
<video id="movie" width="400" height="320"
preload controls poster="poster.jpeg">
<source src="video/snowman.mp4" />
<source src="video/snowman.webm"
type='video/webm; codecs="vp8, vorbis"' />
<source src="video/snowman.ogv"
type='video/ogg; codecs="theora, vorbis"' />
</video>
Как это делалось раньше:
Flash, QuickTime, RealPlayer (плагины)
Что предлагает HTML5:
Видеоконтейнеры
Определяют формат файла, позволяют хранить в одном
файле видео и аудио дорожки
● MPEG-4 (mp4, m4v)
● FlashVideo (flv)
● OGG (ogv)
● WebM (только кодеки VP8 и Vorbis)
● Audio Video Interactive (avi)
Видео и аудио кодеки
Непосредственно декодирование видео и аудио потоков. В
Internet используются кодеки с потерей качества.
Видео:
● H.264 – основан на патенте, профили, Blu-ray
● Theora – не связан патентами
● VP8 – все патенты открыты, принадлежит Google
Видео и аудио кодеки
Аудио:
● MP3 – запатентован, поддерживается всем
● AAC – запатентован, профили, Apple, iTunes
● Vorbis – не связан патентами
Видео и аудио кодеки
Аудио:
● MP3 – запатентован, поддерживается всем
● AAC – запатентован, профили, Apple, iTunes
● Vorbis – не связан патентами
Поддержка браузерами
FF(4+): Theora + Vorbis + OGG, WebM
Opera(10.6+): Theora + Vorbis + OGG, WebM
Chrome(6+): Theora + Vorbis + OGG, WebM, H.264 + AAC +
MP4
IPhone, Android, Flash(!): H.264 + AAC + MP4
IE(9+): H.264 + AAC + MP4, WebM(*)
Нужно несколько копий
Для работы со всеми браузерами нужно хранить несколько
копий видеоролика в разных форматах:
WebM (VP8 + Vorbis)
MP4 (H.264 + AAC low)
OGG (Theora + Vorbis)
Откат к Flash плееру
JavaScript API
Canvas: рисование
<canvas id=”a” width=”200” height=”200”>
</canvas>
<script>
var canv = document.getElementById("a");
var ctx = canv.getContext("2d");
ctx.fillRect(50, 25, 150, 100);
</script>
Context – API для рисования
2d – стандартно (система координат – top left)
3d – не во всех браузерах (WebGL)
Поддержка: IE 7+, FF 3+, Chrome 3+, Opera 10+
Методы рисования
ctx.fillStyle – стиль заполнения (цвет)
ctx.strokeStyle – стиль росчерка (цвет)
ctx.font – стиль шрифта
ctx.strokeRect(x, y, width, height)
ctx.fillRect(x, y, width, height)
ctx.moveTo(x, y) – переместить перо в точку
ctx.lineTo(x, y) – провести линию в точку
ctx.stroke() - вывести линию с нужным стилем
ctx.fillText(“phrase”, x, y) – вывод текста
Градиенты и изображения
grd = ctx.createLinearGradient(x0, y0, x1, y1);
grd.addColorStop(0, “black”);
grd.addColorStop(1, “white”);
ctx.fillStyle = grd;
img = Image();
img.src = “images/cat.jpg”;
img.onload = function() {
ctx.drawImage(img, x, y, width, height);
};
Геолокация
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
positionDetected, detectionFailed,
{ enableHighAccuracy: false,
timeout: 5000, maximumAge: 60000 }
);
}
Обычный способ:
REMOTE_ADDR whois регион→ →
Еще варианты: подключение к беспроводной сети,
подключение к сотовой сети, GPS
Геолокация
function positionDetected(position) {
position.lattitude; // в градусах
position.longitude; // в градусах
position.accuracy; // в метрах
}
function detectionFailed(error) {
if (error.code == 1) {
// пользователь отказался
}
}
Альтернативы: GoogleGears, Native API, geo.js
Локальное хранилище
var ls = window.localStorage;
if (ls) {
ls.setItem('str', 'value');
var str = ls.getItem('name');
ls.removeItem('str');
ls['num'] = 3.33;
var num = parseFloat(ls['num']);
ls.length; // количество записей
for (var key in ls)
console.log(key, ls[key])
}
Недостатки cookies: размер, передача, скорость
Фоновые вычисления
setInterval(function() {
// do some calculations
// post events
}, 100);
Обычный способ: setInterval, setTimeout
Недостатки:
● вычисления в 1 поток
● блокирует работу UI
● сложность event-driven разработки
WebWorkers
// создаем тред
var worker = new Worker("worker.js");
// подписываемся на события
worker.onmessage = function(event) {
console.log(event.data);
}
// отправляем сообщение
worker.postMessage(33);
// и когда-нибудь закрываем его
worker.close();
WebWorkers
// worker.js
var i = 0;
var iv = null;
function tick() {
postMessage(i++);
}
// подписываемся на внешние события
onmessage = function(ev) {
i = ev.data;
clearInterval(iv);
iv = setInterval(tick, 500);
};
Offline приложения
<html manifest="/cache.manifest">
MIME-тип: text/cache-manifest
CACHE MANIFEST
FALLBACK:
/ /offline.html
CACHE:
/style.css
/script.js
/index.html
NETWORK:
/counter.cgi
Улучшение форм
<input type=”text” placeholder=”скажи слово”>
<input type=”text” autofocus>
<input type=”text” required>
Новые типы input: email, url, search, number,
range, date, time, week, month, …, color
Валидация форм – по умолчанию
<form novalidate> - отключает встроенную валидацию
SASS – CSS препроцессор
SASS
$bgcolor: gray;
$fgcolor: green;
.txt {
color: $fgcolor;
background: $bgcolor;
a {
color: red;
&:hover {
text-decoration: none;
}
}
}
.txt {
color: green;
background: gray;
}
.txt a {
color: red;
}
.txt a:hover {
text-decoration: none;
}
Переменные и вложенность
SASS
$side: top;
$brd-width: 3px;
$clr: red;
.btn {
color: $clr;
border-#{$side}: lighten($clr, 30%) $brd-width;
width: 70px - $brd-width;
}
.btn {
color: red;
border-top: #ff9999 3px;
width: 67px;
}
Функции и интерполяция
SASS
@mixin rounded($side, $radius: 10px) {
border-#{$side}-radius: $radius;
-moz-border-radius-#{$side}: $radius;
-webkit-border-#{$side}-radius: $radius;
}
#navbar li { @include rounded(top); }
#footer { @include rounded(top, 5px); }
#sidebar { @include rounded(left, 8px); }
Mixins
CSS фреймворки
CSS фреймворк
Преимущества:
● кроссбраузерность
● может использовать не-верстальщик
● как правило более семантичная разметка
● скорость разработки
Подходит для:
● внутренние интерфейсы (админка)
● прототипы сайтов
● сайты-приложения, технические сайты
Twitter Bootstrap
● Использует less.js
● Требует DOCTYPE html
● Включает: 12 колоночная сетка, layoutы страниц, стили
для основных тэгов
● Компоненты: кнопки, меню, закладки, пагинатор
● Адаптируется под разные устройства: телефоны,
планшеты, мониторы
● Альтернативы: 960 Grid, Blueprint, YAML
Twitter Bootstrap
<div class="btn-group">
<button class="btn">1</button>
<button class="btn">2</button>
<button class="btn">3</button>
</div>
<div class="btn-group">
<button class="btn">Action</button>
<button class="btn dropdown-toggle"
data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul class="dropdown-menu">
<!-- dropdown menu links -->
</ul>
</div>
SVG
SVG
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg version = "1.1"
baseProfile="full"
xmlns = "http://www.w3.org/2000/svg"
xmlns:xlink = "http://www.w3.org/1999/xlink"
xmlns:ev = "http://www.w3.org/2001/xml-events"
height = "400px" width = "400px">
<rect x="0" y="0" width="400" height="400" fill="none"
stroke="black" stroke-width="5px" stroke-opacity="0.5"/>
<g fill-opacity="0.6" stroke="black" stroke-width="0.5px">
<circle cx="200px" cy="200px" r="104px" fill="red"
transform="translate(0,-52)" />
<circle cx="200px" cy="200px" r="104px" fill="blue"
transform="translate(60, 52)" />
<circle cx="200px" cy="200px" r="104px" fill="green"
transform="translate(-60, 52)" />
</g>
</svg>
SVG: пути
<path stroke="black" d="M 227 239 L 328 90 L 346 250 L 201
124 L 410 150 L 228 238" />
M – перемещение пера
L H V – прямые
C S Q T – кривые Безье
A – дуги
SVG: Достоинства
● открытый текстовый формат
● векторная графика, масштабируемость
● интеграция с растровой графикой, CSS, JS
● является частью DOM анимация и события→
SVG
Достоинства:
● открытый текстовый формат
● векторная графика, масштабируемость
● интеграция с растровой графикой, CSS, JS
● является частью DOM анимация и события→
Недостатки:
● размер файла, чуствителен к мелким деталям
● сложно отобразить только часть картинки
SVG: Поддержка
Chrome 3+, FF 1.5+, Opera 8+, IE 9+
Для IE <9 существует технология VML
Raphael.js
Спасибо за внимание
Дмитрий Смаль, smal@corp.mail.ru

More Related Content

What's hot

Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Ontico
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
 
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10OdessaFrontend
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияYandex
 
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...zfconfua
 
Что надо знать о HTTP/2
Что надо знать о HTTP/2Что надо знать о HTTP/2
Что надо знать о HTTP/2Badoo Development
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?phpdevby
 
Артем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTMLАртем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTMLYandex
 
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...PVasili
 
презентация Day4
презентация Day4презентация Day4
презентация Day4Bulatov Edward
 
Лечение мобильных, поисковых редиректов и дорвеев на сайте
Лечение мобильных, поисковых редиректов и дорвеев на сайте Лечение мобильных, поисковых редиректов и дорвеев на сайте
Лечение мобильных, поисковых редиректов и дорвеев на сайте revisium
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.Igor Shkulipa
 
Knockout.JS на примере 2ГИС-Онлайн
Knockout.JS на примере 2ГИС-ОнлайнKnockout.JS на примере 2ГИС-Онлайн
Knockout.JS на примере 2ГИС-ОнлайнDevDay
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкRoman Dvornov
 
Как Webpack сделал меня счастливее
Как Webpack сделал меня счастливееКак Webpack сделал меня счастливее
Как Webpack сделал меня счастливееYaroslav Serhieiev
 
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evroneit-people
 
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)Ontico
 
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...IT Event
 
Basis.js – «под капотом»
Basis.js – «под капотом»Basis.js – «под капотом»
Basis.js – «под капотом»Roman Dvornov
 
Николай Сиварев "Приручая сайты"
Николай Сиварев "Приручая сайты"Николай Сиварев "Приручая сайты"
Николай Сиварев "Приручая сайты"Yandex
 

What's hot (20)

Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
All you need is Vue, Nuxt is all you need | Odessa Frontend Meetup #10
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
Хранение, обработка и отдача статики с использованием \Zend\File. Опыт социал...
 
Что надо знать о HTTP/2
Что надо знать о HTTP/2Что надо знать о HTTP/2
Что надо знать о HTTP/2
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
 
Артем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTMLАртем Кувалдин: Основы HTML
Артем Кувалдин: Основы HTML
 
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
построение внутренней ссылочной структуры сайта на Drupal 7 (seo). Костин ...
 
презентация Day4
презентация Day4презентация Day4
презентация Day4
 
Лечение мобильных, поисковых редиректов и дорвеев на сайте
Лечение мобильных, поисковых редиректов и дорвеев на сайте Лечение мобильных, поисковых редиректов и дорвеев на сайте
Лечение мобильных, поисковых редиректов и дорвеев на сайте
 
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 07.
 
Knockout.JS на примере 2ГИС-Онлайн
Knockout.JS на примере 2ГИС-ОнлайнKnockout.JS на примере 2ГИС-Онлайн
Knockout.JS на примере 2ГИС-Онлайн
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
 
Как Webpack сделал меня счастливее
Как Webpack сделал меня счастливееКак Webpack сделал меня счастливее
Как Webpack сделал меня счастливее
 
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
 
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
base.network — пиринговый веб на JavaScript / Денис Глазков (Lazada Rus)
 
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...
Александр Сычев "Статика и динамика. Как фреймворки помогут прокачать ваше пр...
 
Basis.js – «под капотом»
Basis.js – «под капотом»Basis.js – «под капотом»
Basis.js – «под капотом»
 
Николай Сиварев "Приручая сайты"
Николай Сиварев "Приручая сайты"Николай Сиварев "Приручая сайты"
Николай Сиварев "Приручая сайты"
 

Viewers also liked

АиСД осень 2012 лекция 3
АиСД осень 2012 лекция 3АиСД осень 2012 лекция 3
АиСД осень 2012 лекция 3Technopark
 
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9Technopark
 
Web осень 2012 лекция 9
Web осень 2012 лекция 9Web осень 2012 лекция 9
Web осень 2012 лекция 9Technopark
 
C++ осень 2012 лекция 6
C++ осень 2012 лекция 6C++ осень 2012 лекция 6
C++ осень 2012 лекция 6Technopark
 
Информационная безопасность весна 2013 лекция 4
Информационная безопасность весна 2013 лекция 4Информационная безопасность весна 2013 лекция 4
Информационная безопасность весна 2013 лекция 4Technopark
 
Web весна 2012 лекция 3
Web весна 2012 лекция 3Web весна 2012 лекция 3
Web весна 2012 лекция 3Technopark
 
Web осень 2012 лекция 2
Web осень 2012 лекция 2Web осень 2012 лекция 2
Web осень 2012 лекция 2Technopark
 
Управление продуктом весна 2014 лекция 1
Управление продуктом весна 2014 лекция 1Управление продуктом весна 2014 лекция 1
Управление продуктом весна 2014 лекция 1Technopark
 
СУБД осень 2012 вестник 2
СУБД осень 2012 вестник 2СУБД осень 2012 вестник 2
СУБД осень 2012 вестник 2Technopark
 
АиСД осень 2012 лекция 8
АиСД осень 2012 лекция 8АиСД осень 2012 лекция 8
АиСД осень 2012 лекция 8Technopark
 
Бизнес и системный анализ весна 2013 лекция 2
Бизнес и системный анализ весна 2013 лекция 2Бизнес и системный анализ весна 2013 лекция 2
Бизнес и системный анализ весна 2013 лекция 2Technopark
 
СУБД осень 2012 лекция 5
СУБД осень 2012 лекция 5СУБД осень 2012 лекция 5
СУБД осень 2012 лекция 5Technopark
 
C++ осень 2012 лекция 11
C++ осень 2012 лекция 11C++ осень 2012 лекция 11
C++ осень 2012 лекция 11Technopark
 
Тестирование весна 2013 лекция 4
Тестирование весна 2013 лекция 4Тестирование весна 2013 лекция 4
Тестирование весна 2013 лекция 4Technopark
 
Web осень 2012 лекция 5
Web осень 2012 лекция 5Web осень 2012 лекция 5
Web осень 2012 лекция 5Technopark
 
Java осень 2012 лекция 7
Java осень 2012 лекция 7Java осень 2012 лекция 7
Java осень 2012 лекция 7Technopark
 
Безопасность интернет-приложений осень 2013 лекция 1
Безопасность интернет-приложений осень 2013 лекция 1Безопасность интернет-приложений осень 2013 лекция 1
Безопасность интернет-приложений осень 2013 лекция 1Technopark
 
Java весна 2013 лекция 1
Java весна 2013 лекция 1Java весна 2013 лекция 1
Java весна 2013 лекция 1Technopark
 

Viewers also liked (18)

АиСД осень 2012 лекция 3
АиСД осень 2012 лекция 3АиСД осень 2012 лекция 3
АиСД осень 2012 лекция 3
 
Java весна 2013 лекция 9
Java весна 2013 лекция 9Java весна 2013 лекция 9
Java весна 2013 лекция 9
 
Web осень 2012 лекция 9
Web осень 2012 лекция 9Web осень 2012 лекция 9
Web осень 2012 лекция 9
 
C++ осень 2012 лекция 6
C++ осень 2012 лекция 6C++ осень 2012 лекция 6
C++ осень 2012 лекция 6
 
Информационная безопасность весна 2013 лекция 4
Информационная безопасность весна 2013 лекция 4Информационная безопасность весна 2013 лекция 4
Информационная безопасность весна 2013 лекция 4
 
Web весна 2012 лекция 3
Web весна 2012 лекция 3Web весна 2012 лекция 3
Web весна 2012 лекция 3
 
Web осень 2012 лекция 2
Web осень 2012 лекция 2Web осень 2012 лекция 2
Web осень 2012 лекция 2
 
Управление продуктом весна 2014 лекция 1
Управление продуктом весна 2014 лекция 1Управление продуктом весна 2014 лекция 1
Управление продуктом весна 2014 лекция 1
 
СУБД осень 2012 вестник 2
СУБД осень 2012 вестник 2СУБД осень 2012 вестник 2
СУБД осень 2012 вестник 2
 
АиСД осень 2012 лекция 8
АиСД осень 2012 лекция 8АиСД осень 2012 лекция 8
АиСД осень 2012 лекция 8
 
Бизнес и системный анализ весна 2013 лекция 2
Бизнес и системный анализ весна 2013 лекция 2Бизнес и системный анализ весна 2013 лекция 2
Бизнес и системный анализ весна 2013 лекция 2
 
СУБД осень 2012 лекция 5
СУБД осень 2012 лекция 5СУБД осень 2012 лекция 5
СУБД осень 2012 лекция 5
 
C++ осень 2012 лекция 11
C++ осень 2012 лекция 11C++ осень 2012 лекция 11
C++ осень 2012 лекция 11
 
Тестирование весна 2013 лекция 4
Тестирование весна 2013 лекция 4Тестирование весна 2013 лекция 4
Тестирование весна 2013 лекция 4
 
Web осень 2012 лекция 5
Web осень 2012 лекция 5Web осень 2012 лекция 5
Web осень 2012 лекция 5
 
Java осень 2012 лекция 7
Java осень 2012 лекция 7Java осень 2012 лекция 7
Java осень 2012 лекция 7
 
Безопасность интернет-приложений осень 2013 лекция 1
Безопасность интернет-приложений осень 2013 лекция 1Безопасность интернет-приложений осень 2013 лекция 1
Безопасность интернет-приложений осень 2013 лекция 1
 
Java весна 2013 лекция 1
Java весна 2013 лекция 1Java весна 2013 лекция 1
Java весна 2013 лекция 1
 

Similar to Web осень 2012 лекция 10

HTML5. Будем знакомы! Павел Ловцевич
HTML5. Будем знакомы! Павел ЛовцевичHTML5. Будем знакомы! Павел Ловцевич
HTML5. Будем знакомы! Павел ЛовцевичТранслируем.бел
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.Дмитрий Бумов
 
Web весна 2012 лекция 4
Web весна 2012 лекция 4Web весна 2012 лекция 4
Web весна 2012 лекция 4Technopark
 
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf[ONSEC ]XSS vs waf
[ONSEC ]XSS vs wafd0znp
 
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)xasima
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаAlexei Smolyanov
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.Igor Shkulipa
 
Bootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressBootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressIgor Sazonov
 
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....KazHackStan
 
Изоморфные приложения и Python - Виталий Глибин, Huntflow
Изоморфные приложения и Python - Виталий Глибин, HuntflowИзоморфные приложения и Python - Виталий Глибин, Huntflow
Изоморфные приложения и Python - Виталий Глибин, Huntflowit-people
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)Sergey Skvortsov
 
Безопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionБезопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionAndrew Petukhov
 
Артем Маркушев - HTML & CSS
Артем Маркушев - HTML & CSSАртем Маркушев - HTML & CSS
Артем Маркушев - HTML & CSSDataArt
 
Web deployment
Web deploymentWeb deployment
Web deploymentGetDev.NET
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NETPositive Hack Days
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor SysoevMedia Gorod
 

Similar to Web осень 2012 лекция 10 (20)

HTML5. Будем знакомы! Павел Ловцевич
HTML5. Будем знакомы! Павел ЛовцевичHTML5. Будем знакомы! Павел Ловцевич
HTML5. Будем знакомы! Павел Ловцевич
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.
 
Web весна 2012 лекция 4
Web весна 2012 лекция 4Web весна 2012 лекция 4
Web весна 2012 лекция 4
 
[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf[ONSEC ]XSS vs waf
[ONSEC ]XSS vs waf
 
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)Webuibasics - Lesson 3 - Nginx, SSI (in russian)
Webuibasics - Lesson 3 - Nginx, SSI (in russian)
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчика
 
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 09.
 
Bootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressBootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPress
 
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
 
Изоморфные приложения и Python - Виталий Глибин, Huntflow
Изоморфные приложения и Python - Виталий Глибин, HuntflowИзоморфные приложения и Python - Виталий Глибин, Huntflow
Изоморфные приложения и Python - Виталий Глибин, Huntflow
 
Catalyst – MVC framework на Perl (RIT 2008)
Catalyst – MVC framework на Perl  (RIT 2008)Catalyst – MVC framework на Perl  (RIT 2008)
Catalyst – MVC framework на Perl (RIT 2008)
 
Безопасность веб-приложений: starter edition
Безопасность веб-приложений: starter editionБезопасность веб-приложений: starter edition
Безопасность веб-приложений: starter edition
 
176023
176023176023
176023
 
Артем Маркушев - HTML & CSS
Артем Маркушев - HTML & CSSАртем Маркушев - HTML & CSS
Артем Маркушев - HTML & CSS
 
Web deployment
Web deploymentWeb deployment
Web deployment
 
Взломать сайт на ASP.NET
Взломать сайт на ASP.NETВзломать сайт на ASP.NET
Взломать сайт на ASP.NET
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Devcamp nodejs-2010
Devcamp nodejs-2010Devcamp nodejs-2010
Devcamp nodejs-2010
 
Nginx Igor Sysoev
Nginx   Igor SysoevNginx   Igor Sysoev
Nginx Igor Sysoev
 

More from Technopark

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelTechnopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuTechnopark
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARNTechnopark
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. SparkTechnopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache MahoutTechnopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeperTechnopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Technopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы HadoopTechnopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceTechnopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...Technopark
 

More from Technopark (20)

Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 2. Основы Hadoop
Лекция 2. Основы HadoopЛекция 2. Основы Hadoop
Лекция 2. Основы Hadoop
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 

Web осень 2012 лекция 10

  • 3. Что плохо ? ● Плохая поддержка мультимедиа – векторная графика – Поддержки аудио и видео – Графика с помощью JS ● Ограничено использование ресурсов клиента – Хранение данных – Фоновые вычисления – Сетевые соединения ● Множество мелких недочетов (inputs и т.д.)
  • 4. Платформы Java Applets – полноценный GUI на Java Java Fx – платформа, JavaFXScript Adobe Flash – векторная графика + ActionScript Adobe Flex – расширение Flash, XML интерфейс MS SilverLight – аналог Adobe Flash
  • 5. Возможности ● Доступ к файловой системе (ограниченный) ● Локальное хранилище данных ● Поддержка аудио и видео ● Поддержка сетевых соединений (сокеты) ● 2D / 3D графика ● Работа непосредственно с HTTP протоколом ● Работа с DOM ● Прямые и обратные вызовы JavaScript ● Регистрация своих протоколов
  • 6. Как подключить ? Устревший способ: <embed src="mouse.swf" type="application/x-shockwave-flash" pluginspage="http://get.adobe.com/flashplayer/"> Хороший способ: <object data="player.swf" type="application/x-shockwave-flash"> <param name="flashvars" value="url=rolik.mp4"> <param name="quality" value="high"> <param name="wmode" value="opaque"> <embed … > </object>
  • 7. Java Applets <OBJECT width="200" height="200" align="baseline" classid="clsid:CAFEEFAC-0014-0002-0000-ABCDEFFEDCBA" codebase="http://java.sun.com/products/plugin/autodl /jinstall-1_4_2-windows-i586.cab#Version=1,4,2,0"> <PARAM name="code" value="XYZApp.class"> <PARAM name="codebase" value="html/"> <PARAM name="type" value="application/x-java- applet;jpi-version=1.4.2"> <PARAM name="model" value="models/HyaluronicAcid.xyz"> <PARAM name="scriptable" value="true"> Java Applets are not supported !!! </OBJECT>
  • 8. Достоинства платформ ● Расширенный доступ к ресурсам ● Обеспечение безопасности, “песочница” ● Скорость работы ● Поставляются вместе со средой разработки ● Независимость от браузера
  • 9. Недостатки платформ ● Объем загружаемого кода может быть большим ● Отдельная технология отдельный программист→ ● Переносимость плагина ● Как правило, плагин нужно загружать
  • 10.
  • 11. HTML 5 ● Почему не прижился XHTML? ● HTML5 - не только язык разметки, это группа технологий (JS API, CSS 3) ● Совместим с HTML4 ● DOCTYPE html ● Реализуется непосредственно в браузере ● Может быть реализован частично ● Часть функционала может быть эмулирована с помощью JS (Modernizr.js, HTML5 Enabling) ● И уже работает! http://html5readiness.com/
  • 13. Разметка: новые тэги <header> - выделяет шапку страницы <footer> - выделяет подвал страницы <section> - раздел сайта, логическая группировка <article> - “сущность”, предназначенная для самостоятельного распространения <nav> - блок навигационных ссылок, например рубрикатор или пагинатор <aside> - имеет косвенное отношение к содержимому, реклама, перелинковка
  • 14. Разметка: новые тэги <canvas> - для рисования JavaScript ом <audio> - для управления аудио <video> - вывод видео без flash <hgroup><h1></h1><h2></h2></hgroup> <time datetime=”2012-05-15”>сегодня</time>
  • 15. HTML5: video <video id="movie" width="400" height="320" preload controls poster="poster.jpeg"> <source src="video/snowman.mp4" /> <source src="video/snowman.webm" type='video/webm; codecs="vp8, vorbis"' /> <source src="video/snowman.ogv" type='video/ogg; codecs="theora, vorbis"' /> </video> Как это делалось раньше: Flash, QuickTime, RealPlayer (плагины) Что предлагает HTML5:
  • 16. Видеоконтейнеры Определяют формат файла, позволяют хранить в одном файле видео и аудио дорожки ● MPEG-4 (mp4, m4v) ● FlashVideo (flv) ● OGG (ogv) ● WebM (только кодеки VP8 и Vorbis) ● Audio Video Interactive (avi)
  • 17. Видео и аудио кодеки Непосредственно декодирование видео и аудио потоков. В Internet используются кодеки с потерей качества. Видео: ● H.264 – основан на патенте, профили, Blu-ray ● Theora – не связан патентами ● VP8 – все патенты открыты, принадлежит Google
  • 18. Видео и аудио кодеки Аудио: ● MP3 – запатентован, поддерживается всем ● AAC – запатентован, профили, Apple, iTunes ● Vorbis – не связан патентами
  • 19. Видео и аудио кодеки Аудио: ● MP3 – запатентован, поддерживается всем ● AAC – запатентован, профили, Apple, iTunes ● Vorbis – не связан патентами
  • 20. Поддержка браузерами FF(4+): Theora + Vorbis + OGG, WebM Opera(10.6+): Theora + Vorbis + OGG, WebM Chrome(6+): Theora + Vorbis + OGG, WebM, H.264 + AAC + MP4 IPhone, Android, Flash(!): H.264 + AAC + MP4 IE(9+): H.264 + AAC + MP4, WebM(*)
  • 21. Нужно несколько копий Для работы со всеми браузерами нужно хранить несколько копий видеоролика в разных форматах: WebM (VP8 + Vorbis) MP4 (H.264 + AAC low) OGG (Theora + Vorbis) Откат к Flash плееру
  • 23. Canvas: рисование <canvas id=”a” width=”200” height=”200”> </canvas> <script> var canv = document.getElementById("a"); var ctx = canv.getContext("2d"); ctx.fillRect(50, 25, 150, 100); </script> Context – API для рисования 2d – стандартно (система координат – top left) 3d – не во всех браузерах (WebGL) Поддержка: IE 7+, FF 3+, Chrome 3+, Opera 10+
  • 24. Методы рисования ctx.fillStyle – стиль заполнения (цвет) ctx.strokeStyle – стиль росчерка (цвет) ctx.font – стиль шрифта ctx.strokeRect(x, y, width, height) ctx.fillRect(x, y, width, height) ctx.moveTo(x, y) – переместить перо в точку ctx.lineTo(x, y) – провести линию в точку ctx.stroke() - вывести линию с нужным стилем ctx.fillText(“phrase”, x, y) – вывод текста
  • 25. Градиенты и изображения grd = ctx.createLinearGradient(x0, y0, x1, y1); grd.addColorStop(0, “black”); grd.addColorStop(1, “white”); ctx.fillStyle = grd; img = Image(); img.src = “images/cat.jpg”; img.onload = function() { ctx.drawImage(img, x, y, width, height); };
  • 26. Геолокация if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( positionDetected, detectionFailed, { enableHighAccuracy: false, timeout: 5000, maximumAge: 60000 } ); } Обычный способ: REMOTE_ADDR whois регион→ → Еще варианты: подключение к беспроводной сети, подключение к сотовой сети, GPS
  • 27. Геолокация function positionDetected(position) { position.lattitude; // в градусах position.longitude; // в градусах position.accuracy; // в метрах } function detectionFailed(error) { if (error.code == 1) { // пользователь отказался } } Альтернативы: GoogleGears, Native API, geo.js
  • 28. Локальное хранилище var ls = window.localStorage; if (ls) { ls.setItem('str', 'value'); var str = ls.getItem('name'); ls.removeItem('str'); ls['num'] = 3.33; var num = parseFloat(ls['num']); ls.length; // количество записей for (var key in ls) console.log(key, ls[key]) } Недостатки cookies: размер, передача, скорость
  • 29. Фоновые вычисления setInterval(function() { // do some calculations // post events }, 100); Обычный способ: setInterval, setTimeout Недостатки: ● вычисления в 1 поток ● блокирует работу UI ● сложность event-driven разработки
  • 30. WebWorkers // создаем тред var worker = new Worker("worker.js"); // подписываемся на события worker.onmessage = function(event) { console.log(event.data); } // отправляем сообщение worker.postMessage(33); // и когда-нибудь закрываем его worker.close();
  • 31. WebWorkers // worker.js var i = 0; var iv = null; function tick() { postMessage(i++); } // подписываемся на внешние события onmessage = function(ev) { i = ev.data; clearInterval(iv); iv = setInterval(tick, 500); };
  • 32. Offline приложения <html manifest="/cache.manifest"> MIME-тип: text/cache-manifest CACHE MANIFEST FALLBACK: / /offline.html CACHE: /style.css /script.js /index.html NETWORK: /counter.cgi
  • 33. Улучшение форм <input type=”text” placeholder=”скажи слово”> <input type=”text” autofocus> <input type=”text” required> Новые типы input: email, url, search, number, range, date, time, week, month, …, color Валидация форм – по умолчанию <form novalidate> - отключает встроенную валидацию
  • 34. SASS – CSS препроцессор
  • 35. SASS $bgcolor: gray; $fgcolor: green; .txt { color: $fgcolor; background: $bgcolor; a { color: red; &:hover { text-decoration: none; } } } .txt { color: green; background: gray; } .txt a { color: red; } .txt a:hover { text-decoration: none; } Переменные и вложенность
  • 36. SASS $side: top; $brd-width: 3px; $clr: red; .btn { color: $clr; border-#{$side}: lighten($clr, 30%) $brd-width; width: 70px - $brd-width; } .btn { color: red; border-top: #ff9999 3px; width: 67px; } Функции и интерполяция
  • 37. SASS @mixin rounded($side, $radius: 10px) { border-#{$side}-radius: $radius; -moz-border-radius-#{$side}: $radius; -webkit-border-#{$side}-radius: $radius; } #navbar li { @include rounded(top); } #footer { @include rounded(top, 5px); } #sidebar { @include rounded(left, 8px); } Mixins
  • 39. CSS фреймворк Преимущества: ● кроссбраузерность ● может использовать не-верстальщик ● как правило более семантичная разметка ● скорость разработки Подходит для: ● внутренние интерфейсы (админка) ● прототипы сайтов ● сайты-приложения, технические сайты
  • 40. Twitter Bootstrap ● Использует less.js ● Требует DOCTYPE html ● Включает: 12 колоночная сетка, layoutы страниц, стили для основных тэгов ● Компоненты: кнопки, меню, закладки, пагинатор ● Адаптируется под разные устройства: телефоны, планшеты, мониторы ● Альтернативы: 960 Grid, Blueprint, YAML
  • 41. Twitter Bootstrap <div class="btn-group"> <button class="btn">1</button> <button class="btn">2</button> <button class="btn">3</button> </div> <div class="btn-group"> <button class="btn">Action</button> <button class="btn dropdown-toggle" data-toggle="dropdown"> <span class="caret"></span> </button> <ul class="dropdown-menu"> <!-- dropdown menu links --> </ul> </div>
  • 42. SVG
  • 43. SVG <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg version = "1.1" baseProfile="full" xmlns = "http://www.w3.org/2000/svg" xmlns:xlink = "http://www.w3.org/1999/xlink" xmlns:ev = "http://www.w3.org/2001/xml-events" height = "400px" width = "400px"> <rect x="0" y="0" width="400" height="400" fill="none" stroke="black" stroke-width="5px" stroke-opacity="0.5"/> <g fill-opacity="0.6" stroke="black" stroke-width="0.5px"> <circle cx="200px" cy="200px" r="104px" fill="red" transform="translate(0,-52)" /> <circle cx="200px" cy="200px" r="104px" fill="blue" transform="translate(60, 52)" /> <circle cx="200px" cy="200px" r="104px" fill="green" transform="translate(-60, 52)" /> </g> </svg>
  • 44. SVG: пути <path stroke="black" d="M 227 239 L 328 90 L 346 250 L 201 124 L 410 150 L 228 238" /> M – перемещение пера L H V – прямые C S Q T – кривые Безье A – дуги
  • 45. SVG: Достоинства ● открытый текстовый формат ● векторная графика, масштабируемость ● интеграция с растровой графикой, CSS, JS ● является частью DOM анимация и события→
  • 46. SVG Достоинства: ● открытый текстовый формат ● векторная графика, масштабируемость ● интеграция с растровой графикой, CSS, JS ● является частью DOM анимация и события→ Недостатки: ● размер файла, чуствителен к мелким деталям ● сложно отобразить только часть картинки
  • 47. SVG: Поддержка Chrome 3+, FF 1.5+, Opera 8+, IE 9+ Для IE <9 существует технология VML Raphael.js