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é risiko trestního stíhání! Četba na vlastní nebezpečí!
Ze sociálních sítí
Co? No přece pomník TGM ve Valašském Meziříčí!
- Autor: Tomáš Pecina
- Kategorie: Historie
- Počet zobrazení: 2927
Thinking outside the box
Předpokládám, že úlohu, jež dala původ nadepsanému rčení, znáte: úkolem je spojit devět bodů uspořádaných do matice 3 x 3 souvislou čarou složenou z nejvýše čtyř úseček. Je řešitelná pouze tak, že úsečky leží mimo pravoúhelník vymezený danými body, ale najít řešení je pro většinu lidí obtížné, neboť intuitivně předpokládají, že úsečky musejí ležet pouze uvnitř pravoúhelníku – ačkoli zadání o tom ničeho nepravilo.
Stereotypy a automatismy v myšlení jsou zrádné, o čemž jsem se přesvědčil naposledy během uplynulého week-endu. Pojal jsem totiž úmysl, že pro svůj (na třetím blogu traktovaný) emulátor doplním emulaci mikroprocesoru Zilog Z80. To je, myslím, jediná elektronická součástka, kterou jsem v životě opravdu miloval, a i když jsem měl původně v úmyslu omezit se na tři emulované historické stroje – PMI-80, PMD 85 a IQ 151 – mít Z80 by mi umožnilo pojmout do emulátoru i počítač Ondra, který byl hardwarově velmi zdařilým dílem a jeho většímu rozšíření zabránila pouze pro praktické používání nevhodná, příliš ořezaná
klávesnice.
Domníval jsem se, že maje naemulovaný Intel8080A, nezabere mi doplnit instrukce Z80 než jeden, nejvýš dva dny. Jenže celý jeden den a spoustu nervů mi zabralo hledání chyby, kterou jsem nemusel udělat, kdybych nebyl myslel – v krabici.
Posuďte sami. Pro emulátory používám instruction exerciser (více o něm zde), který jsem si rovněž přepsal do Javy, abych mohl rychleji najít chyby implementace jednotlivých instrukcí. Pro 8080 žádný problém, ale u Z80 jsem narazil na chybu, kterou jsem nemohl a nemohl najít. Až poté, co jsem si zprovoznil emulátor CP/M, v něm druhdy slavný debugger DDT, a propadaje střídavě amoku a stavům chorobné skleslosti, jsem na to, co je problémem, nakonec přišel. A protože je to problém věru bizarní, dělím se o něj se svými milými čtenáři i zde.
Když si prohlédneme zdrojový soubor Franka D. Cringla z r. 1994, vidíme, že jádrem exerciseru jsou test cases, jejichž dlouhá řada jest popsána v makrech na ř. 194–728. Povšimněme si parametrů těchto maker: vyjma triviálních hodnot 0 a –1 jsou všechny konstanty (literály) zapsány hexadecimálně.
Až na dvě výjimky, na ř. 277 a 285, kde se stkví neobvyklý zápis 010
. Když jsem ho přepisoval do Javy, automaticky jsem napsal 0x08, domnívaje se, že Frank Cringle udělal chybu a mínil zapsat 0x10 a protože si neuvědomil, že assembler takto zapsanou konstantu vyhodnotí oktalově, vyšlo mu něco, co nechtěl, ale co je s ohledem na neměnnou hodnotu CRC nutno respektovat. Pro tuto hypothesu hovořilo i to, že je v závorce za voláním makra uvedeno (1024 cycles)
, což odpovídá počtu jedniček v řádku – tedy deseti.
Dlouhé hodiny jsem se pak vrtal ve svém kodu a pátral, co mám špatně, protože CRC ne a ne vyjít, jak mělo. Řešení bylo arci zcela triviální, ale tak outside the box, že mě stálo dobrých deset hodin času: Protože Cringle programoval v r. 1994 a assembloval v CP/M, předvěšená nula pro assembler neznamenala, že má konstantu interpretovat jako oktalovou: tehdejší softwarové nástroje to ještě nedělaly. Assembler proto vyhodnotil jeho zápis 010 jako 10 (dekadických); vedlejším důsledkem bylo, že ve skutečnosti se neprovádí 1024, nýbrž 2048 cyklů.
Jak se to celé stalo, bych mohli zjistit asi jen od Cringla, kdybychom mu napsali a pokud si to ještě pamatuje. Moje (upgradovaná) hypothesa zní, že původně měl 0x10, ale protože si uvědomil (nebo laděním zjistil), že by instrukce CPI/CPIR vyšla (o jeden byte) mimo rozsah testovacího pole, opravil hodnotu na deset, ale zapomněl smazat nulu a nenaznal, že se mu tím změnil i počet cyklů.
Já vím, chybami se člověk učí, jen by jich, pokud bych směl prosit, mohlo být o něco méně.
- Autor: Tomáš Pecina
- Kategorie: Počítače
- Počet zobrazení: 4687
Velká písmena
Tak nám prý opět zjednoduší pravopis. Odhlédna od toho, jak dopadlo několik posledních zjednodušení
, obavami mne naplňuje zejména zápal, s nímž jazykoví teroristé sdružující se ve zločinné organisaci slovoucí Ústav pro jazyk český (Akademie věd ČR, v. v. i., přičemž k posledně uváděné zkratce bych uměl sestrojit mnoho věru přiléhavých interpretací) ke svému sociálně-inženýrskému úkolu přistupují.
Nikoli, že by arci nebylo co a proč zjednodušovat. Patalie s velkými písmeny vznikla v době kulminujícího národního poblouznění (aka obrození), kdy čeština ve snaze vzdálit se od němčiny, po vzoru ruštiny a polštiny, zvolila francouzský model psaní velkých písmen, leč neučinila tak dostatečně důsledně, zachovavši nesystémově kapitalisaci u (některých) jedinečných entit.
Vzdělaný Francouz tak nemá problém a nenapadne ho napsat cokoli jiného než gare de Nord nebo aéroport de Paris-Charles-de-Gaulle, ale také mont Blanc, neboť ví, že velká písmena se píší pouze na začátku vlastních jmen. Čechu jest tápat: jak připomenuto ve shora citovém článku, máme nádraží Praha-Smíchov, ale Letiště Praha-Ruzyně (pro Pravdu a Lásku: Letiště Václava Havla), přestože nádraží i letiště jsou entity nejedinečné nejen celosvětově, ale i v rámci této zdravým rozumem opuštěné země. Naopak u ulic a náměstí se čeština přidržuje francouzského vzoru a máme proto náměstí Míru nebo třídu 5. května. Výsledkem je takový chaos, že má-li vzdělaný Čech napsat, že podání učinil na Hlavní/hlavní poště, to si snad raději zřídí datovou schránku.
Rozumný systém kapitalisace má angličtina, kde se mi snad nikdy nestalo, abych musel nad velkým písmenem přemýšlet. Němčina s francouzštinou (a také např. ruština, která se francouzského vzoru drží konsistentně) jsou na tom jen o málo hůř, protože pravidla jsou jednoduchá a jasná a sporných případů minimum.
Odstrašujícím případem je naopak slovenština, která vyrazila cestou úplné chaotisace pravopisu a začala psát s velkými písmeny např. i zákony, např. Občianský zákonník. Cosi mi napovídá, že úsilím českých jazykoborců můžeme být v brzké době o něco východněji i my.
- Autor: Tomáš Pecina
- Kategorie: Úvahy a komentáře
- Počet zobrazení: 5077
Screencast
Po několikaměsíčním odložení k ledu jsem se opět pustil do svého retro emulátoru, o kterém jinak píši na svém třetím blogu, a ve snaze vyrobit screencast zjistil několik důležitých skutečností:
- Po 15 letech nepoužívání se molitanový protivětrový návlek na mikrofon rozpadne na těžko odstranitelné, vlezlé částice.
- Po 15 letech nepoužívání se i zaručeně neroztekutelná AAA baterie v mikrofonu rozteče, zvlášť není-li značková, ale původní nekvalitní, kterou k zařízení, ušetřivši tak několik promile jeho ceny, dodalo české zastoupení Sony.
- Zvláštní odporou hmotu, která z baterie vytekla a krystalisovala, a kterou se z úcty ke svým čtenářům zdráhám pojmenovat chemickým názvoslovím, lze přesto částečně odškrabat, částečně rozpustit v isopropanolu, a cca po hodině práce je mikrofon opět plně funkční.
- Když to uděláte, záhy zjistíte, že váš notebook má stejně společný jack pro mikrofon a sluchátka a konvertor nemáte, proto musíte použít vestavěné mikrofony, relativně kvalitní, ale přesto rušené větrákem.
- Vyrobit screencast, u kterého by divák neusnul, není žádná legrace.
- Generálský efekt se vždy dostaví; tentokrát vznikl někde mezi knihovnami OpenGL a driverem grafické karty v notebooku.
Výsledek je zde:
- Autor: Tomáš Pecina
- Kategorie: Počítače
- Počet zobrazení: 1930
A opět Java
Uplynulo půldruha roku od chvíle, co jsem se, tak trochu proti své vůli, začal učit Javu, a mám-li vyjádřit své rozpoložení lapidárně, rozpaky nepolevují, ba místy přecházejí do stavu tichého zoufalství. Stále mám pocit, že je to spíš náboženství než programovací jazyk, a zklámání se svou četností rozhodně vyrovnají příjemným překvapením.
- Autor: Tomáš Pecina
- Kategorie: Počítače
- Počet zobrazení: 7201
5 / 75