Samotný zdrojový kód podle mě velkou hodnotu nemá a představa, že by
ho někdo vzal a bez znalosti myšlenek v kódu skrytých ho třeba dál
prodával, mi přijde skoro až úsměvná.
Souhlasím s Jakubem, že kopírování kódu bez znalosti myšlenek v něm
ukrytých je úsměvné. Ale to neznamená, že se to neděje. Ba právě
naopak, říká se tomu „lepení“ a takových lepičů je určitě mnohem
více, než tvůrčích programátorů. Nakonec i oni často lepením
začínali.
V komentářích pod Jakubovým článkem se myšlenky open source zastává
Passofur:
Take vse co napisu (neni to jen PHP, ale i ruzny sw co jsem treba delal do
soutezi, nebo pro skolu atd.) jsem vzdy uvolnil, pokud s tim dany subjekt (pro
ktereho to bylo) souhlasil. Podle me je hloupost myslenky tutlat! Stejne
nemuzete nic vymyslet tak, aniz by to nekdo nevymyslel o rad lepe.
Tady je krásně vidět, jak rozdílné světy spolu diskutují a nemohou se
nikdy shodnout. Student programující pro zábavu a podnikatel platící
desítky drahých programátorů, oba vidí svět docela jinak.
Miloslav Ponkrác namítá:
Myšlenka open source je pěkná, ale pokud děláte projekt, do kterého
jste nacpal jenom na výoji třeba milióny korun, tak se budete chovat jinak.
Dokud děláte na malých projektech za pár korun, tak si můžete dovolit být
stoprocentní zastánce open source vždy a všude.
I když nemá zcela pravdu, pan Miloslav. „Closed source“ je jen
nejjednodušší ochrana investice. Existují i jiné obchodní modely, které
umožní nahrnout miliony do open source a zajistit návratnost. Ale ne vždy
se dají použít a ne každý je použít chce.
O špatné zkušenosti se zveřejňováním kódu dále píše Tim (citlivě
zkráceno):
Pres dva roky vyrabim redakcni system, misty to jde dobre, jinde se s tim
peru. Vyleze z toho celkem funkcni projekt, ktery delam z vlastni iniciativy
pro sve kamarady zadarmo. Nemam s tim problem.
…a pak jsem jednou narazil na svoji navstevni knihu, za kterou byl do nebes
chvaleny nekdo jiny, podruhe radobykamarad pouze pozmenil barvicky a vizualni
usporadani na mem systemu a zacal ho komercne sirit pod svym jmenem.
Zakryptovani kodu je tedy jedine vychodisko k nezneuziti free projektu.
Čímž poukazuje na další fakt: (autorské) právo sice určuje pravidla,
ale nezabrání jejich porušování. Nebo nechá horlivý zastánce open source
stát uprostřed města svůj otevřený vůz s klíčkem v zapalování
s tím, že ukrást jej nikdo nemůže, neb to nedovoluje zákon? Kdepak, také
zamyká, proč by tedy nemohl „zamykat“ autor software?
Zcela svérázné představy o licencích a nákladech na vývoj
má Radim:
Doba skrytých kódů je definitivně za námi. Argumentovat milionovou
investicí do redakčního systému, když je jich k použití pod GPL víc
než stovka, je přinejmenším zcestné. Ano, dá se vydělat na úpravě dle
přání zákazníka, jak to dělají mnozí, nejznáměji snad stará dobrá
WELLDONKA.
Radim si pod pojmem GPL představuje „dovoleno vše“. Skutečnost je
jiná a ne vždy je možné kvůli licenčním omezením GPL v projektu
použít.
Ještě zajímavější je to s těmi náklady na vývoj. Podle Radima jsou
zbytečné. Aby ne – zatímco Microsoft cpe neuvěřitelné peníze do výzkumu nového
rozhraní pro Microsoft Office 12, skupinka vývojářů to pak levně
zkopíruje a vznikne OpenOffice.org verze 3.0. Někdo to sice zacvakat musí,
ale toho my rádi nemáme.
Radim své pohnutky (závist) rychle prozradí, když ironicky
prohlásí:
Argumenty jsou k tomu (closed source) víc než pádné, mzdy,
kanceláře a přiznejme i drahá autíčka, no proč si nedopřát. A na to
je třeba vydělat a jedině tak, že skryji kód. Pánové to je Vaše volba,
k tomu Vás nikdo nenutil, klidně to můžete ihned zabalit a máte po
starostech.
Pojem skrýt kód je kouzelný. Pokud otevření kódu znamená jeho
zpřehlednění a zdokumentování, aby byl čitelný pro svět, volbu licence,
únavné poskytování podpory a snášení nejapných
komentářů, pak by mě zajímalo, jak přesně probíhá takové
skrývání. To musí být teprve fičák!
Právě jsem vytvořil dvě jednoduchá míchátka barev. Jsou určena pro
uživatele webových aplikací (nikoliv webdesignéry, jako třeba Pixyho generátor
schémat). Slouží tedy k interaktivní volbě barvy. Dávám je volně
k dispozici pod licencí GPL.
Míchátka používají několik fikaných kouzel pro manipulaci s barvami.
Díky nim jsem v DHTML dosáhl podobné funkčnosti, jaká je známá spíše
z desktopových aplikací. Tedy nechci se tu naparovat, jen že jsem nic
podobného na webu zatím neviděl.
Míchátko s barevným proužkem
Připomíná „Color Picker“ z Adobe Photoshopu. Funguje pod IE 6,
Mozillou a Operou (ostatní prohlížeče jsem neměl možnost ověřit,
můžete zkusit sami a poslat report). (odkaz)
(aktualizováno: s míchátkem na stejném principu přišel už
o měsíc dříve Dalton
Lloyd, patří mi tedy krásné druhenství)
Míchátko s barevným
prstencem
Ovšem tady si snad prvenství obhájím. Co ty na to, Daltone?
Implementace
Pro implementaci stačí nalinkovat do stránky příslušný CSS a JS soubor
(viz jednotlivé příklady) a poté vytvořit a nakonfigurovat objekt
mixéru.
<link rel="stylesheet" type="text/css"
href="dgxcolormixer.css" />
<script type="text/javascript"
src="dgxcolormixer.js"></script>
<script type="text/javascript">
// definujeme obsluhu událostí
function myChangeColorHandler(mixer) { ... }
function myConfirmHandler(mixer) { ... }
// vytvoříme objekt
var mixer = new DGXColorMixer();
// nastavíme handlery
// pro změnu barvy
mixer.onChange = myChangeColorHandler;
// pro povrzení změny
mixer.onConfirm = myConfirmHandler;
// barva
mixer.setColor('FF0030');
// nebo
mixer.setColor(new RGBColor(10, 20, 30));
// nebo
mixer.setColor(new HSVColor(280, 100, 50));
// případně včlenit do existujícího elementu
mixer.setParent('main1');
// nebo
el = document.getElementById('main1');
mixer.setParent(el);
// dosud je mixér skrytý, tak jej zobrazíme
mixer.show();
</script>
Mixér lze propojit s editačním políčkem input a také
nastavit, zda bude fungovat jako vyskakovací okénko (automaticky se umístí
hned vedle editačního políčka). Tady se můžete podívat na příklad.
// create mixer
mixer = new DGXColorMixer();
// propoj s prvkem s id 'color1'
// druhý parametr nastavuje popup režim
mixer.attachInput('color1', true);
Ovládání přes URL
V URL můžete zadat barvu. Pro RGB lze použít tří nebo šestiznakový
HEX formát, dekadický zápis nebo dokonce slovní označení:
Která značka je nejpoužívanější? Je více formulářů
POST nebo GET? A jak vypadá běžná událost onclick?
Pracuji na projektu, kvůli kterému jsem si vytvořil statistiku
používání HTML značek, jejich atributů a hodnot. Výsledky jsou celkem
zajímavé, takže se s vámi o ně podělím. Topten nejpoužívanějších
značek vypadá následovně:
Jak v tabulce číst? V prvním řádku vidíme, že 18% značek
v průměrném dokumentu představuje kotva <a>. Celých 99%
kotev má uveden atribut href, 22% atribut title atd.
Druhá nejpoužívanější značka je <td>, na obrázku
vidíme i přehled nejčastějších hodnot atributu class
(zobrazí se v moderních browserech po najetí myšky na buňku tabulky).
Dlouho jsem přemýšlel, jak pro měření získat objektivní vzorek dat.
Nakonec jsem analyzoval prvních deset odkazů, které vrací Jyxo pro každé
slovo z Top 1000. Po promazání atypických
souborů vznikl různorodý vzorek cca 10.000 stránek. Pro zajímavost
jsem vytvořil druhou statistiku, která zahrnuje titulní stránky všech webů
umístěných v galerii CSS Vault (bohužel
vzorek je docela malý).
Zajímavé je zejména srovnání obou tabulek. Rozdíly v popularitě
značek asi neprozradí nic překvapivého, ale velmi krásně demonstrují
odlišnost zastaralého a moderního pojetí webdesignu. Co dále… všimněte
si, že obvyklé šířky tabulek jsou kolem 98% (jestlipak víte proč?).
Kódování windows-1250 je cca 4× častější, než iso-8859–2. Velká
spousta webů chybně uvádí kód jazyka ‚cz‘ namísto správného
‚cs‘. Perličkou je, že tučné písmo rádi barvíme do tmavě modré či
červené.
A tak bych mohl pokračovat. Najdete-li sami něco zajímavého, můžete se
zmínit v komentářích.
Zatímco na západě se obávají polského
instalatéra, mě začíná strašit český nevidomý. Společné
mají jedno – oba jsou v tom nevinně.
Blýská se na lepší časy. Poučky o moderním a bezbariérovém webu už
pronikly mezi odbornou veřejnost. Mladí webdesignéři dnes uvažují velmi
pokrokově a Pixy už nepíše o webdesignu, „bo ukol splnil“.
A znamenitě. Na řadu přicházejí noví kazatelé a hodně se mluví o pravidlech
přístupnosti nebo WCAG.
Advokáti slepců
Všechno dobré je pro něco zlé. Když dnes přihlásím do
webdesignérské soutěže stránky lukostřeleckého klubu, dřív nebo
později někdo upozorní, že „hento“ je úplně špatně, protože
hlasová čtečka. To, že stránky nefungují v IE 5.0, zase tolik nevadí,
používá jej sotva pár procent celku a těm odřízneme styl. Ale nevidomé
zájemce o střelbu si musíme předcházet, ať to stojí, co to stojí.
Přijde doba, kdy na spojení slov „hlasová čtečka“ budou
webdesignéři reagovat jako býk na červený prapor.
Špinarova kobyla chodí bosa
David Špinar vysvětlil, proč si žádný
český web nezaslouží nálepku „splňuje WCAG“ a následně to dostal
v diskuzi patřičně sežrat. O co
šlo? Zmíněná norma požaduje, aby cizojazyčné slovo bylo označeno
atributem lang. A David uvádí tento příklad:
Mým koníčkem je <span lang="en">webdesign</span> a tvorba stránek
v <abbr title="Hypertext Markup Language" lang="en">HTML</abbr>.
Ironií osudu je, že angličtina slovo webdesignnezná,
leda samostatná slova web design. Čímž David mimoděk demonstroval,
že tento požadavek bez encyklopedických znalostí prostě splnit nelze. Stejný průšvih je označování zkratek a akronymů
(tj. zkratky, které se nehláskují). Není žádná autorita, která by
s obecnou platností rozhodla, co je akronym a co není.
Davidovi v komentářích vytýkali,
kolikrát se sám proti zmíněnému pravidlu prohřešil. Nechtěl bych být
v jeho kůži. Vím přesně, k čemu by to vedlo: při psaní dalších
článků bych byl paranoidně opatrný, abych respektoval všechna mnou
propagovaná pravidla. Možná bych nasekal jiné chyby, každopádně by mě to
otrávilo a psal bych méně. Nebo vůbec. Ajajaj, takový je dopad
podobných pravidel.
Potřebujeme tolik sémantiky?
Slepí lidé nejsou v ničem horší než vidoucí. Nepotřebují do textu
doplňovat dodatečné informace. Tento požadavek tu není kvůli nim, ale
kvůli hlasovým čtečkám. Respektive jejich nedokonalostem.
Jako webdesignér se odmítám takovým nedostatkům podřizovat. Nápravu je
třeba sjednat v místě problému, tedy ve čtečce. A ne vymýšlet
samoúčelnou sémantiku. Takhle
bychom mohli časem tagovat každou slabiku (aby se text dětem lépe
vytleskával) a v ní i jednotlivá písmenka, atributem rozlišovat
souhlásky od samohlásek. Dokonce i CSS styly můžeme znásilnit. Kde je
zdravý rozum?
Jsem přesvědčen, že některá pravidla jsou jen nesmyslnou buzerací
tvůrců webů a nepřinášejí nikomu žádný užitek.
Pečlivě vybíráme ty
nejlepší zrnka
Než mě rozcupujete v komentářích ;) rád bych něčemu předešel.
Občas slyším, že nějaká metodologie byla vypracována ve spolupráci se
slepci. To ovšem vůbec nic nevypovídá o její kvalitě! Slepota není
předpoklad dobrého metodologa. Nebo si myslíte, že hlasová čtečka
vytvořená týmem programátorů hluchých jak poleno je lepší, než od
programátorů slyšících?
Zkrátka podobná prohlášení jsou jen jakousi zajímavostí, pokud jimi
někdo argumentuje, jde už o demagogii.
Jak bude vypadat nový prohlížeč IE 7? Pokochejte se pohledy na jeho
první beta verzi. Namísto výřezů zveřejňuji obrázky celého okna, abyste
si udělali lepší představu. Pro zvětšení stačí kliknout.
Nový vzhled
Všimněte si záložek, které lze otevírat kliknutím na pravou
„minizáložku“ nebo dvojitým klikem na volné místo vedle.
Navigační tlačítka zpět a vpřed jsou nyní
výraznější, zatímco tlačítka aktualizovat a zastavit jsou
sloučené do jednoho malého.
Nemám rád automaticky generované vysvětlivky. Tím myslím strojové
podtržení určitých zkratek (např. HTML nebo CSS) a doplnění
o vysvětlivku v title. Dopadá to asi takto:
Ta přednáška o prasatech je v HTML a najdeš ji na adrese http://www.la-trine.cz/HTML/kscm.php –
tak se na to podívej.
Tato „feature“ nepřináší čtenáři žádnou přidanou hodnotu.
Spíš naopak, odpoutává pozornost od textu. Autor by měl vědět, pro koho
píše a sám se rozhodnout, jestli je třeba zkratku vysvětlit,
kde tak učinit a jakým způsobem. Tohle automat nevymyslí.
Bohužel, spoustě uživatelů připadá jako skvělý nápad si do svého
CMS automatický vysvětlovač nainstalovat. Vážně si myslíte, že člověka
nechápavě hledícího na zkratku CSS, přivede title=Cascading
Style Sheet k prozření? Nebo že v pojednání o plovoucích boxech je
nutné čtenáři význam CSS připomenout?
Podle specifikace zná XML
pouze pět předdefinovaných entit. Jsou to
< > & " '. Všechny
ostatní je třeba buď definovat, nebo (lépe) zapisovat v číselné podobě
či rovnou jako znak. Takto doporučuji psát i ',
kteroužto entitu Internet Explorer nezná.
XHTML samozřejmě používá i další entity, ale pokud pracujeme
s textem, který má být přístupný zároveň v prohlížeči jako XHTML a
kupříkladu ve čtečce jako RSS, je třeba se přizpůsobit
neužšímu místu.
Číselná podoba zápisu entity má tvar &#xxx;, kde
xxx je ordinální hodnota znaku. Takže třeba entitu ­,
která odpovídá znaku s kódem 173, zapíšeme jako ­
(desítkově) nebo ­ (šestnáctkově). Při převodech
pozor na to, že ekvivalentní jsou i zápisy
­ ­ ­.
Dále lze přímo zapsat znak (třeba ten s kódem 173). Obecně ale
tento postup aplikujte jen v případě, že kódujete dokument v unicode.
V jiných kódováních totiž nemá spousta entit své jednoznakové
protějšky.
Ještě bych dodal, že pro určité výstupy bývá vhodné zaměnit
typografické znaky za jejich ASCII alternativy. Tedy namísto „českých
uvozovek“ použít "počítačové", taktéž pevnou mezeru
zaměnit za obyčejnou a pomlčky za spojovníky. Dělá se to kvůli
neschopnosti cílového zařízení správně tyto znaky interpretovat.
Zkuste si v IE
verze 6 otevřít tento
článek (htmlshot) na ILblogu a pomalu rolovat
stránku dolů (kolečkem myši nebo posuvníkem). V okamžiku, kdy se zobrazí
celá tabulka, zmizí blok textu začínající slovy Ve stránce je vložen
kód obrázku a končící onou tabulkou. Pokud rolujete dále, po
zobrazení další tabulky opět zmizí předcházející text.
Tabulky jsou plovoucí obrázky následované „čističem“
<br clear=left>. Z hlediska čistoty kódu jde samozřejmě
o zbytečnou konstrukci, ale v souvislosti s ILblogem nemůže být
o čistotě kódu řeč vůbec.
Je to ukázka peek-a-boo bugu, nebo jde
o něco jiného?
Když už jsem nakousl ILblog: nejsem moc zvědavý na blogy
„významných“ lidí, protože bývají narozdíl od autorů nezajímavé.
Schopnost něco dokázat v oboru neimplikuje schopnost zajímavě psát.
V tomto směru je ILblog velmi
příjemnou výjimkou!
Předchozím článkem, který
hodnotil projekt Webylon, jsem rozpoutal trošku nechtěnou diskuzi na téma
validita, sterilita, sexualita a kompatibilita. Moment… ne, tak o tom
předposledním diskuze nebyla.
Dovolte mi takové shrnutí:
Validita primitivní:
patří sem uzavírání značek, vkládání hodnot atributů do uvozovek
v XHTML atd.
lze jej vhodně zobrazit na všech zařízeních (plán do
budoucna)
konstruktivní diskuze je třeba (hnací motor vývoje webdesignu)
nedodržování:
z neznalosti (nedostatek na straně tvůrce)
z dobrých důvodů (nedostatek na straně W3C?)
Weby validní dle W3C mohou být označeny ikonkou nebo odkazem, která tuto
skutečnost potvrzuje. Ta představuje pro tvůrce webu jakousi konkurenční
výhodu, neboť tvořit W3C validní weby je přínos, ale ne samozřejmost.
Význam pro zákazníka proberu níže.
Validita dle W3C NEznamená:
kvalitu kódu
přístupnost
lepší optimalizaci pro vyhledávače
omezení grafického zpracování
Pro zákazníka je tedy známka validity jen vodítkem ke znalostem a úrovni
práce toho kterého webdesignérského studia. Nikoliv zárukou kvality
(ať už studia nebo webu). Myslím, že nelze ani přeceňovat kompatibilitu
webu s budoucími generacemi prohlížečů, protože před jejich nástupem
proběhne ještě hodně redesignů (nebo firma zkrachuje ;).
Význam validity:
Validita je tedy pouhou startovní čárou při tvorbě webu, teprve za ní
vzniká možnost projevit své schopnosti. V mnoha případech se bohužel
stává i omezujícím kritériem, nebo dokonce cílem. To má smutné
následky, jakým je třeba:
Sterilita:
vedlejší efekt úzkostlivé snahy být validní dle W3C
nepoužívání proprietárních rozšíření prohlížečů (viz)
projev nedostatku grafického cítění
stránka se nemaluje, ale programuje
Pro tvůrce sterilních webů použil Jiří Bureš trefné označení
suchar.
A na závěr zrekapituluji jev, kterým se vrátím zpět k Webylonu:
Nekompatibilita:
stav, kdy různé prohlížeče rozumí stejné vstupní
informaci jinak
vzniká buď neexistencí standardu, nebo jeho nedodržením ze strany
vývojářů prohlížeče
předchází se jí standardizací (snaha W3C)
Pokud přímo prostředí, kde nekompatibilita vzniká (CSS, JavaScript,
HTML), nabízí prostředky, jak ji řešit, nemělo by
se šahat po silnějších nástrojích. Velmi silným (a tupým) nástrojem je
Webylonský lék. A tudy ne,
přátelé.
Byly doby, už je to pradávno, kdy se mezi blogery vášnivě diskutovalo
o takových podivnostech, jako je validita, standardy a oddělení obsahu od
formy. Dnes už je dodiskutováno a titulkem „Validita je
k ničemu“ nebo „Validita na hrad“ nejspíš čtenáře
příliš nešokuji a leckterý webloger si jen poklepe na čelo: „To už
bylo, dál. Písmeno!“.
Projekt Webylon přišel přesně
o dva roky později, než měl. Tehdy mohla jeho sláva dosáhnout hvězd, dnes
dosáhla jen několika zmínek (Yuhů,
llook, Rony).
A jsem dost skeptický k tomu, že by Chamurappi, autor Webylonu, živější
diskuzi na dávno probraná témata rozpoutal. I když bych mu to přál.
Deevangelizace
Ale pryč s pesimismem. Pokud Vaše sympatie patří sdružení W3C,
rozhodně si přečtěte Webylonskou kritiku. Jednak má
povídání originální styl a celé je prodchnuté starověkým Babylónem, za
druhé je to jeden ze vzácných zdrojů alternativních názorů. Tím nechci
říci, že s autorem vždy souhlasím, ale pro utvoření zdravého názoru je
třeba slyšet výpověď více stran.
Rád bych citoval ze stránky Otázky víry, kde se Chamurappi
vyjadřuje k otázce validity:
Bobřík validity – oběť už „umí“ a na svých webech se tím
chlubí slavnými oranžovobílými ikonkami Valid! od W3C. A protože
„umí“, tak si věří. A protože si věří, tak nevěří těm, kdo
v neomyslnost konsorcia nevěří. Zuřivě odmítá jakékoliv proprietální
možnosti konkrétních prohlížečů. Pojem „využití možností
konkrétního prohlížeče“ jí zůstal v hlavě zafixován jako symbol zla
a chyba těch, kdo nevěří.
Jako programátor rozumím validitě ve smyslu korektního zápisu. Validita
se však stala modlou a jejím vedlejším projevem je pak sterilita. Všimli jste
si, jak jsou si dnešní „hezké weby“ navzájem podobné? Tvůrčí invenci
střídá ikonka Valid.
Lék na neexistující nemoc
Webdesign dle standardů je zatím utopií. Dnes se tvoří stránky
především podle průniku schopností prohlížečů a ten se občas lehce
roztáhne použitím hacku. Pokud si lépe přečtete předchozí citát,
uvědomíte si, že Chamurappi volá po využívání možností všech
prohlížečů. Tedy nikoliv průniku, ale sjednocení.
A jde ještě dál. Nabízí nástroj, která umožní takové weby snadno
psát. Webylonský lék.
Revoluční přístup? Alternativní webdesign? Nejsem
si jist…
Jaký je rozdíl mezi oním průnikem a sjednocením? Pro mě osobně
téměř žádný. V graficky rozvernějších webech si rád hraji
s průhledností a obarvím i scrollbar, a že je to za cenu ztráty validity
CSS souboru mi skutečně žíly netrhá. Ale kam jít dál? Jaké další
proprietární funkce využít? Třeba napsat flashový web a k tomu HTML
alternativu? Ano, takovou blbost jsem před
lety udělal. Jenže za cenu dvojí práce a jedněch peněz. Never more.
Je to asi díky praxi a zkušenostem, ale dnes na omezení prohlížečů
nenarážím. Otevřu pověstný „notepad“ a píši. Necítím se omezován
a tím pádem ani nemám potřebu použít Webylonský lék.
Krom toho, onen lék není nic originálního: server upraví dokument podle
hlavičky user-agent. Trik je sice v podání Chamurappiho vyveden do
dokonalosti, jeho použití však důrazně nedoporučuji. Kdysi jsem podobnou
fintu také vyzkoušel a vracel prohlížečům různé verze .css souboru
(zpracováním přes PHP), ale přestalo fungovat kešování. Naprogramoval
jsem tedy v PHP kešovací modul, ale ten byl jen zdrojem dalších
problémů.
Dvojí Webylon
Webylon jakožto kritik W3C je mi svým netradičním postojem
přinejmenším sympatický. Toto je jeho silná parketa. Bohužel, v mých
očích celý projekt shazuje onen „lék“. Jak už jsem uvedl, před
několika lety to mohla být bomba, dnes je to krok zpět.
Přál bych Webylonu, aby se této rozdvojenosti zbavil. Ačkoliv tuším,
že „lék“ existoval dřív než filozofický obsah webu, bylo by dobré jej
nechat zmizet v propadlišti dějin a věnovat se odvážným myšlenkám.
Otevírat lidem oči, zbavovat je zaslepenosti a inspirovat k diskuzi. Takový
projekt by se mi líbil. A chybí tu jak sůl.