pondělí 8. prosince 2008

Haruki Murakami: Konec světa & Hard-boiled Wonderland


Hned jak se v metru objevily reklamy na novou knížku mého oblíbeného autora (zatím jsem přečetl vše, co vyšlo v češtině), neváhal jsem a knížku koupil.

Nemá asi smysl pitvat, že se mi jeho styl prostě líbí, a snadno se mi identifikuje s hlavním hrdinou. Děj je opět kafkovsky absurdní, ale o tom se jistě dočtete více od serióznějších kritiků.

Já bych chtěl poukázat na originální hlášky.

  • Přesto se zdá, že jsou všichni navzájem spojeni sice neviditelným, ale přesto nepopiratelným poutem důvěrné vzpomínky. [s.23]

  • Sexuální touha, to je pozitivní energie.Pokud ji není jak vybít, hromadí se a hromadí a člověk přestává jasně myslet a narušená je i jeho fyziologická rovnováha. U mužů stejně jako u žen. U žen to navíc vede k nepravidelnostem v menstruaci a nepravidelný cyklus vede zas k psychické labilitě. [s.57]

  • Já připadá, že ve vás něco je. Anebo že vám naopak něco chybí. To vyjde docela nastejno. [s.60]

  • Pravil jsem rovnou, že tomu moc nerozumím. Jsem totiž člověk povětšinou upřímný. Když je mi něco jasné, řeknu upřímně, že je mi to jasné, když mi to jasné není, přiznám bez mučení, že to nechápu. Nejasné odpovědi nedávám. Myslím si totiž, že je naprostá většina problémů zaviněná tím, že se někde někdo nejasně vyjádří. A věřím tomu, že na světě mluví tolik lidí vyhýbavě a nejasně proto, že si někde v hloubi duše koledují o problém. [s.61]

  • Smrti samotné se tolik nebojím. Jak napsal William Shakespeare: kdo letos umře, má pokoj pro příští rok. [s.62]

  • Její příšerný apetýt připomínal střelbu z těžkého kulometu do kůlny na dříví. [s.107]

  • "Kdy jsi vlastně naposledy měl nějakou ženskou?" zeptala se mě nakonec. Odklopil jsem v duchu víko své paměťové bedny a chvíli se přehraboval v obsahu. [s.108]
  • How to calculate age?

    I offten have on my projects a lot of conditions, which depends on the age of the client, user, his wife or dog ;-).

    Standard Java API is not very friendly for this use case. If you can't use JodaTime as me, I hope you appreciate this little calculator.



    public class AgeCalculator {

    public static int getAge(final Date dayOfBirth) {
    return getAge(dayOfBirth, new Date());
    }

    public static int getAge(final Date dayOfBirth, final Date referenceDay) {
    if (dayOfBirth == null) {
    throw new IllegalArgumentException("Parameter 'dayOfBirth' can't be null.");
    }
    if (referenceDay == null) {
    throw new IllegalArgumentException("Parameter 'referenceDay' can't be null.");
    }

    final Calendar calRef = Calendar.getInstance();
    calRef.setTime(referenceDay);

    final Calendar cal = Calendar.getInstance();
    cal.setTime(dayOfBirth);

    final int yearRef = calRef.get(Calendar.YEAR);

    final int year = cal.get(Calendar.YEAR);

    int result = yearRef - year;

    cal.set(Calendar.YEAR, yearRef);
    if (calRef.before(cal)) {
    result--;
    }

    return result;
    }

    }

    pátek 5. prosince 2008

    Už nikdy více NPE

    Na posledním projektu jsem ze zabýval archeologickou činností - upravovat aplikaci, která vznikla asi před dvěma lety a od té doby se příliš neměnila. Šlo o poměrně jednoduchou webovou aplikaci, která ukládá data z pár formulářů do databáze. Prostě brnkačka.

    Horší to bylo s implementací. Kód byl úplně zamořen následující konstrukcí

    if (someString!=null && someString.trim().length()>0) {
    // do something
    }

    nebo ještě v komplikovaněji

    if (firstName!=null && firstName.trim().length()>0 && lastName!=null && lastName.trim().length()>0) {
    // do something different
    }

    Kdyby to byl výskyt jen tu a tam, tak nad ním mávnu rukou, ale podobné podmínky tvořili asi 80% celého kódu.

    Většinou si programátoři začnou psát svoji vlastní MyUtil třídu, kde soustředí různé malé metody. Co programátor, to další MyUtil třída.

    Neznalost neomlouvá, takže - pro tyto účely je už dávno vytvořená, zdokumentovaná a asi milionkrát otestovaná třída StringUtils, která je součástí apache commons lang balíčku (doporučuji prostudovat vše, co v této knihovničce je - pozor je vysoce návyková).

    Výsledek vypadá následovně - čitelnost o poznání lepší.

    if (StringUtils.isNotBlank(firstName) && StringUtils.isNotBlank(lastName)) {
    // do someting
    }

    Pokud tedy máte pocit, že si chcete napsat svoji vlastní MyUtil třídu vězte, že objevujete znova kolo.