﻿<?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>Дневна доза нонсенс... &#187; Canvas</title>
	<atom:link href="http://dailyffs.com/tag/canvas/feed/" rel="self" type="application/rss+xml" />
	<link>http://dailyffs.com</link>
	<description>Софтуерно-инженерна му работа</description>
	<lastBuildDate>Tue, 03 Jan 2012 01:34:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Game of Life (javascript + html5&#8242;s canvas)</title>
		<link>http://dailyffs.com/2011/game-of-life-javascript-html5/</link>
		<comments>http://dailyffs.com/2011/game-of-life-javascript-html5/#comments</comments>
		<pubDate>Sun, 24 Jul 2011 20:55:57 +0000</pubDate>
		<dc:creator>Lucho</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[game of life]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://dailyffs.com/?p=907</guid>
		<description><![CDATA[Тези дни отново ме загриза съвестта, че не работя по някакъв сайд-проект - мой собствен или open source и за това днес реших да почета и понапиша Game of Life.<div class="addthis_toolbox addthis_default_style " addthis:url='http://dailyffs.com/2011/game-of-life-javascript-html5/' addthis:title='Game of Life (javascript + html5&#8242;s canvas) '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Тези дни отново ме загриза съвестта, че не работя по някакъв сайд-проект &#8211; мой собствен или open source и за това днес реших да почета и понапиша <a href="http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Game of Life</a>.</p>
<p>Оказа се доста прост алгоритъм с доста интересна история, която и сами може да си прочетете <img src='http://dailyffs.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Демо може да видите тук: <a href="http://dailyffs.com/life/">http://dailyffs.com/life/</a></p>
<p>Сорсът е тук: <a href="https://gist.github.com/1102964">https://gist.github.com/1102964</a></p>
<p>Коментарът към сорса от страна на @skanev е тук: <a href="https://twitter.com/skanev/status/95213748092026880">https://twitter.com/skanev/status/95213748092026880</a></p>
<p>Това, което искам да кажа в тази статия е, че колкото и да са бързи съвремените Javascript engine-и и колкото и разни светила и икони на браузър вендорите да се хвалят, че производителността скача многократно от версия до версия, това не значи че не може да забързате всичко още <del>малко</del> много. Цената на &#8222;забързването&#8220; е &#8222;угрозняване&#8220; и оптимизиране на кода. В моя конкретен случай &#8211; на една функция, която се вика 60000 пъти на преизчисление.</p>
<p>Въпросната фунцкия:</p>
<pre class="brush: jscript; title: ; notranslate">

function getLiveNeighbours(id, data) {
  var x = id % canvas.width;
  var y = parseInt(id / canvas.width);

  var cnt = 0;
  for (var i = -1; i &lt; 2; i++) {
    for (var j = -1; j &lt; 2; j++) {
      if ((i != 0 || j != 0) &amp;&amp;
        !(x+i &lt; 0 || x+i &gt;= canvas.width || y+j &lt; 0 || y+j &gt;= canvas.height) &amp;&amp;
        data.data[4*((y+j)*canvas.width+(x+i))] != THE_BLACK) {
        cnt++;
      }
    }
  }
  return cnt;
}
</pre>
<p>Простата оптимизация на кода включва:</p>
<ol>
<li>Премахване на извикването на функцията (тялото на функцията се ползва директно) &#8211; спестява 60000 извиквания и времето за изпълнение на една итерация пада от 500ms на 270ms</li>
<li>Заменяне на двата вложени цикъла проверяващи за броя на съседни клетки &#8211; от 270ms на 150ms</li>
<li>Опростяване на пресмятанията (премахване на умножения) &#8211; от 150ms на 60ms</li>
<li>Създаване на локални референции към често използваните данни (вместо постоянни извиквания от типа &#8222;obj.data&#8220; при изчисленията се създава и използва локална променлива) &#8211; от 60ms на 50ms</li>
</ol>
<pre class="brush: jscript; title: ; notranslate">
// (4)
var width = canvas.width*4;
var d = data.data;
var nd = newdata.data;
var cw = canvas.width;
var ch = canvas.height;
var base = 0;

for (var i = 0; i &lt; d.length/4; i++) {
  var x = i % cw;
  var y = parseInt(i / cw);

  var cnt = 0;
  // (1), (2), (3)
  if (x &gt; 0 &amp;&amp; d[base-4] != THE_BLACK) cnt++;
  if (x &lt; cw-1 &amp;&amp; d[base+4] != THE_BLACK) cnt++;
  if (x &gt; 0 &amp;&amp; y &gt; 0 &amp;&amp; d[base-4-width] != THE_BLACK) cnt++;
  if (y &gt; 0 &amp;&amp; d[base-width] != THE_BLACK) cnt++;
  if (x &lt; cw-1 &amp;&amp; y &gt; 0 &amp;&amp; d[base+4-width] != THE_BLACK) cnt++;
  if (x &gt; 0 &amp;&amp; y &lt; ch-1 &amp;&amp; d[base-4+width] != THE_BLACK) cnt++;
  if (y &lt; ch-1 &amp;&amp; d[base+width] != THE_BLACK) cnt++;
  if (x &lt; cw-1 &amp;&amp; y &lt; ch-1 &amp;&amp; d[base+4+width] != THE_BLACK) cnt++;
  ...
</pre>
<p>В крайна сметка производителността скочи 10 пъти, макар логиката на кода да изглежда по-зле от преди. Не, че преди изглеждаше много красива, но все пак <img src='http://dailyffs.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Разбира се има и още един доста по-умен начин за техническа оптимизация &#8211; Web Workers. Те са панацеята на всички проблеми, началото и края, давид и голиат, содом и гомор, ин и ян&#8230; за тях може да почетете тази статия -<a href="../2011/mandelbrot-web-workers/" rel="bookmark"> Mandelbrot + Web Workers</a></p>
<p><em>Забележка: </em></p>
<ul>
<li><em>става дума за проста техническа оптимизация на кода, а не за подобрения на алгоритъма!</em></li>
<li><em>вероятно оптимизациите в javascript engine-ите не се фокусират върху случаи на извикване на функция 60 хиляди пъти&#8230; а би трябвало.</em></li>
</ul>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://dailyffs.com/2011/game-of-life-javascript-html5/' addthis:title='Game of Life (javascript + html5&#8242;s canvas) '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://dailyffs.com/2011/game-of-life-javascript-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mozilla Labs &#8211; Game On 2010</title>
		<link>http://dailyffs.com/2010/mozilla-labs-game-on-2010/</link>
		<comments>http://dailyffs.com/2010/mozilla-labs-game-on-2010/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 13:29:10 +0000</pubDate>
		<dc:creator>Lucho</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Mozilla Labs]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://dailyffs.com/?p=560</guid>
		<description><![CDATA[Тези дни хората от Mozilla Labs стартираха конкурс за разработка на изцяло уеб базирана игра. Състезанието се казва "Game On 2010" и дава възможност на всички гейм или уеб разработчици да покажат на какво са способни, но... само с HTML(5)/Javascript/CSS. <div class="addthis_toolbox addthis_default_style " addthis:url='http://dailyffs.com/2010/mozilla-labs-game-on-2010/' addthis:title='Mozilla Labs &#8211; Game On 2010 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="https://gaming.mozillalabs.com/" target="_blank"><img class="aligncenter" title="Game On 2010" src="http://screenshoot.me/game_on" alt="" width="381" height="355" /></a></p>
<p>Тези дни хората от Mozilla Labs стартираха конкурс за разработка на изцяло уеб базирана игра. Състезанието се казва <a href="https://gaming.mozillalabs.com/" target="_blank">Game On 2010</a> и дава възможност на всички гейм или уеб разработчици да покажат на какво са способни, но&#8230; само с HTML(5)/Javascript/CSS.</p>
<p>Да &#8211; правилно прочетохте! Flash, Applet-и и други плъгини не са позволени, защото основната идея на конкурса е да покаже на какво са способни модерните браузъри. А те наистина са способни! HТML5 &amp; Friends докараха на белия свят доста новости и купища ексцентрични API-та &#8211; Canvas елементът,  SVG (директно в html кода), WebGL, <a href="http://dailyffs.com/2010/the-future-web-sockets/" target="_blank">Web Sockets</a> (двупосочна свързаност), няколко API-та за data storing, Video елементът и още много интересни благинки.</p>
<p>В конкурса могат да участват както индивидуални разработчици, така и екипи. Естествено и за награди е помислено, като за сега от Лаба са обявили само наградата за първо място &#8211; два билета за <a href="http://www.gdconf.com/" target="_blank">Game Development Conference 2011</a> в Сан Франциско, с включен път, хотел и храна. Награди ще има и за още дузина категории, така че запретвайте ръкави <img src='http://dailyffs.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Крайният срок за участие е 11.01.2011г.</p>
<p>Успех на всички <img src='http://dailyffs.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><em>П.П. Аз лично смятам да се включа и съм навит за обединяване на усилията с други ентусиасти.</em></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://dailyffs.com/2010/mozilla-labs-game-on-2010/' addthis:title='Mozilla Labs &#8211; Game On 2010 '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://dailyffs.com/2010/mozilla-labs-game-on-2010/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ScreenShootMe на 1 година</title>
		<link>http://dailyffs.com/2010/screenshootme-on-1/</link>
		<comments>http://dailyffs.com/2010/screenshootme-on-1/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 20:25:28 +0000</pubDate>
		<dc:creator>Lucho</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Нонсенс]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[ScreenShootMe]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[webtool]]></category>

		<guid isPermaLink="false">http://dailyffs.com/?p=440</guid>
		<description><![CDATA[Преди около година сътворих едно малко уеб-туулче, което да позволява бързо качване на скрийншот в мрежата - ScreenShootMe. Очакванията ми да стана свръх богат и да задмина Facebook по потребители не се сбъднаха, но и първоначалната ми идея никога не е била тази, де. Подбудите да го създам тогава бяха, че такъв инструмент ми е нужен и има смисъл от него. Виждам смисъл в него и сега - 1 година по-късно. <div class="addthis_toolbox addthis_default_style " addthis:url='http://dailyffs.com/2010/screenshootme-on-1/' addthis:title='ScreenShootMe на 1 година '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Преди около година сътворих едно малко уеб-туулче, което да позволява бързо качване на скрийншот в мрежата &#8211; <a href="http://screenshoot.me/" target="_blank">ScreenShootMe</a>. Очакванията ми да стана свръх богат и да задмина Facebook по потребители не се сбъднаха, но и първоначалната ми идея никога не е била тази, де. Подбудите да го създам тогава бяха, че такъв инструмент ми е нужен и има смисъл от него. Виждам смисъл в него и сега &#8211; 1 година по-късно. Първата му версия беше функционална &#8211; имаше това което исках, но нямаше това, което искаха останалите хора &#8211; хубав вид. За това докато пътувах в автобуса от Созопол към София с изтощена батерия на телефона и празен поглед забит в хоризонта, реших да подобря творението си &#8211; да го направя &#8222;красиво&#8220;. И не просто реших, ами помислих сериозно какво искам, помислих за всеки детайл, за цветове, разположение &#8211; за всичко. Когато се прибрах веднага започнах работа по него и след 4-5 дни бях завършил всичко, което ми се въртеше в главата докато пътувах в автобуса. Всички промени касаят клиентската част &#8211; нищо по сървърната част или в Applet-а не е пипано, което беше и първоначалната идея &#8211; все пак е само фейслифтинг.</p>
<p style="text-align: center;"><img class="aligncenter" title=" " src="http://dailyffs.com/shotme/jlczJE" alt="" width="587" height="468" /></p>
<p style="text-align: left;">Ето и списък с промените:</p>
<ul style="text-align: justify;">
<li>Разположението &#8211; меню с всички бутони и контроли в ляво, до менюто е платното, а под тях е информативен текст.</li>
<li>Менюто се дели на 4 части &#8211; бутони с основни функции, бутон и контроли за crop, бутон и контроли за рисуване върху платното (избор на дебелина и цвят на четката), поле за въвеждане на специфичен ключ (ключа се ползва в URL-a с изображението).</li>
<li>Информативния текст се дели да две паралелни колони, като в лявата има информация за функциите на уеб-туулчето, а в дясната има текст с общо предназначение.</li>
<li>Състоянието на кенвъса по подразбиране трябва да има рекламен вид &#8211; да казва колко е лесно и полезно туулчето.</li>
<li>Цветовете: Тъмно синьо, жълто, оранжево и бяло (за текста). Топлите и студени цветове, някак си противно на логиката, си паснаха. Тъмно синьото и бялото бяха първите два избрани цвят, които да си призная, разбрах че си пасват благодарение на това лого &#8211; <a href="http://screenshoot.me/7r04fQ" target="_blank">http://screenshoot.me/7r04fQ</a> . За оранжавото знаех, че е енергичен цвят, а за жълтото че прави много добър контраст с черно и тъмни цветове (освен това ми е любим). И така от цялата каша се роди една палитра, която е <strong>ЕДИНСТВЕНАТА </strong>свястна палитра, която някога съм подбирал.</li>
<li>Бутоните и контролите представляват Canvas елементи и са изцяло генерирани от Javascript. Един ден ще бъдат заменени от HTML5 Web Forms.</li>
<li>Наех домейн за уеб-туулчето &#8211; screenshoot.me</li>
<li style="text-align: justify;">Donation бутонче &#8211; домейнът струва пари <img src='http://dailyffs.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </li>
<li style="text-align: justify;">Футър</li>
<li style="text-align: justify;">Undo &#8211; в случай, че нещо се обърка тотално.</li>
</ul>
<p style="text-align: justify;">Това &#8222;разкрасяване&#8220; за пореден път подтвърди мнението ми, че хубавията дизайн се постига много по-трудно отколкото самата функционалност. Дано поне да си е заслужавало труда  и парите за домейн и да привлече повече потребители <img src='http://dailyffs.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p style="text-align: justify;">
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="580" height="360" 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/wTlIOdL8kLI&amp;hl=en_US&amp;fs=1?rel=0&amp;border=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="580" height="360" src="http://www.youtube.com/v/wTlIOdL8kLI&amp;hl=en_US&amp;fs=1?rel=0&amp;border=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://dailyffs.com/2010/screenshootme-on-1/' addthis:title='ScreenShootMe на 1 година '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://dailyffs.com/2010/screenshootme-on-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>HTML5 &#8211; Предисторията</title>
		<link>http://dailyffs.com/2010/html5-story/</link>
		<comments>http://dailyffs.com/2010/html5-story/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 12:44:48 +0000</pubDate>
		<dc:creator>Lucho</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[WebSockets]]></category>
		<category><![CDATA[WHATWG]]></category>
		<category><![CDATA[предистория]]></category>

		<guid isPermaLink="false">http://dailyffs.com/?p=398</guid>
		<description><![CDATA[С течение на времето стандарта става все по-голям и по-разнообразен като до 2010 година в него вече влизат функционалности за запис и възпроизвеждане на видео и звук, няколко варианта за двупосочна връзка между потребителския клиент и уеб сървъра, няколко вида офлайн съхранение на данни в браузъра (вкл. и с база данни), възможност за чертаене на екрана, възможност за директно внасяне на MathML и SVG код в HTML документа<div class="addthis_toolbox addthis_default_style " addthis:url='http://dailyffs.com/2010/html5-story/' addthis:title='HTML5 &#8211; Предисторията '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><em>Тази публикация е първата от поредица статии за HTML5. Пиша ги  основно по две причини &#8211; обичам HTML5 стандарта и искам да помогна за  популяризирането му. Дано ви харесат и приятни занимания с HTML5 <img src='http://dailyffs.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </em></p>
<p><img class="aligncenter" title="HTML5" src="http://dailyffs.com/shotme/?2qoP6V" alt="" width="395" height="137" /></p>
<div>
<p style="text-align: justify;">Веднага след като <a href="http://www.w3.org/" target="_blank">W3C</a> завършиха стандарта HTML 4, се заеха с разработката на напълно нов уеб  език &#8211; XHTML 2, който макар и да е &#8222;XHTML&#8220; няма нищо общо с XHTML 1.0  или 1.1, а на всичкото отгоре не е съвместим и с тези предни версии. По  този начин браузър-вендорите трябваше рано или късно да започнат да  поддържат два езика за структуриране и представяне на уеб страници,  които нямат много общо по между си. Естествено никой не се съгласи на  това безумие и след като до 2004 година, никой от водещите браузъри не  беше имплементирал абсолютно нищо от XHTML 2, a <a href="http://www.w3.org/" target="_blank">W3C </a> не желаеше да отстъпи и да прекрати разработката на стандарта,  производителите на браузъри (Microsoft, Apple, Mozilla и Opera) просто  се оттеглиха и създадоха собствен работна група - <a href="http://www.whatwg.org/" target="_blank">WHATWG</a>, чиято цел бе да разработи нов HTML стандарт,  който да е съвместим с предни версии и да предлага нови  функционалности, достъп до периферни устройства и по-лесно и уеднаквено  разработване на уеб приложения. Няколко години след това <a href="http://www.w3.org/" target="_blank">W3C</a> най-накрая забелязват, че никой не се вълнува от съдбата на  XHTML 2, но пък <a href="http://www.whatwg.org/" target="_blank">WHATWG</a> доста  напредват с новия неофициален стандарт, и след като самият <a href="http://en.wikipedia.org/wiki/Tim_Berners-Lee" target="_blank">Тим Бърнърс-Лий</a> пише в блога си, че нещата около XHTML 2 не вървят, <a href="http://www.w3.org/" target="_blank">W3C </a> най-накрая се вразумяват. През 2007 година <a href="http://www.w3.org/" target="_blank">W3C </a>официално решават да прекратят работа по XHTML 2 и да се обединят  с <a href="http://www.whatwg.org/" target="_blank">WHATWG</a>, за да разработят заедно новия стандарт &#8211; <strong>HTML5</strong>.</p>
<p style="text-align: justify;"><a href="http://dailyffs.com/wp-content/uploads/2010/06/html5.jpg"><img class="alignleft" title="html5" src="http://dailyffs.com/wp-content/uploads/2010/06/html5.jpg" alt="" width="103" height="109" /></a>С течение на времето стандарта става  все по-голям и по-разнообразен като до 2010 година в него вече влизат  функционалности за запис и възпроизвеждане на видео и звук, няколко  варианта за двупосочна връзка между потребителския клиент и уеб сървъра,  няколко вида офлайн съхранение на данни в браузъра (вкл. и с база  данни), възможност за чертаене на екрана, възможност за директно внасяне  на MathML и SVG код в HTML документа, полета за въвеждане на специфични  данни (например телефон или e-mail), един куп нови елементи, подобрена  семантика в структурата на уеб страниците, нов стандартизиран начин за  токенезиране и построяване на дървото от елементи в браузъра. Последното  ще накара производителите на браузъри да не си измислят сами как да се  интерпретира невалидния HTML5 код, а да следват ясно зададен алгоритъм,  така че страниците да изглеждат еднакви на всички браузъри.</p>
<p style="text-align: justify;">До тук всичко е повече от красиво, но следва една обезпокоителна  новина &#8211; HTML5 ще бъде записан като задължителен стандарт през 2022  година, а като препоръчителен стандарт едва през 2012. Това значи, че на  теория производителите на браузъри могат да си седят кротко и да се  ослушват до 2022 година, с което да пречат на цялата работа по  внедряването на стандарта в уеб пространството. Реално обаче това не е  така, тъй като  всяка нова версия на популярните браузъри поддържа все  повече и повече от новия стандарт. Очакванията са, че паралелно с  официалното завършване на HTML5 (2012г.) повечето браузъри ще са го  имплементирали. Това е напълно разбираемо, защото в  крайна сметка хората, които пишат стандарта са хората, които правят и  уеб браузърите.</p>
<p style="text-align: justify;"><a href="http://dailyffs.com/wp-content/uploads/2010/06/screenshoot.jpg"><img class="alignleft" title="screenshoot" src="http://dailyffs.com/wp-content/uploads/2010/06/screenshoot.jpg" alt="" width="141" height="82" /></a>Аз се запалих по HTML5 лятото на  2009 година, когато за първи път видях частична поддръжка на стандарта (Canvas елемента) в  Firefox 3.5. Бях меко казано изненадан от това, което предлагаше и реших  да експериментирам с едно малко уеб приложение - <a href="http://dailyffs.com/shotme/" target="_blank">ScreenShotMe</a>,  което да предлага минимална редакция и ъплоуд на изображение от  клипборда. Написването на кода (макар и без много примери в нета) беше  лесно, като в резултат с малко код се постигна прилична функционалност.  Следващото нещо, което ми направи силно впечатление бе появата на <a href="http://en.wikipedia.org/wiki/WebSockets" target="_blank">WebSocket-ите</a> в Google Chrome през декември 2009, като те предлагаха дуплексна връзка  между клиента и сървъра. Opera пък поддържат HTML5 Forms &#8211; нови  потребителски контроли като слайдер, color picker и др. Само тези  няколко нови функционалности загатват за десетките нови онлайн  приложения, които може да видим скоро на белия свят. Например директна  редакция на снимките във Facebook, Skype в браузъра, офлайн достъп до  електронната поща и др.</p>
<p style="text-align: justify;">Макар че HTML5 e още чернова и e далеч от поява на белия свят, горещо  препоръчвам уеб дивелопърите да не чакат 2012 или 2022 година, за да се  запознаят по-детайлно с HTML5, защото този нов стандарт ще отвори  вратите за един куп нови и интерактивни уеб приложения!</p>
</div>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://dailyffs.com/2010/html5-story/' addthis:title='HTML5 &#8211; Предисторията '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://dailyffs.com/2010/html5-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

