Lampy a Hudson

Jistě jste slyšeli o lampách napojených na buildovací server. Toto téma mne také zaujalo a tak jsme se rozhodli jej zrealizovat. Na internetu existuje mnoho návodů, nicméně málokterý z nich je snadno použitelný v evropě kvůli cenám a dostupnosti zařízení.

Berte tedy tento dokument jako návod, jak si něco takového také pořídit.
Pokračování textu Lampy a Hudson

Jak na tichou instalaci Javy (JRE)

Představte si situaci, kdy máte desktopovou aplikaci napsanou v Javě a rádi byste ji formou instalačního balíčku pro Windows distribuovali. V takovém případě potřebujete mimo jiné zajistit, aby se korektně doinstalovalo JRE v případě, kdy dosud v systému není nainstalováno (či je ve špatné verzi). Uplynulý měsíc jsme řešili obdobný problém.

V našem případě se jednalo o instalační program napsaný v Nullsoft Installeru, který po detekci nainstalovaného JRE umožňoval případnou instalaci Javy. Instalační balíček JRE podporuje několik parametrů spuštění, které umožní tichou instalaci Javy, což je řešení, které se hodí v řadě případů. Problémem u tiché instalace Javy v klasickém instalátoru pro Windows je ten, že uživatel nemá viditelnou odezvu a než se Java tiše nainstaluje, může nabýt dojmu, že instalační program tzv. zamrzl. Pro tyto případy je lepší spustit instalaci s parametrem /passive, při které se zobrazí pouze okno s průběhem instalace JRE a ze strany uživatele není nutná žádná interakce.

Audit změn v databázi – Oracle

Možná jste někdy narazili na nutnost zaznamenávat změny, které jsou provedeny v databázi. Existuje několik možností – od logování změn na úrovni aplikace (např. jako listener pro Hibernate) až po použití funkce audit trail v Oracle.

My jsem se pro náš dřívejší projekt rozhodli použít trigger, který úpravy zaznamenává.
Pokračování textu Audit změn v databázi – Oracle

Základní otestování webového formuláře

Prakticky každý vývojář se alespoň jednou sektal s nutností vytvořit nějaký ten webový formulář. Taková úloha se většinou skládá ze zobrazení formuláře, po jeho odeslání validací odeslaných dat na straně serveru a jejich dalším zpracování. Často je též navíc dostupná validace na straně klienta (nejčastěji formou JavaScriptu), čímž se zajistí rychlejší a příjemnější zobrazování chybových zpráv uživateli.

Abychom se při testování tzv. neuklikali, můžeme použít nástroje jako například Selenium IDE, které nám pomohou nudnou práci zautomatizovat. Pokud však tvoříme webový formulář, je dobré se nad jeho funkčností zamyslet už při vývoji a nespoléhat jen na to, že za nás všechny chyby odhalí automatizované testy. Scénářů a možných chyb je totiž tolik, že v to ani doufat nemůžeme. Pro jednoduché otestování webového formuláře se mi osvědčilo několik základních testů:
Pokračování textu Základní otestování webového formuláře

XEN – Virtualizační řešení

Přestože jsme celkem malá firma, naše serverovna už obsahuje hezkou řádku serverů (4 naše vlastní a další pro zákazníky). A navíc s každým projektem přicházely požadavky na další a další (Ubuntu + PostgreSQL, Ubuntu + Oracle, RHEL + WebSphere portál, a další).

Mít tolik serverů stojí nejen hardware (který navíc není ani zcela využit), ale také údržbu, elektřinu a místo v serverovně. Když se pak objevily problémy, našemu správci z toho vstávaly vlasy na hlavě.

Proto jsme se rozhodli s tím něco udělat.
Pokračování textu XEN – Virtualizační řešení

Firefox a fragmentace paměti

Nedávno jsem narazil na článek Memory fragmentation, zabývající se jedním z důvodů vysoké náročnosti firefoxu na paměť – tímto důvodem je fragmentace paměti.

Vždycky se tvrdívalo, že Java je pomalá a paměťově nenažraná. Aplikace napsané v Javě ovšem fragmentací paměti netrpí právě díky použití kopírovacího garbage collectoru, který vždy používaná data „sesype“ na začátek přidělené paměti.

Navíc si k tomuto problému přidejte fakt, že části paměti firefoxu spravují pomocí reference countingu. Reference counting je obvykle pomalejší (díky zamykání a zvyšování reference, i když i s tím se dá poprat), paměťově náročnější a navíc trpí problémy s cyklickými závislostmi.

Člověka tak napadne, že možná nastál čas pro použití garbage collectoru podobnému tomu v Javě …

Použití Mozilly v komponentě Browser SWT 3.3

Jednou z novinek, se kterými přichází SWT 3.3, je vylepšení komponenty Browser. Ta byla vylepšena o možnost využití renderovacího jádra Mozilly k vykreslování webových stránek namísto výchozího renderovacího jádra. Tím je například pod Windows jádro Microsoft Internet Exploreru. Vše, co je k využití jádra Mozilly potřeba, je nainstalovaná a řádně zaregistrovaná distribuce XULRunneru 1.8.1.2 či vyšší. Ta v sobě obsahuje Mozilla technologie včetně renderovacího jádra Gecko, které pohání prohlížeče jako Firefox či Flock.
Pokračování textu Použití Mozilly v komponentě Browser SWT 3.3

Quercus – PHP v Javě

Dnes jsem narazil na zajímavý projekt Quercus. Jedná se o PHP 5.0 „interpreter“ psaný v Javě, který kód v PHP přeloží pro JVM. Výsledný program je dle autorů až 4x rychlejší (měřeno např. pro Drupal). Navíc umožňuje snadno integrovat PHP a Java kód.

Toto řešení je zajímavé pokud potřebujete integrovat PHP aplikaci s Java aplikací nebo chcete využít vlastností aplikačního serveru (např. connection pooling, replikace, clusterování, …).