<?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>Kaip tapti ekspertu? &#187; html5</title>
	<atom:link href="http://www.d-b.lt/tag/html5.rss2.xml" rel="self" type="application/rss+xml" />
	<link>http://www.d-b.lt</link>
	<description>Jeigu tokiu tapsiu - čia yra istorija ir vartotojo gidas. Dominyko Blyžės blog&#039;as.</description>
	<lastBuildDate>Fri, 26 Mar 2010 01:21:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Naudoti svetimus JS failus yra nemandagu ir nesaugu</title>
		<link>http://www.d-b.lt/2010/03/naudoti-svetimus-js-failus-yra-nemandagu-ir-nesaugu.html</link>
		<comments>http://www.d-b.lt/2010/03/naudoti-svetimus-js-failus-yra-nemandagu-ir-nesaugu.html#comments</comments>
		<pubDate>Fri, 26 Mar 2010 01:19:59 +0000</pubDate>
		<dc:creator>Dominykas</dc:creator>
				<category><![CDATA[Tinklo kūrimas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[saugumas]]></category>

		<guid isPermaLink="false">http://www.d-b.lt/?p=276</guid>
		<description><![CDATA[Vos prieš porą mėnesių garsiai nuskambėjo Ajaxian, kai paėmė ir įdėjo besisukančios Coca Cola skardinės pavyzdį į iframe tiesiogiai iš autoriaus svetainės. Gana panašus atvejis buvo ir su Douglas Crockford JSON2 biblioteka bent keletoje didokų svetainių (žr. pirmą šaltinio eilutę).
Moralas toks &#8211; jeigu įtrauki į savo kodą failus tiesiogiai iš kitų žmonių serverių, ypač jeigu [...]]]></description>
			<content:encoded><![CDATA[<p>Vos prieš porą mėnesių garsiai nuskambėjo <a href="http://ajaxian.com/">Ajaxian</a>, kai paėmė ir įdėjo <a href="http://www.techkumar.com/showcase/rolling-coke-pure-css-code/">besisukančios Coca Cola skardinės</a> pavyzdį į <code>iframe</code> tiesiogiai iš <a href="http://www.romancortes.com/blog/pure-css-coke-can/">autoriaus svetainės</a>. Gana panašus atvejis buvo ir su Douglas Crockford <a href="http://www.json.org/js.html">JSON2 biblioteka</a> bent keletoje didokų svetainių (žr. pirmą <a href="http://www.json.org/json2.js">šaltinio</a> eilutę).</p>
<p>Moralas toks &#8211; jeigu įtrauki į savo kodą failus tiesiogiai iš kitų žmonių serverių, ypač jeigu jų nepažįsti ir nepaklausi jų sutikimo, viskas gali baigtis blogai. Štai pvz. mano blog&#8217;as naudoja html5.js &#8211; aš galėčiai ramiai pakeisti jį taip, kad jis vogtų jūsų svetainės lankytojų slaptažodžius ir siųstų man. Bet aš neesu blogietis ir to nedarysiu.</p>
<p>Jeigu kam nors reikia įsijungti HTML5 Internet Exploreryje &#8211; galima gi paimti ir parsisiųsti tą JS ir pasidėti savo svetainėje. Bet jeigu jau taip gaila srauto &#8211; <a href="http://remysharp.com/2009/01/07/html5-enabling-script/">Remy Sharp leidžia</a> tiesiogiai naudoti jo sukurtą <a href="http://html5shiv.googlecode.com/svn/trunk/html5.js">versiją iš Google Code SVN</a>.</p>
<p>Man iš tikro negaila, bet pagunda bent pajuokauti yra&#8230; Tu žinai kas tu esi. Ar ne?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-b.lt/2010/03/naudoti-svetimus-js-failus-yra-nemandagu-ir-nesaugu.rss2.xml</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Užrašai iš FullFrontal 2009</title>
		<link>http://www.d-b.lt/2009/11/uzrasai-is-fullfrontal-2009.html</link>
		<comments>http://www.d-b.lt/2009/11/uzrasai-is-fullfrontal-2009.html#comments</comments>
		<pubDate>Sat, 28 Nov 2009 21:46:42 +0000</pubDate>
		<dc:creator>Dominykas</dc:creator>
				<category><![CDATA[Tinklo kūrimas]]></category>
		<category><![CDATA[accessibility]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[standartai]]></category>

		<guid isPermaLink="false">http://www.d-b.lt/?p=193</guid>
		<description><![CDATA[Prėjusį penktadienį Brighton&#8217;e vyko FullFrontal 2009 JavaScript konferencija, kurioje turėjau progą apsilankyti. Tikrai nenusivyliau!
Šiame blogo įraše susidėjau tai, ką pasižymėjau pats sau beklausydamas kalbėtojų. Pačių kalbų tikrai neketinu aprašinėti &#8211; tai puikiai padarė Ajaxian (nuorodas pateikiu), o skaidrės taipogi prieinamos viešai.
Jeigu kažkuris punktas sudomino &#8211; palikit komentarą &#8211; išplėsiu!
Christian Heilmann &#8211; Frontloaded and zipped up [...]]]></description>
			<content:encoded><![CDATA[<p>Prėjusį penktadienį Brighton&#8217;e vyko FullFrontal 2009 JavaScript konferencija, kurioje turėjau progą apsilankyti. Tikrai nenusivyliau!</p>
<p>Šiame blogo įraše susidėjau tai, ką pasižymėjau pats sau beklausydamas kalbėtojų. Pačių kalbų tikrai neketinu aprašinėti &#8211; tai puikiai padarė Ajaxian (nuorodas pateikiu), o skaidrės taipogi prieinamos viešai.</p>
<p>Jeigu kažkuris punktas sudomino &#8211; palikit komentarą &#8211; išplėsiu!</p>
<h2><a href="http://www.wait-till-i.com/">Christian Heilmann</a> &#8211; Frontloaded and zipped up &#8211; do loose types sink ships</h2>
<p><a href="http://ajaxian.com/archives/full-frontal-09-chris-heilmann-on-javascript-security">Ajaxian santrauka</a>; <a href="http://www.wait-till-i.com/2009/11/21/frontloaded-and-zipped-up-the-full-frontal-2009-keynote/">skaidrės</a>; <a href="http://www.archive.org/download/FrontloadedAndZippedUp-FullFrontalJavascriptConference2009/FrontloadedAndZippedUp-FullFrontalConference2009.mp3">garso įrašas</a>.</p>
<ul>
<li>Apie &#8220;AJAX&#8221; programuotojus kalbama žymiai pagarbiau negu apie &#8220;JavaScript&#8221; programuotojus. <i>Abydna, vienok.</i></li>
<li>JS nėra programavimo kalba skirta kiekvienam &#8211; ir ne kiekvienas save vadinantis &#8220;tinklo kūrėju&#8221; turėtu ja užsiimti.</li>
<li>JS egzistavo gerokai prieš jQuery.</li>
<li>Naudojant JS kalbą, reikėtų ją naudoti taip, kaip ji buvo suplanuota &#8211; gana kurti įvairias abstrakcijas pagal tradicinius OO modelius. JS turi savo stilių &#8211; privalu jį išnaudoti ir įsisavinti.</li>
<li>Saugumo skylės (XSS, XSRF ir t.t.) yra <i>server-side</i> problema &#8211; JS dažniausiai yra nekaltas (nors ir išnaudojamas)</li>
<li>Nepamiršti: http-only sausainiukai sesijoms</li>
<li>Bet kuris API yra iš esmės saugumo skylė &#8211; Firefox greičiausiai yra pati nesaugiausia naršyklė būtent dėl savo plėtinių architektūros. Priminė kažkieno sakinį, kad mash-up&#8217;ai yra XSS atakos prieš save patį.</li>
<li>Išbandyti: dažnos ir paprastos apklausėlės kaip mokymosi metodas komandoje</li>
<li>Pasidomėti: adsafe.org saugumo rekomendacijos</li>
<li>Pasidomėti: <a href="http://code.google.com/p/google-caja/">Google Caja</a> (yra informacijos <a href="http://developer.yahoo.com/yap/guide/caja-support.html">ir YDN</a>)
<ul>
<li>Kas per saugumo skylė IE su <code>radio</code> mygtukais?</li>
<li>Kodėl <code><a href="http://www.positioniseverything.net/easyclearing.html">clearfix</a></code> nevartotinas pagal Caja?</li>
<li>Kodėl tiek daug CSS apribojimų?</li>
</ul>
</li>
<li><code>javascript:void(0)</code> turi mirti (žiauria ir negarbina mirtimi)!</li>
<li><a href="http://ejohn.org/">John Resig</a> yra, lyg ir, pažadėjęs, kad jeigu pakankamai žmonių to reikalaus &#8211; jQuery pritaikys Caja rekomendacijas</li>
<li>Pasidomėti: ar įmanoma padaryti <i>YQL injection</i>?</li>
<li>Pasidomėti: jau egzistuoja OAuth implementacija vien su JS</li>
</ul>
<h2><a href="http://robertnyman.com/">Robert Nyman</a> &#8211; JavaScript: from birth to closure</h2>
<p><a href="http://ajaxian.com/archives/full-frontal-09-robert-nyman-on-the-javascript-language">Ajaxian santrauka</a>; <a href="http://www.slideshare.net/robnyman/javascript-from-birth-to-closure">skaidrės</a>.</p>
<ul>
<li>Kas čia per įprotis, tikrinti ar dižiąjame ekrane bėgantis Twitter srautas yra cenzūruojamas? Įdomus kultūrinis pokrypis, besivystant technologijoms&#8230;</i>
<li>Nepamiršt: skaityti <a href="http://dmitry.baranovskiy.com/">Dmitry Baranovskiy&#8217;o</a> blogą</li>
<li>Pasikartot: <code>typeof kint == 'undefined'</code> naudojimas</li>
<li>Pasidomėt: Koks yra globalus <code>this</code> Rhino variklyje (t.y. <code>window</code> atitikmuo naršyklėse)?</li>
<li>Pasidomėt: <a href="http://yuiblog.com/blog/2007/06/12/module-pattern/">YAHOO Module Pattern</a></li>
</ul>
<h2><a href="http://www.quirksmode.org/">Peter-Paul Koch</a> &#8211; W3C Widgets</h2>
<p><a href="http://ajaxian.com/archives/full-frontal-09-ppk-on-mobile-quirks-and-practices">Ajaxian santrauka</a>; <a href="http://www.quirksmode.org/blog/archives/2009/11/presentations_t.html">skaidrės</a>.</p>
<ul>
<li>Pasidomėt: Ar Nokia N900 naršyklė yra fennec? (Atsakymas: taip)</li>
<li>Mobilaus telefono naudojimas interneto naršymui yra puikus būdas pasimokyti &#8211; visos vartojiškumo pamokos gali būti pritaikytos eilinėms naršyklėms</li>
<li>Ar <code>@media</code> kartu su iPhone&#8217;o <code>&lt;meta name="viewport" /&gt;</code> galėtų išspręsti problemą, kad <i>user-agentai</i> savaip interpretuoja pločius kai svetainė yra <i>išzoominta</i>? (Prie alaus PPK patvirtino, kad ketina tą patikrinti artimiausiu metu)</li>
<li>Kai kuriuose aukšto DPI telefonuose kartais būna sunku paspausti tą vietą kurią nori &#8211; ar gali spaudimo jautrumo DPI ir ekrano DPI gali būti skirtingi?</li>
<li>Nejaugi mobilūs telefonai neturi &#8220;ilgai trunkančio skripto&#8221; perspėjimų?</li>
<li>Dėl greičio problemų, rekomenduojama nenaudoti <code>iframe</code> mobiliems telefonams skirtose svetainėse &#8211; kaip įgyventi AJAX-išką naršyklės istoriją (<i>back/forward</i>)?</li>
<li>Dingstantis ryšys yra problema &#8211; ir <code>online/offline</code> įvykiai jos visiškai nepadeda spręsti</li>
<li>Mobilių telefonų kešas yra ~200kb &#8211; būtina dar protingiau optimizuoti kodą</li>
<li>W3C specifikacijos <i>widgetai</i> leidžia tik vieną HTML puslapį &#8211; potenciali problema?</li>
<li>Dalintis <i>widgetais</i> per Bluetooth yra pavojinga</li>
<li>Animacijos efektai mobiliuose telefonuose veikia lėtai. Iš patirties &#8211; ne viskas taip jau blogai, bet optimizuoti ir apskritai elgtis protingai privalu</li>
</ul>
<h2><a href="http://www.kryogenix.org/">Stuart Langridge</a> &#8211; New things that HTML5 provides to JavaScript hackers</h2>
<p><a href="http://ajaxian.com/archives/full-frontal-09-stuart-langridge-on-html5-features">Ajaxian santrauka</a></p>
<ul>
<li>Pasidomėti: <a href="http://documentcloud.github.com/underscore/">underscore.js</a></li>
<li>Internetas jau nebėra &#8220;programų rašymo platforma&#8221;. Tavo <em>svetainė</em> gali būti ta platforma, jeigu atidarysi savo API. Ir net jeigu neatidarysi &#8211; yra GreaseMonkey. Reikia tam būti pasiruošus!</li>
<li>Idėja: naršyklių gamintojai, galėtų turėti standartinį būdą palaikymo tikrinimui, t.y. jeigu tu rašai savo kodą laikydamasis <i>progressive enhancement</i> principo, kartais turi paprastus būdus patikrinti, ar kažkas veiks &#8211; o kartais ne (pvz. Operos <code>&lt;event-source/&gt;</code>). O galėtų būti kas nors paprasto, pvz. <code>window.navigator.supports("event-source");</code></li>
</ul>
<h2><a href="http://twitter.com/toddkloots">Todd Kloots</a> &#8211; More accessible user interfaces with ARIA</h2>
<p><a href="http://ajaxian.com/archives/full-frontal-09-todd-kloots-on-aria-and-acessibility">Ajaxian santrauka</a>, <a href="http://www.yuiblog.com/blog/2009/11/23/video-kloots-yuiconf2009-a11y/">video įrašas</a> ta pačia tema iš YUI konferencijos</p>
<ul>
<li>Idėja: YUI3 šiuo moment palaiko ARIA pridėdami roles ir atributus elementams, su kuriais dirba, pvz. sukuriant YUI meniu JS, susiiję elementai yra teisingai pažymimi. Ar neturėtų viskas būti atvirkščiai? T.y. rolės ir atributai nustatomi tiesiai HTML dar serveryje, o YUI (ar kita biblioteka) inicializuojasi jau naudodami tas roles.</li>
<li>Toddas kalbėjo apie tai, kaip galima &#8220;uždėti ARIA sluoksnį savo sistemoje&#8221;. Bet argi nebūtų paprasčiau laikytis &#8220;ARIA palaikymo&#8221; kaip pagrindinio principo, t.y. tai yra kažkas tokio, ką tiesiog darai natūraliai, negu tai, ką darai pabaigoje, ant viršaus? Lygiai taip, kaip kažkada reikėjo pakeisti mastymą rašant HTML ir CSS, bei išmokti naudoti <i>progressive enhancement</i>, o ne <i>graceful degradation</i>.</li>
<li>YUI2 palaiko <i>&#8220;<a href="http://yuiblog.com/blog/2007/01/17/event-plan/">event delegation</a>&#8220;</i>? Čia nuo kada? (Atsakymas: pasirodo, nuo YUI 2.8 &#8211; pamiršęs buvau&#8230; <i>&#8220;event delegation&#8221;</i> valdo!)</li>
<li>Žmonės su normaliu regėjimu, turbūt savo protiniuose modeliuose (kaip išversti <i>mental model</i>?) turbūt be problemų priima, kad meniu dažnai eina iš kairės į dešinę. Kaip tai suvokia aklieji? T.y. kaip jų modeliai susitvarko su tuo, kad meniu navigacija vykdoma &#8220;kairė/dešinė&#8221; mygtukais, o ne &#8220;viršus/apačia&#8221;, kai naudojamos ekrano skaityklės?</li>
<li>Pasidomėti: ar ARIA turi kokį nors &#8220;fokusuotos grupės&#8221; apibrėžimą, o ne vien tik &#8220;fokusuoto elemento&#8221;?</li>
<li>Pasidomėti: <i>accessibility</i> šiuo metu dažniausiai siejasi su pele ir klaviatūra, kaip įvesties įrenginiais &#8211; kokie modeliai naudojami kitiems įrenginiams?</li>
<li>Pasidomėti: ką HTML5 specifikacija sako apie <code>&lt;section/&gt;</code> <i>web application</i> kontekste?</li>
<li>Pasidomėti: klaviatūros greitųjų klavišų atrandamumas lankytojams su <em>normalia</em> rega</li>
</ul>
<h2><a href="http://twitter.com/jaffathecake">Jake Archibald</a> &#8211; Optimising where it hurts</h2>
<p><a href="http://ajaxian.com/archives/full-frontal-09-jake-archibald-on-performance-optimisation">Ajaxian santrauka</a>; <a href="http://www.jakearchibald.co.uk/jsperformance/">tyrimas ir skaidrės</a></p>
<ul>
<li>Ar jis čia skaidres varto su savo WII kontroleriu? Geras!</li>
<li>Niekada nenaudoti <code>eval()</code>, ypač <i>closure</i> viduje &#8211; tai iš esmės nužudo visas JS variklių (V8, TraceMonkey ir t.t.) optimizacijas, nes <code>eval()</code> gali nesunkiai pakeisti kintamųjų aprėptį (kaip išversti <i>scope</i>?)</li>
<li>Nenaudoti <i>closure</i> per dideliam gyliui, jeigu galima to išvengti</li>
<li><em>Niekada nenaudoti</em> eilučių sujungimo, kai jos rašomos į <code>innerHTML</code>, t.y. ne <code>el.innerHTML="&lt;div&gt;"+kint+"&lt;/div&gt;"</code>, o <code>var s="&lt;div&gt;"+kint+"&lt;/div&gt;"; el.innerHTML=s;</code></li>
<li>Vengti <code>window.onunload</code> naudojimo, nes nužudomas kešinimas (jQuery jau turi šią problemą &#8211; bet ketina išspręsti)</li>
<li>Švarus ir paprastas HTML, neturintis bereikalingų tagų, pats savaime paspartina selektorių darbą (nes reikia perfiltruoti mažesnį kiekį elementų). Žodžiu, rašyti didelį kiekį nesemantinio HTML (ar tai būtų nereikalingi <code>div</code>, ar <code>table</code>) yra blogai!</li>
<li>Kiekvienas turėtų pasimokyti pats rašyti vykdymo greičio testus (tik reikia nepamiršti apie &#8220;<a href="http://ejohn.org/blog/accuracy-of-javascript-time/">16ms problemą</a> JS&#8221;)</li>
<li>&#8220;Optimizuok ten kur skauda&#8221; iš tikro tereiškia &#8220;nebūk durnas&#8221; &#8211; visos diskusijos, apie tai kuris ciklas optimalesnis (<code>for</code> prieš <code>while</code>) yra bevertės (nes sutaupo 0.002 <em>mili</em>sekundės). Iš tikro reikia izoliuoti tą dalį, kuri veikia lėčiausiai, ir tvarkyti būtent ją. Vargti stengiantis rašyti &#8220;teisingą kodą&#8221; iš anksto yra beprasmiška &#8211; žinot istoriją su &#8220;priešlaikine optimizacija&#8221;, ar ne?</li>
</ul>
<h2><a href="http://simonwillison.net/">Simon Willison</a> &#8211; Beating server side engineers in their own game</h2>
<p><a href="http://ajaxian.com/archives/full-frontal-09-simon-willison-on-server-side-javascript-and-node-js">Ajaxian santrauka</a>; <a href="http://simonwillison.net/2009/Nov/23/node/">autoriaus santrauka</a></p>
<ul>
<li>Pasidomėti plačiau apie <a href="http://en.wikipedia.org/wiki/ECMAScript_for_XML">E4X</a></li>
<li>Mac&#8217;ų vartotojai elgiasi&#8230; kitaip. Tiesiog kitaip ir tiek.</li>
<li>Ar eitų NodeJS panaudoti kaip <i>unit testų</i> konsolę? Integruoti į <i>continuous build&#8217;us</i>?</li>
<li>JS nėra &#8220;strongly typed&#8221; kalba &#8211; tai natūraliai yra sunkiau dirbant komandoje. Pasidomėti: kaip tai galima spręsti</li>
<li><a href="http://nodejs.org/">NodeJS</a> ir <a href="http://couchdb.apache.org/">CouchDB</a> yra labai labai <i>seksi</i>! Kiekvienas turėtų pasidomėti kaip jie veikia, kaip optimizuoja procesus ir kokiais principais yra paremti!</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.d-b.lt/2009/11/uzrasai-is-fullfrontal-2009.rss2.xml</wfw:commentRss>
		<slash:comments>8</slash:comments>
<enclosure url="http://www.archive.org/download/FrontloadedAndZippedUp-FullFrontalJavascriptConference2009/FrontloadedAndZippedUp-FullFrontalConference2009.mp3" length="40572024" type="audio/mpeg" />
		</item>
		<item>
		<title>Kaip HTML5 įsisenėjusį skaudulį nuėmė</title>
		<link>http://www.d-b.lt/2009/07/kaip-html5-isisenejusi-skauduli-nueme.html</link>
		<comments>http://www.d-b.lt/2009/07/kaip-html5-isisenejusi-skauduli-nueme.html#comments</comments>
		<pubDate>Mon, 06 Jul 2009 23:13:14 +0000</pubDate>
		<dc:creator>Dominykas</dc:creator>
				<category><![CDATA[Be kategorijos]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[pavadinimai]]></category>
		<category><![CDATA[standartai]]></category>

		<guid isPermaLink="false">http://www.d-b.lt/?p=117</guid>
		<description><![CDATA[Jau kokius du su puse metų vis ruošiausi parašyti įrašą apie h1-h6 žymų naudojimą ir jų nepakankamumą. Gerai, kad tingėjau &#8211; dabar nebereikia net sukti dėl to galvos.
Antraščių problema HTML 4.01
HTML4 specifikacija apie h? antraštes kalba gana abstrakčiai. Jų esmė &#8211; pristatyti toliau einačios dokumento dalies turinį. Paminėta, kad h1 yra svarbiau negu h6, taipogi, [...]]]></description>
			<content:encoded><![CDATA[<p>Jau kokius du su puse metų vis ruošiausi parašyti įrašą apie <code>h1</code>-<code>h6</code> žymų naudojimą ir jų nepakankamumą. Gerai, kad tingėjau &#8211; dabar nebereikia net sukti dėl to galvos.</p>
<h2>Antraščių problema HTML 4.01</h2>
<p>HTML4 specifikacija <a href="http://www.w3.org/TR/html401/struct/global.html#h-7.5.5">apie <code>h?</code> antraštes</a> kalba gana abstrakčiai. Jų esmė &#8211; pristatyti toliau einačios dokumento dalies turinį. Paminėta, kad <code>h1</code> yra svarbiau negu <code>h6</code>, taipogi, kad iš to galima sukurti dokumento &#8220;apžvalgą&#8221; ar &#8220;turinio rodyklę&#8221;. Dar rašoma, kad &#8220;kai kurie žmonės&#8221; laiko, kad &#8220;peršokti&#8221; lygius (t.y. <code>h1 h3 h5</code>) yra neteisinga, tačiau neteikia jokių rekomendacijų šiuo klausimu.</p>
<p>Be jau paminėto komentaro pačioje specifikacijoje, toks aprašymas palieka begalybę kitų klausimų, kad ir pvz. kiek puslapyje gali būti <code>h1</code> žymų? Kaip atskirti skirtingą jų kontekstą? Viena iš SEO strategijų (kol robotai nebuvo to išmokę pažinti), buvo sukišti vos ne visą puslapio turinį į <code>h1</code>, taip raktažodžiams suteikiant papildomą vertę. Kita problema buvo, kad ir tai, kad pvz. dokumento skiltis skirta navigacijai (blog&#8217;o <i>sidebar</i>) taipogi buvo suskirstyta į dalis &#8211; tokiu atveju norėtųsi atskirti, kad <i>sidebar</i> poskyriai (pažymėti <code>h3</code>) nėra vienos iš įrašo pastraipų (pažymėtų <code>h2</code>) dalis.</p>
<h3>Interpretacija: <code>h1</code> yra svarbiausias ir vienintelis</h3>
<p><aside>Vis pamirštu, kad HTML4 reikia naudoti būtuoju laiku</aside></p>
<p>Negana to, mano asmeniniu požiūriu, puslapyje <del>derėtų</del> derėjo naudoti tik vieną <code>h1</code> tipo elementą (<a href="http://www.w3.org/TR/2008/NOTE-WCAG20-TECHS-20081211/H42">WCAG rekomendacija</a>) &#8211; tą, kuris daugiau mažiau sutaptų su puslapio pavadinimu, nurodytu <code>title</code>. Taigi titulinis eilinio blog&#8217;o puslapis atrodytų maždaug taip:</p>
<ul>
<li><code>h1</code>: blog&#8217;o pavadinimas
<ul>
<li><code>h2</code>: navigacija
<ul>
<li><code>h3</code>: <i>sidebar</i> skiltis</li>
<li><code>h3</code>: <i>sidebar</i> skiltis</li>
</ul>
</li>
<li><code>h2</code>: įrašas
<ul>
<li><code>h3</code>: įrašo pastraipa</li>
<li><code>h3</code>: įrašo pastraipa</li>
</ul>
</li>
<li><code>h2</code>: įrašas
<ul>
<li><code>h3</code>: įrašo pastraipa</li>
<li><code>h3</code>: įrašo pastraipa</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>Ką daryti kai antraštės &#8220;šokinėja&#8221;?</h3>
<p>Aukštesnis suskirstymas tinka tik pirmąjam puslapiui. Jeigu kalbame apie individualaus įrašo puslapio sužymėjimą, tai situacija lyg ir keistųsi &#8211; <em>blog&#8217;o pavadinimas jau nebėra <code>h1</code> svarbos</em>, nes svarbiausia antraštė tokiu atveju yra <em>įrašo</em> pavadinimas! Įrašo pastraipos taipogi turėtų kylti lygiu aukščiau &#8211; iki <code>h2</code>. Kas tokiu atveju atsitinka su <i>sidebar</i> skiltimis? Nežinau.</p>
<p>Taip iki galo ir neišsprendžiau tos problemos, nors ir labai norėjosi. Viena iš minčių buvo išvis atsisakyti pašalinės navigacijos. Lankytojų tai per daug nenuskriaustų &#8211; pagal mano duomenis didžioji dalis lankytojų iš Google patekę tiesiai į konkretų įrašą arba tiesiog išeidavo (aš gal rašyt nemoku?), arba po to keliaudavo į titulinį puslapį (o gal vistik moku?), o ne tiesiogiai į kitus įrašus.</p>
<h2>HTML5 dokumento skilčių apibrėžimai į pagalbą!</h2>
<p>Nepaisant to, kad iš aukščiau apibrėžtos problemos grafomanas išspaustų tris įrašus, o internetas pilnas <a href="http://www.h1debate.com/">nesibaigiančių diskusijų</a>, man tai nebėra aktualu! HTML5 apibrėžia dokumento skiltis &#8211; joms sužymėti galima naudoti <code>section</code>, <code>nav</code> ir <code>article</code> elementus (<code>aside</code> taipogi laikoma atskiru, susijusiu poskyriu). Visi šie elementai gali turėti savo antraštes ir paraštes (<code>header</code> ir <code>footer</code>). Tokiu atveju, kiekviena antraštė įgauna savo individualų kontekstą (<code>body</code> viduje esanti antraštė aprašo puslapį, gi tuo tarpu <code>article</code> viduje &#8211; tik tą įrašą) ir savo individualią hierarchiją.</p>
<p>Nepaisant to, kad specifikacijoje gana daug teksto yra skiriama <a href="http://dev.w3.org/html5/spec/Overview.html#outlines">rodyklės (<i>outline</i>) formavimo algoritmui</a>, paprastam blog&#8217;ui, o turbūt ir daugeliui kitų svetainių, tai yra neaktualu, nes antraščių hierarchija visada gaunasi elementari &#8211; praktiškai bet kurios dokumento dalies antraštės apsirašo tiesiog <code>&lt;header&gt;&lt;h1&gt; pavadinimas &lt;/h1&gt;&lt;/header&gt;</code>, t.y. <code>h1</code> šiuo atveju nebereiškia tiesiog &#8220;svarbiausia antraštė&#8221;, o interpretuotina kaip &#8220;svarbiausia antraštė šioje dokumento dalyje&#8221;. Naudojant tokią logiką, individualus įrašo puslapis jau nebeturi kitokio globalaus antraščių lygmenų išsidėstymo, nei sąrašuose &#8211; dabar aš drąsiai galiu savo įrašų poskilčius žymėti tiesiog <code>h2</code>.</p>
<h2>Desertas</h2>
<ul>
<li>HTML5 neberiboja antraščių gilumo (anksčiau buvo maks. 6) &#8211; nors ir nelabai žinau kam to gali prireikti</li>
<li><code>hgroup</code> elementas leidžia grupuoti antraštes su paantraštėm, kaip pvz. aš esu padaręs su blog&#8217;o pavadinimu &#8211; <i>View source</i> naudoti mokat?</li>
<li><a href="http://www.w3.org/TR/wai-aria/#banner">ARIA <code>banner</code> rolė</a> leidžia atskirti &#8220;svetainės&#8221; ir &#8220;dokumento&#8221; pavadinimus &#8211; apie ARIA apskritai dar reiktų daugiau man pasiskaityti&#8230;</li>
</ul>
<h2>Papildomas skaitymas</h2>
<ul>
<li><a href="http://blog.whatwg.org/this-week-in-html-5-episode-32#hgroup">Introducing the <code>&lt;hgroup&gt;</code> element</a></li>
<li><a href="http://www.brucelawson.co.uk/2009/headings-in-html-5-and-accessibility/">Headings in HTML 5 and accessibility</a></li>
<li><a href="http://www.youtube.com/watch?v=GIn5qJKU8VM">More than one H1 on a page: good or bad?</a></li>
</ul>
<p>PS neturiu laiko ieškoti, bet gal kas turit pasiūlymą, kaip WordPress priversti nedėti <code>aside</code> į <code>p</code>?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-b.lt/2009/07/kaip-html5-isisenejusi-skauduli-nueme.rss2.xml</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5: naudoti negalima laukti</title>
		<link>http://www.d-b.lt/2009/07/html5-naudoti-negalima-laukti.html</link>
		<comments>http://www.d-b.lt/2009/07/html5-naudoti-negalima-laukti.html#comments</comments>
		<pubDate>Sun, 05 Jul 2009 21:15:33 +0000</pubDate>
		<dc:creator>Dominykas</dc:creator>
				<category><![CDATA[Tinklo kūrimas]]></category>
		<category><![CDATA[eksperimentai]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[html5 mitai]]></category>
		<category><![CDATA[semantinis tinklas]]></category>
		<category><![CDATA[standartai]]></category>

		<guid isPermaLink="false">http://www.d-b.lt/?p=96</guid>
		<description><![CDATA[Jau kuris laikas pavydėjau Bruce Lawson, kad jis paėmė ir sužymėjo savo blog&#8217;ą HTML5. Kentėjau, tingėjau ir atidėliojau, kol va pagaliau šį savaitgalį paėmiau ir pasidariau tai pats. Tiesa, ne iki galo ir ne visai taip kaip norėjau, bet hell &#8211; HTML5 galima privaloma, bent dalinai, naudoti jau šiandien.

Struktūriniai elementai veikia puikiai
Naujieji elementai (header, footer, [...]]]></description>
			<content:encoded><![CDATA[<p>Jau kuris laikas pavydėjau Bruce Lawson, kad jis paėmė ir <a href="http://www.brucelawson.co.uk/2009/redesigning-with-html-5-wai-aria/">sužymėjo savo blog&#8217;ą HTML5</a>. Kentėjau, tingėjau ir atidėliojau, kol va pagaliau šį savaitgalį paėmiau ir pasidariau tai pats. Tiesa, ne iki galo ir ne visai taip kaip norėjau, bet hell &#8211; HTML5 <del>galima</del> privaloma, bent dalinai, naudoti jau šiandien.</p>
<p style="text-align:center;"><img src="http://www.d-b.lt/uploads/2009/07/html5.png" alt="HTML5 struktūra" title="HTML5 struktūra" width="450" height="189" class="aligncenter size-full wp-image-103" style="border: 1px solid #000;" /></p>
<h2>Struktūriniai elementai veikia puikiai</h2>
<p><a href="http://www.w3.org/TR/html5-diff/">Naujieji elementai</a> (<code>header</code>, <code>footer</code>, <code>time</code>, etc) veikia (beveik) puikiai. Nėra nei vienos rimtos priežasties, kodėl reiktų delsti su jų naudojimu. Vienintelė išimtis (kurios aš net nesistengiau išspręsti) &#8211; Firefox 2. IE šeimos naršyklės taipogi nenori pripažinti naujų žymų ir pritaikyti joms stilių, tačiau tai nesunkiai <a href="http://html5doctor.com/how-to-get-html5-working-in-ie-and-firefox-2/">išsprendžiama Javascript pagalba</a>. Jeigu vien Javascript sprendimas netenkina (<i>unobtrussive, progressive enhancement, etc</i>) &#8211; visada galima naudoti tarpinį sprendimą &#8211; naudoti naujas HTML5 žymas semantikai, o stiliams prikaišioti <code>div</code>&#8216;ų.</p>
<p>Be viso šito, perrašydamas savo blog&#8217;o HTML, nesusidūriau su jokiom problemom, išskyrus <code>header</code> ir <code>h1</code> semantinėm reikšmėm, bet tai yra verta atskiro įrašo. Dar turėjau šiek tiek dvejonių dėl <code>section</code> naudojimo, tačiau priėjau išvados, kad geriau šiandien eksperimentuoti, o rytoj padaryti teisingai &#8211; be klaidų progreso nebus.</p>
<h2>Formos elementų tipus naudoti galima</h2>
<p>Aš pats nenaudojau naujų formų elementų tipų (<code>type=email</code>, <code>type=url</code>), tačiau kai tik turėsiu daugiau laiko paeksperimentuoti &#8211; naudosiu ir juos. Kol kas juos palaiko tik <a href="http://www.opera.com/">Opera naršyklė</a>, tačiau kitos netruks prisivyti, o tos kurios jų nepalaiko &#8211; atvaizduos laukus tiesiog kaip <code>type=text</code> &#8211; <a href="http://people.opera.com/brucel/demo/html5-forms-demo.html">demo</a>. Vėlgi &#8211; truputėlis JS šen bei ten, truputėlis CSS ir ateitis bus šiandien.</p>
<h2><code>canvas</code>, <code>video</code> ir <code>audio</code> palaikymas</h2>
<p>Na, šitie trys žvėrys man šį savaitgalį, ir juo labiau eiliniam blog&#8217;ui, buvo visai neaktualūs, tačiau jie jau veikia bent dalyje naršyklių.</p>
<p>Turint omeny, kad iš dalies HTML5 yra kuriamas kaip standartas, dokumentuojantis jau egzistuojančią tinklo ir naršyklių būklę, tai <code>canvas</code> yra tas dalykas, kuris turi mažiausiai palaikymo problemų (neskaitant vienos, ghkhmz, naršyklės). <a href="http://ajaxian.com/">Ajaxian</a> vos ne kas antrą dieną paskelbią kokį nors naują demo su <code>canvas</code>. <a href="http://www.nihilogic.dk/labs/mario/mario_small_music.htm">Super Mario</a> žaidimas &#8211; sukurtas prieš daugiau nei metus! Aš ir pats dar užpernai naudojau vieną iš jQuery pluginų grafikų paišymui.</p>
<p>Su <code>video</code> problemos yra kur kas didesnės. Kas nors dar atsimenat, kaip prieš daug daug metų tekdavo vargti ieškant codec packų? Internete tai būtų visos &#8220;video be pluginų (skaityti: Flash)&#8221; idėjos žudikas. Safari palaiko Quick Time, Opera 10 ir Firefox &#8211; OGG Vorbis ir Theora, Chrome &#8211; OGG ir H.264, ir nei vieni, nei kiti neketina pasiduoti.</p>
<p>Kodekų problema yra iš esmės tai, kad dauguma jų yra uždari, apsaugoti patentų ir brangiai kainuoja. Tie, kurie yra atviri &#8211; netenkina kokybės reikalavimų (Google, kaip didžiausias video turinio teikėjas, nenori naudoti OGG, nes na interneto srautas yra brangus dalykas).</p>
<h2>Ateitis</h2>
<p>Kadangi <a href="http://www.w3.org/News/2009#item119">XHTML2 mirė</a>, tai HTML5 lieka vienintelis ateities standardas. Ir jis nors ir nėra tobulas, tačiau panašu, kad neketina sugriauti egzistuojančio interneto. Naršyklės pradeda jį po truputį palaikyti, tinklo kūrėjai taipogi jau turi galimybę juo naudotis. Kartais atrodo, kad jis gal ir nėra reikalingas &#8211; juk internetas veikia ir dabar, tačiau tikrasis postūmis bus tada, kai paieškos robotukai pradės labiau gerbti semantinį tinklą. Tai nutiks tik tuo atveju, jeigu HTML5 bus naudojamas jau dabar &#8211; nereikia laukti galutinės W3C rekomendacijos (juk ji bus tik tada, kai bus 2 pilnai įgyventintos realizacijos).</p>
<h2>Šaltiniai ir tolesnis skaitymas</h2>
<ul>
<li><a href="http://html5doctor.com/">HTML5 doctor</a></li>
<li><a href="http://remysharp.com/2009/01/07/html5-enabling-script/">HTML5 enabling script</a></li>
<li><a href="http://www.sitepoint.com/article/html-5-snapshot-2009/">Yes, You Can Use HTML 5 Today!</a></li>
<li><a href="http://blog.whatwg.org/">HTML5 darbo grupės blog&#8217;as</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.d-b.lt/2009/07/html5-naudoti-negalima-laukti.rss2.xml</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>hasFocus ir activeElement už 400 baitų</title>
		<link>http://www.d-b.lt/2009/03/hasfocus-ir-activeelement-uz-400-baitu.html</link>
		<comments>http://www.d-b.lt/2009/03/hasfocus-ir-activeelement-uz-400-baitu.html#comments</comments>
		<pubDate>Sat, 07 Mar 2009 19:42:16 +0000</pubDate>
		<dc:creator>Dominykas</dc:creator>
				<category><![CDATA[Tinklo kūrimas]]></category>
		<category><![CDATA[eksperimentai]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[kodas]]></category>
		<category><![CDATA[užknisantys dalykai internete]]></category>

		<guid isPermaLink="false">http://www.d-b.lt/2009/03/hasfocus-ir-activeelement-uz-400-baitu.html</guid>
		<description><![CDATA[Vienas labiausiai internete užknisančių dalykų yra tai, kad kai kurios svetainės visiškai manęs negerbdamos paima ir perrašo įvesties laukų turinį tada kai aš jau ten bandau kažką rašyti. Ši situacija kyla iš to, kad nėra paprasto būdo nustatyti ar (ir kuris) HTML elementas yra fokusuotas ar ne. Internet Exploreris jau senokai turi document.activeElement, bet kas [...]]]></description>
			<content:encoded><![CDATA[<p>Vienas labiausiai internete užknisančių dalykų yra tai, kad kai kurios svetainės visiškai manęs negerbdamos paima ir perrašo įvesties laukų turinį tada kai aš jau ten bandau kažką rašyti. Ši situacija kyla iš to, kad nėra paprasto būdo nustatyti ar (ir kuris) HTML elementas yra fokusuotas ar ne. Internet Exploreris jau senokai turi <code>document.activeElement</code>, bet kas iš to, jeigu tai negalioja kitoms naršyklėms. HTML5 specifikacijoje yra standartizuotos abi -<code>element.hasFocus</code> ir <code>document.activeElement</code> galimybės, tačiau ką daryti šiandien? <a href="http://www.d-b.lt/2009/03/hasfocus-ir-activeelement-uz-400-baitu.html#galutinis-sprendimas-20090307">Tingiu skaityti &#8211; duok galutinį sprendimą</a>.</p>
<p>Aprašytos problemos sprendimo algoritmas yra gana paprastas &#8211; prikabinti <dfn title="event handler">įvykių gaudytojus</dfn> prie reikalingų elementų ir pačiam nustatyti reikalingus parametrus. Tačiau jeigu nesusimąstytume &#8211; greitas ir paprastas įgyvendimas turėtų kelias problemas.</p>
<h2>Sprendimo problemos</h2>
<p>Pavyzdys: krauname puslapį, jame yra paieškos laukas, kurio viduje yra tekstas &#8220;Paieška&#8221;. Fokusuojant lauką tas tekstas turi pradingti. Be abejo, pats &#8220;standartinio teksto&#8221; <i>patternas</i> yra jau savaime nelabai geras, tačiau kartais be jo tiesiog neįmanoma išsiversti. Taigi, turime du variantus: a) tekstą įrašyti lauke iš anksto (<code>input value="Paieška"</code>), fokusuojant jį ištrinti; b) palikti tuščią lauką, ir užkrovus puslapį tą tekstą įrašyti. Pirmu atveju turime semantikos problemą, o taipogi jis nėra <dfn title="unobtrusive">netrukdantis</dfn>, t.y. tam, kad naudotis lauku, reikalingas įjungtas Javascript. Taip pat, abiem atvejais, neįdėjus papildomų pastangų, perrašymas gali įvykti jau po to kai vartotojas fokusuoja lauką (pvz. dėl lėtai kraunamų Javascript bibliotekų arba IE6 paspaudus <i>refresh</i>, kai kursorius yra viename iš laukų).</p>
<p>Konkrečiam pavyzdžiui yra dar ir trečiasis variantas &#8211; naudoti <code>onfocus</code> ir <code>onblur</code> atributus ir Javascript rašyti tiesiog HTML viduje (<i>inline Javascript</i>), tačiau šis būdas tinkamas tik tuo atveju, jeigu nesilaikote <dfn title="HTML - markup">sužymėjimo</dfn> ir <dfn title="Javascript - behaviour">elgsenos</dfn> atskyrimo principo. Be to, jis apkrauna kiekvieną siunčiamą puslapį papildomu kodu, kas nėra pageidautina, ypač jeigu tokių laukų yra ne vienas. Na ir aišku, jis neišsprendžia pagrindės šio įrašo problemos &#8211; <code>hasFocus</code> &#8211; vieningu, paprastu, universaliu būdu.</p>
<h3>Kodo kiekis ir geriausios praktikos</h3>
<p>Akivaizdu, kad <code>hasFocus</code> simuliavimui reikės kiekviename puslapyje įtraukti gabaliuką Javascript, kuris priešingai negu geriausios praktikos rekomendacijos, turės būti įvykdomas dar prieš galutiniai &#8220;nupiešiant&#8221; puslapį, t.y. <code>&lt;head&gt;</code> viduje. Tai reiškia, kad pats kodas turi būti minimalus &#8211; tiek instrukcijų kiekiu, tiek savo apimtimi, nes kiekvienas persiųstas baitas ir vykdymas <a href="http://glinden.blogspot.com/2006/11/marissa-mayer-at-web-20.html">kainuoja vertingas milisekundes</a> (<a href="http://home.blarg.net/~glinden/StanfordDataMining.2006-11-29.ppt">prezentacija</a>).</p>
<h3>Įvykių burbuliavimas</h3>
<p>Su ankstesniu reikalavimu atsiranda ir kitas &#8211; neturime galimybės įvykių gaudyti kiekvienam elementui individualiai. Net jeigu tai ir nebūtų idelaus sprendimas vien dėl apkrovimo priežasčių, tie elementai dar paprasčiausiai neegzistuoja dokumente. Taigi turime rinktis <a href="http://code.google.com/p/reglib/">reglib</a> požiūrį &#8211; prikabinti savo funkcijas prie viso dokumento ir jų viduje nustatinėti elementą, kuriame viskas vyksta. Šioje vietoje derėtų paminėti, kad remiantis standartais, <code>focus</code> ir <code>blur</code> įvykiai neburbuliuoja į viršų, t.y. tėvinis elementas teoriškai neturėtų žinoti, kad jo vaikuose vyksta būtent šie įvykiai.</p>
<h3>Naršyklių skirtumai</h3>
<p>Skirtingos naršyklės <i>eventus</i> gaudo skirtingais būdais, taipogi naudoja skirtingą metodiką perduoti susiijusius elementus. Tradiciškai ši problema buvo sprendžiama vykdant skirtingas kodo šakas skirtingoms naršyklėms, tai nustant pagal <code>user-agent</code> eilutę. Tokia metodika yra žalinga ir nėra amžina. Pastaruoju metu tiek jQuery, tiek kitos bibliotekos perėjo prie efektyvesnio būdo &#8211; tikrinti ar egzistuoja tam tikros galimybės, o ne tikrinti ar lankytojas naudoja konkrečią naršyklę. <i>Feature sniffing</i> taipogi yra reikalavimas šiai užduočiai.</p>
<h2>Sprendimas pažingsniui</h2>
<ol>
<li>Nusistatom įvykių gaudymo funkciją (<i>f</i>) &#8211; IE naudoja <code>attachEvent</code>, padorios naršyklės &#8211; <code>addEventListener</code>.
<li>Nusistatom įvykių vardus (<i>n</i>). <code>focus</code> ir <code>blur</code> kaip minėjau neturėtų burbuliuoti į viršų, todėl su IE reikia naudoti <code>onfocusin</code> ir <code>onfocusout</code>. Šia tema <a href="http://www.quirksmode.org/dom/events/blurfocus.html">galima pasiskaityti ir daugiau</a>, tačiau šiam sprendimui šito užtenka.</li>
<li>Pagrindinė fokuso nustatymo funkcija (<i>s</i>) ima du parametrus &#8211; pirmas nurodo ar fokusą įjungti, ar atjungti, antrasis gi nurodo elementą.</li>
<li>Neesu įsitikinęs, kad čia pats taupiausias variantas, tačiau įdedame dvi funkcijas &#8211; viena gaudo <code>focus</code> (<i>i</i>), kita <code>blur</code> (<i>o</i>), ir kviečia pagrindinę funkciją.</li>
<li>Viską sukišame į <code>closure</code> ir sutrumpinę iki minimumo pagaliau prisegame įvykius &#8211; <code>d[f](n[0],i,true);</code>.</li>
</ol>
<h2 id="galutinis-sprendimas-20090307">Galutinis sprendimas</h2>
<pre>
(function() {
    var d = document,
	s = function(h, t) {
		if (t.tagName) {
			t.hasFocus=h;
			if (a) document.activeElement=t;
		}
	},
	i = function(e) {
		s(true, e.target || e.srcElement); },
	o = function(e) {
		s(false, e.target || e.srcElement); },
	f = d.addEventListener ?
		"addEventListener" : "attachEvent",
	n = typeof d.onfocusin=="object" ?
		['onfocusin','onfocusout'] : ['focus','blur'],
	a = typeof document.activeElement=="object" ?
		false : true;

	d[f](n[0],i,true); d[f](n[1],o,true);
})();
</pre>
<p>Panaikinus bereikalingus tarpus ir <a href="http://developer.yahoo.com/yui/compressor/">suspaudus viską į vieną eilutę</a>, šis sprendimas užimtų vos daugiau nei 400 baitų &#8211; pakankamai maža kaina už funkcionalumą. Jeigu netyčia nepalikau kokios klaidos kur nors &#8211; viskas turėtų veikti su IE6/7, FF2/3, Opera 9.6 ir Safari 3.x.</p>
<p>Taipogi galite pasižiūrėti <a href="http://code.dominykas.com/js/hasFocus.html">veikiančią demonstraciją</a>. Po dviejų sekundžių nuo užkrovimo gausite iššokantį langą, kuriame bus surašyta kas turi fokusą.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-b.lt/2009/03/hasfocus-ir-activeelement-uz-400-baitu.rss2.xml</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Paranoja: HTML5</title>
		<link>http://www.d-b.lt/2008/02/paranoja-html5.html</link>
		<comments>http://www.d-b.lt/2008/02/paranoja-html5.html#comments</comments>
		<pubDate>Tue, 05 Feb 2008 19:52:09 +0000</pubDate>
		<dc:creator>Dominykas</dc:creator>
				<category><![CDATA[Tinklo kūrimas]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[paranoja]]></category>
		<category><![CDATA[standartai]]></category>

		<guid isPermaLink="false">http://www.d-b.lt/2008/02/paranoja-html5.html</guid>
		<description><![CDATA[Vakar pagaliau prisiverčiau atidžiai perskaityti prieš kelias savaites paskelbto HTML5 juodraščio skyrių apie skirtumus nuo HTML4. Skaičiau ir norėjau verkti. Kažko pastaruoju metu dažnai taip nutinka skaitant ką nors apie technologijas &#8211; matyt ištižėlis pasidariau&#8230; Arba tiesiog trūksta atostogų.
O dėl verkimo, tai jis turi kelias labai konkrečias priežastis:

Džiaugsmas, dėl tobulėjimo, naujų galimybių, semantiškumo;
Nusivylimas, kad tai [...]]]></description>
			<content:encoded><![CDATA[<p>Vakar pagaliau prisiverčiau atidžiai perskaityti prieš kelias savaites paskelbto HTML5 juodraščio skyrių apie <a href="http://www.w3.org/html/wg/html5/diff/">skirtumus nuo HTML4</a>. Skaičiau ir norėjau verkti. Kažko pastaruoju metu <a href="http://www.d-b.lt/2008/01/kas-kaltas.html">dažnai taip nutinka</a> skaitant ką nors apie technologijas &#8211; matyt ištižėlis pasidariau&#8230; Arba tiesiog <a href="http://www.visitmalta.com/">trūksta atostogų</a>.</p>
<p>O dėl verkimo, tai jis turi kelias labai konkrečias priežastis:</p>
<ul>
<li><strong>Džiaugsmas</strong>, dėl tobulėjimo, naujų galimybių, semantiškumo;</li>
<li><strong>Nusivylimas</strong>, kad tai kas aprašyta specifikacijoje, turėsime (su implementacija) tik po, geriausiu atveju, penkių, jeigu ne penkiasdešimties, metų;</li>
<li><strong>Pyktis</strong> su klausimu &#8220;koks idiotas sugalvojo, kad tai yra reikalinga&#8221;;</li>
<li><strong>Tragiška panika</strong>, kad naujasis HTML5 suteiks galimybę Microsoft padaryti dar daugiau klaidų Internet Exploreryje&#8230;.</li>
</ul>
<h2>Žingsnis į priekį</h2>
<p><a href="http://www.ibm.com/developerworks/library/x-html5/">Pirmą kartą skaitydamas</a> apie tuos skirtumus atkreipiau dėmesį tik į naujus elementus. Labiausiai džiaugiuosi struktūriniais <code>&lt;section&gt;, &lt;article&gt;, &lt;header&gt;, &lt;footer&gt;, &lt;aside&gt;</code> elementais &#8211; jie bus <strong>labai naudingi SEO požiūriu</strong>. Didžioji dalis kitų naujų tag&#8217;ų taipogi nėra blogi iš esmės &#8211; jie visi turi savo pritaikymą.</p>
<h2>Du žingsniai atgal</h2>
<p>Na, dėl žengimo atgal gal per daug griežtai pasakyta, tačiau kai kurie dalykai atrodo mažų mažiausiai keisti. Labiausiai mane <strong>neramina esminiai pasikeitimai formose</strong>. Aš tikrai nepeikiu tų idėjų, netgi atvirkščiai &#8211; džiaugiuosi jomis, tačiau didysis klausimas yra <strong>ar šioms naujovėms vieta HTML standarte</strong>?</p>
<p>Nepaisant to, kad <code>&lt;input&gt;</code> elemento tipas <code>datetime</code> yra tikrai reikalingas, tereikia tinkamai apibrėžti siuntimo standartus į serverį (nes atvaizdavimo formatas skirtingas priklausomai nuo vartotojo lokalės), jis sukelia <strong>neigiamą postūmį tinklo kūrėjams</strong>.</p>
<h2>HTML mokymosi kreivė</h2>
<p>Daugiau nei pusė &#8220;PHP programuotojų&#8221;, kurie ateidavo pas mane į pokalbius dėl darbo, nežinojo arba <strong>nesugebėdavo apibrėžti kas yra &#8220;SQL injection&#8221;</strong>. Natūralus klausimas yra ar tie programuotojai suvoks kad <code>email</code> lauke įvestus duomenis reikia vistiek tikrinti ir server-side? Nemanau. Be abejo, galimi kažkokie priverstiniai sprendimai, kad ir reikalavimas kartu su siunčiama forma perduoti metaduomenis apie laukų tipus. juos automatiškai patikrintų, kad ir tas pats PHP &#8211; tačiau tam gali prireikti ir pakeitimų HTTP standarte &#8211; kas sukuria tik <strong>dar didesnį sniego kamuolį</strong>, besiritantį žemyn nuo kalno.</p>
<p>Be abejo, galimas kontra-argumentas yra tai, kad <strong>svetaines turėtų kurti profesionalai</strong>, bet juk HTML visada buvo standartas, kurio mokymosi kreivė nėra labai stati, be to idėja prieštarauja <i>user-generated content</i> principui. Kažkada žaidžiant žaidimus, teko susidurti su penkiasdešitmetėmis mamytėmis, kurios prižiūrėdamus vaikus, be didelio vargo tvarkydavo savo sritį žaidėjų aliansų svetainėse. Profesionalūs programuotojai jau beveik išmoko <strong>&#8220;teisingo HTML&#8221; taisykles</strong> &#8211; tačiau didžioji dauguma žmonių, kuriems teks susidurti su tuo, <strong>niekada nevargs dėl jų</strong>, bet puslapius tvarkyti norės. Tokie žmonės visada galvos <q>&#8220;Štai įdedu čia <code>number</code> lauką ir jis automatiškai išsisaugo duomenų bazėje &#8211; puiku! Paprasta! Dabar pradėsiu profesionalią tinklo kūrėjo karjerą!&#8221;</q></p>
<h2>Daugiau medžių</h2>
<p>HTML5 specifikacija gan neblogai atspindi tam tikras Web 2.0 tendencijas, o ypač &#8211; AJAX paplitimą. Tai ryškiai matosi iš tokių naujų atributų kaip <code>contenteditable, contextmenu, draggable, ping</code> ar elementų <code>&lt;menu&gt;, &lt;progress&gt;</code>. Vėlgi &#8211; beprotiškai džiaugiuosi didžiąją jų dalimi. Kasdieniame darbe ne kartą apie juos teko pasvajoti (tol kol nepradėjau žaisti su <a href="http://code.google.com/webtoolkit/">GWT</a> &#8211; JavaScript nėra pati dėkingiausia programavimo kalba).</p>
<p>Tačiau <strong>ar tikrai HTML yra ta kalba, kuria derėtų aprašinėti turinio <em>valdymo</em> sistemas</strong>? Kiek pamenu, HTML buvo sukurta tam, kad sužymėti hiper-tekstą &#8211; tai yra dokumentą su išorinėmis nuorodomis. Evoliucija link semantiško HTML yra natūrali. Tačiau realybėje tinklas išsiplėtė ir &#8220;interneto svetainė&#8221;, dabar gali reikšti ir &#8220;tinkle veikiantis programinis paketas&#8221; (think: Google Apps). Lyg ir nebūtų problemos tame, tačiau tą evoliuciją griauna esminis rudimentas:</p>
<blockquote><p>To keep the authoring language relatively simple <strong>for authors</strong> several elements and attributes <strong>are not included</strong> &lt;..&gt; <strong>User agents</strong>, however, will always <strong>have to support</strong> these older elements.</p>
</blockquote>
<p>Ši frazė iš esmės reiškia, kad kūrėjas neturi teisės naudoti tam tikrų senų elementų, bet naršyklės privalo juos palaikyti. Sakyčiau visiškas absurdas. Panašiai kaip ir su greičio limitais. Mieste lyg ir 50km/h, bet Vilniuje visi važiuoja 70km/h ar greičiau. Tai kur gi dingo ta aktyviai W3C propaguojama semantika? Iš vienos pusės jie nori suteikti kuo daugiau lankstumo, tačiau tuo <strong>sukelia absoliutų chaosą</strong> savo diegiamoje tvarkoje. Iš vienos pusės jie skatina naudoti CSS turinio formatavimui, tačiau iš kitos &#8211; bando palikti meniu iš &#8220;tipinio interfeiso&#8221;. Tiesa, neįsivaizduoju kaip galima būtų su CSS aprašyti iššokantį kalendorių (kurį sukuria naršyklė, pagal OS standartus). Nors&#8230; ne bėda juk. &lt;SELECT&gt;&#8217;ų po IE neina formatuoti &#8211; matyt teks gyventi šiame pragare ir toliau&#8230;</p>
<h2>Šaunam į kiškius</h2>
<p>Kaip ten bebūtų &#8211; pagrindinė <strong>W3C problema kuriant HTML5 yra siekimas patenkinti visus</strong>. Tiek naršyklių kūrėjus, tiek tinklo kūrėjus. Tiek patyrusius HTML ekspertus, tiek entuziastiškus mėgėjus. O juk jie galėtų atsižvelgti į vieną elementarią usability taisyklę &#8211; ekspertai nepyksta, kai dalykai yra pritaikyti <del>kvailesniems</del> mažiau patyrusiems už juos ir todėl yra nesudėtingi.</p>
<p>Juk galima vos vos pataisyti esamą HTML standartą, iš jo pašalinant kelis &#8220;per sudėtingus&#8221; elementus bei neįtraukiant naujovių ir publikuoti tai kaip <i>HTML5 basic</i>. O visus sudėtinguosius dalykus perkelti į <i>HTML5 strict</i> standartą, kuriame vertinimas būtų daug griežtesnis. Panašiai jau yra padaryta su HTML4, tačiau svarbiausias dalykas kurio reikia &#8211; norint naudoti pažangius dalykus, privalu naudoti <em>strict</em> standartą. Tai yra, mamytė kovinio alianso žaidime vadovė ir toliau gali naudoti paprastą HTML, o komanda, kurianti corporate level web programą būtų <strong>priversta <em>pilnai</em> laikytis standartų, nes kitaip aplikacija neveiktų išvis</strong>.</p>
<p>Labiausiai paguodžiantis, tačiau tuo pačiu virkdantis dalykas visame dokumente yra ši eilutė:</p>
<blockquote><p>The HTML 5 specification will not be considered finished before there are at least two complete implementations of the specification.</p>
</blockquote>
<p>Paguodžia todėl, kad jeigu Microsoft nesugebės to įdiegti 19.5 IE versijoje be klaidų &#8211; jie atsiliks. Virkdo dėl dviejų priežasčių. Pirma &#8211; Microsoft pasakys, kad standartas yra tai, kaip klaidos veikia 19.5 IE versijoje, o antra &#8211; tinklo kūrėjai pirmo žingsnio diegiant standartus negalės žengti, o naršyklių kūrėjai gali gerokai užtrukti priiminėdami sprendimus, nes visi kabės ore dėl galimų pasikeitimų standarto specifikacijoje.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-b.lt/2008/02/paranoja-html5.rss2.xml</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
