Až Vám zčerná obrazovka, přejděte na Linux!

Proč používat Linux

pátek 23. července 2010

Tož totok je spomínka na moje mládí...

Dneskaj sem si přečet báječný článeček. Čtěte také: http://vetvicka.blog.idnes.cz/c/147886/Zje-mrtvy-Lehni-nebo-nehraju-2.html


A je pravda pravdúcí! A né že nae! Akorát u nás pod sídliskem byl sad kerý nebýl nikeho, tož sme tam ožírali střešně o sto šest! A ty jabka! Zimáky ontária už v srpnu - to sa po nich huba tak krásno krútila! A koprovka? Ta by u nás musela mňet gulomet, aby vydržala do druhého dňa. Ale gdyž babička navařili kotel kyselice... ta byla najlepčí teprv až sa v ní rozležely klobáse!

úterý 20. července 2010

Zastaralé Lotus Notes and A gdk Window is being destroyed out of DestroyWindow

Taky se vám po čase přestal zobrazovat obsah tabů v Lotus Notes?
No mně se to stalo. Spustím si Notesy z příkazové řádky a najdu tam:

A gdk Window is being destroyed out of DestroyWindow                                                                                                            

/opt/ibm/lotus/notes/libemulator.so [0xb569c315]                                                                                                                
/opt/ibm/lotus/notes/libemulator.so [0xb5665bb1]                                                                                                                
/usr/lib/libgobject-2.0.so.0 [0xb47edb41]                                                                                                                      
/usr/lib/libglib-2.0.so.0(g_datalist_id_set_data_full+0x386) [0xb4e08d86]                                                                                      
/usr/lib/libgobject-2.0.so.0 [0xb47ee1f9]                                                                                                                      
/usr/lib/libgobject-2.0.so.0(g_object_unref+0xd8) [0xb47ee378]                                                                                                  
/usr/lib/libgdk-x11-2.0.so.0(gdk_window_destroy+0x3a) [0xb48fc0fa]                                                                                              
/opt/ibm/lotus/notes/libemulator.so [0xb567d20b]                                                                                                                
/opt/ibm/lotus/notes/libemulator.so [0xb567d0a0]                                                                                                                
/opt/ibm/lotus/notes/libemulator.so(DestroyWindow+0x183) [0xb567d3e7]                                                                                          
/opt/ibm/lotus/notes/notes(Quit+0x20e) [0x83ff77a]                                                                                                              
/opt/ibm/lotus/notes/notes(EndSession+0x47f) [0x8400845]                                                                                                        
/opt/ibm/lotus/notes/notes(MainWndProc+0x14a2) [0x834f406]                                                                                                      
/opt/ibm/lotus/notes/libemulator.so(CallWindowProcW+0xc0) [0xb566b472]                                                                                          
/opt/ibm/lotus/notes/libemulator.so [0xb5680b83]                                                                                                                
/opt/ibm/lotus/notes/libemulator.so(DispatchMessageW+0x13) [0xb5680bc9]                                                                                        
/opt/ibm/lotus/notes/notes(NEMMainLoop+0x3f5) [0x8365977]                                                                                                      
/opt/ibm/lotus/notes/notes(WinMain+0x5e1) [0x832507e]                                                                                                          
/opt/ibm/lotus/notes/notes(main+0x1b6) [0x83284ac]                                                                                                              
/lib/libc.so.6(__libc_start_main+0xfe) [0xb4ee4ace]   

No a tak jsem zjišťoval, čím by to asi mohlo být a našel jsem toto . Problém je v nekompatibilitě nového GTK s tím, které chtějí Notesy. Ať už je to chybou GTK či Notesů (spíš bych podezíral vývojáře GTKčka), obejít se to dá lehce. Stáhněte si z http://www.freetechie.com/upload/lotus_notes/ starší verze knihoven pro GTK, nahrajte je k ostatním knihovnám Notesů (typicky /opt/ibm/lotus/notes) a máte to!

Nebudou sice Notesy vypadat tak krásně jako dřív, ale aspoň něco...

čtvrtek 17. června 2010

Znovuzrození Obnoveného řádu

Wesnothu Zdar!

Tak už je to tady. Po dalších dlouhých měsících a letech jsem zase něco malého udělal pro komunitu nás Wesnoťáků. Jedno z nejzajímavějších tažení, Obnovený řád (v originále A New Order) od Arkadiusze Danielckiho, které napsal pro Wesnoth verzi 0.9.3 a které bylo naposledy funkční pod Wesnothem 1.2, je spravováno a je hratelné v nejčerstvějším vydání (nyní 1.8.2) této naprosto báječné a jedinečné strategie. Ano, milí přátelé, zajisté jste pochopili, spravuji je já a mám na svědomí jeho vzkříšení.

Hrajte, jak je vám libo. Nechte se vtáhnout do děje, zabíjejte, kecejte, vyslýchejte, mučte, zkrátka kochejte se.


Aktuálně je vydána verze 1.1.98 . Verze, která by měla beze zbytku fungovat a být v plné míře naportována na jedna-osmičkový stroj, bude 1.2 . Do té doby sháním všechny možné i nemožné beta testovače.

Užijte si to ve zdraví.

úterý 15. června 2010

Jak vyřešit ORA-01591: zámek uplatněný spornou distribuovanou transakcí

Tak jsem si jednou hrál s Hibernate a automatickým vytvářením tabulek nad skoro produkční databází Oracle 10 a dostal jsem se do jedné poněkud choulostivé situace. Při deployi earu jsem dostával
ORA-01591: zámek uplatněný spornou distribuovanou transakcí
Chvíli jsem si myslel, že to má na svědomí špatně navržený deployment Hibernate. Po čase jsem začal Gůglit ve vodách mimo Javu a dostal jsem se k jednoduchému řešeni:

Jedná se o problém, kdy transakce selhala v okamžiku, kdy se dostala do stavu prepared. Jediné řešení je ji odstranit. A řešení jsou dvě: buď se k ní připojit a rollbacknout, nebo ji smahnout přímo v databázi.

Druhé řešení je poměrně elegantní. Oracle definuje SQL příkaz ROLLBACK FORCE a jemu odpovídající PL/SQL funkci dbms_transaction.rollback_force(xid). V tabulce "SYS"."PENDING_TRANS$" je uložen záznam o všech čekajících transakcích. Ve sloupci LOCAL_TRAN_ID je XID.

Stačí se tedy přihlásit jako uživatel SYSTEM s funkcí SYSDBA (například v sqlplus), spustit
exec dbms_transaction.rollback_force(moje_xid)
a je vymalováno.

pondělí 31. května 2010

Hibernate error - identifier altered from 1 to 1

Nějakou dobu jsem laboroval s toto poněkud podivnou hláškou - jak může změna z 1 na 1 vygenerovat chybu? A kde se vůbec ta změna bere, když jedinou operaci, kterou dělám, je session.save()?

Nakonec jsem chybu našel. Při laborování s formátem dat v databázi a ručním copy&paste psaní hbm.xml jsem zavlekl typovou nekonzistenci do dat. V databázi (PostgreSQL) jsem měl u ID Integer (což onu chybu ale nevyvolá), v hbm.xml java.lang.Integer, ale ve třídě java.lang.Long. No a protože long nelze bez přetypování uložit do intu, ona alterace byla na světě.

Řešení tohoto problému je tedy prosté. Zkontrolujte si, že vám PŘESNĚ sedí jednotlivé typy v Javě a v hbm.xml

Kéž to někomu pomůže.

pondělí 3. května 2010

Jak ignorovat skryté adresáře v doplňování v bashi

bash completion, neboli inteligentní doplňování v bashi, je strašně mocná zbraň. Poměrně hodně mi ale vadilo, že mi bash při průchodu zdrojáků uložených v Subversion permanentně nabízel v možnostech pro příkaz cd i adresář .svn . Tak jsem Gůglil, až jsem zjistil, jak se s tím vypořádat.
Nabízení skrytých adresářů je vlastnost knihovny readline, která je v bashi použita. A tu lze vypnout jednoduše pomocí nastavení readline. Do ~/.inputrc přidáte
set et match-hidden-files off
a je to. Eqivalentem pro právě běžící bash je použití interního příkazu bind:
bind 'set match-hidden-files off'
Třeba to někomu pomůže.

pátek 26. února 2010

Valná Hromada TJ Sokol Přílepy

Výbor TJ Sokol Přílepy zve všechny své členy na valnou hromadu Tělocvičné Jednoty, která se koná ve čtvrtek 11.3. 2010 v 18:00 v budově obecního úřadu v Přílepích.

Program Valné Hromady
1) Zahájení a volba předsednictva
2) Volba mandátové komise
3) Volba návrhové komise
4) Volba volební komise
5) Schválení programu
6) Zpráva starosty
7) Zprávy cvičitelů
8) Zpráva hospodářky o hospodaření jednoty za rok 2009
9) Volba starosty
10) Volba členů výboru
11) Volba kontrolní komise
12) Volba delegátů na župní valnou hromadu
13) Diskuse
14) Závěr

Navrženou kandidátkou na post starostky je Anna Petrášová, na jednatele Ivana Sehnalová, hospodářky Růžena Staňková, na další členy výboru Helena Kuchařová a .

Za výbor Oto Buchta, starosta TJ Sokol Přílepy

čtvrtek 11. února 2010

Blokování nájezdů na server přes SSH

Dnes jsem řešil, jak více zabezpečit SSH před možným průnikem. Po chvilce Gůglení jsem narazil na podrobný popis, jak to zařídit na OpenSuSE 11.1 .
Použití sshguardu je rychlé, pěkné a účinné. K danému odkazu ještš přidám, že existuje OpenSuSE repository csbuild, které sshguard obsahuje.
Stačí tedy

sudo zypper ar http://download.opensuse.org/repositories/home:/csbuild/openSUSE_11.1/ csbuild

sudo zypper in sshguard

a nakonfigurovat podle onoho návodu na stránkách OpenSuSE.

POZOR! Pokud nemáte korektně rozchozený AppArmor, nechejte jej být. Při jeho nastartování vám syslog-ng zařve "Broken Pipe" na odeslání dat do roury sshguardu, takže Vám to nebude fungovat.

Snad to někomu pomůže

úterý 9. února 2010

JBoss 4.2 a kumulující se instance Stateless EJB

Asi týden jsem si hrál s J2EE aplikací Westico Visibility Platform a každou chvíli mi aplikace sletěla na OutOfMemoryError. Asi memory leak, řekl jsem si.
Stáhl jsem si tedy NetBeansy (qůli profileru) a začal hledat, kde tesař nechal v paměti díru. Zjistil jsem, že mi permanentně narůstá počet instancí dvou Session Stateless EJB, které volám z MDB ihned po sobě, těsně před ukončením zpracování zprávy. Protože provádím JMS ack ihned po příchodu zprávy, říkal jsem si, že si asi lookup vytvoří nové instance fazolí, ale požadavek neskončí a proto to bobtná. Dlouho jsem trasoval onu Message Driven Beanu, dokud jsem si opravdu nebyl jistý, že požadavek skončil a tudíž GC by měl odstranit "nepotřebné" instance a v poolu by měly zůstat jenom "potřebné". Tak jsem se zaměřil na pool a zjistil následující:
JBoss má oddělené pooly pro MDB a stateless EJB. Pro obejítí klasické Javovské synchronizace používá JBoss ThreadLocal pool. A v tom je právě šutr úrazu. Díky klasickému implicitnímu chování MDB se stane, že každý požadavek je zpracován jiným vláknem a tedy pool pro bezestavové fazole bobtná, přestože má nastaven maximální počet instancí v poolu.
Pokud tedy chcete v JBossu volat stateless EJB z MDB, musíte patřičné bezestavové fazoli nastavit jiný typ poolu. Ideálně org.jboss.ejb3.StrictMaxPool, a to třeba pomocí JBossí anotace @PoolClass, jak je popsáno zde.

Třeba to někomu zachrání kupu nervů.

úterý 19. ledna 2010

Jak rozchodit Joomla! pod Microsoft Windows

Nedávno jsem musel po telefonu a FTP rozchodit Joomla! na Widlích 2003, kde už navíc běží Lotus Notes. Pro příští generace tu zanechám minimalistický postup, jak to udělat:

Nejdřív si stáhneme Joomla!, MySQL, Apache a PHP (5.2.11)

V prvé řadě nainstalujte MySQL - stačí spustit instalátor a proklikat se na konec. V nastavení samozřejmě zvolte Server a Multilingual, zadejte heslo.
Potom v okně příkazového řádku
cd \Program Files\mysql\bin
mysql -u root -p
Password: sem zadejte heslo z instalace
mysql> CREATE USER 'joomla'@'localhost' IDENTIFIED BY 'heslo';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'joomla'@'localhost'
-> WITH GRANT OPTION;
mysql> \q

A tím je databáze připravena.
Potom nainstalujte Apache. Ponechejte základní nastavení.
Jako volbu při instalaci zvolte samostatnou aplikaci místo servisy - nastavíte ji až nakonec, až bude vše chodit. Nastavte port 8080.

Potom nainstalujte PHP. Doporučuji nainstalovat do adresáře C:\Program Files\Apache Software Foundation\PHP5.2.11 , protože pak je možné říct FileZille, aby Vám jako root spřístupnila pouze C:\Program Files\Apache Software Foundation a máte k dispozici jak httpd.conf, tak php.ini . V rámci instalace zvolte instalaci do Apache 2.2 jako modul (modul je rychlejší, pro testy je ale lepší použít CGI - nemusí se pořád restartovat Apache při změně php.ini).

V httpd.conf odkomentujte LoadModule pro moduly proxy, proxy_http a rewrite, v DirectoryIndex změňte na
DirectoryIndex index.php index.html

V sekci
změňte AllowOverride z None na All

A to by mělo být prozatím vše.

Otestujte konfiguraci pomocí Test Configuration ve Startmenu Apache.

V php.ini nastavte date.timezone na hodnotu, kterou považujete za rozumnou, například Europe/Prague

Přímo do adresáře C:\Program Files\Apache Software Foundation\Apache2.2\htdocs nakopírujte obsah adresáře joomla z instalačního balíku Joomla!
Přejmenutje htaccess.txt na .htaccess a odkomentujte v něm řádek
RewriteBase /

V danou chvíli je vše nachystáno ke konfiguraci Joomla!

Objevil se problém
Call stack
# Function Location
1 JSite->dispatch() C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\index.php:68
2 JComponentHelper->renderComponent() C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\includes\application.php:124
3 JError->raiseError() C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\libraries\joomla\application\component\helper.php:95
4 JError->raise() C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\libraries\joomla\error\error.php:171
5 JException->__construct() C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\libraries\joomla\error\error.php:136

Řešení je jednoduché:
http://discussion.accuwebhosting.com/joomla-issue-404-component-not-found_blog_by_ryan_125.html

Nakonec je třeba poslední věc: co s porty?
Jsou dvě možnosti - buď budete akceptovat, že na Joomla! půjdete přes port 8080 a necháte vše tak, nebo budete muset přesunout LotusNotes na jiný stroj a z Apache udělat reverzní proxy pro notesy.

Pokud to druhé, tak nejdříve Lotus Notes přemigrujte (to nechám na Vás jak).

Shoďte Notesy a Apache. V httpd.conf Apache změňte Listen 8080 na Listen 80 a restartujte Apache.

Pak je třeba nastavit mod_rewrite a mod_proxy.

TBD.

A je to.

sobota 9. ledna 2010

Připozamrzlá zima

Včera večer jsem jel pro Káťu do lidušky a cestou zpátky jsem mezi Holešovem a Přílepama dvakrát zastavoval (jednou skoro ve škarpě) a oškrabával okno, protože jsem nic neviděl. Všude kupa sněhu, pršelo a ten déšť ihned zamrzal. Protože mi auto stálo asi hodinu na takovém počasí, kompletně mi zamrzlo a s tím i stěrače, takže jsem je nemohl použít - ani se nehnuly. A než se auto tak zahřálo, aby rozumně fungovalo vyhřívání předního skla ofukem, byl jsem doma. Tak jsem jel téměř poslepu, v milimetrových průhledech, kde se na ledu na okně světlo lámalo jenom minimálně, jsem jel podle stop na cestě a popaměti. Auto pak ráno vypadalo asi takto:



Jenomže to nebylo všechno. Tak jsem se dneska ráno probudil a nevěřil jsem vlastním očím. Stromy kompletně obalené ledem! Však se podívejte sami.





čtvrtek 7. ledna 2010

Zlínské nastudování Goldoniho Sluhy dvou pánů

Dneska jsme byli s Jaruškou na Goldoniho Sluha dvou pánů ve Zlínském Městském Divadle. Už jsem na něm byl tamtéž před 18lety a viděl jsem i záznam z Národního s Mirkem Donutilem. Dneska to ale mělo šmrnc.

Doktor Lombardi v perfektním provedení Luďka Randára, jehož 90% replik byla rčení (Například když pan Pantalone spojil ruce Beatrice a Florinda a k tomu Lombardi dodal - "Kdo maže, ten jede!"
Úžasný byl také "telefonát" Lombardiho Pantalonovi z automatu. Scéna, kdy Lombardi Pantalona uráží, si nejdříve "před nosem" přivírají fiktivní dveře, až se to nic podaří Pantalonovi zavřít a tak Randár utíká k fiktivnímu telefonímu automatu, pulzně vytáčí, Pantalone zvedá mobil z palce a malíčku, ... Dál se na to musíte podívat sami, to byste přišli o pointu.

Dál to posouvají hlášky typu: "Kdo se směje nejlépe, ten se směje naposled!" nebo "Kde byste sehnali dašlího takového, tady ve Zlíně!" ... taky občasné prokládání jinými nářečími (např Brněnské Hantec).

Moc se mi líbilo postelové zakončení shledání Beatricce a Florinda...

Kdo jste poblíž, vřele doporučuji!