DŮLEŽITÉ UPOZORNĚNÍ!
Policie České republiky a šéfcensor Ústavu pro studium totalitních režimů Jaroslav Čvančara varují: citovat jakékoli texty z tohoto blogu způsobuje vážné nebezpečí trestního stíhání! Četba na vlastní nebezpečí!

30. 6. 2015

Poslední sbohem

Sony Vaio Pro 13
Muselo to přijít: po dvou letech cohabitation froide jsem se včera v pozdních večerních hodinách rozloučil s operačním systémem Windows 8, který mi jako své kukaččí vejce zanechal Microsoft na notebooku a který jsem nedobrovolně zaplatil v jeho ceně.

Stalo se to náhle. Nejprve se windowsy s rostoucí vehemencí dotazovaly, zda si přeji upgradovat na versi 8.1. Pokusil jsem se o to, avšak byl jsem upozorněn, že nejprve musím odřadit šifrovací nástroj BitLocker, do čehož se mi nechtělo, proto jsem upgrade odložil. Microsoft však byl neodbytný, a když jsem asi třikrát odpověděl, že si opravdu nepřeji tento upgrade provést (Windows jsou na můj vkus dost špatné už v osmičkách, tak k čemu upgrade?), pokusil se o něj sám, bez mého souhlasu a vědomí, zcela v duchu tradiční microsoftské filosofie, že uživatel je tím posledním, kdo by měl rozhodovat o tom, co se s jeho počítačem bude dít.

Upgrade se evidentně nezdařil – ovšemže, kvůli šifrování –, což mi systém s obvyklou vřelostí intimoval, avšak když jsem se poté pokusil znovu počítač spustit, BitLocker mne požádal o jakýsi zvláštní kod, odlišný od hesla, neboť se prý změnila konfigurace počítače (což je v chápání oné zlořečené korporace nejhorší zločin: považte, ten darebák si obměnil svůj počítač, a nám za to nic nezaplatil!). Což se přirozeně nestalo, ale v danou chvíli jsem měl Microsoftu právě dost a odmítl s jeho produktem další komunikaci. Číše mé nespokojenosti se naplnila a přetekla.

Protože jsem na počítači neměl žádná cenná a/nebo nezálohovaná data, bylo řešení jednoduché a přímočaré: na disk putovala Fedora 22. Byl bych tam Linux instaloval už v době, kdy byl stroj nový, avšak tehdejší Fedora neuměla v nativní konfiguraci pracovat s daným wi-fi, a nutnost problém řešit mne vedl k rozhodnutí nějakou dobu je na stroji, který mám hardwarově za skutečně zdařilý kousek (hmotnost 1,0 kg, výkon více než dostatečný), tolerovat. Tato doba však skončila.

Instalace byla blesková, a s potěšením jsem seznal, že wifi už jede sama od sebe, takže, budete-li mne potkávat usměvavého a spokojeného, obtížena pomenší šedou kabelou, důvodem bude právě dovršený shora popsaný rozchod.

16. 6. 2015

Kam s ním?

Ten problém patrně nemá dobré řešení. Když jsem před třemi lety dokončil webový program právnických výpočtů, řešil jsem ho prvně. Jde o to, jakým způsobem vložit zdrojový soubor do souboru PDF, v případě právnických výpočtů tedy příkladmo do přehledu o vývoji peněžité pohledávky.

Problém je to velice praktický, protože vyplníte-li webový formulář spoustou dat, potřebujete mít možnost nějak si tato data uložit, abyste v případě změny nemuseli vyplňovat vše znovu. K tomu se hodí soubor XML, který aplikace umí ukládat i načítat (zde), avšak přemýšlel jsem, zda by nebylo praktičtější data uložit přímo do souboru PDF.

První, naivní přístup, bylo vytvoření PDF streamu, který, pokud není filtrovaný, způsobí, že XML parser dokáže soubor PDF zpracovat, jako by to byl soubor XML. Tak to fungovalo k mé plné spokojenosti více než rok, než se vyskytl jeden soubor, u kterého parsování selhalo – nevím, zda vinou novější verse některé knihovny nebo nahodilého datového obsahu.

V další iteraci jsem se rozhodl uložit data do položky /Metadata, která má tu výhodu, že na ni vede odkaz z katalogu a lze ji proto vždy najít a extrahovat. Tak to fungovalo cca další dva roky. Než jsem se rozhodl uplatnit tentýž postup i pro jiné soubory vytvářené z TeXu. Tam sice zdroják vždy ukládám, ale může se stát, že ho v mezidobí změním a chtěl bych mít možnost podívat se, z jakého přesně kodu byl ten-který PDF výstup generován.

Když jsem takový soubor opatřil elektronickým podpisem (což přirozeně nedělám v produktu Adobe, ale vlastní utilitou v Javě), ukázalo se, že javová knihovna při ukládání metadat – s XML obalem a v sekci CDATA – tato vymaže a nahradí vlastním obsahem. Důvodem je, že pro metadata by se měl používat formát XMP a moje data v něm nejsou.

Nyní jsem měl na vybranou z různých možností. Rozumným by se jevilo přizpůsobit se XMP a obalit zdroják do některé vlastnosti. Jenže jsou zdrojové soubory podání skutečně metadata? To je poměrně hluboká filosofická otázka, na niž jsem si po několika dnech kontemplace odpověděl záporně. To také znamená, že bych neměl data do položky metadat ukládat vůbec (problém s podepisováním jsem technicky dokázal překonat a knihovnu donutit metadata ponechat, byť za cenu dvojího subclassování a nutnosti použít reflexi, neboť použít vlastní methodu pro zápis metadat knihovna zakazuje).

Další možností bylo připojit soubor jako řádný /EmbeddedFile. Tím se všechny předchozí problémy odstraňují, avšak tato příloha se stává veřejnou a mohlo by se stát, že ji na podatelně např. u soudu vytisknou a přiloží k podání. To nechci. Proto jsem se rozhodl vrátit ke kořenům a ponechat zdrojová data v obyčejném streamu, jen jsem ho připojil jako zvláštní odkaz do katalogu.

Norma PDF je v tomto smyslu nepříliš velkorysá, dovoluje sice do katalogu, resp. do každého slovníku, přidávat libovolné položky, ale jejich PDF název musí být registrován; podobná omezení platí i pro pole /Type a /Subtype. Myšlenka registrace arci zůstala na papíře, Adobe žádné názvy nezaregistrovala, tudíž by zbývala volně používaná jména s prefixem XX.

To mi přišlo mého softwaru nedůstojné, proto jsem místo toho sáhl po logických popisných klíčích /Source a /Data, a těmi své PDF soubory vybavil. Uvidíme, zda toto řešení konečně vydrží, případně zda čtenáři přijdou s nějakým jiným nápadem.