Poslední články

Nejbohatší muž v Babylóně

aneb některé věci jsou nadčasové

To vám je taková malinká knížečka. A co v ní je za věci!

Takhle nějak to vypadá :)

George S. Clason pomocí příběhů z, ehm, dob dávno zašlých ukazuje principy, podle kterých peníze fungují. Vysvětluje základy finanční gramotnosti, které by vám poradili i jiní, ale podle mě právě tím, že jako médium autor zvolil příběh, k vám ty informace projdou mnohem snáz.

Vypráví tak o Arkádovi - takovém novostarodobém Warrenu Buffetovi - který začíná na králův popud učit obyvatele Babylona, jak to zatraceně dělá, že se mu těžce vydřené mince hned nerozkutálejí jako všem ostatním. Jsou to principy, u kterých si řeknete - ano, tohle dává smysl, ale jaktože mě to nenapadlo? Poté kniha ukazuje na příbězích dalších lidí další pravidla, ale Arkád je taková ta stříbrná nit, která to všechno spojuje.

Dá se říct, že by se to dalo shrnout do jednoho slova - disciplíny. A tato disciplína není ani těžká - jen si prostě uděláte určitá pravidla. Většina lidí v oblasti peněz pravidla nemá, a to je ten problém. Arkád říká jednoduché věci - třeba toto: v ten moment, kdy dostaneš peníze, dej část bokem. A OPOVAŽ SE NA NI ŠÁHNOUT!

Respektive, šáhnout na ni můžeš, ale tyto peníze se potom používají jinak. Mají za účel plodit další peníze. Ale to už je další vyprávění - a další Arkádův příběh.

Překvapivě, z těch zbývajících 90% VŽDYCKY dovedete vyžít. Není problém vyžít z 8000 Kč nebo z 60000 Kč. To, že to někteří lidé nezvládají, je věc jejich životní úrovně. Nechtějí ji snížit. Tím, že si uděláte pravidla, získáte kontrolu nad tím, kam peníze dáváte. Řekl bych, že vám nic moc jiného než omezit se nezbývá - ale ono to zní hůř, než to ve skutečnosti je. Omezit se jde pak tak nějak samo, docela bezbolestně.

Jeden z příběhů vypráví, jak hliněné tabulky s těmito "zákony," které Arkád předával ostatním, objevili archeologové. Děj se přesouvá do přítomnosti a mladý archeologický pár s úžasem zjišťuje, co to vlastně našli. Moc se jim to hodí, protože jsou zadlužení kam se jen podívají, a hledají způsob, jak se z toho dostat. Aplikují Arkádova pravidla a pomalu mění svou situaci - tím, že si poprvé, co se týče peněz, stanovují pravidla.


Jestli máte možnost si tuto knihu někde sehnat (ehm, jestliumíteanglickytaktřebatady, ehm), opravdu vám ji doporučuju. Není dlouhá, čte se velice snadno (znovu, příběhy!), a jednoduše se aplikuje. Víc takových! - do komentářů prosím. :)

Při čtení jsem si dělal poznámky - tady jsou:

  • Část toho, co vyděláš, je tvoje.
  • Z každé výplaty odlož minimálně 1/10, sepiš si své výdaje a přání a použij na ně zbytek.
  • Nech odloženou desetinu pracovat za tebe. Její výdělek také celý odlož a nech vydělávat. Měj cashflow.
  • Chraň své peníze před investicemi, které nejsou věrohodné, kde se nedají peníze vybrat kdy chceš, kde se ti nebude vracet tolik, kolik bys zasloužil.
  • Raď se s moudrými lidmi, živícími se prací s penězi.
  • Vlastni svůj dům. Splátky z hypotéky se časem splatí, nájem se nesplatí nikdy.
  • Buď připraven na budoucnost, kdy nebudeš moci pracovat, a zabezpeč svou rodinu pro případ, že bys předčasně zemřel.
  • Uč se, vzdělávej se, zlepšuj se. Jednej tak, aby si tě ostatní mohli vážit, v souladu se svou morálkou. Dávej si jasné a konkrétní cíle a vynalož úsilí, abys je splnil. Získáš tím sebevědomí a um zvládnout příště větší cíle.
  • Člověk, který využije příležitost a nenechá ji utéct, k sobě přitahuje to, čemu lidé říkají štěstí. Zvítězil nad svým duchem prokrastinace.

Převod vícenásobné rekurze na iteraci

aneb kvůli stack overflow šaháme na StackOverflow.com

Občas si hraju na Project Euler - stránkách, kde jsou vystaveny (většinou matematické) úlohy, u kterých je cílem napsat program, který je vyřeší pokud možno za méně než minutu.

Na jazyku ani konečném řešení nezáleží, jde spíš o cestu, o průzkum bitevního pole (čti: hledání vlastností a algoritmů na Wikipedii, MathWorldu, počmárání tuny papíru při snaze najít opakující se vzor, který by šlo využít) a o ten pocit, kdy zadáte odpověď a ukáže se vám ... tohle. Ááááách. ;)

Není nad to :)

Před pár hodinami jsem se podíval na jeden z nových problémů, který má něco do činění s nesoudělnými čísly. Mě tedy zajímal hlavně algoritmus pro jejich generování:

def nesoudelna(n):
    # n = vrchni limit, nechceme v parech vetsi cisla nez toto

    # udelame seznam paru, ktery pak budeme vracet
    pary = []

    def rekurze(x,y):

        # jsme v limitu?
        # vzdy plati: x > y
        if x <= n:

            # vlozime to do seznamu
            pary.append((x,y))

            # funkci zavolame na dalsich parech
            rekurze(2*x - y, x)
            rekurze(2*x + y, x)
            rekurze(x + 2*y, y)

    # funkci zavolame na prvnich dvou parech
    rekurze(2,1)
    rekurze(3,1)

    # vse jsme vycerpali, vracime hotovy seznam
    return pary

Jenže ouha: tato funkce bude fungovat jen pro relativně malá n. Když bude n větší, vnitřní funkce se zavolá tolikrát, že mi program zařve na přetečení zásobníku.

print len(nesoudelna(50))   # 773
print len(nesoudelna(5000)) # RuntimeError: maximum recursion depth exceeded

To se většinou řeší převodem na funkci iterativní (tedy místo volání sebe sama používající nějakou smyčku). Vím, jak převést klasickou rekurzivní funkci, ale co když se volá vícekrát? StackOverflow.com dává odpověď: v tu chvíli je třeba použít zásobník.

Budeme jím napodobovat právě ten zásobník, který nám přetekl při rekurzivní funkci. Ale protože si na něj místo alokujeme sami, není nijak extra omezený. Může nám zabrat gigabajty paměti, programu to vadit nebude. Systémový zásobník by v tu chvíli už dávno spadl.

Využijeme toho, že Python má u seznamu funkce append() a pop() - což je přesně to, co potřebujeme, abychom zásobník mohli vytvořit. Náš zásobník bude obsahovat dvojice "argumentů," které je třeba zpracovat. S každým dalším voláním se teoreticky rozšíří o dvě dvojice (jednu jsme vyřešili, tři přidáváme), ale postupem času začneme narážet na náš limit n a prvků v zásobníku začne ubývat. Jdem na to:

def nesoudelna_iter(n):
    # n = vrchni limit, nechceme v parech vetsi cisla nez toto

    # udelame seznam paru, ktery pak budeme vracet
    pary = []

    # pocatecni hodnoty
    zasobnik = [(2,1),(3,1)]

    # dokud v zasobniku neco je
    while zasobnik:

        # vezmem to a dame do x,y
        x,y = zasobnik.pop()

        # jsme v limitu?
        # vzdy plati: x > y
        if x <= n:

            # vlozime to do seznamu
            pary.append((x,y))

            # do "todo" seznamu pridame dalsi vetve
            zasobnik.append((2*x - y, x))
            zasobnik.append((2*x + y, x))
            zasobnik.append((x + 2*y, y))
    
    # vse jsme vycerpali, vracime hotovy seznam
    return pary

Iterativní verze se liší tímto (zvýrazněné řádky výše):

  • ř. 8 - na začátku si definujeme zásobník s "argumenty"
  • ř. 11 - rozeběhneme to ne voláním vnitřní funkce, ale smyčkou while
  • ř. 14 - v té vyprazdňujeme zásobník
  • ř. 24-26 - místo znovuvolání vnitřní funkce přidáváme do zásobníku

A když tuto novou verzi zkusíme spustit?

print len(nesoudelna_iter(50))   # 773
print len(nesoudelna_iter(5000)) # 7600457

That's all, folks!

EDIT 3. 7. 2012: pročítám se tutoriálem Erlangu a narazil jsem na tuto skvělou ilustraci rekurze. :)

reCURSION

Osobní růst

aneb je mi líto, školou to nekončí

Mám rád osobní růst. Ať už jde o hudbu, programování, "soft skills" nebo něco jiného, rád se učím nové věci a rozšiřuju si obzory. Pravděpodobně je v povaze každého člověka, jestli se do takových věcí hrne rád, nebo si myslí, že to je zbytečnost, případně že to nezvládne. Viz "fixed versus growth mindset."

Nevzpomínám si, jestli mě k některému z těchto směrů nevědomky ovlivňovali rodiče, ale skončil jsem na straně růstového způsobu uvažování. Posledních pár dní mě přimělo k uvažování, jestli místa, kam chodím a kde trávím čas, podporují právě růst. Můžete si zkusit zhodnotit i u sebe. A pokud se vám do změny a zkoušení nových věcí nechce, překonejte se :) Stojí to za to!

Obraz první: církev

Chodím do Církve adventistů sedmého dne a zjišťuju, že pokud člověk ukáže, že je ochotný a chce být užitečný (ikdyž ta daná věc není zrovna jeho parketa), příležitosti k růstu určitě jsou.

Příklad (je jich více, ale pro teď to omezím): Ve sboře máme sobotní školu. To znamená, že jsme ve skupinkách o cca 10 lidech a diskutujeme nad připravenými materiály k určitému tématu (dejme tomu "Odpuštění" nebo "Bůh jako romantik").

Diskuzi musí někdo vést - a právě do této role mě jednoho krásného dne strčili. Musím říct, že mnohem líp bych se cítil za klavírem nebo klidně i za kazatelnou. Ale přimět lidi odpovídat, rozkecat je, občas do diskuze vhodně vpadnout a vrátit ji zpátky k původní otázce, to je mi tak trochu cizí. Jako malý jsem koktal a všeobecně radši naslouchám než mluvím.

Ale kdybych tohle nezkusil (a nutno dodat, že zkouším pořád), byl bych si v tom nejistý pořád. Takhle tréma a nejistota pomalu ustupuje, a jsem si jistý, že časem se mi tenhle "skill" bude hodit třeba v práci.

Obraz druhý: Tensing

Asi od února chodím v Ostravě do Tensingu. Ve zkratce: banda puberťáků zpívá na hlasy převážně pop rock (s mírnými úlety do všech stylů). Kapela hraje na bicí, basu, pár kytar a občas na klávesy. Co mě příjemně překvapilo, je, že naprosto v pohodě u některé písničky přenechají nějaký nástroj někomu, kdo na něj neumí tak dobře jako oni. Děcka mají možnost vyzkoušet si různé nástroje a naučit se spolupracovat s ostatními hudebníky.

Nebo dirigování (čti: ukazování sboru, jak se mají vrtět a co přijde za další část písničky). Klárka dělá skvělou práci, ale ráda nechá lidi vyzkoušet si, co to je za dril (když ten zatracený sbor se za žádnou cenu hýbat nebude!!). Věřím, že ten daný člověk potom velice ocení, když to dělá Klárka a ne on :)

Nebo rozezpívávání. Nebo zamyšlení. Nebo ... you get the picture. Prostě je skvělé, že si to vedoucí a kapela nenechávají pro sebe, "protože my to přece umíme nejlíp," ale dávají příležitosti ostatním zkoušet si to. Vychovávají leadery.

Obraz třetí: práce v Linuxboxu

Jsem externista v Linuxboxu. Když jsem k nim poprvé nastoupil, uměl jsem něco Pythonu, něco Céčka, něco Bashe, ale neměl jsem v tom moc praxi. Musel jsem se prokousat tím, jak ve firmě co funguje - jak si mám zatraceně nastavit VPN, jak se dělá s Tracem, jak se dělá s SVNkem (díky Bohu za git-svn!), jak s SSHčkem a jak to mají všechno propojené.

Párkrát jsem omylem kolegovi poslal privátní klíč místo veřejného, udělal si bordel ve virtuálních strojích, ale postupem času jsem se otrkal. Člověk má stresy z toho, jestli to všechno zvládne, jestli s ním šéfové neztratí trpělivost, a podobně - ale nakonec to zvládne. Pokud to ovšem nevzdá předem :)

Za tu dobu, co tam jsem, jsem se naučil neskutečně moc nových věcí. Věcí z praxe - to vám tutoriály na internetu nenahradí a ve škole vás to nenaučí. S šéfem je legrace, ale zároveň chce vykazatelnost. Takže jste s ním rádi, ale zároveň se trochu chvějete, co vám řekne.

Myslím, že to je skvělá kombinace. Nutí to člověka být ve střehu - mít připravenou jakousi "obhajobu." Proč dělám na tomto, proč jsem si vybral tenhle způsob, a tak dál. Myslím, že se mně díky šéfovi zlepšila schopnost vyjádřit myšlenku. A taky jsem zjistil, že mě baví psát dokumentaci :)

Když srovnám toto prostředí s dny, kdy dělám taťkovi v jeho firmě "IT audit," vidím diametrální rozdíl právě v míře učení se nového. U taťky se snad nikdy nevyrojí situace, kdy se musím naučit pracovat s novým nástrojem, novým prostředím, řešit nový problém. Protože nastavit na 10 počítačích výchozí tiskárny, vyměnit licenční klíče v NODu, aktualizovat programy, projet počítač CCleanerem a Spybotem, to je prostě rutina. Nic nového. Taková práce je jednoduchá, ale nenaplňuje.

Na druhou stranu práce v Linuxboxu je vzrušující. Když mi skončí projekt, hodí mě zase do něčeho nového, co jsem ještě nedělal, a znovu začne objevování. To miluju.

A co vy?

Řešíte v práci nové problémy, nebo jste se zasekli na rutině? Dávají vám šéfové možnost růst jiným způsobem, třeba na seminářích, konferencích a podobně?

Když odbočím od práce, co růst jinde? Třeba taková posilovna... ;)

A máte vůbec rádi osobní růst, nebo si říkáte, že s čím jste se narodili, to už moc nezměníte? Pište, jsem zvědavý!