Archive for the 'Violet haze' Category


Sazební obrazec 4

Sazebním obrazcem se nazývá ta část tiskového zrcadla, která obsahuje vlastní text. Zpravidla je to obdélník zkonstruovaný na stránce určitým způsobem.

sazební obrazec dvojstrany
Sazební obrazec 4:5 (v „praxi“)

Existuje několik různých způsobů, jak správně sestrojit sazební obrazec. Ve většině diplomových prací a mnoha skriptech je sestrojen nesprávně, někdy úplně v opačném (ne)smyslu. Jako příklad na hlavu postaveného sazebního obrazce mohu uvést skripta předmětu DMA. Zde existuje stejně malé vnější a dolní odsazení, přičemž vnitřní je nepoměrně větší a horní (alespoň opticky) také. Vnější a vnitřní okraje by měly být zkonstruovány tak, aby součet vnitřních okrajů přibližně odpovídal jednomu vnějšímu okraji, protože při rozložení knihy existují pouze tři okraje – levý, střední a pravý. Všechny by měly být přibližně stejně velké. V těchto skriptech je pravděpodobně smyslem ukrutného středního okraje vytvořit vazební offset (čili přidat tolik bílého místa, kolik ho při vazbě skripta bude zapuštěno, a tudíž nebude viditelno). Takovýto offset je ale zbytečně velký a měl by smysl pouze, kdyby byly stránky důsledkem vazby zapuštěny přes centimetr a půl hluboko. Běžný offset pro lepenou vazbu je asi 4mm (o které se ve výsledku sazební obracec posune směrem vně).

Dále zde máme miniaturní spodní okraj. Spodní okraj má být vždy ten největší. Jednak, aby nás ze čtení nebolela krční páteř, druhak, aby pro nás písmo mělo stejnou velikost a stále dobře se nám četlo, a do třetice, abychom mohli knihu držet a nezasahovali přitom prsty do textu. V neposlední řadě to také vypadá lépe, co do estetiky. Pokud nám jde o úsporu papíru, můžeme použít úsporný sazební obrazec (5:6, viz dále). Miniaturní vnější okraje pak způsobí, že si během čtení skripta ukroutíme hlavu (čemu ještě dodává to, že musíme přeskakovat obrovskou díru uprostřed knihy).

Takto tedy ne. Jak tedy?

Použít historií prověřený a opticky vyvážený sazební obrazec. Velmi pěkné pohyblivé ilustrace k různým druhům sazebních obrazců lze nalézt v jedné presentaci (od strany 5), kterou jsem nalzel na webu muni.

V současné době se nejčastěji používají obrazce v poměrech 3:4, 4:5 a 5:6 (postup sestrojení naleznete ve výše zmiňované presentaci). V šabloně pro bakalářskou práci používám obrazec v poměru 4:5, který jsem mírně zaokrouhlil tak, aby byly všechny jednotky vyjádřeny v násobcích didotova bodu (a mně se tudíž lépe vytvářel pevný řádkový rejstřík).

sazební obrazec 4:5
Sazební obrazec 4:5 (zrcadlo)

Hlavička stránky se vždy považuje za součást sazebního obrazce (některé sázecí programy ji automaticky vkládají do horního okraje). Pokud je zápatí dostatečně decentní, za součást obrazce jej nepovažujeme a umistujeme jej do dolního okraje.

Jak vypadá takové rozvržení při plném zaplnení strany textem můžete vidět na prvním obrázku v tomto článku.

TeX: Pevný řádkový rejstřík 0

Chceme-li připravit sazbu pro oboustranný tisk, musíme přizpůsobit sazební obrazec tak, aby se na obou stranách listu kryl (aby na sebe prosvítal) – tomu se říká pevný stránkový rejstřík. Pevný stránkový rejstřík najdeme v knihách a kvalitnějších tiskovinách (velice vzácně v diplomových pracích studentů FELu).

Nejpreciznější sazba vyžaduje i pevný řádkový rejstřík, což je věc, kterou dnes nalezneme už jen u vybrané beletrie. Pevný řádkový rejstřík znamená, že na sebe prosívatají všechna účaří jednotlivých řádek textu (laicky řečeno se všechny řádky stoprocentně a bezchybně překrývají). Ve Wordu to nelze a ani v TeXu to není zcela triviální záležitost. V prvé řadě si musíte vzít kalkulačku a spočítat rozměry sazebního obrazce, resp. jeho výšku. Ta totiž musí být celočíselným násobkem vzáleností účaří (\baselineskip).

TeX je velice chytrý program, ale někdy je až moc chytrý. Snaží se narvat pružné mezery (glue) všude, kam to jde, a když se mu něco nezdá dostatečně esteticky správně, mezery natahuje a smršťuje. Co se týče horizontálních pružných mezer, bez těch bychom nebyli schopni správně vysázet jediný odstavec, ale ty vertikální? V našem případě bychom je raději neměli, protože s nimi nikdy nedokážeme pevného řádkového rejstříku docílit. Proč?

Pokud TeX vyhodnotí, že na sobě dvě řádky sedí až moc těsně (zasaují do sebe o \lineskiplimit), vloží mezi ně pružnou mezeru velikosti \lineskip. To se stane například, když máte relativně malý \baselineskip a do některého řádku vložíte vzorec obsahující odmocinu nebo itegrál (nebo obecně jakýkoliv znak, který je vyšší než vzdálenost účaří). To nechceme. Nastavíme tedy \lineskip=0dd.

Dále nám dělají problémy pružné mezery mezi odstavci (a tedy i mezi odstavci a nadpisy či jinými boxy). Zbavíme se jich podobným způsobem. Nastavíme \parskip=0dd.

Na začátku stránky, těsně za \voffset (Eplain: \topmargin) a těsně před začátkem prvního odstavce existuje další pružná mezera, která se používá k doladění. My ale máme všechno přesně vypočtené, takže žadné doladění nepotřeujeme, nastavíme tedy tuto mezeru na násobek \baselineskip, třeba \topskip=\baselineskip.

No a na konec TeXu řekneme příkazem \raggedbottom, aby všechny stránky vysázel v přesně takové velikosti, jaká je výška veškerého texu na stránce a nevkládal na konec stránky žádný dodatečný prostor.

Když jsou všechni tito „pomocníci“ vypnuti, musíte si již sami ohlídat, aby výška veškerého materiálu na stránce jiného než základního textu, byla násobkem \baselineskip. Například pokud je \baselineskip=12dd, potom správná cesta jak vysázet nadpis velikosti 22dd (nebo podobné) je takováto:

\vskip24dd\noindent{\twentytwo Nadpis\vskip12dd}\par

Jinak… jinak se stane něco strašného.

Inteligentní systémy a co tím sleduji 9

Když se běžný student prvního ročníku STM druhého dubna podívá do KOSu (informačního systému FEL ČVUT) a v kolonce pro obor nalezne údaj

(2612R027) Inteligentní systémy (bakalářský)

,

jme se ho hrůza, zbělají mu vlasy a propadne v hlubokou úzkost. Posléze, pohled zabořen hluboko do země, se dostaví na studijní oddělení, kde se v útulném křesle schoulí do fetální pozice a počká, až na něj přijde řada. A potom bude plakat. Dojdou-li slzy, marně bude plakat krev, prose studijní referentku o změnu oboru. V posledním tažení roztřesenou rukou podepíše přihlášku na VŠE a úpadne ve spánek. Ale ani tam nenalazne klid. Ve snech se mu budou zjevovat hradla NAND, budou ožívat a bodat do něj svými znegovanými výstupy.

Tak dramaticky to samozřejmě neprobíhá, ale podstata je táž. Na Inteligentní systémy se zpravidla dobrovolně hlásí minimum lidí, jelikož pověsti hovoří cosi o nepoměrně vyšší obtížnosti vzhledem k ostatním oborům (zejména k 6209R021 Účetnictví a byrokracie – též obor STM).

Já jsem tento obor zvolil dobrovolně, protože mám rád matematiku, fyziku a programování (i jiného stylu než objektového – například funkcionální a logické – jazyky jako Lisp, Prolog a Haskell, Lambda kalkulus). Zajímá mě umělá inteligence, což je jedna ze dvou specialisací, které si můžeme zvolit. Těším se na následující semestry :).

Moc spolužáků mít, pravda, nebudu. Jenom 42, z nichž hodně jich tam není dobrovolně (všechny ostatní obory totiž byly naplněny k prasknutí). Ve výsledku ale vcelku nezáleží na tom, jaký obor jsem si vybral, protože povinné oborové předměty jsou v každém semestru pouze dva a v posledním sesmestru dokonce žádný. Zbytek tvoří společné programové předměty (kterých je nejvíce), volitelné oborové předměty a volitelné předměty.

Legrační je, že ze svých budoucích oborových kolegů znám pouze jediného člověka… smonťáka (a ještě je to moje vina). Co jsem se tak ptal a co se ptal smonťák, nikde žádnéj ISák :).

Smyslů zbavený? 4

Je hluboká noc, šum kolem pátého bloku pomalu utichá. Ležím v naší posteli, která svou tvrdostí odpovídá pryčně pana Theodora Mundstoka, a o lecčem přemítám. Jde mi to. Když jsou smyslové podněty utlumeny a motorická energie jen stěží stačí na to, abych se čas od času převalil, vyvstvájí myšlenky. Organisují povstání a během chvíle ovládnou celou mysl. Člověk potom přemýšlí o věcech, o kterých by přes den nepřemýšlel a mnohdy omylem přijde na něco fatálního významu.

Azimut mého ubírání se myšlenkami může být různý. Po dni plném matematiky mě občas napadne paradox, který mám neodolatelné nutkání řešit, a tak zbaven jakýchkoli psacích potřeb využívám kapacity krátkodobé paměti a řeším a řeším. Pak většinou usnu a ráno vím jen to, že mě cosi napadlo.

Po dni, který byl relativně všední, mě napadá ledacos. Například dnes po půlnoci jsem přemýtal nad následující situací: Mám 5 smyslů – zrak, sluch, hmat, čich, chuť. O jeden z nich musím přijít, ale mohu si vybrat. Mám vybrat zrak a přijít o pohled na rozkvetlé akáty? Mám vybrat sluch a přijít o burácení letních bouří? Mám vybrat hmat a nikdy již nepocítit bolest ni její protiklad? Mám přijít o čich a prakticky se tak zříci emocí?

Ano, zbavil bych se chuti. K ničemu ji nepotřebuji. Někdo z vás by jistě uvažovat o čichu, jenže netuší, že čich je vývojově nejstarší smysl a bez něj bychom přišli nejen o možnost pocítit rozkvetlé akáty. Leží totiž v nejhlubším podkorovém centru mozku, v centrálním mozku, a je přímo napojen na limbický systém, což je, laicky řečeno, přesně ta věc, díky níž pociťujeme emoce. Když se k nějaké vzpomínce váže čichová stopa, je prakticky nezapomenutelná, protože čichové stopy jsou paměťově nejsilnější. Často se stává, že ze vzpomínky vyprchá obraz, vyprchá sluch a zůstane jenom čich. Potom ponáhle ucítíte vůni, kterou jste cítili kdysi dávno, a ta vám vžene do očí slzy štěstí, aniž byste věděli proč.

Čich je také důležitý pro sociální, zejména partnerský život. Aniž si to uvědomujete, produkujete a přijímáte lidskou obdobu feromonů a na základě těch jednáte. Člověk, který si myslí, že je v každé situaci sám sebou (ve shodě se svým superegem), se mýlí, neboť každý je otrokem svých emocí. Pokud tedy pocítíte „feromon“, který jakési hluboce podkorové centrum ve vašem mozku vyhodnotí jako velmi „vonný“, začnete okamžitě objekt považovat za svým způsobem atraktivní a podlehnete endorfinům, které jsou následně vyplaveny. Ač se člověk nepovažuje za zvíře, je jím stále.

Co kdybychom ale museli vybrat dva smysly, kterých se zbavit? Chuť a hmat?
A co kdybychom museli vybrat jeden smysl, který by nám zůstal. Zrak?

Spojový seznam v C++/CLI 1

Propojené seznamy (aneb spojové seznamy) jsem se pokoušel pochopit někdy v době, kdy jsem začínal programovat v céčku. Kapitola o nich byla úplně jako poslední a připadala mi nezáživná, tak jsem ji vynechal. Potom jsem si léta žil, aniž bych takovou věc potřeboval. Asi před měsícem jsem ale pomáhal Lucce s její semestrálkou a narazil jsem tam na problém běžného pole užitého jako databáze, a to jest těžkopádnost a náročnost procesu vyhledání a odstranění určité položky. Jde to, ale je to pěkně hnusné. Nevěděl jsem, že problém by jednoduše vyřešil propojený seznam.

Propojený seznam je datová struktura, která zcela doslova tvoří rětěz. Článek řetězu – uzel – node – obsahuje data a vidí na své dva sousedy (levého a pravého dejmetomu). Pokud chytíme řetěz za jakýkoliv článek, dostaneme se přes něj na začátek, na konec i na jakýkoliv jiný článek řetězu. Když chceme za nějakým článkem přidat nový, vezmeme kleště, v tom místě rozpojíme řetěz, vložíme článek a připojíme k němu rozpojené konce. Když chceme nějaký článek odebrat, prostě rozpojíme řetěz, odebereme článek a řetěz opět spojíme. Nevýhoda řetezu je, že nemůžeme držet celý. Jsme slabí a zvládneme ho držet pouze na jednom místě. To znamená, že pokud chceme najít článek s konkrétní informací, musíme udělat nejhůře n zbytečných kroků, kde n je vzdálenost od nejbližšího konce.

Jak takovou strukturu implementovat v počítači? Ukažme si v jazyce C++/CLI.

Je občas výhodné tvořit řetězy z různorodých článků (například vánoční řetězy :))…), definujme si tedy něco „řetězitelného“. Řetězitelná věc bude taková, která umí udržet kromě dat i ukazatel na svoje dva sousedy (přičemž oba dva nebo jeden mohou být nulloví) a bude porovnatelná na základě něčeho:

public interface class ILink { public: property ILink ^next; property ILink ^previous; String ^ToString(); bool Equals(Object ^o); };

Buďme nyní konkrétnější a vytvořme si třeba řetězitelný typ String:

public ref class LSTR : public ILink, Object { protected: String ^_data; ILink ^_next; ILink ^_previous; public: LSTR(String ^data) { _data = data; } property ILink ^next { virtual ILink ^get() { return _next; } virtual Void set(ILink ^next) { _next = next; } } property ILink ^previous { virtual ILink ^get() { return _previous; } virtual Void set(ILink ^previous) { _previous = previous; } } virtual String ^ToString() override { return _data->ToString(); } virtual bool Equals(Object ^o) override { if(this==o) { return true; } if(o->GetType() != this->GetType()) { return false; } if(((LSTR ^)o)->_data == _data) { return true; } } };

Co by vás na předchozím kódu mohlo překvapit (co neznáte z jiných jazyků) jsou takzvané vlastnosti (properties). Vlastnosti elegantně řeší malý kosmetický problém jiných jazyků (například Javy). Problém spočívá ve skutečnosti, že s jednou proměnnou pracujete dvěmi metodami (getterem a setterem). Pomocí vlastnosti lze tyto funkce sjednotit tak, že se ve výsledku chovají jako jedna členská proměnná, čili ji lze používat na levé (definujete set), pravé (definujete get) nebo obou stranách (definujete get i set) přiřazovacího příkazu.

Nyní po kouskách sestavíme samotný propojený seznam (respektive obsluhující datovou strukturu – propojený seznam není v této struktuře uložen a není v programu ničím reprezentován – nemůžete si na něj „sáhnout“; tato struktura obsahuje vždy a pouze právě jeden aktuální článek řetězu – hlavu – head):

ref class LL { private: ILink ^_head; public: property ILink ^Head { virtual ILink ^get() { return _head; } }

Nyní naprogramujeme metodu vkládání. Vkládáme nový článek řetězu, obsahuje pouze svoje data — „sousedy“ má nullové. Musíme mu je tedy přiřadit a zároveň sdělit jeho sousedům, že se nový článek stal jejich novým pravým nebo levým „sousedem“. Pokud se dohodneme, že bude vkládat ZA aktuální článek, máme k dispozici pouze levého (v blízké budoucnosti předřazeného) souseda v hlavě. Sdělíme tedy novému článku jeho předřazeného souseda (aktuální hlavu), ale článek ještě nezapojujeme (zatím ho necháme ležet někde vedle a jenom mu povídáme o jeho nových sousedech). Zkontrolujeme, jestli aktuální hlava vůbec existuje (můžeme se vyskytovat v prázdném řetězu) a zároveň zkontrolujeme, jestli má aktuální hlava pravého (následujícího) souseda. Pokud obě podmínky splňuje (tj. řetěz obsahuje minimálně dva články), sdělíme novému článku i jeho pravého souseda. Jak ale sdělit pravému sousedovi, že má nového levého souseda, když na něj jaksi nemáme handle? Pomocí drbů :). Řekneme hlavě, aby svému pravému sousedovi řekl, že má nového levého souseda. Tím se hlava odlinkuje od bývalého souseda a už si s ním nedokáže povídat (jeho směrem). Nakonec ještě sdělíme současné hlavě jeho nového pravého souseda (nový článek) a nového souseda učiníme aktuálním článkem (hlavou). Tím je nový článek úspěšně vložen do řetězu.

Void insert(ILink ^node) { node->previous = _head; if(_head!=nullptr && _head->next!=nullptr) { node->next = _head->next; _head->next->previous = node; } if(_head!=nullptr) { _head->next = node; } _head = node; }

Stane se, že se článek se svými sousedy nepohodne nebo si vezme hypotéku od nebankovního subjektu, nebude ji moci splácet a zabaví mu dům. V takovém případě chceme mít možnost nepohodlný článek vymazat :). Článek vymažeme tak, že jeho umístění jeho domu vymažeme okolním sousedům z hlavy a místo toho jim řekneme, že spolu sousedí navzájem už léta :). Ve skutečnosti tak to, co si pojmenujeme „deleteActual“ články nemaže, ale pouze odstraněje ze řetězu. Články se potom mohou dále používat (třeba přeřadit do méně luxusní čtvrti). To se mi na propojených seznamech líbí. Nikoho nezabíjí :).

Boolean ^deleteActual() { if(_head==nullptr) { return false; } _head->previous->next = _head->next; _head = _head->previous; }

Dále budeme chtít cestovat od jednoho domu ke druhému, abychom mohli všechny sousedy obejít a zjistit, co jsou zač. V programu existují na pevno vždy maximálně 3 sousedé. Hlava, jeho levý soused a jeho pravý soused. Pomocí drbů se lze ale doslechnout, co zrovna dělá soused o tři domy dál :). Zeptáte se pravého souseda, ten se zeptá svého pravého souseda a tak dále. To je ovšem těžko programovatelné (leda rekurzivně). Potřebujeme tedy přemísťovat titul hlava. Tu uděláme prostě tak, že titul předáváme ze souseda na souseda. Souseda, který zrovna hlavu má, můžeme ovládat (je to něco jako mozkový implantát).

Boolean stepForth() { if(_head->next==nullptr) { return false; } _head->next->previous = _head; _head = _head->next; return true; } Boolean stepBackward() { if(_head->previous==nullptr) { return false; } _head->previous->next = _head; _head = _head->previous; return true; }

Potom se občas budeme chtít dostat na konec nebo na začátek vesnice.

Void rewind() { while(stepBackward()); } Void fastFwd() { while(stepForth()); }

Nebo taky třeba může chtít zjistit, jestli ve vesnici nebydlí nějaký náš příbuzný. Jak to poznáme? No, že se jmenuje Flannery, ne :)? Vytvoříme si obraz našeho příbuzného, stoupneme si na začátek vesnice a chodíme od domu k domu, ptaje se, jestli tam nebydlí někdo, kdo odpovídá našemu vzoru. Sousedi ale nebudou mluvit. Zvlášť, když někoho bude hledat policie. Proto je nutno každému přidělit hlavu a odpvěď z nich dostat násilím. Budeme tedy přidělovat hlavu jednomu po druhém a vybírat z jejich mozků požadovanou informaci.

Boolean seek(ILink ^node) { rewind(); do { if(_head->Equals(node)) { return true; } } while(stepForth()); return false; }

To je vpodstatě všechno, co potřebujeme s naší vesnicí dělat. Ještě jsem přidal dvě orientační metody, abyste věděli, jste-li na začátku nebo na konci vesnice (ono to občas nejde poznat ani v těch skutečných vesnicích, ale místní vždycky mají nějaké povědomí o tom, který z konců je vlastně začátek).

Boolean isAtStart() { if(_head->previous==nullptr) { return true; } return false; } Boolean isAtEnd() { if(_head->next==nullptr) { return true; } return false; }

Na závěr jeeště malé otestování.
Ve vesnici bydlí 9 holek. Alice je Mášina kamarádka, tak se nastěhuje vedle ní (navzdoru tomu, že vedle Máši bydlí Olja — prostě posune všechny baráky a postaví si tam svůj… nevím, jak jí tohle mohlo projít na stavebním úřadu). Na okraji vesnice bydlí Klára. Tu ale obtěžují medvědi, vlci, netopíři a hadi fnadi, takže se rozhodne odstěhovat. Potom se nepohodne Olja s Alicí, psyhicky to nezvládne a odstěhuje se taky. Nakonec se přistěhuje Jaroslava, a to na místo, kde dřív bydlela Klára, protože je to vášnivá lovkyně.

int main(array ^args) { LL ^ll = gcnew LL(); ll->insert(gcnew LSTR("Lucie")); ll->insert(gcnew LSTR("Jana")); ll->insert(gcnew LSTR("Lenka")); ll->insert(gcnew LSTR("Petra")); ll->insert(gcnew LSTR("Máša")); ll->insert(gcnew LSTR("Olja")); ll->insert(gcnew LSTR("Bára")); ll->insert(gcnew LSTR("Eliška")); ll->insert(gcnew LSTR("Klára")); ll->rewind(); ll->seek(gcnew LSTR("Máša")); ll->insert(gcnew LSTR("Alice")); ll->seek(gcnew LSTR("Klára")); ll->deleteActual(); ll->seek(gcnew LSTR("Olja")); ll->deleteActual(); ll->rewind(); ll->seek(gcnew LSTR("Eliška")); ll->insert(gcnew LSTR("Jaroslava")); ll->rewind(); do { Console::WriteLine(ll->Head->ToString()); } while(ll->stepForth()); Console::ReadKey(); return 0; }

Psal se rok osmadevadesát 5

Psal se rok osmadevadesát a já jsem chodil do třetí nebo do čtvrté třídy základní školy. Byla to tehdy divoká léta a nikdo z nás, malých capartů, jejichž největší výzvou bylo házení oblázků (vlastně to byly mohutné šutry) do otevřených oken paneláků nebo ušlapování výfuků, netušil, jak byla vlastně klidná. Budoucnost za nás plánovali jiní, škola byla jednoduchá a s holkami jsme starosti neměli. Ani radosti, poněvadž jsme si procházeli latentním obdobím.

Onehdá jsem sedával v zadní lavici obklopen dvěma holkami, které obecně platily za nejatraktivnější v širém okolí patra. Nalevo M. a napravo A. Nevím, jak jsem to tehdy dokázal, ale jako k jedinému klukovi se ke mně tehdy aktivně měly — hrály se mnou piškvorky o hodinách, kooperativně se mnou zlobily nebo se se mnou jen tak pošťuchovaly. A. byla brunetka a představovala divoký a drsný typ ženy (rysy měla ne nepodobné Angelině Jolie), zatímco M. byla blondýna jemnější štíhlé postavy (odpovídající například Meg Ryan). Obě byly inteligentní, ale každá po svém, takže spolu občas nevycházely. V té době, jak jsem se již zmiňoval, jsem prožíval latentní období, takže jsem je bral pouze jako kamarádky (i když jsem již tehdy byl nepatrně pyšný na skutečnost, že se kamarádí zrovna se mnou).

Následující prázdniny se roznesla novina, že jak A., tak M. již nebudou dále studovat na naší škole. Zprávu jsem přijal s malou lítostí, která prakticky odešla s dalším ušlápnutým výfukem (žigulíky od nás tehdy hodně trpěly). A. přestupovala na Sportovní gymnázium (což jsem nechápal — „tělák“ jsem nesnášel už tehdy), zatímco M. se stěhovala úplně pryč z města. Ještě někdy šest let zpátky jsem si pamatoval i jméno vesnice, kam se odstěhovala.

Svědkem jejího odjezdu jsem se stal úplně náhodně. Procházel jsem se zrovna s kamarádem kolem místa jejího bydliště (tuto skutečnost nevěda) a ponáhle jsem spatřil plně naložené auto, jak pomalu couvá z parkovacího místa. Obrácena čelem k zadnímu sklu nás z auta smutně pozorovala M. Zastavil jsem se, ona se pousmála a zamávala. To byl poslední okamžik, kdy jsem M. viděl. Zároveň to byl také okamžik, kdy jsem z latentního stádia vystoupil, protože tenkrát mi to bylo opravdu líto. Ušlapování výfuků pro mě od té doby ztratilo své osobité kouzlo.

Od konce latentního období totiž začíná v hodnotícím systému mužů převažovat složka animální nad složkou duševní. V deseti letech malý kluk naprosto nebere na zřetel skutečnost, že před ním stojí ideální sexuální archetyp ženy jeho věku a doby. Jeho zajímá pouze, jestli se k němu hodí jako kamarádka. Právě toto hledisko po latentní fázi vývoje mizí a neobjeví se doby, než se mladík stane mužem, ale to je trochu mimo téma.

A. a M. jsem od té doby už nikdy neviděl. Uplynulo mnoho let a kde se vzal, tu se vzal, Facebook. Jedněmi nenáviděná, druhými (včetně mě) milovaná téměř-instituce, které během několika měsíců podlehly celé čechy (kromě velmi alternativních lidí, kteří jsou pyšní na to, že tak neučinili a nikdy neučiní) a já jsem postupně objevoval všechny své staré kamarády a kamarádky ze základní školy. Ten byl v lapáku, ten jede v tvrdých drogách, ten jezdí rallye, ta je profesionální modelka, ta je prodavačka a tak dále. Zarazila mě především skutečnost, jak moc se někteří změnili a jak vůbec se nezměnili jiní. Některé holky, které onehdá nebyly příliš atraktivní, zkrásněly a některé si svoji dřívější atraktivitu zachovaly. Naopak z některých holek, které kdysi bývaly na vrcholu své slávy se staly naprosto tuctové tváře.

Narazil jsem i na A. Žel Bohu. Patří totiž do poslední jmenované skupiny. A. měla kdysi všechno, po čem holka mohla toužit. Potom ale přišel okamžik (a byl to osud), od kterého šlo všechno z kopce. Nevěřil jsem vlastním očím (oh my God patří k mým nejčastějším výrazům, které pronáším, když bloudím Facebookem). Ztratila krásu a svoji ranou inteligenci nerozvíjela. Holka, o kterou by se kdysi dávno každý kluk porval se změnila v pravý opak toho, co představovala.

Taková změna mě rozhodně netěší. Těší mě ale naprosto stejná změna, která se udála holkám, které tehdy byly na svoji krásu pyšné (což A. ani M. nebyly), které se odmítaly stýkat s běžnou společností a byly sociálně vždy o krok napřed. Takové holky jsou teď prodavačky, některé už jsou vdané (za spolužáky, kteří kdysi patřívali k podobné partě a nyní jsou z nich dělníci), některé mají dokonce dítě. Svůj pád si možná uvědomují a možná ne (viz oblíbená výmluva typu „odlišná životní volba“), i přesto mám radost, protože představují učebnicové příklady jednoho krásného přísloví.

M. už jsem ani nehledal. Určitě Facebook také má, ale já už se raději nebudu pokoušet oživovat minulost. Proč taky, že?

Velvet revolution, my ass 0

Once upon a time, an evil was replaced by smaller one, which then grew into an even bigger one, than the former one. Throughout the time, there was like thousand similar moments. There’s nothing to celebrate. Nothing at all.

These times, our nation is doomed more than ever before, due to the european union and the lisbon treaty, so I can’t fucking understand, what are youse assholes celebrating. Pissing on our ancestors graves would be more appropriate for this situation.

Knights of mt. Blaník, where are ye…
There’s almost nothing left of Czech Republic, so where the fuck are ye!

I barely use the handle when opening a door. 0

I use keys instead. I just put the key in the key hole and turn it right or left (this depends on a side, where the lock is). It’s not logical. The handle has it’s purpose. And I ignore it.

I ignore purpose of so many things. I’m so ignorant.

The reason, I’m writing about handles, is that, it’s friday night again. And when it’s friday night, I’m all alone. Not really alone… there’s always my old friend, who makes me write this bullcrap, but… you know… she’s not kinda verbose :). Do you know her? Well, I’ll give a puzzle:

She has a beautiful shape. But no woman wants such shape.
She has a beautiful colour. But no woman wants such one.
She has beautiful taste. But no woman wants to taste like it.
Despite she kisses so bitter, her kisses can disarm my kind so fast.

I want to reach out and touch the flame.

My english teacher admired me, last lesson. She wrote „excellent“ under my translation and claimed me to be one of two people in the whole STM group, who are actually able to construct all kinds of questions without a single mistake. But dude, I really suck at UNIX bash scripting. I got 5,5 of 10 points in the last test and the one we took today is going to be a disaster. I’m a skilled programmer, but this is a real shit. UNIX itselft is one big unworthy shit and it should be banned. All UNIX servers should be replaced by IIS and all UNIX users should be shot, damned. Fuck sake.

I really enjoy Math, queen of the sciences. She’s wonderful.
She can help you understand the world without leaving a single sheet of paper.
And I think Math is a very close relative to the Philosophy.

But it’s still nothing compared to the Irish language.
When I pronounce an Irish word… God, there’s nothing I can compare it to.
Maybe something like pronouncing english word in strict RP :)!!!

Yeah, something like letting uisce beatha surround your toungue, frail your lips, frail your look, frail your mind, frail your heart.

Slán go fóill,
sincerely plastered and sincerely yours,
Michael

Semestrálka Y36ALG – Poker, testing 5

Došel jsem do fáze, kdy jsem se hrou spokojen, tedy nabízím její alfa verzi k testování a ke hraní :).
Upozorňuji, že hra běží v textovém režimu (v konzoli). K jejímu spuštění použijte přiložené exekuční skripty pro cmd a pro Powershell 1. Jste-li majitel Powershellu, musíte nejprve nastavit „set-executionpolicy remotesigned“.

Download: RAR

Co taková věc dokáže?

V prvé řadě si zahrajete Texas Hold’em proti jednomu počítači. Vzhledem k tomu, že počítač jako umělá inteligence je reprezentován objektem (všechno je reprezentováno objektem), dalo by se jich implementovat víc, ale ne v textovém režimu. Už pro řízení hry mano a mano je zapotřebí ukrutná smyčka smrti o tisících vnořených podsmyček a miliónu příznaků. Dokončit takovou smyčku bylo na celé hře nejtěžší, proto se brzy naučím pracovat se Swingem a celá hra bude event-handled. Až potom bude možno hrát proti n počítačům.

Když už jsme u umělé inteligence, ta moje je velmi rovnocenný soupeř. Potom, co jsem ji naposledy vylepšil už nejsem schopen vyhrát během chvilky. Vlastně se mi to během testování nikdy nepovedlo. Chce to hodně času… počítač vás rozhodně nenechá vyhrát jen tak.
UI je založena na pseudonáhodě – čili podle poměrů určitých konstant a náhodných čísel se například rozhoduje, jestli si v tomto kole zablafuje nebo jestli raisne sázku.

Co se týče pravidel, nejsou implementovány Blindy (což pro jednoho protivníka smysl nemá) a není implementován All In. All In by znamenal zvětšení smyčky smrti minimálně o polovinu (přidání úplně nového herního stavu, kdy jsou karty protivníka na stole), takže snad až někdy v grafické verzi, kterou chystám na příští semestr, společně se síťovou hrou několika hráčů.

Dále můžete nastavit některé ty opšns, vyhodnotit libovolnou kombinaci nebo se podívat na Pokerové kombinace společně s pravděpodobností a matematickým vyjádřením kombinačními čísly.

Kdyby někdo našel bug, do komentářů, prosím :).

Pozn.: Aktuální verze kódu má přibližně 3500 řádků. Je od nás požadováno 250.

I walk the streets at night 6

to be hidden by the city light.

Dovolte, abych vás ušetřil námahy a odpověděl za vás na několik otázek, které si právě teď pokládáte. Já vím, co jsem napsal; ale tohle je něco jiného; prostě jiného; tím křížkem vpravo nahoře.

Zjistil jsem, že se nedokážu projevovat pouze za pomoci facebooku a občasného dialogu s hlasatelem večerních zpráv. Za diskutování pod zprávami jsem již několikrát dostal ban a svůj názor si pouze myslet mě neuspokojuje. Statusy na facebooku nabývaly na velikosti a dospěly do fáze, kdy již nabývat na velikosti nemohly, a tak se ve mně hromadily a hromadily. Když se v člověku hromadí příliš mnoho veřejně nevyřčených názorů, může dostat minimálně žaludeční vředy, maximálně svěrací kazajku, a proto nastal čas upustit kohoutek… i když voda poteče rovnou do septiku a nikdo se s ní neosvěží.

Blog, který jsem si vedl velmi dlouho, je již definitivně smazán, leč existuje PDF dokument, který obsahuje všechny články a komentáře přehledně seřazeny do kapitol. Pokud byste si ho chtěli stáhnout, vytisknout a polepit si s ním stěny vašeho oblíbeného pokoje, pak je k dispozici zde. K jakémukoli jinému účelu k dispozici není.

Tyto stránky nejsou blogem. Označení blog se mi nelíbí a místo něj dávam přednost poněkud kompaktnějšímu označení, totiž žádnému. Vpodstatě to zde funguje stejně jako na blogu – články přibývají, komentáře jsou dovoleny a často jsou jedinou motivací k dalšímu psaní (takže vás prosím, pište komentáře, i když vám je budu neustále mazat), RSS zdroj je připraven vám denně servírovat čerstvý stuff z oblastí, které znáte ze zpráv a z oblastí, které vám byly dosud cizí a pravděpodobně stále budou.

Pro ty, kteří jsou selektivně barvoslepí a vidí černou jako bílou a nějakým způsobem tuto větu přečetli, se představím, jsem Michael Flannery.