<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.wpal &#187; web</title>
	<atom:link href="http://blog.web2.com.ua/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.web2.com.ua</link>
	<description>web, programming and linux</description>
	<lastBuildDate>Fri, 20 May 2011 13:29:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>статистика на The One</title>
		<link>http://blog.web2.com.ua/2011/03/30/statistika-na-the-one/</link>
		<comments>http://blog.web2.com.ua/2011/03/30/statistika-na-the-one/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 14:01:02 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[интернет]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[сервис]]></category>
		<category><![CDATA[one]]></category>
		<category><![CDATA[использовать!]]></category>
		<category><![CDATA[моё]]></category>
		<category><![CDATA[сообщения]]></category>
		<category><![CDATA[статистика]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/?p=1131</guid>
		<description><![CDATA[Забыл написать, что на The One прикрутил статистику. Теперь на главной странице показывается количество отправленых и полученых сообщений. Цифры страшные Только вопрос стоян не в самих цифрах и данных, а втом, чтобы написать каркас для записи логов и аггрегации их в таблицы. Потом стал вопрос о выводе статистических данных и пришлось написать несколько класов для [...]]]></description>
			<content:encoded><![CDATA[<p>Забыл написать, что на <a href="http://one.web2.com.ua/">The One</a> прикрутил статистику. Теперь на главной странице показывается количество отправленых и полученых сообщений. Цифры страшные <img src='http://blog.web2.com.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Только вопрос стоян не в самих цифрах и данных, а втом, чтобы написать каркас для записи логов и аггрегации их в таблицы. Потом стал вопрос о выводе статистических данных и пришлось написать несколько класов для работы с OpenChart.</p>
<p>Что же можно увидеть?</p>
<ol>
<li><strong>общую статистику на страницах сервиса</strong><br />
<img class="alignnone size-full wp-image-1133" title="one_stat1" src="http://blog.web2.com.ua/wp-content/uploads/one_stat1.jpg" alt="" width="417" height="186" /></li>
<li><strong>красивый график статистики</strong><br />
<a href="http://blog.web2.com.ua/wp-content/uploads/one_stat2.jpg"><img class="alignnone size-medium wp-image-1134" title="one_stat2" src="http://blog.web2.com.ua/wp-content/uploads/one_stat2-400x319.jpg" alt="" width="400" height="319" /></a></li>
<li><strong>выбрать месяц для графика</strong><br />
<img class="alignnone size-full wp-image-1135" title="one_stat3" src="http://blog.web2.com.ua/wp-content/uploads/one_stat3.jpg" alt="" width="424" height="414" /></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2011/03/30/statistika-na-the-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The One жив, без паники</title>
		<link>http://blog.web2.com.ua/2011/02/16/the-one-zhiv-bez-paniki/</link>
		<comments>http://blog.web2.com.ua/2011/02/16/the-one-zhiv-bez-paniki/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 15:03:13 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[сервис]]></category>
		<category><![CDATA[one]]></category>
		<category><![CDATA[использовать!]]></category>
		<category><![CDATA[моё]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/?p=1097</guid>
		<description><![CDATA[От меня давно не было вестей. Стал ленивее . Хотя новостей на The One не было и ничего не писал, это не означает что там нет изменений. Многие изменения не видны и многие ещё не доделаны, но сегодня решился написать. Тем более, что есть одно видимое изменение. Я подумал, что строить ссылки в которых будет [...]]]></description>
			<content:encoded><![CDATA[<p>От меня давно не было вестей. Стал ленивее <img src='http://blog.web2.com.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Хотя новостей на <a href="http://one.web2.com.ua">The One</a> не было и ничего не писал, это не означает что там нет изменений. Многие изменения не видны и многие ещё не доделаны, но сегодня решился написать. Тем более, что есть одно видимое изменение. </p>
<p>Я подумал, что строить ссылки в которых будет дата &#8211; это уж очень много, и с 8 символов даты урезал их до одного. &quot;Прирост&quot; в 8 раз <img src='http://blog.web2.com.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Так что, будь я маркетологом, то уже бы писал фразу, что стало в 8 раз лучше <img src='http://blog.web2.com.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . </p>
<p>Дата в ссылке была заменена на шестнадцатеричное представление месяца. Ссылки стали выглядеть вот так:</p>
<p align="center"><img src="http://blog.web2.com.ua/wp-content/uploads/one1.png" /></p>
<p align="left">Мне теперь кажется, что в ней есть 2 лишних символа, а вам? <img src='http://blog.web2.com.ua/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2011/02/16/the-one-zhiv-bez-paniki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>one.web2.com.ua &#8211; ускорение закрузки</title>
		<link>http://blog.web2.com.ua/2011/01/26/one-web2-com-ua-uskorenie-zakruzki/</link>
		<comments>http://blog.web2.com.ua/2011/01/26/one-web2-com-ua-uskorenie-zakruzki/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 10:06:23 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[one]]></category>
		<category><![CDATA[использовать!]]></category>
		<category><![CDATA[моё]]></category>
		<category><![CDATA[сервис]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/?p=1076</guid>
		<description><![CDATA[На днях решил написать парочку целей для Ant&#8217;а, а на чём же пробовать и тестировать, как не на своих проектиках. В качестве полигона взял свой one.web2.com.ua и описал систему сборки для этого проекта. Теперь сайт должен грузится быстро и все изменения в стилях будут применяться автоматом. Что же я опритимизировал: Все стили CSS собираются в [...]]]></description>
			<content:encoded><![CDATA[<p>На днях решил написать парочку целей для Ant&#8217;а, а на чём же пробовать и тестировать, как не на своих проектиках. В качестве полигона взял свой <a href="http://one.web2.com.ua">one.web2.com.ua</a> и описал систему сборки для этого проекта. Теперь сайт должен грузится быстро и все изменения в стилях будут применяться автоматом. Что же я опритимизировал:</p>
<ol>
<li>Все стили CSS собираются в один файл и сжимаются <a href="http://developer.yahoo.com/yui/compressor/" target="_blank">yuicompressor</a>.</li>
<li>Все Javascript-файлы собираются в один и тем же жжымаются.</li>
<li>Все библиотеки Javascript ( jQuery, jQuery UI ) просто собираются в один файл и будут перегружаться только, когда будут обновлены, а не при каждой сборке.</li>
<li>Zend Framefork файлы собираются в один и только нужные классы. Как я это сделал, напишу попозже.</li>
<li>Все классы моего фреймворка тоже, как и ZF, собираются в одном файле. Так как one.web2.com.ua состоит с одного контроллера, то он тоже склеен. Как вывод, подключаются только 2 файла PHP.</li>
<li>Когда меняю что-то в стилях, это сразу применяется на сайте, потому что система применяет трюк с версиями <img src='http://blog.web2.com.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ol>
<p>Проверил и, по субъективному мнению, грузится просто реактивно! Осталось что-то сделать с CKEditor, но это в другой раз.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2011/01/26/one-web2-com-ua-uskorenie-zakruzki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Перевод: 25 возможностей, подсказок и техник HTML5 которые вы должны знать</title>
		<link>http://blog.web2.com.ua/2010/10/22/perevod-25-vozmozhnostej-podskazok-i-texnik-html5-kotorye-vy-dolzhny-znat/</link>
		<comments>http://blog.web2.com.ua/2010/10/22/perevod-25-vozmozhnostej-podskazok-i-texnik-html5-kotorye-vy-dolzhny-znat/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 07:54:58 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[верстка]]></category>
		<category><![CDATA[перевод]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[translate]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/?p=997</guid>
		<description><![CDATA[Перевод статьи &#8220;28 HTML5 Features, Tips, and Techniques you Must Know&#8220;. Это индустрия движется быстро, очень быстро! Если вы будете не внимательны, то останетесь не у дел. Итак, если вы слегка оконфужены предстоящими изменениями в HTML5, то эта статья может стать основой для вещей, которые вы должны знать. 1. Новый Doctype Всё ещё используете этот [...]]]></description>
			<content:encoded><![CDATA[<p>Перевод статьи &#8220;<a href="http://net.tutsplus.com/tutorials/html-css-techniques/25-html5-features-tips-and-techniques-you-must-know/" target="_blank">28 HTML5 Features, Tips, and Techniques you Must Know</a>&#8220;.</p>
<p>Это индустрия движется быстро, очень быстро! Если вы будете не внимательны, то останетесь не у дел. Итак, если вы слегка оконфужены предстоящими изменениями в HTML5, то эта статья может стать основой для вещей, которые вы должны знать.<span id="more-997"></span></p>
<h2>1. Новый Doctype</h2>
<p>Всё ещё используете этот надоедливый, не запоминаемый XHTML doctype?</p>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</pre>
<p>Если это так, то почему? Переходите на новый HTML5 doctype. Вы будете жить долго , как бы сказал Douglas Quaid.</p>
<pre>&lt;!DOCTYPE html&gt;</pre>
<p>На самом деле, Вы знаете, что это даже не столь важно для HTML5? Тем не менее, он используется в текущих и старых браузерах, которые требуют указания <code>doctype</code>. Браузеры, которые не понимают этот doctype будут просто прорисовывать содержание разметки в стандартном режиме. По этому, не стоит беспокоится, а просто принять новый doctype.</p>
<h2>2. Елемент Figure</h2>
<p>Рассмотрим разметку для рисунка:</p>
<pre>&lt;img src="path/to/image" alt="About image" /&gt;
&lt;p&gt;Image of Mars. &lt;/p&gt;</pre>
<p>К сожалению, нет легкого и семантического пути для указания подписи к рисунку, которая завёрнута в тэг &lt;p&gt;. В HTML5 это исправлено с помощью элемента <code>&lt;figure&gt;</code>. В сочетании с тэгом <code>&lt;figcaption&gt;</code>, мы можем семантически ассоциировать подписи соответственным рисункам.</p>
<pre>&lt;figure&gt;
        &lt;img src="path/to/image" alt="About image" /&gt;
        &lt;figcaption&gt;
                &lt;p&gt;This is an image of something interesting. &lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;</pre>
<h2>3. &lt;small&gt; переопределен</h2>
<p>Не так давно я использовал <code>&lt;small&gt;</code> для создания подзаголовков, которые тесно связаны с логотипом. Это полезный презентационный элемент; тем не менее, теперь это будет не корректным использованием. Элемент <code>small</code> был переопределён, отныне более уместен он для указания мелкого шрифта. Более корректно, согласно новому определению HTML5, его использовать для обрамления информации о авторских правах в футтере вашего сайта.</p>
<blockquote><p>Элемент <code>small</code> теперь означает «маленький шрифт».</p></blockquote>
<h2>4. Никаких <code>Type</code> для Script и Link</h2>
<p>Вы, возможно, всё ещё добавляете атрибут <code>type</code> к тэгам <code>link</code> и <code>script</code>.</p>
<pre>&lt;link rel="stylesheet" href="path/to/stylesheet.css" type="text/css" /&gt;
&lt;script type="text/javascript" src="path/to/script.js"&gt;&lt;/script&gt;</pre>
<p>Теперь это не требуется. Теперь подразумевается, что оба этих тэга ссылаются на CSS и скрипты соответственно. Таким образом, можно удалить атрибут <code>type</code>.</p>
<pre>&lt;link rel="stylesheet" href="path/to/stylesheet.css" /&gt;
&lt;script src="path/to/script.js"&gt;&lt;/script&gt;</pre>
<h2>5. To Quote or Not to Quote</h2>
<p>…Вот в чём вопрос. Помните же, что HTML5 не XHTML. Вы не должны оборачивать ваши атрибуты в кавычки, если вы это не хотите. Вы можете не закрывать тэги. Что уж говорить, нет ничего плохого в этом, коль вам так комфортнее. Как по мне, то это хорошо.</p>
<pre>&lt;p id=someId&gt; Start the reactor.</pre>
<p>Можете думать иначе. Если вы предпочитаете более структурированные документы, то можете лепить эти кавычки.</p>
<h2>6. Делайте Ваш контент редактируемым</h2>
<p style="text-align: center;"><a href="http://blog.web2.com.ua/wp-content/uploads/contenteditable.png"><img class="size-full wp-image-998 aligncenter" title="contenteditable" src="http://blog.web2.com.ua/wp-content/uploads/contenteditable.png" alt="" width="254" height="149" /></a></p>
<p>Новые браузеры поддерживают модный новый атрибут элементов <code>contenteditable</code>. Как говорит его название, он позволяет редактировать пользователем текст внутри его, включая и дочерние элементы. Это можно использовать в многих целях, включая приложение, столь простое, как список дел, которое к тому же может использовать локальное хранилище.</p>
<pre>&lt;!DOCTYPE html&gt;

&lt;html lang="en"&gt;
&lt;head&gt;
        &lt;meta charset="utf-8"&gt;
        &lt;title&gt;untitled&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
        &lt;h2&gt; To-Do List &lt;/h2&gt;
     &lt;ul contenteditable="true"&gt;
                &lt;li&gt; Break mechanical cab driver. &lt;/li&gt;
                &lt;li&gt; Drive to abandoned factory
                &lt;li&gt; Watch video of self &lt;/li&gt;
         &lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Или, как мы уже знаем с предыдущей подсказки, мы можем написать так:</p>
<pre>&lt;ul contenteditable=true&gt;</pre>
<h2>7. Email Inputs</h2>
<p>Если указать в атрибуте <code>type</code> значение  “email” в поле формы, мы укажем браузеру, что значение поля может быть только правильным адресом электронной почты. Всё правильно: скоро будет встроенная валидация форм! Мы не можем полагаться на это на все 100% по понятным причинам. Старые браузеры не понимают тип «email» и будут воспринимать его как простой текст.</p>
<pre>&lt;!DOCTYPE html&gt;

&lt;html lang="en"&gt;
&lt;head&gt;
        &lt;meta charset="utf-8"&gt;
        &lt;title&gt;untitled&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
        &lt;form action="" method="get"&gt;
                &lt;label for="email"&gt;Email:&lt;/label&gt;
                &lt;input id="email" name="email" type="email" /&gt;

                &lt;button type="submit"&gt; Submit Form &lt;/button&gt;
        &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p style="text-align: center;"><a href="http://blog.web2.com.ua/wp-content/uploads/email_validation.png"><img class="size-full wp-image-999 aligncenter" title="email_validation" src="http://blog.web2.com.ua/wp-content/uploads/email_validation.png" alt="" width="346" height="73" /></a></p>
<p>Следует упомянуть, что текущие браузеры слегка ненадёжны, когда дело доходит до того, какие элементы и атрибуты они поддерживают, а какие &#8211; нет. Например, Opera кажется поддерживает валидацию email только когда указан атрибут <code>name</code>. Тем не менее, она не поддерживает атрибут <code>placeholder</code>, который мы рассмотрим в следующей главе. Резюмируя: не стоит зависеть от этой валидации форм пока&#8230; Но можно использовать!</p>
<h2>8. Placeholder`ы</h2>
<p>Раньше мы должны были использовать JavaScript для создания placeholder`ов в текстовых полях. Конечно, мы можем просто инициализировать атрибут <code>value</code> как мы бы хотели, но потом, когда пользователь сотрёт этот текст и кликнет за границей поля, оно останется пустым. Атрибут <code>placeholder</code> исправляет положение.</p>
<pre>&lt;input name="email" type="email" placeholder="doug@givethesepeopleair.com" /&gt;</pre>
<p>Опять же, поддержка атрибута сомнительна в лучших браузерах, однако, это будет исправляться от релиза к релизу. По этому, если браузеры, такие как Firefox и Opera, сейчас не поддерживают <code>placeholder</code>, не стоит переживать по этому поводу.</p>
<p><a href="http://blog.web2.com.ua/wp-content/uploads/validation.png"><img class="size-full wp-image-1000 aligncenter" title="validation" src="http://blog.web2.com.ua/wp-content/uploads/validation.png" alt="" width="400" height="400" /></a></p>
<h2>9. Локальное хранилище</h2>
<p>Благодаря локальному хранилищу (официально ещё не HTML5, но сгруппировано для удобства), мы можем заставить продвинутые браузеры «вспомнить», что мы собирали даже когда браузер был закрыт или обновлена страница.<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/h0uZIljjElo?fs=1&amp;hl=ru_RU&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/h0uZIljjElo?fs=1&amp;hl=ru_RU&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<blockquote><p>“localStorage устанавливает поля для домена. Даже когда вы закроете ваш браузер, откроете и вернётесь на тот сайт, браузер вспомнит поля с localStorage.”<br />
-<a href="http://www.quirksmode.org/blog/archives/2009/06/html5_storage_t.html">QuirksBlog</a></p></blockquote>
<p>Пока, очевидно, это не поддерживается всеми браузерами, но можно ожидать, что, скоре всего, поддержка появится в Internet Explorer 8, Safari 4 и Firefox 3.5. Отметим, что старые браузеры могут не поддерживать локальное хранилище, поэтому следует проверить на существование window.localStorage.</p>
<p style="text-align: center;"><a href="http://blog.web2.com.ua/wp-content/uploads/20100409-cp7baa12xdc53tmuytg4kaqqe6.jpg"></a><a href="http://blog.web2.com.ua/wp-content/uploads/20100409-cp7baa12xdc53tmuytg4kaqqe6.jpg"><img class="alignnone size-medium wp-image-1001" title="20100409-cp7baa12xdc53tmuytg4kaqqe6" src="http://blog.web2.com.ua/wp-content/uploads/20100409-cp7baa12xdc53tmuytg4kaqqe6-400x82.jpg" alt="" width="400" height="82" /></a></p>
<h2>10. Семантические <code>Header</code> и <code>Footer</code></h2>
<p>В прошлом те дни, когда:</p>
<pre>&lt;div id="header"&gt;
        ...
&lt;/div&gt;

&lt;div id="footer"&gt;
        ...
&lt;/div&gt;</pre>
<p>Тэг div по своей природе, не имеет семантической составляющей — даже когда присуствует аттрибут <code>id</code>. Теперь в HTML5 есть возможность использовать <code>&lt;header&gt;</code> и <code>&lt;footer&gt;</code> елементы. Теперь структура, которая представлена выше, можно заменить на :</p>
<pre>&lt;header&gt;
        ...
&lt;/header&gt;

&lt;footer&gt;
        ...
&lt;/footer&gt;</pre>
<blockquote><p>Это также позволяет иметь несколько елементов <code>header</code> и <code>footer</code> в ваших проектах.</p></blockquote>
<p>Постарайтесь не путать эти  элементы с “header-ом” and “footer-ом” вашего сайта. Они просто ссылаются на своё содержимое. Например, его можно использовать для вывода мета-информации в посте блога. Это применимо и для  <code>header</code>.</p>
<h2>11. Больше возможностей с формами HTML5</h2>
<p>Давайте узнаем о полезных возможностях форм HTML5 с помощью этого короткого видео-урока.<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="640" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/spjOAFGxOP0?fs=1&amp;hl=ru_RU&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="640" height="385" src="http://www.youtube.com/v/spjOAFGxOP0?fs=1&amp;hl=ru_RU&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2>12. Internet Explorer и HTML5</h2>
<p>К сожалению, этот чёртов Internet Explorer  требует немного костылей, дабы заставить его понимать новые HTML5 элементы.</p>
<blockquote><p>Все элементы, по-умолчанию, имеют свойство <code>display</code><code>:</code><code>inline</code>.</p></blockquote>
<p>В целях обеспечения правильного отображения новых элементов HTML5 как блочных, следует указать такой стиль:</p>
<pre>header, footer, article, section, nav, menu, hgroup {
   display: block;
}</pre>
<p>К сожелению, Internet Explorer будет продолжать игнорировать эти стили, потому что не имеет понятия, что это, как элемент <code>header</code> например. К счастью, это легко исправить:</p>
<pre>document.createElement("article");
document.createElement("footer");
document.createElement("header");
document.createElement("hgroup");
document.createElement("nav");
document.createElement("menu");</pre>
<p>Как ни странно, но код как будто выстреливает в Internet Explorer. Чтобы упростить этот процесс, Remy Sharp <a href="http://remysharp.com/2009/01/07/html5-enabling-script/">создал скрипт</a>, как правило, называющийся «костылём» для HTML5. Он исправляет и некоторые проблемы с печатью.</p>
<pre>&lt;!--[if IE]&gt;
&lt;script src="http://html5shim.googlecode.com/svn/trunk/html5.js"&gt;&lt;/script&gt;
&lt;![endif]--&gt;</pre>
<h2>13. hgroup</h2>
<p>Представте, что в шапке ( header ) моего сайта есть название моего сайта, сразу под заголовком. По этому я могу использовать тэги <code>&lt;h1&gt;</code> и <code>&lt;h2&gt;</code>, соответственно, создать разметку, которая бы легко семантически указывала на их отношения. Кроме того, использование тэгов h2  принесёт много проблем, с точки зрения иерархии, когда дело дойдёт до отображения их в других частях сайта. Использовав элемент <code>hgroup,</code> можно группировать эти заголовки вместе, не переживая за схему документа.</p>
<pre>&lt;header&gt;
        &lt;hgroup&gt;
                &lt;h1&gt; Recall Fan Page &lt;/h1&gt;
                &lt;h2&gt; Only for people who want the memory of a lifetime. &lt;/h2&gt;
        &lt;/hgroup&gt;
&lt;/header&gt;</pre>
<h2>14.  Атрибут required</h2>
<p>Формы имеют новый атрибут <code>required</code>, который, разумеется, указывает, что данное поле ввода input обязательное. В зависимости от вашего стиля кодирования, этот атрибут вы можете описать одним с двух способов:</p>
<pre>&lt;input type="text" name="someInput" required&gt;</pre>
<p>Или более структурированным методом.</p>
<pre>&lt;input type="text" name="someInput" required="required"&gt;</pre>
<p>Любой метод будет работать. Благодаря этому коду, в браузерах, которые поддерживают этот атрибут, форма не может быть отправлена, если текстовое поле “someInput” пустое. Ниже простеньки пример; также мы добавили атрибут placeholder так как нет причины этого не делать:</p>
<pre>&lt;form method="post" action=""&gt;
        &lt;label for="someInput"&gt; Your Name: &lt;/label&gt;
        &lt;input type="text" id="someInput" name="someInput" placeholder="Douglas Quaid" required&gt;
        &lt;button type="submit"&gt;Go&lt;/button&gt;
&lt;/form&gt;</pre>
<p style="text-align: center;"><a href="http://blog.web2.com.ua/wp-content/uploads/placeholder_required.png"><img class="size-full wp-image-1008 aligncenter" title="placeholder_required" src="http://blog.web2.com.ua/wp-content/uploads/placeholder_required.png" alt="" width="263" height="41" /></a></p>
<p>Если поле ввода оставить пустым и попробовать отправить форму, то оно подсветится.</p>
<h2>15. Атрибут Autofocus</h2>
<p>Опять же, с приходом HTML5, потребность в JavaScript для решения этой проблемы отпала.   Если определённое текстовое поле должно быть выделенным или с фокусом ввода, можно использовать атрибут <code>autofocus</code>.</p>
<pre>&lt;input type="text" name="someInput" placeholder="Douglas Quaid" required autofocus&gt;</pre>
<p>Хотя я лично предпочитаю более XHTML-ый подход (используя кавычки и т. д.), записывая  <code>"autofocus=autofocus"</code>, но чувствую себя немножечко странно. Таким образом, ми будем придерживаться подхода с использованием одного слова.</p>
<h2>16. Поддержка аудио</h2>
<p>Не надо больше полагаться на сторонние плагины, чтобы играть аудио. В HTML5 предлагается использовать элемент <code>&lt;audio&gt;</code>. Ну, по крайней мере, в конце концов, не надо беспокоится о плагинах. Пока только несколько браузеров поддерживают <code>&lt;audio&gt;</code>. В то же время, хорошая практика использовать некоторые формы обратной совместимости.</p>
<pre>&lt;audio autoplay="autoplay" controls="controls"&gt;
        &lt;source src="file.ogg" /&gt;
        &lt;source src="file.mp3" /&gt;
        &lt;a href="#"&gt;Download file&lt;/a&gt;
&lt;/audio&gt;</pre>
<p>Mozilla и Webkit не полностью ещё готовы, когда заходит речь о поддержке аудио. Firefox хочет видеть файл .ogg, когда как Webkit-браузеры хорошо работают с .mp3. Это значит, по крайней мере сейчас, что вы должны сделать 2 версии аудиофайла.</p>
<p>Когда Safari загружает страницу, то не понимает формат .ogg и пропустит его, и, соответственно, дойдёт до mp3-версии. Прошу заметить, что IE, как всегда, не поддерживает этого и Opera 10 и ниже может работать только с wav-файлами.</p>
<h2>17. Поддержка видео</h2>
<p>Так же, как и <code>&lt;audio&gt;</code> элемент, в HTML5 есть видео! На самом деле, совсем недавно  <a href="http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html">YouTube анонсировали  поддержку нового HTML5 видео</a> для брузеров, которые его поддерживают. К сожалению, опять же из-за того, что спецификация HTML5 не указывет кодек для видео, это ложится на плечи браузера. В том время, пока Safari и Internet Explorer 9 поддерживают видео в H.264 формате (который Flash-прееры могут проигрывать), Firefox и  Opera остановились на открытых форматах Theora и Vorbis. Как следствие, для показа видео  HTML5 следует поддерживать оба формата.</p>
<pre>&lt;video controls preload&gt;
        &lt;source src="cohagenPhoneCall.ogv" type="video/ogg; codecs='vorbis, theora'" /&gt;
        &lt;source src="cohagenPhoneCall.mp4" type="video/mp4; 'codecs='avc1.42E01E, mp4a.40.2'" /&gt;
        &lt;p&gt; Your browser is old. &lt;a href="cohagenPhoneCall.mp4"&gt;Download this video instead.&lt;/a&gt; &lt;/p&gt;
&lt;/video&gt;</pre>
<blockquote><p>Chrome корректно отображает видео, кодированное обеими, “ogg” и «mp4»,  форматами.</p></blockquote>
<p>Есть несколько вещей, которые стоит отметить.</p>
<ol>
<li>Мы, технически, можем 	и не указывать атрибут <code>type</code>; 	тем не менее, если он не указан, браузер 	должен выяснить тип сам. Поберегите 	нервы и укажите его сами.</li>
<li>Не все браузеры 	поддерживают элемент video. Под элементом 	<code>source</code> надо указать ссылку 	на закачку или встроить Flash-плеер. Всё 	зависит от вас.</li>
<li>Атрибуты <code>controls</code> и 	<code>preload</code> будут рассмотрены 	в следующих друх главах.</li>
</ol>
<h2>18. Preload видео</h2>
<p>Атрибут <code>preload</code> не совсем то, что вы могли подумать. Хотя,  сначала вы должны решить хотите вы или не хотите, чтобы браузер начинал предварительно загружать видео. Важно это? Пожалуй, если пользователь попал на страницу, которая предназначена для показа видео, вы точно должны заставить браузер предварительно загружать его и сохранить пользователю время. Видео может загружаться предварительно установкой <code>preload="preload"</code>, или просто <code>preload</code>. Я предпочитаю второй вариант — меньше лишнего.</p>
<pre>&lt;video preload&gt;</pre>
<h2>19.  Вывод кнопок управления</h2>
<p>Если  вы внимательно следите за каждой главой этой статьи, вы могли заметить что видео выше в виде простой картинки, без каких либо средств для управления. Чтобы показать их, следует указать атрибут <code>controls</code> в обьекте <code>video</code>.</p>
<pre>&lt;video preload controls&gt;</pre>
<p style="text-align: center;"><a href="http://blog.web2.com.ua/wp-content/uploads/video.jpg"><img class="size-medium wp-image-1009 aligncenter" title="video" src="http://blog.web2.com.ua/wp-content/uploads/video-400x189.jpg" alt="" width="400" height="189" /></a></p>
<p>Заметьте, что каждый браузер по разному их рисует.</p>
<h2>20. Регулярные выражения</h2>
<p>Как часто вы находили в себе  желание быстренько вставить регулярное выражение для проверки значения какого-то текстового поля. Спасибо новому атрибуту <code>pattern</code>, мы можем вставлять регулярные выражения прямо в разметку.</p>
<pre>&lt;form action="" method="post"&gt;
        &lt;label for="username"&gt;Create a Username: &lt;/label&gt;
        &lt;input type="text"
           name="username"
           id="username"
           placeholder="4 &lt;&gt; 10"
           pattern="[A-Za-z]{4,10}"
           autofocus
           required&gt;
        &lt;button type="submit"&gt;Go &lt;/button&gt;
&lt;/form&gt;</pre>
<p>Если вы хоть как-то знакомы с регулярами, вы поймёте этот шаблон: <code>[A-Za-z]{4,10}</code> принимает только буквы в верхнам и нижнем регистре. Эта сторока должна быть минимум 4 символа и максимум 10.</p>
<p>Заметьте, что мы может обьединять эти замечательные выражения!</p>
<h2>21. Определение поддержки атрибутов</h2>
<p>Какой смысл от всех этих атрибутов, когда мы не знаем, поддержывает ли браузер их? Ну, резонный вопрос: но есть несколько способов выяснить это. Мы рассмотрим два. Первый — использовать чудесную библиотеку <a href="http://modernizr.com/">Modernizr</a>. Кроме того, мы можем создавать и анализировать эти елементы, чтобы определить способность браузеров понимать их. Например, в предыдущем примере, если мы хотим определить, может ли браузер реализовать атрибут <code>pattern</code>, может добавить кусок кода на JavaScript:</p>
<pre>alert( 'pattern' in document.createElement('input') ) // boolean;</pre>
<p>По сути, это популярный метод определения совместимости браузеров. Библиотека jQuery использует этот трюк. Выше, мы создали новый обьект <code>input</code> и определили, может ли браузер поддерживать <code>pattern</code>. Если это так, то браузер будет использывать эту функциональность. Иначе — се ля ви ).</p>
<pre>&lt;script&gt;
if (!'pattern' in document.createElement('input') ) {
        // do client/server side validation
}
&lt;/script&gt;</pre>
<p><em>Имейте ввиду, что это зависит от JavaScript!</em></p>
<h2>22. Елемент Mark</h2>
<p>Думайте о <code>&lt;mark&gt;</code> как о маркере. Строка, обрамлённая этим тэгом, должна быть связана с текущим действием пользователя.  Например, если я искал “Open your Mind” в блоге, я мог бы, с помощью некоторого Javascript-а, обернуть строку поиска в тэг <code>&lt;mark&gt;</code>.</p>
<pre>&lt;h3&gt; Search Results &lt;/h3&gt;
&lt;p&gt; They were interrupted, just after Quato said, &lt;mark&gt;"Open your Mind"&lt;/mark&gt;. &lt;/p&gt;</pre>
<h2>23. Когда же использовать &lt;div&gt;</h2>
<p>Некоторые теряются в сомнениях, когда же мы должны использовать обычный и привычный <code>div</code>. Теперь у нас есть <code>header</code>, <code>article</code>, <code>section </code><code>и</code> <code>footer</code>, когда же тогда исползовать …<code>div</code>? Непременно.</p>
<blockquote><p><code>Div </code>следует использовать, когда нет подходящего елемента.</p></blockquote>
<p>Например, если вы обнаружили, что надо обернуть кусок кода для позиционирования, <code>&lt;div&gt;</code> как раз кстати. Тем не менее, если вы собираетесь обернуть новый пост в блог или, возможно, список ссылок в подвале сайта, то следует подумать о <code>&lt;article&gt;</code> и <code>&lt;nav&gt;</code> соотведственно. Это более семантически правильно.</p>
<h2>24. Что уже сейчас использовать</h2>
<p>Рассказывая, что HTML5 <a href="http://blogs.techrepublic.com.com/programming-and-development/?p=718">не будет готов полностью до </a><a href="http://blogs.techrepublic.com.com/programming-and-development/?p=718">2022</a>, многие не используют его, что является большой ошибкой. В самом деле, есть несколько полезностей HTML5, которые можно использовать прямо сейчас! Простой и чистый код — это всегда хорошо. В сегодняшнем видео я покажу несколько примеров.<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/HzCkSv3s0-k?fs=1&amp;hl=ru_RU&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/HzCkSv3s0-k?fs=1&amp;hl=ru_RU&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><!-- p { margin-bottom: 0.21cm; }h2 { margin-bottom: 0.21cm; page-break-after: avoid; }h2.western { font-family: "Times New Roman",serif; font-size: 18pt; font-weight: bold; }h2.cjk { font-family: "Arial"; font-size: 18pt; font-weight: bold; }h2.ctl { font-family: "Arial"; font-size: 18pt; font-weight: bold; }strong { font-weight: bold; } --></p>
<h2>25. Что же не является HTML5</h2>
<p>Люди могут быть прощены за то, что  удивительные JavaScript подходы сгруппированы в всеобъемлющей HTML5. Эй, даже Apple за эту идею! (тоже мне, авторитет. Прим.пер). Для не-разработчиков, кому не всё равно: это лёгкий путь для внедрения web-стандартов. Но для нас важно понять, что такое <strong>не</strong> HTML5.</p>
<ol>
<li><strong>SVG: </strong>Не HTML5. 	Ему, по меньшей мере, лет 5.</li>
<li><strong>CSS3: </strong>Не HTML5. 	Это…CSS.</li>
<li><strong>Client Storage: </strong>Не 	HTML5. Это было в одной связке, но исключено, 	потому что многие переживали, что идея 	становится слишком сложной. Это теперь 	имеет свою собственную спецификацию.</li>
<li><strong>Web Sockets: </strong>Не HTML5. Опять же, 	имеет свою спецификацию.</li>
</ol>
<p>Не смотря на различия, все эти технологии можно сгруппировать в один современный web-стэк. В самом деле, многие с этих спецификаций курируются одними и теми же людьми.</p>
<h2>Заключение</h2>
<p><!-- p { margin-bottom: 0.21cm; } -->Спасибо за прочтение! Мы рассмотрели многое, но всё же это просто вершки от того, что  может HTML5. Надеюсь, этот обзор был вам полезен!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2010/10/22/perevod-25-vozmozhnostej-podskazok-i-texnik-html5-kotorye-vy-dolzhny-znat/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Memcached</title>
		<link>http://blog.web2.com.ua/2009/12/23/memcached/</link>
		<comments>http://blog.web2.com.ua/2009/12/23/memcached/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 11:34:27 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[information]]></category>
		<category><![CDATA[memcached]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/2009/12/23/memcached/</guid>
		<description><![CDATA[Пишу, чтобы не забыть ибо иногда надо знать, что происходит с memcached&#8217;ом: $mymemcache = new Memcache; $mymemcache-&#62;addServer('localhost', 11211); highlight_string(print_r($mymemcache-&#62;getExtendedStats(), true)); Массив ключами, которые означают: pid &#8211; идентификатор процесса uptime &#8211; время работы сервера version &#8211; версия ПО time &#8211; время в формате unixtimestamp rusage_user &#8211; пользовательское время для процесса rusage_system &#8211; системное время для процесса [...]]]></description>
			<content:encoded><![CDATA[<p>Пишу, чтобы не забыть ибо иногда надо знать, что происходит с memcached&#8217;ом:</p>
<p><code>$mymemcache = new Memcache;<br />
$mymemcache-&gt;addServer('localhost', 11211);<br />
highlight_string(print_r($mymemcache-&gt;getExtendedStats(), true));</code></p>
<p>Массив ключами, которые означают:</p>
<ul>
<li> pid &#8211; идентификатор процесса</li>
<li> uptime &#8211; время работы сервера</li>
<li> version &#8211; версия ПО</li>
<li> time &#8211; время в формате unixtimestamp</li>
<li> rusage_user &#8211; пользовательское время для процесса</li>
<li> rusage_system &#8211; системное время для процесса</li>
<li> curr_items &#8211; количество сохраненных объектов в памяти</li>
<li> total_items &#8211; сколько всего было сохранено объектов за время работы сервера</li>
<li> bytes &#8211; количество байт, которые занимают сохраненные объекты</li>
<li> curr_connections &#8211; количество открытых соединений</li>
<li> total_connections &#8211; сколько всего было открыто соединений</li>
<li> cmd_get &#8211; количество запросов на получение объектов из кеша</li>
<li> cmd_set &#8211; количество запросов на сохранение объекта в кеше</li>
<li> get_hits &#8211; количество запросов когда объект был успешно найден в кеше</li>
<li> get_misses &#8211; количество запросов к отсутствующим объектам</li>
<li> bytes_read &#8211; общее количество прочитанных байт из сети</li>
<li> bytes_written &#8211; общее количество отправленных байт</li>
<li> limit_maxbytes &#8211; ограничение памяти для хранения объектов</li>
</ul>
<p>Мануал поссмотреть по <a href="http://ua2.php.net/manual/en/function.memcache-getstats.php">Memcache::getStats</a></p>
<p>А так как использую APC то и целый <a href="http://www.electrictoolbox.com/apc-php-cache-information/">скрипт для статистики</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2009/12/23/memcached/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Шрифты для Web</title>
		<link>http://blog.web2.com.ua/2009/12/09/shriftyi-dlya-web/</link>
		<comments>http://blog.web2.com.ua/2009/12/09/shriftyi-dlya-web/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 11:35:06 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[верстка]]></category>
		<category><![CDATA[интернет]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/?p=908</guid>
		<description><![CDATA[Не знаю как вам, но у меня всегда проблема при вёрстке &#8211; это шрифты. А фиг их знает, какие писать, как оно будет в выглядеть в гавне Сафаре и какая версия тоже гавна Висты установлена в пользователя. Тогда нашлось в просторах интернету такая статейко, где написаны все универсальные шрифты. Создавши файлик CSS отдаю всем нуждающимся: [...]]]></description>
			<content:encoded><![CDATA[<p>Не знаю как вам, но у меня всегда проблема при вёрстке &#8211; это шрифты. А фиг их знает, какие писать, как оно будет в выглядеть в <span style="text-decoration: line-through;">гавне</span> Сафаре и какая версия <span style="text-decoration: line-through;">тоже гавна</span> Висты установлена в пользователя. Тогда нашлось в просторах интернету <a href="http://articles.sitepoint.com/article/eight-definitive-font-stacks" target="_blank">такая статейко</a>, где написаны все универсальные шрифты. Создавши <a href="http://blog.web2.com.ua/wp-content/uploads/fonts.css">файлик CSS</a> отдаю всем нуждающимся:</p>
<ul>
<li><code>.fTimes{<br />
font-family: Cambria, "Hoefler Text", Utopia, "Liberation Serif", "Nimbus Roman No9 L Regular", Times, "Times New Roman", serif;<br />
}</code></li>
<p><a href="http://blog.web2.com.ua/wp-content/uploads/1697-tnrstack.jpg"><img class="aligncenter size-medium wp-image-914" title="1697-tnrstack" src="http://blog.web2.com.ua/wp-content/uploads/1697-tnrstack-399x200.jpg" alt="1697-tnrstack" width="399" height="200" /></a></p>
<li><code>.fGeorgia{<br />
font-family: Constantia, "Lucida Bright", Lucidabright, "Lucida Serif", Lucida, "DejaVu Serif," "Bitstream Vera Serif", "Liberation Serif", Georgia, serif;<br />
}</code><a href="http://blog.web2.com.ua/wp-content/uploads/1697-georgiastack.jpg"><img class="aligncenter size-medium wp-image-915" title="1697-georgiastack" src="http://blog.web2.com.ua/wp-content/uploads/1697-georgiastack-400x215.jpg" alt="1697-georgiastack" width="400" height="215" /></a></li>
<li><code>.fGaramond{<br />
font-family: "Palatino Linotype", Palatino, Palladio, "URW Palladio L", "Book Antiqua", Baskerville, "Bookman Old Style", "Bitstream Charter", "Nimbus Roman No9 L", Garamond, "Apple Garamond", "ITC Garamond Narrow", "New Century Schoolbook", "Century Schoolbook", "Century Schoolbook L", Georgia, serif;<br />
}<a href="http://blog.web2.com.ua/wp-content/uploads/1697-garamondstack.jpg"><img class="aligncenter size-medium wp-image-917" title="1697-garamondstack" src="http://blog.web2.com.ua/wp-content/uploads/1697-garamondstack-400x379.jpg" alt="1697-garamondstack" width="400" height="379" /></a></code></li>
<li><code>.fArial{<br />
font-family: Frutiger, "Frutiger Linotype", Univers, Calibri, "Gill Sans", "Gill Sans MT", "Myriad Pro", Myriad, "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans-serif;<br />
}<a href="http://blog.web2.com.ua/wp-content/uploads/1697-helveticastack.jpg"><img class="aligncenter size-medium wp-image-918" title="1697-helveticastack" src="http://blog.web2.com.ua/wp-content/uploads/1697-helveticastack-400x387.jpg" alt="1697-helveticastack" width="400" height="387" /></a></code></li>
<li><code>.fVerdana{<br />
font-family: Corbel, "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", "DejaVu Sans", "Bitstream Vera Sans", "Liberation Sans", Verdana, "Verdana Ref", sans-serif;<br />
}<a href="http://blog.web2.com.ua/wp-content/uploads/1697-verdanastack.jpg"><img class="aligncenter size-medium wp-image-919" title="1697-verdanastack" src="http://blog.web2.com.ua/wp-content/uploads/1697-verdanastack-400x238.jpg" alt="1697-verdanastack" width="400" height="238" /></a></code></li>
<li><code>.fTrebuchet{<br />
font-family: "Segoe UI", Candara, "Bitstream Vera Sans", "DejaVu Sans", "Bitstream Vera Sans", "Trebuchet MS", Verdana, "Verdana Ref", sans-serif;<br />
}<a href="http://blog.web2.com.ua/wp-content/uploads/1697-trebuchetstack.jpg"><img class="aligncenter size-medium wp-image-920" title="1697-trebuchetstack" src="http://blog.web2.com.ua/wp-content/uploads/1697-trebuchetstack-399x220.jpg" alt="1697-trebuchetstack" width="399" height="220" /></a></code></li>
<li><code>.fImpact{<br />
font-family: Impact, Haettenschweiler, "Franklin Gothic Bold", Charcoal, "Helvetica Inserat", "Bitstream Vera Sans Bold", "Arial Black", sans-serif;<br />
}<a href="http://blog.web2.com.ua/wp-content/uploads/1697-impactstack.jpg"><img class="aligncenter size-medium wp-image-921" title="1697-impactstack" src="http://blog.web2.com.ua/wp-content/uploads/1697-impactstack-400x181.jpg" alt="1697-impactstack" width="400" height="181" /></a></code></li>
<li><code>.fMonospace{<br />
font-family: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace;<br />
}<a href="http://blog.web2.com.ua/wp-content/uploads/1697-monostack.jpg"><img class="aligncenter size-medium wp-image-922" title="1697-monostack" src="http://blog.web2.com.ua/wp-content/uploads/1697-monostack-400x245.jpg" alt="1697-monostack" width="400" height="245" /></a></code></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2009/12/09/shriftyi-dlya-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>С обновлением меня!</title>
		<link>http://blog.web2.com.ua/2008/03/31/wordpress_25/</link>
		<comments>http://blog.web2.com.ua/2008/03/31/wordpress_25/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 13:50:10 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/?p=559</guid>
		<description><![CDATA[Зашёл тут в админку блога и dashboard сказал, что уже WordPress 2.5 вышел. Обновился. ЙО! 2 плагина ушло в небытие и всё намного красивее и удобнее. Сами смотрите. Dashboard Редактирование поста Загрузка картинок]]></description>
			<content:encoded><![CDATA[<p>Зашёл тут в админку блога и dashboard сказал, что уже WordPress 2.5 <a class="new" title="скачать WordPress" href="http://wordpress.org/download/" target="_blank">вышел</a>. Обновился. ЙО! 2 плагина ушло в небытие и всё намного красивее и удобнее. Сами смотрите.</p>
<ul class="picture">
<li><a href="http://blog.web2.com.ua/wp-content/uploads/dashboard_wordpress25.png" target="_blank"><img title="dashboard_wordpress25_small" src="http://blog.web2.com.ua/wp-content/uploads/dashboard_wordpress25_small.png" alt="" /></a></li>
<li>Dashboard</li>
<li><a href="http://blog.web2.com.ua/wp-content/uploads/edit_post_wordpress25.png" target="_blank"><img class="alignnone size-full wp-image-565" title="edit_post_wordpress25_small" src="http://blog.web2.com.ua/wp-content/uploads/edit_post_wordpress25_small.png" alt="" width="400" height="320" /></a></li>
<li>Редактирование поста</li>
<li><a href="http://blog.web2.com.ua/wp-content/uploads/upload_picture_wordpress25.png" target="_blank"><img class="alignnone size-full wp-image-566" title="upload_picture_wordpress25_small" src="http://blog.web2.com.ua/wp-content/uploads/upload_picture_wordpress25_small.png" alt="" width="400" height="320" /></a></li>
<li>Загрузка картинок</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2008/03/31/wordpress_25/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Хостинг и freehost.com.ua</title>
		<link>http://blog.web2.com.ua/2007/11/27/hosting-i-freehostcomua/</link>
		<comments>http://blog.web2.com.ua/2007/11/27/hosting-i-freehostcomua/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 14:44:21 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[интернет]]></category>
		<category><![CDATA[хостинг]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/2007/11/27/hosting-i-freehostcomua/</guid>
		<description><![CDATA[Давно не гадил на хостеров, а после перезда и не думаю, что такое будет Уже не впервые поражаюсь с freehost.com.ua. Нет, сказать что-то плохое не хочу, как раз наоборот. Я прозреваю с их суппорта. Во-первых, даже о малейших колупаниях в сервере они сообшают своим клиентам. Приходит такое гламурное письмецо, что мы в 3 часа ночи [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.web2.com.ua/wp-content/uploads/freehostlogo.jpg" alt="freehost logo" class="short" />Давно не гадил на хостеров, а после перезда и не думаю, что такое будет <img src='http://blog.web2.com.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Уже не впервые поражаюсь с <a href="http://freehost.com.ua" target="_blank" class="new">freehost.com.ua</a>. Нет, сказать что-то плохое не хочу, как раз наоборот. Я прозреваю с их суппорта. Во-первых, даже о малейших колупаниях в сервере они сообшают своим клиентам. Приходит такое гламурное письмецо, что мы в 3 часа ночи ребутнём ваш сервер, так что 10 минут ваши прокси-замописки работать не будут ). Это не может не радовать.</p>
<p>Это одна сторона медали. Второе &#8211; это &#8220;живой&#8221;  суппорт. Админы быстро отвечают на мыло, посланое к ним. Быстро всё фиксят и даже местами рассказывают, что сделать в следующий раз. У них и аська есть ). Сегодня таки не смог попасть на свой хостинг (по работе часто исспользую), пробывал пинговать с разных точек. Но когда выслал всё им, то быстренько ответили и сказали, что есть проблемка, скоро профиксят.</p>
<p>Такого на <a href="http://blog.web2.com.ua/2007/08/16/pereezd/" class="new">предыдущем хостинге</a> мне и не снилось.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2007/11/27/hosting-i-freehostcomua/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Репозитарии openSUSE в UA-IX</title>
		<link>http://blog.web2.com.ua/2007/11/23/repozitarii-opensuse-v-ua-ix/</link>
		<comments>http://blog.web2.com.ua/2007/11/23/repozitarii-opensuse-v-ua-ix/#comments</comments>
		<pubDate>Fri, 23 Nov 2007 16:33:09 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[compiz]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[KDE4]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[openSuse]]></category>
		<category><![CDATA[suse]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/2007/11/23/repozitarii-opensuse-v-ua-ix/</guid>
		<description><![CDATA[Сегодня добавил в cron linux.kiev.ua затягивание репозитария с Compiz и Packman для openSUSE 10.3. Все репозитарии будут находится тут. Кого интересует ещё что-то и надо всё это в UA-IX &#8211; обращайтесь. Мне не сложно, а mike@ говорил, что винтов вагон и тележка с кастрюлькой. Сегодня в 2 часа ночи обновятся репозитарий Пакмана и KDE3 c [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.web2.com.ua/wp-content/uploads/opensuse.jpg" class="short" height="85" width="129" />Сегодня добавил в cron linux.kiev.ua затягивание репозитария с Compiz и Packman для openSUSE 10.3. Все репозитарии будут находится <a href="http://ftp.linux.kiev.ua/pub/Linux/SuSE/repo" target="_blank" class="new">тут</a>. Кого интересует ещё что-то и надо всё это в UA-IX &#8211; обращайтесь. Мне не сложно, а mike@ говорил, что винтов вагон и тележка с кастрюлькой. Сегодня в 2 часа ночи обновятся репозитарий Пакмана и KDE3 c KDE4. В это же время, каждый день эта операция будет повторяться.</p>
<p>А теперь вопрос по-серёзней.</p>
<p>Кому-то надо исошки и пакман для 10.1 версии? Так же на сервере валяется SLICK и девятка. Насколько я знаю, то 9 уже новелом не суппортится, а 10.1 и подавно никому не нужна. Я предлагаю всё это старьё убить и оставить только (пока) исошки с 10.2. Винты есть, но оно никому не надо и лежит мёртвым грузом.</p>
<p>Комментарии висят на <a href="http://www.linux.kiev.ua/ru/forum/thread/19/20/901/" target="_blank" class="new">форуме</a>, если не будут против, то через недельку-вторую я потру всё ненужное. А Пакманом пользуйтесь! <img src='http://blog.web2.com.ua/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2007/11/23/repozitarii-opensuse-v-ua-ix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Функция отмены последнего действия (Undo) &#8211; это просто (Часть 1.5)</title>
		<link>http://blog.web2.com.ua/2007/09/27/funktsiya-otmenyi-poslednego-deystviya-undo-eto-prosto-chast-15/</link>
		<comments>http://blog.web2.com.ua/2007/09/27/funktsiya-otmenyi-poslednego-deystviya-undo-eto-prosto-chast-15/#comments</comments>
		<pubDate>Wed, 26 Sep 2007 22:48:51 +0000</pubDate>
		<dc:creator>wert2all</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[перевод]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[translate]]></category>
		<category><![CDATA[Undo]]></category>

		<guid isPermaLink="false">http://blog.web2.com.ua/2007/09/27/funktsiya-otmenyi-poslednego-deystviya-undo-eto-prosto-chast-15/</guid>
		<description><![CDATA[Продолжаю переводить серию статей о реализации Undo. Это вторая часть первой части серии заметок &#8220;Функция отмены последнего действия (Undo)&#8221;. Если вы её пропустили, то сначала прочитайте первую часть (перевод первой части).Один с моих читателей, Alex Botero-Lowry, отметил большую проблему реализации Undo c очереди полностью на стороне клиента: если пользователь открывает эту же страницу на второй [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Продолжаю переводить серию статей о реализации Undo.</p></blockquote>
<p><img src="http://blog.web2.com.ua/wp-content/uploads/undo.jpg" class="short" height="135" width="180" />Это вторая часть первой части серии заметок &#8220;Функция отмены последнего действия (Undo)&#8221;. Если вы её пропустили, то сначала прочитайте <a href="http://humanized.com/weblog/2007/09/14/undo-made-easy-with-ajax-part-1/" class="new" target="_blank" title="Undo Made Easy with Ajax (Part 1)">первую часть</a> (<a href="http://blog.web2.com.ua/2007/09/24/funktsiya-otmenyi-poslednego-deystviya-undo-eto-prosto-chast-1/" class="new">перевод первой части</a>).Один с моих читателей, <a href="http://www.geekfire.com/%7Ealex/blog/" class="new" target="_blank" title="Alex Botero-Lowry">Alex Botero-Lowry</a>, отметил большую проблему реализации Undo c очереди полностью на стороне клиента: если пользователь открывает эту же страницу на второй вкладке браузера для просмотра, то эти страницы могут быть не синхронизированы. В примере to-do листа, если вы удаляете три to-do листа и открываете новую вкладку или окно  этой же страницы, то эти to-do всё-таки останутся. Почему? Потому что первая страница знает о удалении (хотя оно и не законченное), а вторая &#8211; нет.<span id="more-395"></span></p>
<p>Возьмем клиентский подход и запустим его. В том, что нет запутанного back-end&#8217;а есть что-то красивое. Мы можем исправить проблему множественных вкладок, синхронизируя очередь событий  со всех открытых страниц с помощью кукиз (cookie).</p>
<p>Хочу подчеркнуть, что метод очереди событий &#8211; очень легкое решение отмены действия. Существуют другие, более надёжные пути реализации Undo, такие как основаные на серверной стороне <a href="http://en.wikipedia.org/wiki/Command_pattern" title="command pattern" class="new">command pattern</a> (пару моих читателей обратили на это внимание и я, возможно, рассмотрю это в следующих заметках). Но это не относится к делу. Когда мы, как инженеры, стараемся решить сложные проблемы, мы часто слишком обобщаем и слишком абстрагируемся к своему back-end решению, не замечая других вариантов. Когда мы делаем это, мы пропускаем простые решения, которые могут помочь пользователям <em>уже сейчас</em>. Некоторые формы Undo как низко-висячие фрукты, почему же не сорвать их? Конец отступления.</p>
<p>Повторяю, мы решаем что случится, когда пользователь удалит некоторые элементы, откроет другую вкладку этой же страницы и те пункты, оказывается, не удалены. Предположим, что очередь событий хранит идентификаторы удалённых объектов и каждый раз когда элемент удаляется или удаление незаконченное, мы пишем очередь в cookie; когда страница закрывается &#8211; мы очищаем куки. Когда страница загружается &#8211; мы проверяем куки и если в них есть не пустой список, то мы на стороне клиента &#8220;удаляем&#8221; элементы и добавляем их в очередь. Теперь каждая новая вкладка/окно открывается, мы гарантировано синхронизируем их.</p>
<p>Проблема решена.</p>
<h2>Сложность</h2>
<p>Итак, что случится когда вы сделаете изменения на одной странице, а потом переключитесь на другую, уже открытую страницу? Это может усложнить жизнь. Мы спасены от необходимости иметь дело с всей проблемой, потому что web не технология &#8220;толчка&#8221;.  В настоящее время, никакое приложение сети, о котором я знаю, без возможности ручного обновления, не может обновить страницу, когда она изменена в другой вкладке. Пользователи используют обновление страницы, чтобы увидеть изменения. Это означает, что мы должны правильно обходится с вариантом, когда пользователь удаляет и восстанавливает данные в одной вкладке, возвращается в другую и нажимает refresh.</p>
<p>Чтобы решить эту проблему, мы должны сделать предположение, что последняя вкладка/окно, в котором пользователь что-то редактировал, содержит наиболее актуальную информацию. Это резонное предположение, потому что последнее с чем пользователь работал, наиболее вероятно будет тем, о чем пользователь думал как последняя версия.</p>
<p>Когда же пользователь обновляет страницу, вызывается метод onUnload. В нём мы должны проверить, совпадает ли очередь страницы с очередью последней сохранённой в кукисах очередью (помните, что очередь событий сохраняется в cookie, когда пользователь удаляет или отменяет удаление). Если две очереди одинаковые, то страница актуальна и мы продолжаем передачу изменений ксерверу. Если две очереди не одинаковые, то текущая страница требует синхронизации с сохранённой в куках очередью, в результате чего она обновляется.</p>
<h2>Попробуйте</h2>
<p>Поиграйте с <a href="http://humanized.com/weblog/images/resources/undo/todo_sync.html" class="new">этим</a>, затем откройте новое окно браузера. Теперь, измените что-то в новом окне и потом обновите старое окно. Всё правильно обновляется.</p>
<h2>Исходный код</h2>
<p><a href="http://humanized.com/weblog/images/resources/undo/source_sync.php" class="new" title="Находится  здесь">&#8230;находится здесь</a>.</p>
<h2><strong>Заключение</strong></h2>
<p>Польза от пути cookie заключается в том, что это улучшает положение с уже редком случае, когда пользователь теряет свою работу в случае краша браузера. Когда браузер &#8220;падает&#8221;, то все изменения сохраняются в куках, итак, когда пользователь загружает страницу опять, его изменения вся-таки применяться.</p>
<p>Система очереди событий с синхронизацией на куках &#8211; это низковисячий фрукт. Это работает не везде, но будет работать в поразительно большом количестве случаев. Это стоит сравнительно небольших сроков.</p>
<p>На следующей неделе, я напишу о решении Undo для время-зависимых действий.</p>
<p><strong>Перевод:</strong> <a href="http://humanized.com/weblog/2007/09/21/undo-made-easy-with-ajax-part-15/" target="_blank" class="new">Undo Made Easy with Ajax (Part 1.5)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.web2.com.ua/2007/09/27/funktsiya-otmenyi-poslednego-deystviya-undo-eto-prosto-chast-15/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

