Filip Oščádal: Jak se migroval web České školy

čtvrtek 26. července 2012 ·

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)
Většina aplikačního kódu je ukryta v souboru mxd.cz/qfvzl a většinou se týká využití regulárních výrazů, které nám velmi pomohly:
  • ř. 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
Samotná migrace byla vysilující 14 denní dřina dvou lidí, kteří články procházeli, opravovali chyby v tabulkách, mazali obrázky, odstraňovali nepotřebné formulace

Poděkování za pomoc, bez níž bychom to nikdy nedokázali, patří minimálně Filipovi Hráčkovi z českého Google a Brettu Morganovi z Google Sydney (oba Developer Relations, Brett se speciálně stará o Blogger API). THANK YOU GUYS!

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ářů:

BoBr řekl(a)...
26. července 2012 v 20:32  

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.

Fred Brooker řekl(a)...
1. srpna 2012 v 7:23  

Bohužel směrování odkazů v několika tisícovkách článků bylo nad naše možnosti.

Články dle data



Učitelské listy

Nabídka práce

Česká škola - portál pro ZŠ a SŠ

Česká škola poskytuje svým čtenářům diskusní prostor k vyjádření názorů na školskou problematiku. Tyto příspěvky se nemusí shodovat se stanoviskem redakce České školy a jsou uveřejňovány jako podnět k dalším diskusím.

Obsah článků nemusí vyjadřovat stanovisko redakce nebo vydavatele Albatros Media, a.s.


Všechna práva vyhrazena.

Tento server dodržuje právní předpisy
o ochraně osobních údajů.

ISSN 1213-6018




Licence Creative Commons

Obsah podléhá licenci Creative Commons Uveďte autora-Neužívejte dílo komerčně-Nezasahujte do díla 3.0 Česká republika, pokud není uvedeno jinak nebo nejde-li o tiskové zprávy.



WebArchiv - archiv českého webu



Tyto webové stránky používají k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Informace o tom, jak tyto webové stránky používáte, jsou sdíleny se společností Google. Používáním těchto webových stránek souhlasíte s použitím souborů cookie.