Displaying binary value of byte

During my fights with 7z format I realized a need to see a value of byte in binary representation. Unfortunatelly there is no good way in Java, how to display binary value for the byte primitive. The method Integer.toBinaryString() takes int as its argument and a conversion byte to int does not work well for negative numbers. Following code will print a range of byte values:

public class Test {
    public static void main(String[] args) {

        byte b = -127;
        for (int i = 0; i < 255; i++) {
            System.out.println(String.format("%4d = 0x%02X = ", b, b) + printBinary(b));
            b++;
        }
    }

    public static String printBinary(byte number) {
        StringBuilder sb = new StringBuilder(8);
        for (int i = 8; i-- > 0;) {
            sb.append(((number & (1 << i)) != 0) ? 1 : 0);
        }
        return sb.toString();
    }
}

Jak mě naštvala Google navigace

V sobotu jsem jel s rodinou do Mladé Boleslavi do kina, Zdenka holkám ke dni dětí slíbila pohádku o lesních strážcích. Ráno jsem rezervoval lístky, výběr byl malý, sál už byl poměrně plný. Tentokráte jsem se rozhodl, že nepojedu přes Dětenice, ale zkusím cestu přes Prodašice. Zpětně už vím, že jsem v této obci blbě odbočil, resp. neodbočil na Doumosnice. Nejspíše navigace vybrala kratší cestu, která ale trvala pekelně dlouho.

V Úhercích mi navigace nabízela sjezd z hlavní na malou cestičku mezi baráky, tak jsem ji ignoroval. Občas plácá nesmysly. Jenže v Dobrovicích byl ve směru na Boleslav zákaz vjezdu, opravovali silnici, objížďka vedla do centra na kruhový objezd. Vjel jsem na kruháč, kde byla směrovka objížďky poněkud podivně natočená. Znejistil jsem a tak jsem si udělal na kruháči kolečko a zahlédl jsem jinou směrovku – směrem na Úherce, odkud jsem přijel! Tomu se říká definice kruhem.

Ok, vrátil jsem se zpět, tam ale žádná směrovka nebyla, zato navigace mě neustále hnala do kopce mezi baráky. Dobrá, nechal jsem se překvapit a vjel jsem na silničku. Tam po mě chtěla odbočit vpravo na štěrkovou cestu. Hmmm, začínal jsem být silně nervózní. Měl jsem deset minut rezervu, abych bezpečně vyzvednul lístky, než propadne rezervačka. Fajn, zkusím to. Pár baráků, polní cesta a les. Rozježděná polní cesta, zjevně jsem nebyl první. Kouknu na mapy, je to tak kilák dva a pak vjedu na vedlejší cestu sousední obce. Zkusím to. Jedu v lijáku rozbahněnými kolejemi a živě si představuji, jak čekám na traktor, aby mě odtud vytáhnul. Zdenka naléhá, ať se vrátíme. Vzdávám to a couvám pár set metrů zpátky.

uherce mapa

Následovalo pět minut hrátek s navigací, jak najít jinou cestu. Vracet se zpátky se mi nechtělo, čas utíkal. Při vyjíždějí na hlavní cestu jsem potkal pražského Yetiho, asi další zoufalec s navigací. Zpět do Dobrovic, manželka ječela hrůzou, že jedu ralley. Jel jsem v rychlostním limitu, jen jsem nebrzdil, takže i můj pažout kopce přeskakoval. Na kruháči jsem zvolil jednu cestu, zkontroloval, co na to navigace a jel. Uff, u Bezděčína jsem najel na dálnici.

A jak to dopadlo? Parkoval jsem v době, kdy oficiální doba rezervace již vypršela. Před kinem se táhl dlouhý had fronty, který jsem vystál. A naštěstí moji rezervaci nezrušili – jejich interní limit jsem stihnul asi o minutu. Řekl bych, že moje cesta byla napínavější než ten film 🙂 Příště raději pojedu po známých cestách. A nebudu používat google navigaci, její zkratky jsou fakt šílené. Zlatý waze.

Krtek na logy

Začal jsem chystat nový open source projekt – krtka na práci s logy z LOG4J. Plánované funkce jsou filtrování, například vypiš všechny ERROR zápisy mezi druhou a třetí odpoledne. V práci občas prohledávám stamegabajtové  logy na vzdáleném HP-UX serveru, ke kterým přistupuju přes sudo a tak by se mi takový nástroj hodil. Jak můžete pomoci? Pošlete mi ukázku logu (do 50 KB, ideálně včetně výjimek) a včetně LOG4J konfigurace (hlavně pattern). Děkuju

krtek

Skrytá úskalí jednorázové pojistky

Aktivně se snažím připravit na konec fixace hypotéky a proto procházím nabídky jednotlivých bank. Buď přejdu od současné banky jinam nebo si nechám dorovnat nabídku. Některé banky nabízejí výrazné slevy, když si zaplatíte jednorázové životní pojištění ve výši několika procent úvěru. Opticky nabídka vypadá poměrně dobře, získat třeba slevu 0,5% bodu. Jenže každá nabídka má své ale. Veškeré výpočty budou postaveny na modelu hypotéky na dva milióny korun, fixaci 5 let a úrokové sazbě 3%.

Prvním ALE je cena peněz. Tisícovka dneska má vyšší hodnotu než tisícovka za rok nebo dokonce za pět let. Říká se tomu inflace. Druhým ALE je vaše dostupnost peněz. Co je pro vás přijatelnější – platit tisícovku měsíčně nebo na začátku úvěru zaplatit desítky tisíc předem? Třetím ALE je výhodnost nabídky. Na trhu je několik pojišťoven, když je necháte soutěžit, pravděpodobně za stejnou cenu získáte vyšší krytí nebo obráceně nižší cenu za stejné krytí. Ty jednorázové pojistky nejsou extra výhodné, banky počítají s tím, že většina populace nesnáší matematiku a nedokáže si reálně zhodnotit přínosy a zápory nabídky.

Třetí ALE vychází z praktické zkušenosti. Banka mi rovnou podstrčila nabídku, kde výše úvěru byla navýšena o jednorázovou pojistku ve výši 60 tisíc korun na pět let. Hned jsem si šel propočítat na kalkulačkahypoteky.cz, co to znamená. Za prvé měsíčně naroste splátka o 333 Kč. To je stejné, jako by vám banka zvedla sazbu o 0,33% bodu. Za další automaticky ztrácí smysl kratší fixace než 5 let. Pokud si někdo vezme tříletý fix a pětiletou pojistku, je hlupák a měl by přijít o svéprávnost. A jak se vlastně bude vyvíjet hypotéka (řekněme na 20 let)? Po skončení fixace budete dlužit o 48186 Kč více, než kdybyste si nenechali vnutit jednorázovou pojistku. Celkem na úrocích zaplatíte navíc 19863 Kč. Spočtěme si to ještě jednou: když si necháte navýšit hypotéku o jednorázovou pojistku na 5 let, celkem zaplatíte 79863 Kč a zvýšené splátky budete mít až do konce hypotéky.

Co k tomu říci? Mít životní pojistku je rozumné, pokud máte rodinu a váš partner by bez vás měl problém se životními náklady. Pokud žijete sami nebo váš partner je milionář, jsou to vyhozené peníze. Jednorázová pojistka je výhodná – pro banku. Dobře si spočtěte, zda se snížená úroková sazba vyplatí (vám – ne bance). Na trhu je velká konkurence, jiná banka vám může nabídnout podobnou nebo jen mírně vyšší sazbu i bez tohoto úvazku. Já jsem takovou nabídku s díky odmítl. V hotovosti takovou částku nedám – chci mít rezervu, a nejsem trouba, abych si nechal navýšit úvěr.

Rozjíždím WordPress

Tak je to tady, už jsem taky pojídač koláčků a místo používání vlastního blogovacího software jsem přešel na WordPress. Protože jsem slyšel hrůzyplné historky na téma nebezpečnosti tohoto redakčního systému, první kroky vedly k jeho zabezpečení. Neberte prosím předchozí větu jako výzvu k útoku 🙂 Podělím se s vámi o pár zkušeností, které jsem získal.

Mám svůj virtuální stroj u AdminIT, ale nechtěl jsem kluky otravovat a tak jsem se pokusil instalovat vše svépomocí, přestože nejsem admin. První návod mi pomohl rozjet základní instalaci WP. Pro zabezpečení, aby administrace byla přístupná jen přes zabezpečený SSL protokol a vyžadovala klientský certifikát, jsem vygoogloval další návod.

Chtěl jsem použít kvalifikovaný certifikát od PostSignum. Musel jsem stáhnout certifikáty autority v PEM formátu a sloučit je do jediného souboru (cat postsignum_qca2_root.pem  postsignum_qca2_sub.pem >> postsignum_CA.pem). Další problém byl ve specifikaci klientského certifikátu, nepodařilo se mi definovat požadavky na Issuera a nakonec jsem se spokojil jen s podmínkou na organization unit mého certifikátu. Ještě jsem musel nastavit velikost SSL bufferu, protože jinak padal upload souboru na chybu Request Entity Too Large. Dále pro textová URL jsem musel předefinovat volbu AllowOverride z None na All. Pro zajímavost následují ukázky z konfigurace Apache.

/etc/apache2/sites-available/wordpress

<Directory /var/www/wordpress>
 Options Indexes FollowSymLinks MultiViews
 AllowOverride All
 Order allow,deny
 allow from all
</Directory>
RewriteEngine On
 RewriteRule ^(/wp-admin/.*) https://www.literak.cz$1 [L,R=permanent]
 RewriteRule ^(/wp-login.php.*) https://www.literak.cz$1 [L,R=permanent]

/etc/apache2/sites-available/wordpress-ssl

<Location /wp-admin>
 SSLCACertificateFile    /etc/apache2/ssl/postsignum_CA.pem
 SSLVerifyClient require
 SSLVerifyDepth  3
 SSLRequire %{SSL_CLIENT_S_DN_OU} eq "PXXXXX"
 SSLRenegBufferSize 10486000
</Location>