Mohli jste si všimnout, že v pravém sloupci webu České školy přibylo několik tisícovek starších článků počínaje historickým rokem 1999. Článek popisuje ono technické kouzlo, kterým toho bylo dosaženo, a peripetie, které jsme při tom zažili.
Šéfredaktor České školy Janek Wagner mne jednoho dne oslovil s tím, že má "problém" a "nějaká data". Takhle mi to on dělá docela často a rád.
Data tvořila zabalená změť 60 MB XML exportu ze starého webu, který byl postaven na technologii Microsoft ASP. Samozřejmě bez dokumentace, bez komentáře. Janek tehdy řekl: "Udělej s tím něco."
Techničtěji zdatní vědí, že formát XML je dobrý pro stroje, lidem se však čte s obtížemi. Proto první krok spočíval v konverzi XML do čehokoliv čitelnějšího. Zde jsem narazil na první problém. PHP parser nedokázal s daty pracovat a hlásil invalidní formát. Bližší inspekce odhalila nepochopitelnou chybu ve formátu dat a náhodně vložený nulový byte. Pomohl starý dobrý Far Manager a výsledkem úsilí byla kupa souborů ve formátu JSON (mxd.cz/hqngg). Ten již je poněkud stravitelnější.
Druhým krokem bylo vybrat migrační technologii. Zvolil jsem Blogger JavaScript API v2 (již deprecated, bylo nahrazeno API v3), neboť bylo jasné, že články za tak dlouhé období bude třeba zrevidovat. Úprava vzorové aplikace od Google zabrala zhruba 10 dní. Výslednou aplikaci najdete na Githubu (viz níže). Jde o HTML5 web app, která importuje veškerá JSON data a nabízí jednoduchý HTML/WYSIWYG editor.
Rád bych se s vámi, čtenáři České školy, podělil o některé zajímavosti, které programování "migrátoru" odhalilo. Použité technologie: jQuery, HTML5, JSON, JavaScript.
V souboru mxd.cz/rohts stojí za povšimnutí:
- ř. 27-45: tato jQuery funkce zpřístupní události změny (onchange) z WYSIWYG editoru (zde DIV s id "preview" s nastavením atributu contenteditable)
- ř. 10-36: využití HTML5 Local Storage
- ř. 84-85: odstranění pevných a násobných mezer z titulku článku
- ř. 124-144: vytváření indexu, tj. slovníku pro rychlé vyhledávání
- ř. 177: velmi užitečné obarvování listboxu; při revizi bylo hned jasné, které články jsme již viděli
- ř. 202: nahrazení vícenásobných teček symbolem …
- ř. 210-233: čištění HTML kódu od přebytečného kódu, obvykle vloženého z produktů společnosti Microsoft (přesto se nepovedlo zachytit zcela všechny varianty nepořádku)
- ř. 238-244: odstraňování většiny nefunkčních linků (zde je krása regulárních výrazů opravdu názorná)
- ř. 394-427: názorná ukázka toho, jak provádět caching častých dotazů, zde při vyhledávání relací
- ř. 607-652: realizace rychlého vyhledávání (viz výše)
- ř. 660: grafická perlička :)
- ř. 829-924: různé obecné funkce pro odstraňování či přidávání obsahu skrze regulární výrazy, mohou se hodit i vám
- ř. 932-960: řetězcové prototypy, tj. metody, jež modifikují celý objekt String
Migrátor České školy, otevřený kód, naleznete zde: https://github.com/fifunja/ceskaskola
Filip Oščádal
autor se specializuje na vývoj webových aplikací od roku 2000
najdete jej na jeho občasníku mxd.cz nebo napříč sociálními sítěmi :)
2 komentářů:
Přiznávám, že jsem patřil k těm, kdo na Janka po přechodu na nový server dost tlačil, aby archiv zpřístupnil. Po několika letech jsem si ale zvykl a ty nejnutnější dokumenty jsem přemístil. I dnes by ale pořád ještě bylo pěkné, kdyby se podařilo přesměrovat i ty staré odkazy (např. http://www.ceskaskola.cz/ICTveskole/Ar.asp?ARI=101317&CAI=2131). Teď po několika letech, kdy jsou nefunkční, to ale přestalo být nezbytně nutné.
Za zpřístupnění textů rozhodně děkuji.
Bohužel směrování odkazů v několika tisícovkách článků bylo nad naše možnosti.
Okomentovat