SlideShare a Scribd company logo
1 of 38
Rich Internet Applications
Смаль Дмитрий
smal@corp.mail.ru
Что плохо в HTML/CSS/JS ?
1) Плохая поддержка мультимедиа
– Векторная графика
– Поддержки аудио и видео
– Графика с помощью JS
2) Ограничено использование ресурсов клиента
– Хранение данных
– Фоновые вычисления
– Сетевые соединения
3) Множество мелких недочетов (inputs и т.д.)
4) Трудно создать богатый GUI
Платформы
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>
<OBJECT width="200" height="200" align="baseline"
classid="clsid:CAFEEFAC-0014-0002-0000-
ABCDEFFEDCBA"
codebase="http://java.sun.com/products/plugin/autod
l/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>
Достоинства
- Расширенный доступ к ресурсам
- Обеспечение безопасности, “песочница”
- Скорость работы
- Поставляются вместе со средой разработки
- Независимость от браузера
Недостатки
- Объем загружаемого кода может быть большим
- Отдельная технология → отдельный программист
- Переносимость плагина
- Как правило, плагин нужно загружать
HTML5
- Почему не прижился XHTML?
- Не только язык разметки, это группа
технологий
- CSS3
- Реализуется непосредственно в браузере
- Может быть реализован частично
- Как браузеры обрабатывают неизвестные тэги?
- Часть функционала может быть эмулирована с
помощью JS (Modernizr.js, HTML5 Enabling)
- И уже работает! http://html5readiness.com/
- Совместим с HTML4
- DOCTYPE html
Разметка: новые тэги
<header> - выделяет шапку страницы
<footer> - выделяет подвал страницы
<section> - раздел сайта, логическая
группировка
<article> - “сущность”, предназначенная для
самостоятельного распространения
<nav> - блок навигационных ссылок, например
рубрикатор или пагинатор
<aside> - имеет косвенное отношение к
содержимому, реклама, перелинковка
<time datetime=”2012-05-15”>сегодня</time>
<hgroup><h1></h1><h2></h2><hgroup>
Canvas - рисование
Поддержка: IE 7+, FF 3+, Chrome 3+, Opera 10+
<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)
Методы рисования
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);
};
HTML5: Video
Как это делалось раньше:
Flash, QuickTime, RealPlayer (плагины)
Что предлагает HTML5:
<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>
Видео контейнеры
Определяют формат файла, позволяют хранить в
одном файле видео и аудио дорожки
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 – не связан патентами
Поддержка браузерами
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 плееру
Геолокация
Обычный способ: REMOTE_ADDR → whois → регион
Еще варианты: подключение к беспроводной сети,
подключение к сотовой сети, GPS
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
positionDetected, detectionFailed,
{ enableHighAccuracy: false,
timeout: 5000, maximumAge: 60000 }
);
}
function positionDetected(position) {
position.lattitude; // в градусах
position.longitude; // в градусах
position.accuracy; // в метрах
}
function detectionFailed(error) {
if (error.code == 1) {
// пользователь отказался
}
}
Альтернативы: GoogleGears, Native API, geo.js
Локальное хранилище
Недостатки cookies: размер, передача, скорость
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])
}
Фоновые вычисления
Обычный способ:
setInterval(function() {
// do some calculations
// post events
}, 100);
Недостатки:
- вычисления в 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 препроцессор
ruby sass input.scss output.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 - mixins
@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); }
#navbar li {
border-top-radius: 10px;
-moz-border-radius-top: 10px;
-webkit-border-top-radius: 10px; }
#footer {
border-top-radius: 5px;
-moz-border-radius-top: 5px;
-webkit-border-top-radius: 5px; }
#sidebar {
border-left-radius: 8px;
-moz-border-radius-left: 8px;
-webkit-border-left-radius: 8px; }
CSS Фреймворк
просто библиотека CSS стилей
Преимущества:
- кроссбраузерность
- может использовать не-верстальщик
- как правило более семантичная разметка
- скорость разработки
Подходит для:
- внутренние интерфейсы (админка)
- прототипы сайтов
- сайты-приложения, технические сайты
Примеры: 960 Grid, Blueprint, YAML, Bootstrap
Twitter Bootstrap
- Использует less.js
- Требует DOCTYPE html
- Включает:

12 колоночная сетка

layoutы страниц

стили для основных тэгов

компоненты: кнопки, меню, закладки, пагинатор
- Адаптируется под разные устройства:

телефоны

планшеты

Мониторы
<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>
<div class="tabbable">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab1" data-toggle="tab">Section 1</a></li>
<li><a href="#tab2" data-toggle="tab">Section 2</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab1">
<p>I'm in Section 1.</p>
</div>
<div class="tab-pane" id="tab2">
<p>Howdy, I'm in Section 2.</p>
</div>
</div>
</div>
SVG – Scalable Vector Graphics
<?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 – дуги
Достоинства
- открытый текстовый формат
- векторная графика, масштабируемость
- интеграция с растровой графикой, CSS, JS
- является частью DOM → анимация и события
Недостатки
- размер файла, чуствителен к мелким деталям
- сложно отобразить только часть картинки
Поддержка
Chrome 3+, FF 1.5+, Opera 8+, IE 9+
Для IE <9 существует технология VML
Raphael.js

More Related Content

What's hot

Drupalconf moscow-2012-arkharov
Drupalconf moscow-2012-arkharovDrupalconf moscow-2012-arkharov
Drupalconf moscow-2012-arkharovrrromka
 
CSS. Практика
CSS. ПрактикаCSS. Практика
CSS. ПрактикаVitebsk Miniq
 
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Стажировка-2015. Разработка. Занятие 13. Сборка фронтендаСтажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда7bits
 
SEO-Friendly Websites
SEO-Friendly WebsitesSEO-Friendly Websites
SEO-Friendly WebsitesElkaakle
 
04 - Web-технологии. CSS - язык описания стилей
04 - Web-технологии. CSS - язык описания стилей04 - Web-технологии. CSS - язык описания стилей
04 - Web-технологии. CSS - язык описания стилейRoman Brovko
 
пользовательские свойства как основа архитектуры CSS
пользовательские свойства как основа архитектуры CSSпользовательские свойства как основа архитектуры CSS
пользовательские свойства как основа архитектуры CSSZigzag_McQuack
 
Владимир Гриненко "Инструменты фронтенд-разработчика"
Владимир Гриненко "Инструменты фронтенд-разработчика"Владимир Гриненко "Инструменты фронтенд-разработчика"
Владимир Гриненко "Инструменты фронтенд-разработчика"Yandex
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIIlya Chesnokov
 
константин лебедев
константин лебедевконстантин лебедев
константин лебедевkuchinskaya
 
Андрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass frameworkАндрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass frameworkAlbina Tiupa
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?phpdevby
 

What's hot (18)

Js fuckworks
Js fuckworksJs fuckworks
Js fuckworks
 
Drupalconf moscow-2012-arkharov
Drupalconf moscow-2012-arkharovDrupalconf moscow-2012-arkharov
Drupalconf moscow-2012-arkharov
 
CSS. Практика
CSS. ПрактикаCSS. Практика
CSS. Практика
 
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Стажировка-2015. Разработка. Занятие 13. Сборка фронтендаСтажировка-2015. Разработка. Занятие 13. Сборка фронтенда
Стажировка-2015. Разработка. Занятие 13. Сборка фронтенда
 
SEO-Friendly Websites
SEO-Friendly WebsitesSEO-Friendly Websites
SEO-Friendly Websites
 
04 - Web-технологии. CSS - язык описания стилей
04 - Web-технологии. CSS - язык описания стилей04 - Web-технологии. CSS - язык описания стилей
04 - Web-технологии. CSS - язык описания стилей
 
пользовательские свойства как основа архитектуры CSS
пользовательские свойства как основа архитектуры CSSпользовательские свойства как основа архитектуры CSS
пользовательские свойства как основа архитектуры CSS
 
Speed Up Your Website
Speed Up Your WebsiteSpeed Up Your Website
Speed Up Your Website
 
Владимир Гриненко "Инструменты фронтенд-разработчика"
Владимир Гриненко "Инструменты фронтенд-разработчика"Владимир Гриненко "Инструменты фронтенд-разработчика"
Владимир Гриненко "Инструменты фронтенд-разработчика"
 
SASS & LESS
SASS & LESSSASS & LESS
SASS & LESS
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 
Шаблонизация
ШаблонизацияШаблонизация
Шаблонизация
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
 
Perl in practice
Perl in practicePerl in practice
Perl in practice
 
Rose::DB
Rose::DBRose::DB
Rose::DB
 
константин лебедев
константин лебедевконстантин лебедев
константин лебедев
 
Андрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass frameworkАндрей Тюпа Оптимизация верстки Sass + Compass framework
Андрей Тюпа Оптимизация верстки Sass + Compass framework
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
 

Viewers also liked

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

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

Вёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, Jammit
Вёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, JammitВёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, Jammit
Вёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, JammitAndrey Sitnik
 
Михаил Черномордиков Ie9
Михаил Черномордиков   Ie9Михаил Черномордиков   Ie9
Михаил Черномордиков Ie9Siel01
 
Ускорение frontend-разработки с помощью Haml, Sass, Compass
Ускорение frontend-разработки с помощью Haml, Sass, CompassУскорение frontend-разработки с помощью Haml, Sass, Compass
Ускорение frontend-разработки с помощью Haml, Sass, CompassAndrey Sitnik
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....rit2011
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....rit2011
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени. beshkenadze
 
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)Ontico
 
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
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Media Gorod
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)Sergey Skvortsov
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopAlexey Bokov
 
Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в DjangoMoscowDjango
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс СерверPVasili
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPITimur Shemsedinov
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаAlexei Smolyanov
 
Что нового в ASP.NET 4
Что нового в ASP.NET 4Что нового в ASP.NET 4
Что нового в ASP.NET 4akrakovetsky
 
Практическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеПрактическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеAlexey Androsov
 
Bootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressBootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressIgor Sazonov
 
HTML5. Будем знакомы! Павел Ловцевич
HTML5. Будем знакомы! Павел ЛовцевичHTML5. Будем знакомы! Павел Ловцевич
HTML5. Будем знакомы! Павел ЛовцевичТранслируем.бел
 

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

Вёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, Jammit
Вёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, JammitВёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, Jammit
Вёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, Jammit
 
Михаил Черномордиков Ie9
Михаил Черномордиков   Ie9Михаил Черномордиков   Ie9
Михаил Черномордиков Ie9
 
Ускорение frontend-разработки с помощью Haml, Sass, Compass
Ускорение frontend-разработки с помощью Haml, Sass, CompassУскорение frontend-разработки с помощью Haml, Sass, Compass
Ускорение frontend-разработки с помощью Haml, Sass, Compass
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
 
Доставка данных в реальном времени.
Доставка данных в реальном времени. Доставка данных в реальном времени.
Доставка данных в реальном времени.
 
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
Cервис рекомендаций на виртуальном Hadoop кластере (Роман Зыков)
 
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)
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169Hl2008 Spy Log Architechture 169
Hl2008 Spy Log Architechture 169
 
New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)New SpyLOG architechture (Highload 2008)
New SpyLOG architechture (Highload 2008)
 
Windows Azure - BigData and Hadoop
Windows Azure - BigData and HadoopWindows Azure - BigData and Hadoop
Windows Azure - BigData and Hadoop
 
Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в Django
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс Сервер
 
Node.js введение в технологию, КПИ #ITmeetingKPI
Node.js введение в технологию, КПИ  #ITmeetingKPINode.js введение в технологию, КПИ  #ITmeetingKPI
Node.js введение в технологию, КПИ #ITmeetingKPI
 
Node.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчикаNode.JS: возможности для РНР-разработчика
Node.JS: возможности для РНР-разработчика
 
Что нового в ASP.NET 4
Что нового в ASP.NET 4Что нового в ASP.NET 4
Что нового в ASP.NET 4
 
Практическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.ПочтеПрактическое применение HTML5 в Я.Почте
Практическое применение HTML5 в Я.Почте
 
Bootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressBootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPress
 
HTML5. Будем знакомы! Павел Ловцевич
HTML5. Будем знакомы! Павел ЛовцевичHTML5. Будем знакомы! Павел Ловцевич
HTML5. Будем знакомы! Павел Ловцевич
 

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

  • 1. Rich Internet Applications Смаль Дмитрий smal@corp.mail.ru
  • 2. Что плохо в HTML/CSS/JS ? 1) Плохая поддержка мультимедиа – Векторная графика – Поддержки аудио и видео – Графика с помощью JS 2) Ограничено использование ресурсов клиента – Хранение данных – Фоновые вычисления – Сетевые соединения 3) Множество мелких недочетов (inputs и т.д.) 4) Трудно создать богатый GUI
  • 3. Платформы Java Applets – полноценный GUI на Java Java Fx – платформа, JavaFXScript Adobe Flash – векторная графика + ActionScript Adobe Flex – расширение Flash, XML интерфейс MS SilverLight – аналог Adobe Flash
  • 4. Возможности - Доступ к файловой системе (ограниченный) - Локальное хранилище данных - Поддержка аудио и видео - Поддержка сетевых соединений (сокеты) - 2D / 3D графика - Работа непосредственно с HTTP протоколом - Работа с DOM - Прямые и обратные вызовы JavaScript - Регистрация своих протоколов
  • 5. Как подключить на страницу ? <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>
  • 6. <OBJECT width="200" height="200" align="baseline" classid="clsid:CAFEEFAC-0014-0002-0000- ABCDEFFEDCBA" codebase="http://java.sun.com/products/plugin/autod l/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>
  • 7. Достоинства - Расширенный доступ к ресурсам - Обеспечение безопасности, “песочница” - Скорость работы - Поставляются вместе со средой разработки - Независимость от браузера Недостатки - Объем загружаемого кода может быть большим - Отдельная технология → отдельный программист - Переносимость плагина - Как правило, плагин нужно загружать
  • 8.
  • 9. HTML5 - Почему не прижился XHTML? - Не только язык разметки, это группа технологий - CSS3 - Реализуется непосредственно в браузере - Может быть реализован частично - Как браузеры обрабатывают неизвестные тэги? - Часть функционала может быть эмулирована с помощью JS (Modernizr.js, HTML5 Enabling) - И уже работает! http://html5readiness.com/ - Совместим с HTML4 - DOCTYPE html
  • 10. Разметка: новые тэги <header> - выделяет шапку страницы <footer> - выделяет подвал страницы <section> - раздел сайта, логическая группировка <article> - “сущность”, предназначенная для самостоятельного распространения <nav> - блок навигационных ссылок, например рубрикатор или пагинатор <aside> - имеет косвенное отношение к содержимому, реклама, перелинковка <time datetime=”2012-05-15”>сегодня</time> <hgroup><h1></h1><h2></h2><hgroup>
  • 11. Canvas - рисование Поддержка: IE 7+, FF 3+, Chrome 3+, Opera 10+ <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)
  • 12. Методы рисования 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) – вывод текста
  • 13. Градиенты и изображения 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); };
  • 14. HTML5: Video Как это делалось раньше: Flash, QuickTime, RealPlayer (плагины) Что предлагает HTML5: <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>
  • 15. Видео контейнеры Определяют формат файла, позволяют хранить в одном файле видео и аудио дорожки MPEG-4 (mp4, m4v) FlashVideo (flv) OGG (ogv) WebM (только кодеки VP8 и Vorbis) Audio Video Interactive (avi)
  • 16. Видео и аудио кодеки Непосредственно декодирование видео и аудио потоков. В Internet используются кодеки с потерей качества. Видео: H.264 – основан на патенте, профили, Blu-ray Theora – не связан патентами VP8 – все патенты открыты, принадлежит Google Аудио: MP3 – запатентован, поддерживается всем AAC – запатентован, профили, Apple, iTunes Vorbis – не связан патентами
  • 17. Поддержка браузерами 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 плееру
  • 18. Геолокация Обычный способ: REMOTE_ADDR → whois → регион Еще варианты: подключение к беспроводной сети, подключение к сотовой сети, GPS if (navigator.geolocation) { navigator.geolocation.getCurrentPosition( positionDetected, detectionFailed, { enableHighAccuracy: false, timeout: 5000, maximumAge: 60000 } ); }
  • 19. function positionDetected(position) { position.lattitude; // в градусах position.longitude; // в градусах position.accuracy; // в метрах } function detectionFailed(error) { if (error.code == 1) { // пользователь отказался } } Альтернативы: GoogleGears, Native API, geo.js
  • 20. Локальное хранилище Недостатки cookies: размер, передача, скорость 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]) }
  • 21. Фоновые вычисления Обычный способ: setInterval(function() { // do some calculations // post events }, 100); Недостатки: - вычисления в 1 поток - блокирует работу UI - сложность event-driven разработки
  • 22. WebWorkers // создаем тред var worker = new Worker("worker.js"); // подписываемся на события worker.onmessage = function(event) { console.log(event.data); } // отправляем сообщение worker.postMessage(33); // и когда-нибудь закрываем его // worker.close();
  • 23. 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); };
  • 24. Offline приложения <html manifest="/cache.manifest"> MIME-тип: text/cache-manifest CACHE MANIFEST FALLBACK: / /offline.html CACHE: /style.css /script.js /index.html NETWORK: /counter.cgi
  • 25. Улучшения форм <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> - отключает встроенную валидацию
  • 26. SASS - CSS препроцессор ruby sass input.scss output.css
  • 27. 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; }
  • 28. 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; }
  • 29. SASS - mixins @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); }
  • 30. #navbar li { border-top-radius: 10px; -moz-border-radius-top: 10px; -webkit-border-top-radius: 10px; } #footer { border-top-radius: 5px; -moz-border-radius-top: 5px; -webkit-border-top-radius: 5px; } #sidebar { border-left-radius: 8px; -moz-border-radius-left: 8px; -webkit-border-left-radius: 8px; }
  • 31. CSS Фреймворк просто библиотека CSS стилей Преимущества: - кроссбраузерность - может использовать не-верстальщик - как правило более семантичная разметка - скорость разработки Подходит для: - внутренние интерфейсы (админка) - прототипы сайтов - сайты-приложения, технические сайты Примеры: 960 Grid, Blueprint, YAML, Bootstrap
  • 32. Twitter Bootstrap - Использует less.js - Требует DOCTYPE html - Включает:  12 колоночная сетка  layoutы страниц  стили для основных тэгов  компоненты: кнопки, меню, закладки, пагинатор - Адаптируется под разные устройства:  телефоны  планшеты  Мониторы
  • 33. <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>
  • 34. <div class="tabbable"> <ul class="nav nav-tabs"> <li class="active"><a href="#tab1" data-toggle="tab">Section 1</a></li> <li><a href="#tab2" data-toggle="tab">Section 2</a></li> </ul> <div class="tab-content"> <div class="tab-pane active" id="tab1"> <p>I'm in Section 1.</p> </div> <div class="tab-pane" id="tab2"> <p>Howdy, I'm in Section 2.</p> </div> </div> </div>
  • 35. SVG – Scalable Vector Graphics <?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>
  • 36. 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 – дуги
  • 37. Достоинства - открытый текстовый формат - векторная графика, масштабируемость - интеграция с растровой графикой, CSS, JS - является частью DOM → анимация и события Недостатки - размер файла, чуствителен к мелким деталям - сложно отобразить только часть картинки Поддержка Chrome 3+, FF 1.5+, Opera 8+, IE 9+ Для IE <9 существует технология VML