přejít na obsah přejít na navigaci

Linux E X P R E S, Kterak skripty zvítězily nad Windows

Kterak skripty zvítězily nad Windows

Je to pár dní, co jsem byl požádán jednou nejmenovanou firmou o převod jejich webového portálu na naše firemní linuxové servery. Obvykle v tom nebývá žádný problém, bohužel tentokrát jsem se zmýlil. Zákazník měl totiž původně stránky na hostingu s OS Windows.


Za společné asistence majitele jsme nejprve stránky zkopírovali do testovacího prostředí na mém notebooku. Nastavili jsme web server Apache a zadali správnou url do prohlížeče. Kromě chybového hlášení se však nic neukázalo. Letmým pohledem do adresáře s daty mi ihned bylo jasné proč. Soubor se nejmenoval index.php ale Index.php. Nezbylo mi tedy nic jiného, než všechny soubory, (které byly jednou s malým písmenem a podruhé s velkým písmenem na začátku - asi podle toho jak se programátor vyspal) sjednotit. Nejprve jsem si chtěl ověřit, kolik souborů portál obsahuje. Z příkazu

# ls -plaR | wc -l 

na mě vyštěklo třímístné číslo a tak bylo jasné, že převod názvů budeme řešit skriptem a nikoliv ručně. Zákazník nejenom že prudce zezelenal ale po té, co jsem zadal do terminálu příkaz

# for F in * ; do mv $F `echo $F | tr 'A-Z' 'a-z'` ; done 

a prohlásil hotovo! mu ještě spadla brada.


S úsměvem na tváři jsem opět otevřel prohlížeč a znovu zadal adresu. Stránka se již sice zobrazila, ovšem přečíst se díky "pokažené" češtině nedala. Intuitivně jsem si ve Firefoxovi (pomocí CTRL + u) zobrazil zdrojový kód stránky a takříkajíc "na jisto" pátral po meta tagu http-equiv, kde jak jsem předpokládal, bylo nastaveno kódování windows-1250. Zákazníkovi jsem spolu s patřičným vysvětlením doporučil přechod na kódování UTF-8. Po několika minutách debatování souhlasil. Editovat stovky souborů se mi opět nechtělo a tak na řadu přišel další skript. Jeho úkolem bylo nahradit řetězec charset=windows-1250 za řetězec charset=UTF-8. Přesunul jsem se do adresáře se soubory a použil příkaz find, který jsem doplnil o xargs a substituci textu perlem.


find . -type f -name '*.php' | xargs -i perl -i -pe 's/charset=windows-1250/charset=UTF-8/;' {}

Zákazník byl opět v úžasu, ovšem tím má práce nebyla zdaleka hotová. Kromě změny tagu bylo potřeba ještě překódovat samotný obsah všech skriptů. K mé smůle byly jednotlivé soubory v různých kódováních počínaje iso8859-2 přes utf-8 až po windows-1250. S tím mi pomohl program enca (sudo apt-get install enca) a tak výsledný skript opět nebyl až tak složitý


find . -type f -name '*.php' -print0 | xargs --no-run-if-empty -0 enca -x UTF-8

 

Zbývalo jen změnit záznamy v DNS a "měl jsem vyděláno".


Celý převod domény trval řádově do 10 minut. Docela by mě zajímalo, jak dlouho by trval převod administrátorovi Windows, kdyby byla situace opačná.

Nahoru

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz