Zend’s PHP 5 Coding Contest - více praxe, méně teorie
Na Interval.cz vyšel můj článek Zend’s PHP 5 Coding Contest - trochu méně teorie a více praxe, který popisuje hned 6 užitečných aplikací z této soutěže.
Co si musíte koupit pro sebe na Vánoce 2004?

Vánoce jsou svátky klidu, pohody a blahobytu, a na Vánoce se lidé mají jaksi více rádi a jsou snad i více spokojeni. Abych byl i já spokojen s tím, co na Vánoce dostanu, pravidelně kupuji na Vánoce dárky nejen pro své bližší, ale i pro sebe. Je tak zcela jisté, že dostanu přesně to, co chci, a dokonce i něco navíc. :-)
Co si koupit pro sebe (a stojí to pár korun)?
Předmět | K čemu to je | Cena |
---|---|---|
Beyerdynamic DT 331 sluchátka | fantastická sluchátka pro celodenní poslech, mimořádná HiFi kvalita zvuku, 20 - 20,000 Hz rozsah, bezkonkurenční pro HiFi poslech i pro počítač, cokoliv jiného je jen kompromis (ať už levná sluchátka, tak ještě horší 5/7+1 levné sety) | 2,600 Kč |
Bluetrek G2 Bluetooth handsfree | Bluetooth sluchátko k Vašemu telefonu s naprosto skvělou kvalitou zvuku a příjmem, používat dnes telefon bez BT sluchátka je zastaralé a nemoderní, až poprvé vyzkoušíte volat s oběma rukama volnýma, pochopíte, jaká je to obrovská výhoda a nebudete chtít nikdy jinak! | 1,990 Kč |
SoundBlaster Audigy2 ZS Platinum zvuková karta | špičková zvuková karta do Vašeho PC s mimořádnou kvalitou zvuku, pokud máte špičková sluchátka Beyerdynamic DT 331, potřebujete i špičkovou zvukovou kartu, rozdíl je neuvěřitelný! | 4,300 Kč |
Siemens SX1 chytrý telefon | přestože je tento telefon s operačním systémem Symbian již rok starý, nic lepšího (snad kromě Nokie 6630) dosud neexistuje, podpora pro tisíce programů a skvělá ergonomie telefonu a klávesnice Vás rozhodně zaujme | 7,000 Kč |
FujiFilm FinePix S5500 Zoom digitální fotoaparát + 128MB karta + akumulátorky | FujiFilm S5500 je digitální zdcadlovka s 4Mpx a desetinásobným optickým zoomem špičkové kvality, a za vynikající cenu, má výborné a profesionální tělo, výborný objektiv, a konkuruje tak aparátům Canon a Nicon a třídu výše | 12,200 Kč |
Logitech Cordless Desktop LX700 CZ bezdrátová klávesnice a myš | tento set Logitechu je bezkonkurenčně nejlepší myší a klávesnici, nikdo se k němu ani zdálky nepřibližuje (ani Microsoft, a už vůbec ne výrobci jako Genius, Chicony či jiní), Vaše produktivita několikrát stoupne díky dokonalé této klávesnici a myši | 3,000 Kč |
Braun HC50 zastřihávač vlasů | pokud preferujete vlasy a vousy dlouhé přesně 3 mm, tak jako já, je tento zastřihávač tím nejlepším možným | 2,150 Kč |
NAVRCHOLU.cz a TOPLIST.cz - nové verze měřících kódů
Přepsal jsem kód pro NAVRCHOLU.cz a TOPLIST.cz tak, aby byl kompatibilní se všemi browsery, a zlepšil podporu pro MSIE. Problém, vypozorovaný v reálu, byl v tom, že Opera i Firefox / Mozilla, když se pomocí DOM JavaScriptu změní src
u tagu img
, tak načtou až tento nový obrázek (protože obrázky načítají v application/xhtml+xml
až po proběhnutí DOM skriptů), kdežto MSIE jej načítá dvakrát, poprvé s URL (src
) původním, a podruhé s URL změněným DOM skriptem, po dokončení načtení stránky.
Tak jsem obrázek z XHTML kódu úplně vydělal, a tvoří se pomocí appendChild(createNewEle('img'))
, s tím, že statistika je teď přesná ve všech browserech (ale načítá se pochopitelně až po natažení celé stránky i v MSIE).
Kód pro navrcholu.js
// (c) Radek HULAN, http://hulan.cz/ // This work is licensed under the Creative Commons Attribution License. // // NAVRCHOLU.cz statistics that works under XHTML 1.1 served with // MIME type application/xhtml+xml as well as text/html MIME type. // helper functions var isXHTML; function createNewEle(ele){ if(isXHTML) return document.createElementNS('http://www.w3.org/1999/xhtml', ele); else return document.createElement(ele); }; // navrcholu.cz code function navrcholu(){ var ele=document.getElementById('navrcholu'); if (!ele) return; isXHTML=/html\:/.test(document.getElementsByTagName('body')[0].nodeName); // navrcholu.cz id from title var id=parseInt(ele.getAttribute('title')); if (!id) alert('TITLE attribute does not contain your NAVRCHOLU.cz ID!'); // some variables var n=navigator; var p=document; var c,t,b,j,m,r,y,d,x,w; d=x=w=j=0; // detect flash plugin in MSIE if(n.appVersion.indexOf("MSIE")>=0 && n.appVersion.indexOf("Win")>=0 && n.userAgent.indexOf("Opera")<0) { p.writeln(""); p.writeln("on error resume next"); p.writeln("For i=7 to 4 Step -1"); p.writeln(" If IsObject(CreateObject(\"ShockwaveFlash.ShockwaveFlash.\" & i)) Then"); p.writeln(" n3f8q=i"); p.writeln(" Exit For"); p.writeln(" End If"); p.writeln("Next"); p.writeln(""); } else eval("var n3f8q=0"); // detect flash in other browsers if( n.plugins && n.plugins["Shockwave Flash"]){ t=n.plugins["Shockwave Flash"].description; n3f8q=parseInt(t.charAt(t.indexOf(".")-1)); } // get other vars m=(n.userAgent.substring(0,8)=="Mozilla/") ? n.userAgent.substring(8,9) : 4; if(m>2) j=(n.javaEnabled()) ? 1 : 0; r=window.top.document.referrer; if(m>3 && screen){ d=screen.colorDepth; if(d==0) d=screen.pixelDepth; x=screen.width; w=(p.all) ? top.document.body.clientWidth:top.innerWidth; } y=new Date(); y.setTime(y.getTime()-31536000000); p.cookie="nvt=1"; c=(p.cookie.indexOf("nvt") != -1)?1:0; p.cookie="nvt=1; expires="+y.toGMTString(); // set new A attributes ele.href='http://navrcholu.cz/Statistika/'+id+'/'; ele.setAttribute('title','NAVRCHOLU.cz'); // create IMG var img=ele.appendChild(createNewEle('img')); img.setAttribute('alt','NAVRCHOLU.cz'); img.setAttribute('style','width:80px;height:15px'); img.setAttribute('src','http://c1.navrcholu.cz/hit?site='+id+';t=o80;' +'fv='+n3f8q+';js='+j+';cs='+c+';ref='+escape(r)+';cd=' +d+';sx='+x+';wx='+w+';jss=1;r='+Math.random()); } navrcholu();
Použití pro navrcholu.cz
ReiserFS má na Linuxu problémy
Instaloval jsem dnes na jeden nový počítač Fedora Core 3, a při instalaci jsesm zvolil linux reiserfs
, čímž jsem mohl kromě ext3
partitions
vytvořit i ReiserFS
partition (standardně Fedora Core 3 instaluje i LVM2 a RAID, na stanici poněkud zbytečné věci). ReiserFS
je pokročilý
žurnálový filesystém, mimořádně rychlý, je dokonce základním filesystémem pro distribuce jako je SUSE 9.1, SUSE 9.2, Gentoo a pár dalších.
Měl jsem s ReiserFS
již jednu nemilou zkušenost, a to sice v případě SUSE 9.1, na druhou stranu jsem to ale nepřičítal
filesystému, ale něčemu jinému, a dnes
k té jedné nemilé zkušenosti přibyla druhá. Po instalaci jsem 20 minut pracoval, a počítač totálně zatuhnul.
Tak jsem jej restartoval, spustil reiserfsck
,
a pracoval dalších 20 minut, a další vytuhnutí. Tak jsem smazal celou novou instalaci, dal tam tradiční ext3
(ale bez LVM2 a RAID), prosazované Red Hatem,
který má přece jenom obrovské serverové zkušenosti, pracuji asi 3 hodiny a vše je v pořádku. Obávám se, že ReiserFS
má ještě své nemalé chybičky.
Deblogizace. Nikdo nezůstane blogem!

Pixy se stydí za
to, že je blogger. Blogger = člověk publikující, spisovatel, dokumentarista.
Já se za to nestydím, styděl bych se za to být špatným bloggerem (což rozhodně
nejsem), ale díky SEO optimalizaci jsem URL /blog/
nahradil
za /blog/
, takže si prosím
opravte Vaše bookmarky a RSS čtečky.
Nové URL:
https://myego.cz/
Samozřejmě, nadále zůstanu zejména odborným webem, který ovšem dokáže vedle článků o DOM modelu v JavaScriptu pro navrcholu.cz publikovat i zábavné texty typu Anděl s plnou pusou semene, za cílem získání nesmírně rozsáhlé návštěvnosti, při zachování špičkové kvality ;-)
Technicky je přesměrování řešeno pomocí souboru .htaccess
s tímto obsahem:
redirect 301 /blog/ https://myego.cz/
Vzhledem k výbornému online redakčnímu
systému jsem nemusel nic přegenerovávat, stačilo
změnit v nastavení pár URL, přejmenovat na FTP adresář z blog
na radek.hulan
,
a vyčistit cache statických XHTML stránek. Celá procedura zabrala přesně 30
sekund i s úpravou registrace na Toplist.cz.
TOPLIST.cz s application/xhtml+xml
Podobně jako NAVRCHOLU.cz
skript pro měření návštěvnosti je nutné přepsat
pro podporu application/xhtml+xml
, u TOPLIST.cz je
to to samé.
Výsledek byl testován a funguje v Opeře 7.60 TP4, Firefoxu 1.0
(application/xhtml+xml
), a rovněž v MSIE 6.0 (text/html
).
Zde je kód pro toplist.js
:
// (c) Radek HULAN, http://hulan.cz/ // This work is licensed under the Creative Commons Attribution License. // // TOPLIST.cz statistics that works under XHTML 1.1 served with // MIME type application/xhtml+xml as well as text/html MIME type. // // // Usage - place this in your XHTHML 1.1 code: // // // // helper functions var isXHTML; function createNewEle(ele){ if(isXHTML) return document.createElementNS('http://www.w3.org/1999/xhtml', ele); else return document.createElement(ele); }; function toplist(){ var ele=document.getElementById('toplist'); if (!ele) return; isXHTML=/html\:/.test(document.getElementsByTagName('body')[0].nodeName); // toplist.cz id from title var id=parseInt(ele.getAttribute('title')); if (!id) alert('TITLE attribute does not contain your TOPLIST.cz ID!'); var img=ele.getElementsByTagName('img'); // set new A attributes ele.href='http://toplist.cz/stat/'+id; ele.setAttribute('title','TOPLIST.cz'); // create IMG var img=ele.appendChild(createNewEle('img')); img.setAttribute('alt','TOPLIST.cz'); img.setAttribute('style','width:88px;height:120px'); img.setAttribute('src','http://toplist.cz/count.asp?id='+id +'&logo=bc' +'&http='+escape(document.referrer) +'&wi='+escape(window.screen.width) +'&he='+escape(window.screen.height) +'&cd='+escape(window.screen.colorDepth) +'&t='+escape(document.title)); } toplist();
Použití skriptu:
Vložte tento kód do Vašeho XHTML:
Pochopitelně, číslo 64941
upravte na Vaše číslo počítadla. Kód je pochopitelně napsaný tak, že funguje i při vypnutém JavaScriptu.
NAVRCHOLU.cz s application/xhtml+xml
V sobotu jsem se zaregistroval do statistik navrcholu.cz a dnes mi přišlo potvrzení registrace. Navrcholu.cz toho umí hodně, nicméně, jejich JavaScript pro měření byl plný write()
a writeln()
, takže jsem jej musel přepsat do DOM JavaScriptu, jinak by pochopitelně v XHTML 1.1 nefungoval (zabralo to 10 minut i s testováním).
Výsledek byl testován a funguje v Opeře 7.60 TP4, Firefoxu 1.0 (application/xhtml+xml
), a rovněž v MSIE 6.0 (text/html
).
Zde je kód pro navrcholu.js
:
// (c) Radek HULAN, http://hulan.cz/ // This work is licensed under the Creative Commons Attribution License. // // NAVRCHOLU.cz statistics that works under XHTML 1.1 served with // MIME type application/xhtml+xml as well as text/html MIME type. // // // Usage - place this in your XHTHML 1.1 code: // // // // helper functions var isXHTML; function createNewEle(ele){ if(isXHTML) return document.createElementNS('http://www.w3.org/1999/xhtml', ele); else return document.createElement(ele); }; // navrcholu.cz code function navrcholu(){ var ele=document.getElementById('navrcholu'); if (!ele) return; isXHTML=/html\:/.test(document.getElementsByTagName('body')[0].nodeName); // navrcholu.cz id from title var id=parseInt(ele.getAttribute('title')); if (!id) alert('TITLE attribute does not contain your NAVRCHOLU.cz ID!'); // some variables var n=navigator; var p=document; var c,t,b,j,m,r,y,d,x,w; d=x=w=j=0; // detect flash plugin in MSIE if(n.appVersion.indexOf("MSIE")>=0 && n.appVersion.indexOf("Win")>=0 && n.userAgent.indexOf("Opera")<0) { p.writeln(""); p.writeln("on error resume next"); p.writeln("For i=7 to 4 Step -1"); p.writeln(" If IsObject(CreateObject(\"ShockwaveFlash.ShockwaveFlash.\" & i)) Then"); p.writeln(" n3f8q=i"); p.writeln(" Exit For"); p.writeln(" End If"); p.writeln("Next"); p.writeln(""); } else eval("var n3f8q=0"); // detect flash in other browsers if( n.plugins && n.plugins["Shockwave Flash"]){ t=n.plugins["Shockwave Flash"].description; n3f8q=parseInt(t.charAt(t.indexOf(".")-1)); } // get other vars m=(n.userAgent.substring(0,8)=="Mozilla/") ? n.userAgent.substring(8,9) : 4; if(m>2) j=(n.javaEnabled()) ? 1 : 0; r=window.top.document.referrer; if(m>3 && screen){ d=screen.colorDepth; if(d==0) d=screen.pixelDepth; x=screen.width; w=(p.all) ? top.document.body.clientWidth:top.innerWidth; } y=new Date(); y.setTime(y.getTime()-31536000000); p.cookie="nvt=1"; c=(p.cookie.indexOf("nvt") != -1)?1:0; p.cookie="nvt=1; expires="+y.toGMTString(); // set new A attributes ele.href='http://navrcholu.cz/Statistika/'+id+'/'; ele.setAttribute('title','NAVRCHOLU.cz'); // create IMG var img=ele.appendChild(createNewEle('img')); img.setAttribute('alt','NAVRCHOLU.cz'); img.setAttribute('style','width:80px;height:15px'); img.setAttribute('src','http://c1.navrcholu.cz/hit?site='+id+';t=o80;' +'fv='+n3f8q+';js='+j+';cs='+c+';ref='+escape(r)+';cd=' +d+';sx='+x+';wx='+w+';jss=1;r='+Math.random()); } navrcholu();
Použití skriptu:
Vložte tento kód do Vašeho XHTML:
Pochopitelně, číslo 77391
upravte na Vaše číslo počítadla. Kód je pochopitelně napsaný tak, že funguje i při vypnutém JavaScriptu.
Doufám, že mě za tento kód, který by měl dodat navrcholu.cz, a ne já, bude třeba nabídnuta Profi statistika navrcholu.cz na rok zdarma. Přijmul bych to, a s radostí zveřejnil ;-)
Xstandard - vynikající XHTML 1.1 WYSIWYG editor
Xstandard je vynikající XHTML 1.1 validní (!) WYSIWYG editor, který je ve verzi Xstandard Lite zdarma i pro komerční použití. Je to fantastický produkt, který skutečně generuje XHTML 1.1 zdrojový kód, za každé okolnosi well-formed.
Xstandard má to všem jedno omezení, je napsán jako ActiveX komponenta, a tudíž funguje jen pod Windows (nikoliv na Linuxu) za použití MSIE 5.5 a vyššího, nebo Firefoxu 1.0 / Mozilly 1.7 a vyšší. Samozřejmě, na Linuxu je možné použít projekt Wine a spustit Xstandard pod ním.
Xstandard umí automaticky dělat odstavce, seznamy, tabulky, tagy code
, pre
, abbr
, samp, a další, jeho integrace do stávajícího prostředí je triviální, postačí zavolat object
s typem application/x-xstandard
, pro Firefox, nebo s clsid:0EED7206-1661-11D7-84A3-00606744831D
pro MSIE.
Tento fantastický WYSIWYG editor jen nově implementován v redakčním systému F-ART:CMS. Pro stávající uživatele systému F-ART:CMS je implementace Xstadard dostupná zdarma. V systému BLOG:CMS, publikovaném v GNU GPL licenci, tato komponenta dostupná nebude.
XHTML 1.1 validní web má obrovský význam pro optimalizaci pro vyhledávače (SEO), protože validní weby s minimem markupu a převahou textu jsou roboty mnohem snázeji indexovány.
Ukázky editoru (WYSIWYG a zdrojový kód):


XHTML 1.1 místo XHTML 1.0
Udělal jsem na tomto webu změnu jednoho řádku v šabloně, a jsem opět
dokonale moderní (to je ironie), místo XHTML 1.0
totiž používám XHTML 1.1
.
Smazal jsem toto:
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
A dal místo toho toto:
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN' 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>
A mám web v XHTML 1.1
. Jaký to má smysl? Nevím. Ale XHTML 1.1
zní mnohem moderněji
než XHTML 1.0 Strict
, a to už vůbec nemluvím o HTML
.
Více informací o 2 rozdílech (+ ruby
) je přímo na w3c.org.
A to se počítá! :-)
Co by měl obsahovat WEB ROKU 2005?
Narazil jsem na takový pěkný článek, který popisuje, co by měl WEB ROKU 2005 obsahovat.
Web roku 2005 musí obsahovat a podporovat:
- nabízet pravidelně aktualizované informace (blogy, redakční systémy, atd.)
- zvýšit efektivnost nabízení informací (RSS, ATOM, WAP, Mobilní XHTML, atd.)
- alternativní metody distribuce informací (emailové newslettery, RSS, del.icio.us, atd.)
- zlepšené systémy notifikace a alertů (ping, TrackBack, email alerty, atd.)
- možnost feedbacku od uživatelů webu (komentáře, fórum, atd.)
- optimalizovaný výkon a přístupnost (CSS, XHTML, atd.)
- více cest pro získání informací (více-úrovňová navigace, hledání, atd.)
- inteligentní systém-2-systém komunikaci (XML, SOAP, atd.)
- kolaborativní spolupráce a dokumentace (Wiki, blogy, atd.)
- podpora založená na požadavcích uživatelů (uživatelsky řízené FAQs, atd.)
Zajímavé je, že špičkový redakční systém F-ART:CMS obsahuje veškeré tyto komponenty, a dokonce mnohé další.
F-ART:CMS je snadná a inteligentní cesta k dokonalému webu v roce 2005.
Pro uživatele s nižšími požadavky je dostupná i jeho GNU GPL verze nazvaná BLOG:CMS.