SaCzech-U: Návod k použití

SaCzech-U se skládá ze skupiny jednoúčelových konverzních programů. Každý z nich překládá dokument ze všech implementovaných výchozích kódu do jednoho kódu cílového, jehož jméno je součástí jména programu. Členy rodiny SaCzech-U tedy jsou toASCII.cgi, toCP1250.cgi, toKEYBCS2.cgi, toMAC.cgi, atd. (též zvané ascii.cgi, 1250.cgi, kam.cgi, mac.cgi, atd.). Tyto programy předpokládají, že budou spuštěny jako CGI skripty a využívají příslušné proměnné prostředí. Nelze je spouštět samostatně (alespoň ne jednoduše).

Obsah:

Základy - URL stránky

Stránku napište v jednom z osmibitových kódu, které SaCzech-U zná, nejlépe samozřejmě v kódu, který byl Vámi (nebo správcem serveru) při instalaci definován pomocí proměnné $source jako kód implicitní, protože se předpokládá, že bude použit ve většině dokumentů. Vystavte ji, jak je obvyklé. Jediné, co se změní, bude URL, kterým je třeba se odkázat na stránku. Jestliže URL stránky bez překódování by bylo
http://www.kdesi.ca/user/cesta/stranka.html
bude URL téže stránky při požadavku jejího překódování do sedmibitového ASCII např.
http://www.kdesi.ca/user/cgi-bin/ascii.cgi/cesta/stranka.html
Předpokládám, že URL cesta ke kódujícím skriptům je http://www.kdesi.ca/user/cgi-bin. Můžete použít libovolný ze skriptů toXXX[.cgi]. nebo yyy[.cgi] (kde XXX či yyy jsou jména kódů popsaná v předchozích kapitolách). Pokud cesta ke kódujícím skriptům je http://www.jinde.cz/cgi-bin (globální CGI adresář serveru), bude URL požadující překódovanou stránku mít tvar:
http://www.jinde.cz/cgi-bin/ascii.cgi/user/cesta/stranka.html

Odkazy tohoto typu však předpokládájí, že předem víte, jaký kód bude uživatel vyžadovat. To často nemusí být pravda. V takovém případě doporučuji použít skript whichcode[.cgi] a URL

http://www.kdesi.ca/user/cgi-bin/whichcode.cgi/cesta/stranka.html
případně
http://www.jinde.cz/cgi-bin/whichcode.cgi/user/cesta/stranka.html
Skript whichcode uživateli oznámí, že cílový dokument obsahuje diakritická znaménka a umožní mu zvolit kód, který považuje za optimální.

Zachování kódu při odkazech

Je přirozeným požadavkem, aby uživatel vybíral kód jen jednou a při odkazech na další dokumenty z téhož zdroje se uchovávala informace o zvoleném kódování. Nejjednodušší cestou je relativní odkaz. Když do dokumentu vložíte odkaz pomocí značky
<A HREF="kapitola1.html">První kapitola</A>
klient přepracuje relativní URL kapitola1.html na absolutní. Vyjde přitom z URL dokumentu, obsahujícího značku. Pokud bylo původní URL dokumentu například http://www.kdesi.ca/user/cgi-bin/toCP1250/cesta/obsah.html, povede zmíněný odkaz k dokumentu http://www.kdesi.ca/user/cgi-bin/toCP1250/cesta/kapitola1.html. Informace o kódu byla zachována.

Pozor! Chcete-li využívat pro uchování kódu relativní odkazy, nesmíte v dokumentu použít značku <BASE>, která určuje základní URL dokumentu. Kdybyste ji použili, budou všechna relativní URL vztažena k lokátoru, definovanému touto značkou, nikoli k URL, pod kterým klient získal stránku.

Absolutní odkazy je třeba řešit jinak. Tady používá SaCzech(-U) metodu podobnou programu WWWdia. Do textu můžete na kterékoli místo (včetně cest) vložit řetězec

__CHARSET__
Kódující skript nahradí každý výskyt tohoto řetězce identifikací kódu, do kterého právě převádí stránku. Pokud se tento řetězec vyskytuje ve spojení to__CHARSET__ nebo charset=__CHARSET__, je vždy nahražen jménem kódu užívaným v programu WWWdia (a původním SaCzechu), ve všech ostatních případech bude nahražen jménem EUnet modulu pro stejný kód. Proto můžete v textu použít značku
<A HREF="http://www.jinde.cz/cgi-bin/to__CHARSET__/jinacesta/str.html">odkaz</A>
Pokud stránka projde skriptem toKEYBCS2, který ji převede do kódu KEYBCS2, bude v odeslaném dokumentu v této značce uvedeno URL
<A HREF="http://www.saczechserver.cz/cgi-bin/toKEYBCS2/jinacesta/str.html">odkaz</A>
Předpokládám, že server, určený tímto absolutním URL, má instalován SaCzech-U. Může, ale nemusí se jednat o tentýž server, který poskytl původní dokument. Stejně je zvládnut i odkaz na stránku v pravomoci WWWdia, použijete-li pro tento odkaz URL
<A HREF="http://www.diaserver.cz/cgi-bin/charset/jestecesta/str.html?charset=__CHARSET__">odkaz</A>
Stejný skript toKEYBCS2 z rodiny SaCzech-U navíc zvládne na téže stránce i použití značky
<a href="http://pes.eunet.cz/__CHARSET__">odkaz</A>
V odeslaném dokumentu se v tom případě objeví
<a href="http://pes.eunet.cz/kam">odkaz</A>
Schopnost automaticky zachovávat kód při kontaktu s co největším počtem serverů stála za nápadem zavést podporu alternativních jmen kódu v programu SaCzech-U. Problémem ale je, že server většinou neví co má dělat s žádostí typu <a href="http://pes.eunet.cz/__CHARSET__">, když výše uvedená stránka náhodou neprojde žádným konverzním skriptem. Neví to dokonce i některé servery, které používají SaCzech a na nichž bylo zřejmě opomenuto zavést synonyma doporučená pro to__CHARSET__.cgi. K tomu navíc existují i moduly se jmény kódů, které se liší od jmen EUnetu, takže dvě sady jmen kódů na všechno stejně nestačí.

Obrázky se nekódují!

SaCzech(-U) je selektivní. Kóduje jen soubory s určitými příponami (implicitně .html, .htm a .txt; jak je změnit se dočtete v kapitole Pod kapotou v dokumentaci původního programu SaCzech). Dostane-li k překódování soubor s jinou příponou, odmítne se akce účastnit a přesměruje klienta přímo na dotyčný soubor. Důsledkem je, že klient získá soubor v původním tvaru beze změny kódování.

Díky tomuto mechanismu můžete na své stránky vkládat relativní odkazy na obrázky, zvuky a další druhy dat, kterým by překódování rozhodně neprospělo.

Jestliže se na stránce vyskytne značka

<IMG SRC="obraz.gif">
a URL stránky je http://www.kdesi.cz/cgi-bin/toASCII/cesta/stranka.html, bude klient po serveru požadovat http://www.kdesi.cz/cgi-bin/toASCII/cesta/obraz.gif. Server spustí skript toASCII. Ten však zjistí, že je po něm požadováno kódování souboru s příponou .gif. Místo aby se pustil do díla, odpoví klientovi "hele s tímhle já nechci nic mít, vezmi si rovnou ten soubor". Klient si ho vezme a vše funguje k plné spokojenosti všech zúčastněných.

Změna výchozího kódu

Implicitní výchozí kód, ve kterém budou psány dokumenty si určíte při instalaci programů SaCzech-U. Mělo by se jednat o kód, ve kterém bude vytvářena většina stránek (nejlépe všechny). Pokud autor používá i kód jiný, má dvě možnosti:
Převést stránku do implicitního kódu.
To je méně pohodlné a navíc to komplikuje pozdější úpravy na stránce (každá úprava bude vyžadovat nové překódování - SaCzech-U to ale usnadňuje, je možno ho používat k rychlé a snadné konverzi dokumentů mezi dvěma kódy oběma směry mezi jednotlivými úpravami - viz další odstavec).
Ponechat stránku v kódu původním a vyznačit jej.
K vyznačení původního kódu dokumentu se používá HTML komentář v přesně definovaném tvaru
<!--MYCHARSET=kód-->
Například <!--MYCHARSET=CP1250-->. Počínaje řádkem, obsahujícím tento komentář (doporučuji jej uvést na samostatném řádku na začátku dokumentu), bude za výchozí kód dokumentu považován kód CP1250. SaCzech-U během konverze nevkládá do výsledného dokumentu původní komentáře typu <!--MYCHARSET=kód-->, protože již neplatí, a místo nich vloží na jeho úplný počátek komentář s vyznačením kódu do něhož je dokument překládán. Po uložení pak není pochyby v jakém kódu je daná kopie dokumentu zapsána. Je možno pak pokračovat v upravování dokumentu v novém kódu.
Dokonce můžete používat několik různých kódů v jednom dokumentu. Jestliže je první polovina textu psána v kódu Kamenických a druhá v MS-Windows, stačí před každou část vložit příslušný komentář a výsledek bude uživateli odeslán ve správné podobě - obě poloviny se korektně překódují například do ISO Latin 2. Takové dokumenty je sice možno považovat za zvěrstvo, ale ta možnost tu je. SaCzech-U ji ovšem činí naprosto zbytečnou jak vysvětleno výše.

Pro milovníky patologických případů:

Nabídka kódů

Často je vhodné nabídnout uživateli přímo na stránce možnost změny kódu této stránky. Nechce-li autor tuto nabídku konstruovat ručně, může SaCzech-U instruovat, aby ji vytvořil automaticky. Na příslušné místo stránky vložte HTML komentář
<!--BAR-->
SaCzech-U jej během zpracování textu nahradí nabídkou možných kódů, do kterých lze stránku převést. Řiďte se podobnými pravidly, jako v případě MYCHARSET - v komentáři neuvádějte nic jiného.

Chcete-li, aby nabídka kódů byla nadepsána anglicky (např. na anglické stránce, která obsahuje česká jména), použijte komentář

<!--BAR E-->

Pokud uvedete na jednom řádku více než jeden komentář <!--BAR --> nebo <!--BAR E-->, SaCzech-U vygeneruje jen jednu nabídku podle prvního komentáře a všechny ostatní ignoruje. Aby se zamezilo opakovanému generování nabídek při opětovném použití konvertovaného dokumentu, SaCzech-U nepřekopíruje ani komentáře typu BAR do odesílaného dokumentu, před každou nabídkou ale vypíše pozměněný komentář upozorňující na to, že byla vygenerovaná automaticky.

SaCzech-U a CGI

Aby mohl spolupracovat s CGI skripty a měnit kód jejich výsledků je třeba SaCzech-U instalovat tak, aby kódované dokumenty získával metodou http (každý dokument získává od serveru protokolem HTTP) nebo guess (snaží se uhádnout, co je obyčejný soubor a co volání CGI skriptu, ve druhém případě opět sáhne k protokolu HTTP). Podrobnosti se dočtete v kapitole o instalaci.

Provedl jsem i všechny změny v souboru enchttp.tpl, které byly potřebné pro podporu metody http při instalaci SaCzech-U v soukromém adresáři uživatele. Zdá se, že výsledný kód funguje správně, neměl jsem ale zatím možnost ho dostačně otestovat.

Zachování kódu v obrázcích s klikou. Tipy, triky, rizika

Prosím, obraťte se přímo na dokumentaci původního programu SaCzech.