Sova v síti - 2/10 - vydáno 10.9.2002 Dobrý den, je zde desáté letošní číslo Sovy v síti :-) OBSAH -- Úvodník -- Internet a internacionalizace -- Exkurze do historie JavaScriptu aneb jak to všechno začalo -- Čtenáři nám píší ÚVODNÍK Máme zde září a s ním i slíbený druhý čtvrtročník společenské události s decentním názvem Sůva v nudlích (opravuji: Sova v Nuslích). Pro nezasvěcené: jedná se o akci, jejíž hlavní náplní je sofistikované přemisťování žlutavé tekutiny přibližně o 10 až 15 metrů (bohužel za vaše vlastní peníze), vedlejší náplní pak otázky, kolik že to má web Sovy vlastně pejdž vjů a úvahy o významu Tantek Celikova CSS hacku v postindustriální společnosti. Jinými slovy, jde o přátelské posezení autorů Sovy s čtenáři, na kterém jste všichni (snad mne nevezmete za slovo opravdu všichni; je vás už skoro tři tisíce) srdečně vítáni. Odehraje se z pátku 13.9. na sobotu v pražských Nuslích, v restauraci Na Květnici. Podrobnější informace získáte odesláním registračního emailu na adresu: mailto:na.kvetnici.2002-09-13.18.00@garcon.cz Navigace pro blížící se zbloudilce, jakož i aktualní informace o průtoku nedalekého Botiče budou k dispozici 13.9. od 18:00 na telefonu: +420.604.917.881. ... V tomto čísle se konečně dostávám k tomu, abych zveřejnil návrhy, které jste zatím poslali do soutěže na nový design stránek Sovy v síti. Návrhů se sešlo celkem šest a jsou zatím zveřejněny anonymně (tj. bez uvedení autorů, aby bylo možné jejich nestranné posouzení. Ani já sám si už nepamatuji, který je čí. Seznam s odkazy naleznete na http://www.sovavsiti.cz/contest/ Soutěž zatím běží dál, své návrhy můžete ještě posílat. O jejich dalším osudu se asi poradíme tento pátek na akci Sova v Nuslích. Pro pořádek připomínám, že soutěž je otevřena každému; jedinou vstupní podmínkou je uplatnění všeho, co jste se na Sově o webdesignu naučili a jedinou odměnou pro vítězný návrh je to, že bude skutečně použit. Samozřejmě s oslavným uvedním autora a odkazu na jeho stránky. ... O znakových sadách a kódování češtiny se sice píše často, ale málokdy v širších souvislostech. A právě tak pojal svůj dnešní článek Martin Kopta. ... Mezi autory Sovy v síti srdečně vítám Romana Pichlíka, kterého někteří z vás znají z Help konference Intervalu.cz. Dnes pro vás napsal velmi zajímavý článek o historii JavaScriptu a těším se, že bude v psaní nejen o JavaScriptu brzy pokračovat. ... Na závěr se tentokrát (zase jednou) dostane na vaše dotazy, připomínky a redakční poštu vůbec. ... Krásný den vám přeje, Marek Prokop ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Seznam.cz a.s. hledá pracovníka na pozici WEBMASTER. Požadavky: HTML, CSS, znalost prohlížečů, JavaScript, Apache. Plný úvazek, Praha. Životopis na adresu: snajdr@firma.seznam.cz ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ INTERNET A INTERNACIONALIZACE Martin Kopta Příběh, který vám budu vyprávět, se doopravdy stal. V jednom českém městě vytvořili prezentaci na webu v češtině, angličtině, němčině a esperantu. Po několika měsících se zástupci města vydali do Thajska a chtěli se pochlubit svými stránkami. Ale ouha, texty byly nečitelné. Poté, kdy se webmasteryně zmíněného města obrátila s žádostí o radu na mou „firmu“, zjistili jsme, že web používal naprosto nevhodné znakové sady pro cizojazyčné verze a měl také špatně nastavená písma pro českou a esperantskou mutaci. + VOLBA ZNAKOVÉ SADY Ve světě počítačů se používá mnoho znakových sad. Některé z nich, jako třeba znakové sady počítačů Apple dokonce nebyly ani standardizovány, proto je na Internetu raději nepoužívejte. Výběr vhodné znakové sady závisí na znacích, které se používají v daném jazyce. Pro češtinu a slovenštinu je nejvhodnější sadou ISO 8859-2 (ISO Latin 2). Na webu se ale desetkrát častěji používá znaková sada Windows 1250. Tahle volba je dána, převážně používanou počítačovou platformou, ale také tím, že znaková sada je platně registrována [IANA], a její podporu nalezneme ve velkém množství prohlížečů. Také pro webmastery, kteří pracují s Windows je jednodušší posílat na server dokumenty v přirozené znakové sadě než neustále přepínat odesílané soubory do ISO. Ať už se rozhodnete pro ISO nebo nativní kódování Windows, nezapomeňte znakovou sadu dokumentu vždy uvést. V HTTP slouží pro udání znakové sady hlavička Content-Type. Například ta následující udává osmibitové kódování znakové sady ISO 10646 (aka Unicode). Content-Type: application/xml+xhtml; charset=utf-8 Uvádění znakové sady v hlavičce HTTP má plně ve své moci administrátor serveru a změnit ji můžete snad jen s využitím CGI nebo serverového skriptování. Nejčastěji bývá hlavička nastavena pro soubory HTML takto bez uvedení znakové sady: Content-Type: text/html Zjistěte si, jakou hlavičku odesílá váš server [HTTP]. Druhou možností, kde se můžete setkat s nastavením znakové sady, jsou procesní instrukce XML. Takto se nastavuje ASCII (ISO 646): Posledním místem, které může znakovou sadu změnit je potom prvek HTML , který simuluje serverové hlavičky HTTP. Takto byste nastavili kódování obvyklé na ruském webu: Při výběru přiměřené znakové sady se můžete nechat inspirovat doporučením W3C [W3C], ale bezpečnější bude projít několik velkých webů, které daný jazyk používají, a znakovou sadu vybrat podle zvyklostí přirozených mluvčí. (Například v Rusku stále ještě častěji narazíte na znakovou sadu KOI8-R než Windows 1251 nebo ISO 8859-5). Pokud předpokládáte, že české stránky bude číst i někdo v cizině, doporučuji vytvořit i zvláštní verzi pouze v ASCII. Znaková sada ASCII je součástí všech počítačových sad (krom GSM), a proto se v ní napsané texty bez problémů zobrazí i v těch nejexotičtějších zemích planety. Pro převod českého textu do ASCII můžete využít buď offline konvertor [KONVE] a stránky pak nahrát na server, nebo se domluvte s administrátorem vašeho webserveru na dynamickém převodu českých textů na serveru. Při dynamické změně kódování se často mění URL dokumentů (buď se přidá do kořene virtuální složka, nebo se za název souboru připojí virtuální přípona), proto raději nejdříve vyzkoušejte, zda odkazy zůstanou funkční. Dejte pozor, aby se algorytmy určené pro středoevropskou sadu neaplikovaly i na cizokrajná kódování. Pokud stejně jako webmasteryně ze zmíněného města zjistíte, že znaková sada vhodná pro určitý jazyk není v prohlížečích běžně podporována (např. ISO 8859-3 pro esperanto), můžete se vždy uchýlit ke znakové sadě UTF-8. Pozor ale na kompatibilitu s hodně starými prohlížeči -- ty mnohdy UTF-8 nepodporují. Seznam znaků, které obsahují běžné znakové sady, najdete ve veřejném archivu Unicode [UNICODE]. + VÝBĚR VHODNÉHO PÍSMA Pokud už máme vybránu znakovou sadu, ještě můžeme všechno zkazit špatně zvoleným písmem. Písma bychom měli raději nastavovat v CSS, jenžto se jich uživatel snáz zbaví, až mu budou na obtíž. A když už budeme fonty nastavovat, musíme pamatovat na fakt, že ne všechny počítače podporují znakovou sadu Unicode, a tedy ani nepodporují písma, která obsahují znaky z více jazyků. Kromě technického omezení operačnícho systému narážíme v zahraničí na skutečnost, že tamní správci nepřidělí znakové sadě přiměřený font (středoevropské sadě přidělí západoevropské písmo). I proto musíme fonty nastavovat podrobněji než jen klíčovýmí slovy serif či sans-serif. Při nastavování písem pamatujte, že je třeba nejdříve ošetřit potíže počítačů, jež nepodporují Unicode (starý MacOS, DOS ap.). Druhým pravidlem je, že za specifickými písmy, která nejsou součástí standardní instalace operačních systémů, musíme uvést nějaké písmo, které nejspíš budou mít k dispozici i uživatelé v exotických zemích. [FAQ] I zde bychom se měli porozhlédnout na webu, jaká písma a v jakém pořadí používají weby v daném jazyce. Končit bychom vždy měli klíčovým slovem označujícím skupinu písem (serif, sans-serif, monospace, cursive, fantasy). + NASTAVENÍ JAZYKA TEXTU Jestliže jste se uchýlili k UTF-8, pak nezapomeňte určit jazyk, v němž je text napsaný, a prostřednictvím CSS jednotlivým jazykům přidělte vhodná písma. Zkratky jazyků určuje norma ISO 639 [ISO]. Moje rada se týká hlavně odkazů na cizojazyčné verze, jak je najdeme třeba na domovské stránce serveru o esperantu [EO]. + NOTA BENE Pokud nemáte s tvorbou webu v daném jazyce zkušenost, požádejte v cílové zemi nějakého kolegu webmastera nebo alespoň běžného uživatele, aby stránky prohlédl. + ODKAZY [EO] Mnohojazyčná domovská stránka esperanta http://www.esperanto.net/ [FAQ] Často kladené dotazy konference o webdesignu http://www.grafika.cz/konference/webdesign.txt [HTTP] Hlavičky odesílané serverem http://www.delorie.com/web/headers.html [IANA] Přehled znakových sad http://www.iana.org/assignments/character-sets [ISO] Jazykové kódy (ISO 639) http://www.loc.gov/standards/iso639-2/langcodes.html [KONVE] Konvertory středoevropských znakových sad http://www.slunecnice.cz/ (vyhledat "konverze kódování") [UNICODE] Znaky znakových sad http://www.unicode.org/Public/MAPPINGS/ [W3C] Doporučené znakové sady http://www.w3.org/International/O-charset-lang.html http://www.w3.org/International/O-charset-list.html Copyright (c) 2002, Martin Kopta Martin Kopta je copywriter na volné noze. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Denně aktualizované novinky, odkazy na články, zajímavé stránky: Weblog Sovy v síti -- http://www.sovavsiti.cz/weblog/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ EXKURZE DO HISTORIE JAVASCRIPTU ANEB JAK TO VŠECHNO ZAČALO Roman Pichlík Psal se květen rok 1995 a tehdy v celkem neznámé firmě Netscape nastoupil muž jménem Brendan Eich, který se stal posléze otcem jednoho z nejpopulárnějších skriptovacích jazyků současnosti, ale nepředbíhejme děj času. Jeho úkol nebyl zrovna snadný. Navrhnout jazyk, který bude následně integrován do internetového prohlížeče Netscape Navigator. Tento jazyk, který se měl stát součástí stránek, měl dát možnost vytvářet stránky, které již nebudou statické, ale umožní jejich dynamičnost. Pod slovem dynamičnost si představme práci s formuláři, změnu barvy, vytváření nových oken, práci s nimi. V porovnání s dnešními možnostmi se můžeme pousmát, ale v té době to byla věc nevídaná. Po čtyřech letech vývoje v tom samém roce představila firma Sun svůj programovací jazyk "pro www" pod názvem Java, který sehrál nemalou roli. Firma Netscape byla první která, která dostala licenci na její použití. Brendan Eich a jeho vývojový tým tedy stál před klíčovým rozhodnutím použít Javu nebo se vydat vlastní cestou. V neprospěch Javy hrál hlavně fakt, že byla příliš robustním řešením, kdežto představy Brendana byly spíš někde u malého kodu, jehož zápis nebude požadovat po jejich tvůrci zvláštní znalosti programování. Na pomyslné misce vah, převážil názor vydat se vlastní cestou a udělat jazyk, který bude sice vypadat jako Java a vycházet z ní, ale budete to jazyk skriptovací, interpretovaný v prohlížeči. Tak začal vznikat jazyk pod názvem LiveScript. První implementace byla v prohlížeči Netscape Navigator 2.0 v září 1995, za nedlouho po té, 4.prosince byl LiviScript oficielně překřtěn na JavaScript a zrodila se legenda. A jak to bývá trpěla na dětské nemoci. Při pohledu zpět, se musí tehdejší rozhodnutí vývojového týmu, vydat se cestou skriptovacího jazyku ocenit. Určitě tento krok, přispěl k jeho masivnímu rozšířeni a oblíbenosti pro svojí jednoduchost. Jayzk, vycházející svou syntaxí z jazyků Java a C++, prošel do současné doby bouřlivým vývojem. Přišel Netscape Navigator 3, který implementoval JavaScript 1.2. Paradoxně tento krok vpřed se stal zlomovým. Na hrací plochu vstupuje velký hráč Microsoft. Následuje uvedení Internet Explorer 3.0, který implementuje svůj vlastní skriptovací jazyk, jež vychází z konkurenčního JavaScriptu a jehož název je Jscript 1.0. Ač jazyky byly takřka totožné, nebyly plně kompatibilní. I tento jazyk měl však své mouchy, a proto je vydána další verze 2.0, která přibližně odpovídá JavaScriptu 1.1 a je implementována do pozdějších verzí Internet Exploreru 3.0. Obě verze (JavaScript dále jen JS a JScript) procházejí vývojem. JS 1.2 implementován v Netscape 4.0, JS 1.3 je implementován v Netscape 4.5 a JScript 3.0 je implementován v IE 4.0. Pomalu začal vznikat stav narůstající nekompatibility, a proto zasáhla mezinárodní standardizační průmyslová asociace se zaměřením na informační a komunikační systémy ECMA. Ta standardizuje prvky JS 1.1 a přidává nové -- vzniká tzv. ECMAScript verze 1.0 (kompatibilními implementaci jsou JS 1.3 a JScript 3.0). V dnešních dnech je aktuální JS 1.5 (Netscape 7.0, Mozilla 1.0), JScript 5.5 IE 6.0 standardizuje ECMAScript verze 3.0 (kompatibilními implementacemi jsou JS 1.5 a JScript 5.5). Za zmínku stojí určitě, že firma to ve své době myslela s JavaScriptem opravdu vážně, neboť vyvinula jeho verzi i pro serverové využití na principu SSI (serverem vkládané vsuvky), jehož masivnějšímu rozvinutí oproti úspěšné trojici ASP, PHP, JSP zabránil fakt, že byl úzce spojen s komerčním Netscape Enterprise Server. Jak klientský tak serverový JS mají společné jádro avšak liší se objektovým modelem. Co napsat závěrem? JavaScript se stal fenoménem, který posunul web o pořádný kus vpřed tím, že dal do rukou nás vývojářů silný nástroj pro realizaci představ. Avšak skriptovací jazyky nejsou všelékem, nýbrž pomocníky. Další vývoj na poli alternativních, zařízení určených k přístupu na internet (tolik populární topinkovač) ukáže i cestu, jak se bude vyvíjet jeho použití na stránkách. Naproti tomu jeho využití na klientské straně v intranetových aplikacích, bude spíše rostoucí. Povaha intranetu totiž poměrně dobře umožňuje zmapovat prostor programového vybavení, určit používané prohlížeče a následně i míru použití skriptovacího jazyka. + Zdroje: Marc Andreessen: INNOVATORS OF THE NET: BRENDAN EICH AND JAVASCRIPT http://wp.netscape.com/columns/techvision/innovators_be.html Flanagan David:JavaScript kompletní průvodce, Computer Press 2002 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Doporučte sovu v síti vašim přátelům. Přepošlete jim toto číslo, nebo použijte formulář na http://www.sovavsiti.cz/recommend.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ČTENÁŘI NÁM PÍŠÍ > Dobrý den, nějak mi uniká a nejsem schopen nikde odhalit > tajemství automatické volby jazykové verze podle nastavení > preference v prohlížeči. Určitě víte co myslím, používá to > třeba Microsoft. Poradíte mi? Odpověď je poměrně jednoduchá. Tím tajemstvím je serverová proměnná (předávaná v hlavičce požadavku od prohlížeče) s názvem HTTP_ACCEPT_LANGUAGE. Ta obsahuje seznam jazyků v pořadí preferovaném uživatelem, tedy např. "cs,en,de" pro češtinu, angličtinu a němčinu. Stačí si tedy na straně serveru zjistit, zda obsahuje jazyky, pro které máte připravené verze stránek a podle toho provést přesměrování. ... > Chtěl bych předělat stránky s rámci na stránku bez rámů. Jak > jednoduše předejít pracnému přepisování textu ve sloupci na > každé webové stránci? Je-li jich jen několik, dá se to > zvládnout. Ale pokud jich mám třeba již 50 a víc... Pokud máte k dispozici skriptování na straně serveru, nebo alespoň SSI (Server Side Includes, neboli serverové vsuvky), jde to snadno. Předpokládám ale, že v tom případě byste se takto neptal. Ideální alternativou je nějaký HTML preprocesor. Je jich víc, ale já jsem si oblíbil (a používám i pro Sovu) PPWizard. V Sově o něm dokonce najdete článek: http://www.sovavsiti.cz/c01192.html ... > zaujalo me vase povidani o stylech na serveru Interval. > Mozna byste vedel jak vyresit zarovnani textu v jednom radku na > obe strany pomoci css - zacatek radku nalevo, konec napravo. > Mam pocit, ze jsem nekde videl specielni clanek na toto tema, > ale nomohu jej znovu najit. Článek, o kterém píšete, napsal Mark Newhouse a najdete ho na: http://www.realworldstyle.com/split.html ... > Děkuji za poslední Sovu v síti v emailové schránce. Nepochopil > jsem z ní jen jediné: Proč se Martinu Koptovi zdá lepší použití > JavaScriptu místo vnořeného ABBR SPAN. Pro mě je to zřetelně > přesně naopak. Takhle je to úplně stejné jako nepoužívání tagu > NOSCRIPT, což beru jako hrubou chybu (a přitom podle komentářů > na Intervalu pan Kopta patrně také - paradoxní). Nevidím nic > zbytečného na látání děr HTML kódem tam, kde to JavaScriptem > není vůbec potřeba ... Nevím sice, co a proč se zdá lepší Martinovi, ale protože autorem článku, na který zřejmě narážíte, jsem já, odpovím vám za sebe. Spoléhat se jen na JavaScript je obecně opravdu problematické, v tom máte pravdu. Uživatel může mít JavaScript vypnutý a požadavaná funkčnost je fuč. Jiná věc ovšem je, když se jedná o funkčnost nadstavbou, která pro přístupnost a použitelnost stránek není nezbytná. V takovém případě je použití JavaScriptu, a to i bez statické alternativy, ideální. Ve zmíněném případě jde navíc ještě o další věc. Značka SPAN vložená do ABBR je z pohledu standardů nadbytečná a uživatelé prohlížečů respektujících standardy (zde např. Opera a Mozilla) si jistě nezaslouží delší a méně kvalitní kód jen proto, že jiný prohlížeč zachází s ABBR macešsky. Především proto jsem zvolil vkládání SPANu do kódu pomocí JavaScriptu. Další důvod pro zvolené řešení je však i ten, že už můžete mít velmi mnoho hotového kódu (např. Soví weblog), kde je značka ABBR používána, a prakticky není možné ho kompletně předělat. Pak stačí připojit skript uvedený v minulém čísle a je hotovo. ... > Uvítal bych nějaký seriál o praktických zkušenostech > argumentace při jednání webového tvůrce se zákazníkem. Se > zájmem jsem si přečetl třeba článek o velikostech písma - tedy > věc, kterou alespoň teoreticky celkem ovládám. Již několikrát > se mi ale stalo, že jsem narazil na svoji neschopnost jednoduše > vysvětlit laickému zákazníkovi, že ne všichni používají EI4 > v 800x600 na platformě XYZ, s nastavením ZXY, .. a tedy že ne > všichni uvidí jeho stránky _NAPROSTO_ stejně, i když se budu > snažit a napíšu stránky tak, aby "všichni" viděli alespoň > informace... To je určitě zajímavý námět a já za něj děkuji. Do té doby, než se ho podaří zpracovat mně, nebo některému dalšímu autorovi Sovy, vám doporučuji jednoduchou metodu. Vytvořte zákazníkovi sadu sejmutých obrazovek zachycených při různém nastavení prohlížeče a počítače. Dokonce bych řekl, že si vystačíte s IE/Win, pokud si trochu pohrajete s barvami, rozlišením, nastavením pro tělesně postižené apod. ... > existuje nejaky tag, ktory nemeni implicitne nastavenia > browsera a ovplyvnuje len riadkovy text? Potrebujem napriklad > len jeden konkretny riadok (alebo len par slov) > zvyraznit/vycentrovat, alebo len trochu zmenit styl bez ineho > vplyvu. > > - narazil som na tag . O co vlastne ide? Vidíte, vlastně jste si odpověděl sám. Pro řádkový (inline) obsah je to značka SPAN. V případě blokových prvků hraje tuto roli DIV. ... > chtěl bych si udělat své stránky, ale zároveň chci aby už od > začátku měly poměrně dobrou úroveň. > Především mám problém s tvorbou menu. Na internetu mám > vyhlédnuté jedno menu, ale když jsem se podíval na zdroják, tak > sem se fakticky ztratil. > > Jsem tvůrce webu začátečník a ani nevím, kde bych mohl najít > různé již předvytvořené scripty apod. nevíte náhodou o něčem. Dám vám jednu upřímně míněnou radu: jste-li tvůrce začátečník, zapomeňte na dynamická menu. Ve většině případů jsou dynamická menu tvořená JavaScriptem zbytečná a úroveň stránek nijak nezvyšují. Podívejte se na několik webů významných světových společností a zjistíte, že minimálně polovina z nich JavaScript vůbec nepoužívá. Tím nechci říci, že by dynamická menu neměla svůj význam. Mají, ale pokud nejsou vyřešena skutečně profesionálně (včetně posouzení, zda se pro daný případ opravdu hodí), nadělají většinou víc škody než užitku. A to je pro dnešek vše. Příště se snad dočkáte již dlouho plánovaného článku o velikosti písma a určitě i něčeho dalšího. Zatím se mějte krásně. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Nechcete, nebo naopak chcete dostávat Sovu v síti? Odběr lze odhlásit odesláním zprávy na unsubscribe@sovavsiti.cz. Přihlásit se lze odesláním zprávy na subscribe@sovavsiti.cz, nebo formulářem na adrese http://www.sovavsiti.cz/. Chcete nám cokoli sdělit? Uvítáme vaše náměty, připomínky, kritiku, atd. na adrese mailto:redakce@sovavsiti.cz. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Není-li v konkrétním případě uvedeno jinak, je autorem všech publikovaných textů Marek Prokop. Tento ezin, nebo jeho libovolnou část můžete volně šířit dále, pokud současně uvedete zdroj následujícím způsobem: _________________________________________________________________ Sova v síti -- (c) 2002 Marek Prokop -- http://www.sovavsiti.cz/