08.07.2010 6:06

O autorovi: Jetyho blog | LinkedIn
Pavel Jetenský se věnuje Java/J2EE vývoji již od roku 2003, z toho několik let v Irsku. Zajímají ho techniky automatického testování. V současné době pracuje jako metodický vedoucí Java/J2EE v Deltax Systems a.s.
Občas při tvorbě automatických testů potřebujeme otestovat funkcionalitu, která stahuje nějaká data z Internetu. V mém případě to byla funkce na stahování seznamu zneplatněných certifikátů (CRL). Původně jsem měl automatický test napsaný tak, že se seznam skutečně stahoval. To bylo nevýhodné ze dvou důvodů:
- test nefungoval bez připojení k internetu
- těžko šlo ovlivnit v rámci testu stahovaná data
Napsal jsem si tedy jednoduchou implementaci HTTP serveru, která publikuje soubory z classpath pod stejnou relativní cestou na localhost adrese. Např. soubor s CRL umístěný v src\test\resources\crl\emptyCrl.crl je po spuštění serveru ke stažení na:
http://localhost:8001/ResourcePublishServer/crl/emptyCrl.crl
Přečtěte si zbytek tohoto záznamu »
Ohodnoťte článek:

Loading ...
Odesláno k Programování, Testování, Web | 2 komentářů »
08.06.2010 20:12
Opět po roce proběhla – v pořadí již třetí – ne-konference nesoucí název jOpenSpace. Na ní se každoročně setkávají zajímaví lidé z celé republiky, které spojuje jediné téma a tím je Java a vývoj aplikací. Základem konference jsou tzv. lightning talky, což jsou mini-přednášky na vybraná témata. Některá z nich se mi podařilo nahrát a v tomto článku je dávám se svolením autorů ke stažení ve formě podcastů. Kromě toho, že některé z nich obsahují skutečně velmi zajímavé informace, je na nich lákavé především to, že s nimi neztratíte moc času – jejich délka se pohybuje do 6 do 25 minut. Takže neváhejte a stahujte …
Přečtěte si zbytek tohoto záznamu »
Ohodnoťte článek:

Loading ...
Odesláno k Java, Podcast, Reportáže | 1 komentář »
14.05.2010 18:48
Po včerejší after párty se mi dneska skutečně nechtělo příliš vstávat. Niméně diskuse s Hansem Dockterem (autorem Gradle) skutečně stála za to. Hans je skutečně mimořádný člověk se skvělými názory – přidávám další bodík pro Gradle. Styl, jakým se Gradle vyvíjí a filozofie, která za ním stojí, se mi skutečně zamlouvá. U dikuse byl také Vašek Pech z JetBrains, který má na svém kontě také samostatný OS projekt GPars, takže se diskuse odvíjela i na téma zkušeností s vedením OS projektu, respektive firmy, která je živa z konzultací a školení spojených s daným OS projektem. Tyhle chvilky jsou zkrátka na konferencích asi to nejlepší – dostat se do kontaktu s výjimečnými lidmi a mít možnost s nimi mluvit tváří v tvář. Jsem opravdu rád, že tyhle “výlety” na konference jsou ve Forrestu možné, protože to zdaleka není samozřejmost.
V rámci druhého dne se odehrála celá řada velmi zajímavých přednášek, které bych rád trošku nastínil v dnešním příspěvku.
Přečtěte si zbytek tohoto záznamu »
Ohodnoťte článek:

Loading ...
Odesláno k Reportáže | 1 komentář »
13.05.2010 20:14
V letošním roce jsme s kolegy z Forresta vyrazili na GeeCON v Poznani. Podle referencí z loňského roku se jednalo o velmi dobrou akci, takže jsme plni očekávání vyrazili směr Balt. Cesta do Poznani byla velmi jednoduchá – z Náchoda je to furt rovně
, překvapily mne příjemně stavy silnic – takovou po které jsme jeli my aby člověk v Čechách pohledal. Nakonec jsme do Poznani ve zdraví dorazili – čekal jsem spíš menší město a tak mě překvapilo, že Poznaň je větší než Brno. Pro zvědavce přikládám pár fotek z akce od organizátorů.
V tomto příspěvku se pokusím shrnout nějaké klíčové myšlenky přednášek, na kterých jsem byl. Snad se mi podaří vystihnout podstatu nicméně, dost pravděpodobně budou některé myšlenky vytržené z kontextu, protože příspěvek vznikal vždy z útržků poznámek.
Přečtěte si zbytek tohoto záznamu »
Ohodnoťte článek:

Loading ...
Odesláno k Reportáže | 2 komentářů »
26.04.2010 11:29
Člověk neznalý věci by mohl nabýt dojmu, že přes reflexi v Javě půjdou získat všechny informace, které se v signaturách tříd a metod nacházejí. Reflexe v Javě je skutečně velmi mocná, nicméně k některým informacím se nedostává jednoduše (jak jsme si ukázali v minulém článku) a k některým se bohužel nedokážete dostat vůbec. Do té posledně jmenované kategorie právě patří názvy argumentů metod. A právě o nich se chci dnes rozepsat.
Přečtěte si zbytek tohoto záznamu »
Ohodnoťte článek:

Loading ...
Odesláno k Java, Programování | 15 komentářů »
19.03.2010 8:14
Minulý týden jsem řešil zajímavý problém s reflexí a došel jsem k závěru, že generiky v reflexním API jsou opravdu velká legrace. Prototypoval jsem myšlenku automatického generování implementací nad obecným kontejnerem – dejme tomu Map (což není pro účely tohoto článku zase až tak důležité), a došel jsem k potřebě správně číst generické informace z deklarací tříd. Právě této, na první pohled jednoduché, věci, bych chtěl věnovat dnešní článek.
Přečtěte si zbytek tohoto záznamu »
Ohodnoťte článek:

Loading ...
Odesláno k Java, Programování | 6 komentářů »
05.03.2010 22:00
Tento týden proběhl workshop na téma iBatis 3 v Národní technické knihovně. Na workshopu jsem vyhlásil soutěž o licenci vývojového prostředí IntelliJ Idea 9 – Ultimate Edition a v tomto příspěvku najdou soutěžící jak moji verzi řešení příkladů, tak i výsledné vyhodnocení. Kompletní řešení všech testů, které jsme v průběhu workshopu probírali najdete v GitHub repository na stejném místě jako původně (stačí si “pullnout” novou verzi zdrojových kódů):
Sponzor přednášky:
Děkuji ještě jednou všem, kdo si našli cestu na seminář a kdo se i po něm za mnou zastavili a řekli mi svůj názor na jeho formu a průběh (speciální díky patří chlapcům z MoroSystems za jejich příspěvek na blogu). Není totiž horší pocit než, když se jako přednášející dobu potíte vedle projektoru, pak se publikum potichu rozuteče a vy odcházíte z rozpačitým pocitem a otázkou, jestli to nakonec mělo smysl. Jsem rád, že, pokud nic jiného, tenhle workshop nějaké emoce vyvolal a ke konci za mnou zašlo hodně lidí, a měl jsem šanci si udělat obrázek o tom, jestli jsem to vzal za ten správný konec.
Přečtěte si zbytek tohoto záznamu »
Ohodnoťte článek:

Loading ...
Odesláno k Java, Programování, Reportáže, iBatis | 5 komentářů »
20.02.2010 22:03
Rád bych vás všechny pozval na workshop na téma iBatis 3 konaný 3. března 2010 od 18 hodin v rámci CZ JUG setkání (pozor tato praktická setkání se konají v Národní technické knihovně v Praze – Dejvicích – viz. mapka dole). iBatis je framework pro mapování dat uložených v relační databázi na Java objekty. Už po několik let je zajímavou alternativkou k ORM frameworkům postaveným na JPA (jehož typickým představitelem je Hibernate). Mottem iBatisu je zjednodušit vývojářům práci s databází a přitom zůstat tak jednoduchý, jak jen to je možné. Právě jednoduchostí a nízkoúrovňovým přístupem k databázi si získal celou řadu vývojářů a v řadě případů poráží i daleko silnější frameworky.
Na workshopu si budete moci sami vyzkoušet práci s iBatisem 3, který právě spatřil světlo světa. Kromě novinek v iBatisu bude k vyzkoušení jeho integrace do Spring Frameworku 3.1. Obě dvě záležitosti ještě nemají své stabilní verze, takže budou k vyzkoušení opravdu žhavé novinky. V průběhu bude vyhlášena soutěž o jednu licenci vývojového prostředí IntelliJ Idea 9 Ultimate Edition, kterou věnovala společnost JetBrains.
Přečtěte si zbytek tohoto záznamu »
Ohodnoťte článek:

Loading ...
Odesláno k Databáze, Java, Programování, iBatis | 7 komentářů »
07.02.2010 20:48
V rámci zátěžových testů, které jsem v minulém týdnu prováděl jsem přišel na jednu zajímavou věc. Při velké zátěži došlo k “zaseknutí” Tomcatu, ze kterého se systém již nedokázal zotavit. Průvodním jevem byly otevřené konekce na databázi, přes které neprocházely žádné dotazy (tj. databáze nic nedělala), nulové zatížení procesoru Tomcatem, žádné Exception v logu. Příznaky nasvědčovaly tomu, že problém vězel v nějakých deadloccích – buď při práci s konekcemi do databáze nebo mezi aplikačními vlákny.
Po nějaké době nikam nevedoucího pátrání v našem kódu jsem si napsal jednoduché wrappery nad DBCP DataSourcem a vracenou Connection, ve kterých jsem si ukládal stacktrace threadu i odkaz na vlastní thread, který si konekci z DataSourcu vybíral. Dál jsem zavedl monitor toho, zda thready používají vždy pouze jedinou connection a nesnaží se získat další, pokud ještě tu původní nevrátily (to by mohla být cesta k deadlockům).
Při opětovném nasimulování problému mi monitor vypsal krásných 50 (tj. maximum poolu) vláken čekajících na uvolnění zámku s nasledujícím stacktracem (uvádím pouze pár nejdůležitějších řádků):
at org.apache.commons.pool.impl.GenericKeyedObjectPool.returnObject (GenericKeyedObjectPool.java:870)
at org.apache.commons.dbcp.datasources.KeyedCPDSConnectionFactory.connectionClosed (KeyedCPDSConnectionFactory.java:268)
at com.mysql.jdbc.jdbc2.optional.MysqlPooledConnection.callListener (MysqlPooledConnection.java:209)
at com.mysql.jdbc.jdbc2.optional.ConnectionWrapper.close (ConnectionWrapper.java:857)
at com.mysql.jdbc.jdbc2.optional.ConnectionWrapper.close (ConnectionWrapper.java:480)
Přečtěte si zbytek tohoto záznamu »
Ohodnoťte článek:

Loading ...
Odesláno k Databáze, Programování | 10 komentářů »
02.02.2010 20:45
Je to asi rok co jsem psal článek o implicitních commitech při provádění DDL příkazů. Řešil jsem tehdy problém velmi složitého selectu, který se výrazně zjednodušil, pokud jsem jej rozdělil na dvě části s uložením mezivýsledků. Jelikož jsem potřeboval zachovat transakčnost, nemohl jsem využít temporárních tabulek a šel jsem cestou stálé tabulky s aplikačním hashem rozlišující mezivýsledky jednotlivých transakcí mezi sebou. To jsem ještě netušil, jaké mi to přinese komplikace …
Přečtěte si zbytek tohoto záznamu »
Ohodnoťte článek:

Loading ...
Odesláno k Databáze, Programování | 1 komentář »