Encyklopedie čs. alternativní scény
do roku 1993

Ladislav Ašenbrener a kol.



Média - Technické prostředky používané při tvorbě Encyklopedie. 26. 12. 2015.

Tento text si klade za cíl popsat technické prostředky, které byly používané pro tvorbu encyklopedie, a to jak knižní verze, tak i webových stránek a všech ostatních přidružených aktivit.

2005 - 2006

Na začátku projektu, kdy ještě ani nebyl přesně stanovený rozsah, ani výstup, se používaly obyčejné statické webové stránky, kdy každá stránka obsahovala data jedné kapely a všech jejích nahrávek. Obsah se doplňoval ručně a taktéž se ručně nahrával na server. V té době navíc byly stránky umístěné na jiné webové adrese.

2006 - 2012

V tomto časovém období bylo používáno mnoho technologií, ale časové rozsahy jednotlivých technologií si však bohužel nepamatuji a nelze je ani dohledat. Pokusím se je tedy popsat v pořadí, v jakém byly nasazeny bez bližšího časového určení.

Jako první byly předělány webové stránky na dynamické tak, aby se data dala zadávat přímo, bez nutnosti nahrávat soubory na server. Jako databáze byla použita MySQL 4, jako frontend PHP 5. Rozhranní pro administraci bylo vlastního řešení postavené na PHP s plně objektovým frameworkem. To znamenalo, že tento framework se dal použít i pro jiné webové stránky nebo jiné akce. Toto řešení zůstalo až do jeho ukončení v roce 2012.

Zálohy databáze byly prováděny dvojím způsobem. První způsob byla standardní záloha databáze prováděná automaticky každý den poskytovatelem hostingu a jednalo se o standardní zálohu pomocí prostředků MySQL. Tato záloha byla ke konci provozu vypnuta z technických důvodů, kdy automatické zálohy nebylo možné provádět pro databáze s aktivními triggery. Druhý způsob zálohy byl ruční a spočíval ve výpisu všech dat do textového souboru v předem určeném formátu a uložen lokálně na mém počítači.

Technicky to bylo provedeno tak, že na serverové straně byl PHP script, který při zavolání vypsal jednu konkrétní tabulku v patřičném formátu (bylo to standardní csv se středníkem jako oddělovačem). Tento script byl volán z lokálního počítače Perlovým scriptem. Ten obstarával veškerou práci - zavolal patřičné PHP scripty, jejich výstup uložil na disk a všechny soubory zabalil do zipu s aktuálním datumem. To vše běželo na Linuxové distribuci Ubuntu.

Z hlediska bezpečnosti to byla samozřejmě díra do databáze, na druhou stranu bez znalosti konkrétní adresy a parametrů daného scriptu nebylo možné data nijak číst. Problém se tak netýkal možnosti smazání nebo úpravy dat (scripty byly ošetřené a prováděly pouze čtení), ale bylo možné skrze tyto scripty zatížit databázi a provádět DDOS útok.

Kromě zálohy databáze jsem používal ještě jeden nástroj, který synchronizoval FTP a lokální disk počítače. Stránky se během této doby vyvíjely poměrně hodně a jejich úpravu jsem prováděl na více počítačích. Lokálně mi běželo MySQL 5 s PHP 5 na Ubuntu (na serveru běželo MySQL 4, což občas způsobovalo problémy). Pro synchronizaci jsem používal Perl script, který automaticky procházel FTP na serveru a označoval soubory nové, změněné a smazané. Takto jsem se vyhnul použití verzovacího nástroje a zároveň mohl vyvíjet na různých počítačích. Ostatně verzovací systém jsem pro projekt nikdy žádný nepoužil, ani lokální, ani vzdálený.

Data zobrazovaná na webových stránkách pocházela ze zvukových záznamů. Protože jsem vždy dodržoval pravidlo, že co je na stránkách uvedeno, to také vlastním jako nahrávku, musel jsem veškeré získané zvukové záznamy převádět do digitální podoby. To bylo prováděno v programu Audacity v systému Ubuntu. Vytvořené zvukové soubory (většinou mp3 nebo ogg) byly roztříděné do složek a zazálohovány. Samotné zálohování bylo prováděno na DVD a pevné disky. Všechny soubory existovaly vždy ve třech kopiích - jedna kopie lokálně na disku, druhá kopie na externím disku, který nebyl běžné připojen a třetí kopie na DVD, která byla i fyzicky uložena na zcela jiném místě. S lokální kopií se běžně pracovalo a jednou za čas se provedla synchronizace s externím úložištěm a vytvoření nových DVD. Ke konci jsem od DVD upustil a místo toho zavedl další externí disk.

Samotné mp3 a ogg soubory byly tagovány programem, jehož jméno si již nepamatuji, ale existovala verze pouze pro Windows, a proto jsem jej musel spouštět v Ubuntu ve Wine. Alternativy dostupné na Linuxu bohužel neposkytovaly dostatečné možnosti pro hromadnou editaci a práce s nimi byla výrazně pomalejší. Kromě samotného tagování ještě existoval Perl script, který uměl tyto tagy z mp3 a ogg načíst a vytvořit automaticky jejich seznam s délkou písniček. Playlisty jednotlivých nahrávek tak na webových stránkách byly vždy generované automaticky tímto scriptem a nic nebylo vytvářeno ručně. Což mělo za následek to, že při překlepu nebo opravě názvu písničky jsem musel vždy nejprve upravit tag daného souboru a přegenerovat playlist pro webovou stránku.

Posledním nástrojem, který jsem používal, byl nástroj pro generování knižní verze. Protože veškerá data byla uložena na serveru, musel i obsah knižní verze být generován na serveru. Existoval tak PHP script, který podobně jako zálohy databáze vypisoval jednotlivé kapitoly ve zdrojové podobě. Tato data opět zpracovával Perl script běžící na lokálním počítači s Ubuntu. Formát byl generován do LaTeXu a kompilován do pdf pomocí distribuce TeX Live na Ubuntu. Pro zpracování obrázků byl použit nástroj convert. V žádném kroku nebyla možná ruční úprava zdrojového kódu výsledné knižní podoby. Scripty byly poměrně robustně napsané, protože umožňovaly generovat knihu i po jednotlivých písmenech, hudebních stylech nebo dalších parametrech.

Jak je vidět, procesů bylo používaných poměrně hodně a technických nástrojů také, ve zjednodušeném výpise se jednalo o PHP 5, MySQL 4, MySQL 5, Perl, Live TeX, convert, Audacity a tagovací aplikace. To vše navíc propojené a zautomatizované množstvím scriptů. Všimněte si, že všechno běželo na Ubuntu a systém Windows nefiguroval v žádném procesu a ani jej pro to nebylo možné použít. Zde by mohly samozřejmě vzniknout spekulace, že i na Windows by toto šlo realizovat a já bych musel uznat, že ano. Problém by ale byl v náročnosti takové práce. Kromě zmíněných technologií jsem používal i větší množství unixových utilitek, které jednak na Windows neexistují nebo se obtížně shánějí (a o obtížnosti instalace a propojení ani nemluvě), nebo je jejich funkčnost chybná (nebudu uvádět detaily, ale některé porty unixových utilitek na Windows jsou v zatížení nebo krajních podmínkách bohužel chybové a není za ně náhrada). Kvůli obtížnosti instalací ve Windows a jejich správě (především propojení MySQL - Perl - LaTeX - Shell) je nepoužívám pro projekt dodnes, kromě jediné věci, kterou zmíním později.

2013 - dodnes

Toto období popisuje současný stav. Webové stránky ve své původní podobě byly zrušeny a byly nahrazeny statickými stránkami, které však již nenesou obsah samotné encyklopedie. Taktéž databáze na serveru byla zrušena a byla přesunuta na lokální stroj (podobu upřesním dále). Tím jsem se kompletně zbavil závislosti na PHP a MySQL 4. Protože zdroj dat již nebyl na serveru, nebylo je nutné tedy tahat ani generovat Perlovými scripty. Tím jsem se zbavil i závislosti na Perlu. Zůstala tak pouze databáze MySQL 5, LaTeX pro generování knižní verze a některé samostatné nástroje pro další věci.

Se zrušením serverové časti bylo samozřejmě potřeba napsat nové scripty pro generování zdrojového souboru knižní verze. A protože jsem tehdy nebyl spokojen s kvalitou výstupu automatických scriptů, rozhodl jsem se celý proces otočit. Zdrojové soubory jsou samotné TeX soubory používané pro generování knižní verze a mohou tak být i ručně upravované. A protože zdrojové soubory již nebyly v databázi, ale v textových souborech, nebylo třeba již ani MySQL 5. Což ale neznamenalo, že nebylo třeba databáze. Znamenalo to pouze to, že jsem mohl databázi změnit, což jsem také udělal a zvolil Microsoft SQL. Vzhledem k tomu, že vše běželo na Ubuntu, se to zdálo jako špatné nebo přinejmenším podivné rozhodnutí, ale ve skutečnosti to šetří mnoho práce. Důvodem jsou totiž nástroje, které Microsoft k této databázi nabízí, a také to, že je zdarma (pro komerční účely sice nepoužitelné, ale pro mě ideální). A hlavně to, že s ní umím, protože v ní pracuji profesionálně. A navíc databáze není používaná jako držák dat (to jsou TeX soubory zminěné dříve), ale pouze jako analytický nástroj. To znamená, že veškerá data jsou vygenerována a spravována na úrovni textových souborů a výpisy, statistiky, hledání potenciálních chyb, překlepů a nekonzistencí probíhá na úrovni databáze. Databázi tak teoreticky pro projekt není potřeba.

Celý proces pak funguje tak, že se databázi předhodí textové soubory, ta si je všechny načte a zpracuje (parsování zdrojového TeX souboru není úplně triviální záležitostí), nad vybranými daty provede analýzu. Podle výstupu pak upravuji zdrojové soubory, které poté opět předhodím databázi ke zpracování. A tak pořád dokola. Tímto způsobem byl předgenerován jak rejstřík (svazek 2), tak i samotná Textová analýza (svazek 3). Výstup byl samozřejmě dále ručně zpracován.

Aktuálně je tak používán pouze nástroj TeX Live a Audacity na Ubuntu a Microsoft SQL na Windows 8.1. Veškerá práce na knižní podobě a úpravě dat ale stále probíhá na Ubuntu.

Do budoucna bych chtěl změnit distribuci TeXu, poněvadž tato je zastaralá a nepodporuje všechny znaky z UTF-8 (například problém s vietnamštinou).


2005 - 2016