<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8097067492815693285</id><updated>2011-11-28T01:08:47.004+01:00</updated><category term='jPower8'/><category term='tamiya'/><category term='launchy'/><category term='intellij idea'/><category term='grails'/><category term='certification'/><category term='refcardz'/><category term='programy'/><category term='workmanager'/><category term='java'/><category term='wicket'/><category term='youtrack'/><category term='knihovna'/><category term='weblogic'/><category term='modelling'/><category term='Haruki Murakami'/><category term='tiger'/><category term='concurrency'/><category term='ekonomie'/><category term='čtenářák'/><category term='scjd'/><category term='live template'/><category term='google'/><title type='text'>Petr Charvát</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-8007945673156318485</id><published>2011-10-19T14:18:00.006+02:00</published><updated>2011-10-19T14:24:27.664+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='intellij idea'/><category scheme='http://www.blogger.com/atom/ns#' term='live template'/><title type='text'>Method parameters validation in IntelliJ IDEA as live template</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-6sDYVscBh_o/Tp7AhMnQnhI/AAAAAAAABXU/MqLPF3Bo-Mg/s1600/Sn%25C3%25ADmek%2Bobrazovky%2B2011-10-19%2Bv%25C2%25A014.17.16.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 323px;" src="http://1.bp.blogspot.com/-6sDYVscBh_o/Tp7AhMnQnhI/AAAAAAAABXU/MqLPF3Bo-Mg/s400/Sn%25C3%25ADmek%2Bobrazovky%2B2011-10-19%2Bv%25C2%25A014.17.16.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5665177057832771090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-tsj8IXnmntY/Tp7As-VQAHI/AAAAAAAABXg/B-qL07TVmGg/s1600/Sn%25C3%25ADmek%2Bobrazovky%2B2011-10-19%2Bv%25C2%25A014.17.30.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 175px;" src="http://4.bp.blogspot.com/-tsj8IXnmntY/Tp7As-VQAHI/AAAAAAAABXg/B-qL07TVmGg/s400/Sn%25C3%25ADmek%2Bobrazovky%2B2011-10-19%2Bv%25C2%25A014.17.30.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5665177260157567090" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-8007945673156318485?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/8007945673156318485/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=8007945673156318485' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/8007945673156318485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/8007945673156318485'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2011/10/method-parameters-validation-in.html' title='Method parameters validation in IntelliJ IDEA as live template'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-6sDYVscBh_o/Tp7AhMnQnhI/AAAAAAAABXU/MqLPF3Bo-Mg/s72-c/Sn%25C3%25ADmek%2Bobrazovky%2B2011-10-19%2Bv%25C2%25A014.17.16.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-7843113711824041551</id><published>2011-10-18T16:05:00.004+02:00</published><updated>2011-10-18T16:28:34.250+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jPower8'/><title type='text'>Validace vstupních parametrů metod.</title><content type='html'>Všechny vstupní parametry metod je vhodné validovat na jejich korektnost dříve než se s nimi začne pracovat. &lt;br /&gt;V 90% případů mi stačí zkontrolovat, že vstupní parametr není &lt;code&gt;null&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Joshua Bloch radí vyhodit &lt;code&gt;NullPointerException&lt;/code&gt;, ale já, a troufám si tvrdit že i velká část java komunity,  preferuje &lt;code&gt;IllegalArgumentException&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Kód by mohl vypadat třeba takto&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    public void foo(final String request) {&lt;br /&gt;        if (request == null) {&lt;br /&gt;            throw new IllegalArgumentException("Parameter 'request' can't be null.");&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Protože nejsem na světě sám, co potřebuje validovat vstupní parametry, existuje spousta knihoven, které lze pro tyto účely využít (psát vlastní validační knihovnu považuji jen za zvyšování chaosu ve vesmíru).&lt;br /&gt;&lt;br /&gt;První možností je třída &lt;code&gt;&lt;a href="http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/Validate.html"&gt;org.apache.commons.lang.Validate&lt;/a&gt;&lt;/code&gt; z knihovny &lt;a href="http://commons.apache.org/lang/"&gt;Apache Commons Lang&lt;/a&gt;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    public void foo(final String request) {&lt;br /&gt;        Validate.notNull(request, "Parameter 'request' can't be null.");     &lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Místo původních třech řádků jen jeden.&lt;br /&gt;&lt;br /&gt;Na skoro všech projektech ale používám i &lt;a href="http://www.springsource.org/"&gt;Spring&lt;/a&gt;, tak proč nepoužít třídu &lt;code&gt;&lt;a href="http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/util/Assert.html"&gt; org.springframework.util.Assert&lt;/a&gt;&lt;/code&gt;, která je hodně podobná &lt;code&gt;&lt;a href="http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/Validate.html"&gt;org.apache.commons.lang.Validate&lt;/a&gt;&lt;/code&gt;?&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    public void foo(final String request) {&lt;br /&gt;        Assert.notNull(request, "Parameter 'request' can't be null.");&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Samotní autoři nedoporučují použít tuto třídu! Citace z javadocu:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Mainly for internal use within the framework; consider Jakarta's Commons Lang &gt;= 2.0 for a more comprehensive suite of assertion utilities.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Další možnou variantou je knihovna &lt;a href="http://code.google.com/p/guava-libraries/"&gt;Guava&lt;/a&gt;.&lt;br /&gt; &lt;pre&gt;&lt;br /&gt;    public void foo(final String request) {&lt;br /&gt;        Preconditions.checkNotNull(request, "Parameter 'request' can't be null.");&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Na té se mi ale nelíbí, že vyhazuje &lt;code&gt;NullPointerException&lt;/code&gt; a varianta &lt;code&gt;checkArgument&lt;/code&gt;, která vyhazuje &lt;code&gt;IllegalArgumentException&lt;/code&gt; má vytaženou podmínku ven z metody, čímž se kontrola lehce komplikuje. &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    public void foo(final String request) {&lt;br /&gt;        Preconditions.checkArgument(request != null, "Parameter 'request' can't be null.");&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Já osobně zůstanu u třídy &lt;code&gt;Validate&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;Jak validujete parametry metod vy?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-7843113711824041551?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/7843113711824041551/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=7843113711824041551' title='Počet komentářů: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/7843113711824041551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/7843113711824041551'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2011/10/validace-vstupnich-parametru-metod.html' title='Validace vstupních parametrů metod.'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-3406321884149136939</id><published>2011-05-10T20:54:00.002+02:00</published><updated>2011-05-10T20:56:12.962+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='youtrack'/><category scheme='http://www.blogger.com/atom/ns#' term='jPower8'/><title type='text'>YouTrack v jPower8</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-T_SvjvZQO74/Tck_fu49AFI/AAAAAAAAA_M/QmmZ92Eu-dY/s1600/JP8_logo_final.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand; height: 40px;" src="http://3.bp.blogspot.com/-T_SvjvZQO74/Tck_fu49AFI/AAAAAAAAA_M/QmmZ92Eu-dY/s200/JP8_logo_final.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5605081025634697298" /&gt;&lt;/a&gt;Při spouštění &lt;a href="http://www.jpower8.cz"&gt;firmy&lt;/a&gt; jsme potřebovali vyřešit problém issue trackingu. Přestože je v open source komunitě spousta řešení, šáhli jsme nakonec po komerčním řešení. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.jetbrains.com/youtrack"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 120px;" src="http://www.jetbrains.com/img/logos/YouTrack_logo.gif" border="0" alt="" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Co nás přesvědčilo?&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Webové rozhraní  - dostupnost i z domova i z práce.&lt;br /&gt;&lt;li&gt;Extrémně jednoduché ovládání – ostatně jako u všech produktů &lt;a href="http://www.jetbrains.com/"&gt;jetbrains&lt;/a&gt;. &lt;br /&gt;&lt;li&gt;Integrace na IntelliJ IDEA – umí dokonce i Jíru nebo PivotalTracker. &lt;br /&gt;&lt;li&gt;Integrace do TeamCity – u každého issue vidíme, v jakých buildech se na úkolu pracovalo.&lt;br /&gt;&lt;li&gt;Integrace na firemní LDAP.&lt;br /&gt;&lt;li&gt;Neomezený počet projektů i uživatelů.&lt;br /&gt;&lt;li&gt;Detailní možnosti nastavení přístupových práv.&lt;br /&gt;&lt;li&gt;Restové rozhraní pro import i export dat.&lt;br /&gt;&lt;li&gt;Přidávání custom políček a tagů.&lt;br /&gt;&lt;li&gt;Rychlost vyhledávání.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Interně používáme youtrack na řízení všech úkolů, které ve firmě řešíme. Dokonce naši zákazníci zapisují své připomínky a návrhy také do youtracku, kde průběžně vidí, jak se na nich pracuje. Šetříme tak čas svůj i zákazníka – prostě win-win strategie.&lt;br /&gt;&lt;br /&gt;Používáme youtrack i jako vykazovací systém, ale o tom až příště.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-3406321884149136939?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/3406321884149136939/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=3406321884149136939' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/3406321884149136939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/3406321884149136939'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2011/05/youtrack-v-jpower8.html' title='YouTrack v jPower8'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-T_SvjvZQO74/Tck_fu49AFI/AAAAAAAAA_M/QmmZ92Eu-dY/s72-c/JP8_logo_final.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-8506535737662220327</id><published>2010-06-17T10:15:00.006+02:00</published><updated>2010-06-17T11:58:25.671+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='workmanager'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrency'/><title type='text'>WorkManager on WLS 10.3 with Spring 3.0</title><content type='html'>Yesterday I played with asynchronous job processing on WebLogic server 10.3.  It is quite easy to use solution with is directly supported by Oracle(BEA) - commonj.&lt;br /&gt;Also the integration to the spring 3.0 was straightforward. &lt;br /&gt;&lt;br /&gt;At first, define the workmanager inside weblogic-application.xml&lt;br /&gt;&lt;pre class="brush: xml"&gt;&lt;br /&gt;    &amp;lt;work-manager&amp;gt;&lt;br /&gt;        &amp;lt;name&amp;gt;test_work_manager&amp;lt;/name&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;min-threads-constraint&amp;gt;&lt;br /&gt;            &amp;lt;name&amp;gt;test-minimum-10&amp;lt;/name&amp;gt;&lt;br /&gt;            &amp;lt;count&amp;gt;10&amp;lt;/count&amp;gt;&lt;br /&gt;        &amp;lt;/min-threads-constraint&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;max-threads-constraint&amp;gt;&lt;br /&gt;            &amp;lt;name&amp;gt;test-maximum-20&amp;lt;/name&amp;gt;&lt;br /&gt;            &amp;lt;count&amp;gt;20&amp;lt;/count&amp;gt;&lt;br /&gt;        &amp;lt;/max-threads-constraint&amp;gt;&lt;br /&gt;    &amp;lt;/work-manager&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Add resource reference to the web.xml.&lt;br /&gt;&lt;pre class="brush: xml"&gt;&lt;br /&gt;    &amp;lt;resource-ref&amp;gt;&lt;br /&gt;        &amp;lt;res-ref-name&amp;gt;test_work_manager&amp;lt;/res-ref-name&amp;gt;&lt;br /&gt;        &amp;lt;res-type&amp;gt;commonj.work.WorkManager&amp;lt;/res-type&amp;gt;&lt;br /&gt;        &amp;lt;res-auth&amp;gt;Container&amp;lt;/res-auth&amp;gt;&lt;br /&gt;        &amp;lt;res-sharing-scope&amp;gt;Shareable&amp;lt;/res-sharing-scope&amp;gt;&lt;br /&gt;    &amp;lt;/resource-ref&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Spring configuration is connected to the JDNI name.&lt;br /&gt;&lt;pre class="brush: xml"&gt;&lt;br /&gt;    &amp;lt;bean id=&amp;quot;taskExecutor&amp;quot; class=&amp;quot;org.springframework.scheduling.commonj.WorkManagerTaskExecutor&amp;quot;&amp;gt;&lt;br /&gt;        &amp;lt;property name=&amp;quot;workManagerName&amp;quot; value=&amp;quot;test_work_manager&amp;quot;/&amp;gt;&lt;br /&gt;        &amp;lt;property name=&amp;quot;resourceRef&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;    &amp;lt;/bean&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Example, how to run three jobs in parallel and stop current processing thread until all jobs are complete.&lt;br /&gt;&lt;pre class="brush: java"&gt;&lt;br /&gt;package com.blogspot.pcharvat.workmanager;&lt;br /&gt;&lt;br /&gt;import commonj.work.Work;&lt;br /&gt;import org.apache.commons.lang.StringEscapeUtils;&lt;br /&gt;import org.apache.commons.lang.StringUtils;&lt;br /&gt;import org.slf4j.Logger;&lt;br /&gt;import org.slf4j.LoggerFactory;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.atomic.AtomicInteger;&lt;br /&gt;&lt;br /&gt;public class MyJob implements Work {&lt;br /&gt;&lt;br /&gt;    private final Logger log = LoggerFactory.getLogger(getClass());&lt;br /&gt;&lt;br /&gt;    private static final AtomicInteger COUNTER = new AtomicInteger();&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public void run() {&lt;br /&gt;        log.debug("Running in ... " + COUNTER.incrementAndGet());&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public void release() {&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public boolean isDaemon() {&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre class="brush: xml"&gt;&lt;br /&gt;package com.blogspot.pcharvat.workmanager;&lt;br /&gt;&lt;br /&gt;import commonj.work.WorkException;&lt;br /&gt;import commonj.work.WorkItem;&lt;br /&gt;import commonj.work.WorkManager;&lt;br /&gt;import org.slf4j.Logger;&lt;br /&gt;import org.slf4j.LoggerFactory;&lt;br /&gt;import org.springframework.beans.factory.annotation.Required;&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;public class AsyncCall {&lt;br /&gt;&lt;br /&gt;    private final Logger log = LoggerFactory.getLogger(getClass());&lt;br /&gt;&lt;br /&gt;    private WorkManager workManager;&lt;br /&gt;&lt;br /&gt;    public void runInParallel() {&lt;br /&gt;        try {&lt;br /&gt;            final MyJob jobA = new MyJob();&lt;br /&gt;            final MyJob jobB = new MyJob();&lt;br /&gt;            final MyJob jobC = new MyJob();&lt;br /&gt;&lt;br /&gt;            final List&lt;WorkItem&gt; jobs = new ArrayList&lt;WorkItem&gt;();&lt;br /&gt;            jobs.add(workManager.schedule(jobA));&lt;br /&gt;            jobs.add(workManager.schedule(jobB));&lt;br /&gt;            jobs.add(workManager.schedule(jobC));&lt;br /&gt;&lt;br /&gt;            final boolean result = workManager.waitForAll(jobs, 30000);// waits 30 seconds&lt;br /&gt;&lt;br /&gt;            log.debug("AsyncCall.runInParallel result={}", result);&lt;br /&gt;        } catch (WorkException e) {&lt;br /&gt;            log.error(e.getMessage(), e);&lt;br /&gt;        } catch (InterruptedException e) {&lt;br /&gt;            log.error(e.getMessage(), e);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Required&lt;br /&gt;    public void setWorkManager(final WorkManager workManager) {&lt;br /&gt;        this.workManager = workManager;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-8506535737662220327?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/8506535737662220327/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=8506535737662220327' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/8506535737662220327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/8506535737662220327'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2010/06/workmanager-on-wls-103-with-spring-30.html' title='WorkManager on WLS 10.3 with Spring 3.0'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-5539805942991420378</id><published>2010-01-23T22:49:00.004+01:00</published><updated>2010-01-23T23:11:28.328+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='knihovna'/><category scheme='http://www.blogger.com/atom/ns#' term='ekonomie'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Planeta Google - Quo Vadis</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://met.blog.root.cz/files/2009/07/planeta-google.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 150px; height: 212px;" src="http://met.blog.root.cz/files/2009/07/planeta-google.png" border="0" alt="" /&gt;&lt;/a&gt;Už název knihy vypovídá o globálním dopadu firmy Google. Pokud vás zajímá, jak firma vznikala a jak postupně rozšiřovala své služby, šáhli jste po správné knize.&lt;br /&gt;Problémy při zakládání datových center (jak blízko je elektrárna), přes dilema zda cenzurovat vyhledávácí algoritmus až k akvizici youtube. &lt;br /&gt;Kniha je psaná věceckým přístupem (skoro 500 zdrojových referencí).&lt;br /&gt;&lt;br /&gt;Jaké myšlenky mě při četbě napadaly?&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Proč si ještě dnes staví korporace svá datová centra na drahém hardwaru, když technologie postavená na cloudu funguje spolehlivěji a dokonce levněji?&lt;br /&gt;&lt;li&gt;Zakladatelé youtube dopředu nevěděli, jak na svém nápadu vydělávat. Dokonce to nevěděl ani Google sám, když youtube koupil. Toto mě motivuje rozpracovávat myšlenky, pro které aktuálně nevidím business case.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Dnes si život bez Googlu neumím přestavit. Denně používám mail, vyhledávání, rss reader, kalendář, mapy, v telefonu android. Čeho dalšího se asi dočkáme v příštím roce?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-5539805942991420378?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/5539805942991420378/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=5539805942991420378' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/5539805942991420378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/5539805942991420378'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2010/01/planeta-google-quo-vadis.html' title='Planeta Google - Quo Vadis'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-6347678044254994864</id><published>2009-12-12T22:43:00.006+01:00</published><updated>2009-12-12T23:32:21.886+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='intellij idea'/><title type='text'>Maven support in Intellij IDEA 9.0 (Maia)</title><content type='html'>Last week was released latest stable version of &lt;a href="http://www.jetbrains.com/idea/"&gt;IDEA 9&lt;/a&gt;. I was curious about new &lt;a href="http://www.jetbrains.com/idea/whatsnew/index.html#Enhanced_Maven_Support"/&gt;maven integration&lt;/a&gt;. In the version eight, whenewer you changed the pom file, all project had to be reloaded, which took couple of minutes in my project.&lt;br /&gt;In version nine I have enabled auto refresh feature, and whenever I change the pom file, refresh is done automatically. Reload the project takes couple of seconds now. &lt;br /&gt;Moreover, they added dependency graph feature - say good by dependency:tree command.&lt;br /&gt;Thanks jetbrains for great improvement.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_C6uR7Qx6Z7E/SyQZQbBGk4I/AAAAAAAAA8Y/LeiST5Nd4dk/s1600-h/152998030047b98e9aa47db_cr.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:left;cursor:pointer; cursor:hand;width: 400px; height: 276px;" src="http://2.bp.blogspot.com/_C6uR7Qx6Z7E/SyQZQbBGk4I/AAAAAAAAA8Y/LeiST5Nd4dk/s400/152998030047b98e9aa47db_cr.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5414480421927162754" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-6347678044254994864?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/6347678044254994864/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=6347678044254994864' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/6347678044254994864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/6347678044254994864'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2009/12/maven-support-in-intellij-idea-90-maia.html' title='Maven support in Intellij IDEA 9.0 (Maia)'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_C6uR7Qx6Z7E/SyQZQbBGk4I/AAAAAAAAA8Y/LeiST5Nd4dk/s72-c/152998030047b98e9aa47db_cr.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-2894333925273148296</id><published>2009-10-27T08:34:00.005+01:00</published><updated>2009-10-27T08:50:40.035+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='knihovna'/><category scheme='http://www.blogger.com/atom/ns#' term='Haruki Murakami'/><title type='text'>Co má společného Kafka se Sputnikem?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_C6uR7Qx6Z7E/SualWdJdnDI/AAAAAAAAA74/S5QEcSpZEP8/s1600-h/haruki-image.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 140px; height: 200px;" src="http://3.bp.blogspot.com/_C6uR7Qx6Z7E/SualWdJdnDI/AAAAAAAAA74/S5QEcSpZEP8/s400/haruki-image.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5397183008650140722" /&gt;&lt;/a&gt;&lt;br /&gt;Často si chodím spravovat náladu do knihkupectví - jako správný konzumní člověk. Málokdy odolám a nic si nekoupím. Tentokrát jsem ale šel najisto. &lt;br /&gt;V prvním regále se marketingově podbízel nejnovější &lt;a href="http://cs.wikipedia.org/wiki/Haruki_Murakami"&gt;Haruki Murakami&lt;/a&gt; - &lt;a href="http://www.neoluxor.cz/knihy/beletrie/literatura-svetova/sputnik-ma-laska-d3t138389"&gt;Sputnik má láska&lt;/a&gt;. Vzhledem k tomu, že jsem od něho přečetl vše co vyšlo v češtině, nešlo ucuknout.&lt;br /&gt;&lt;br /&gt;Tentokrát je román docela krátký. Už tradičně je hlavní hrdina samotář, trochu podivín co poslouchá klasickou hudbu a hodně čte. Autor si opět kafkovsky pohrává s čtenářovou trpělivostí. Nejprve nastaví nějakou záhadu a místo aby ji po pár stánkách vysvětlil, tak nastolí další záhadu.&lt;br /&gt;&lt;br /&gt;Přiznám se, že jsem hlavní myšlenku úplně nepobral. Předchozí tvorba se mi líbila mnohem více.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-2894333925273148296?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/2894333925273148296/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=2894333925273148296' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/2894333925273148296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/2894333925273148296'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2009/10/co-ma-spolecneho-kafka-se-sputnikem.html' title='Co má společného Kafka se Sputnikem?'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_C6uR7Qx6Z7E/SualWdJdnDI/AAAAAAAAA74/S5QEcSpZEP8/s72-c/haruki-image.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-7785539669501163905</id><published>2009-07-19T21:44:00.004+02:00</published><updated>2009-07-19T21:58:59.699+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ekonomie'/><category scheme='http://www.blogger.com/atom/ns#' term='čtenářák'/><title type='text'>Uvažujete ekonomicky dobře nebo zle?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_C6uR7Qx6Z7E/SmN5vEOHxsI/AAAAAAAAAyg/-fknSh9MziE/s1600-h/146636.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 100px; height: 142px;" src="http://1.bp.blogspot.com/_C6uR7Qx6Z7E/SmN5vEOHxsI/AAAAAAAAAyg/-fknSh9MziE/s400/146636.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5360261830994806466" /&gt;&lt;/a&gt;V rámci zachování duševního rozhledu občas šáhnu v knihkupectví po titulu, který nemá na první pohled nic společného s programováním a počítači vůbec. Tentokrát padla volba na knihu &lt;a href="http://www.65pole.cz/edaz-o-knize.html"&gt;Ekonomie dobra a zla&lt;/a&gt; od Tomáše Sedláčka.  &lt;br /&gt;Čekal jsem suchopárnou příručku o bankovních a pojišťovacích produktech a kuchařku, jak se chovat v době krize. O to víc jsem byl překvapen, že jde spíše o historicko filozofický pohled na chování člověka. Z každé stránky čiší autorův zájem a že toho má načteno skutečně hodně. Potěšilo mě, že mladý český člověk dokáže psát o věcech nadčasových a globálních. Knihu jsem četl poměrně dlouho, neboť nutí člověka neustále se zastavovat a přemýšlet. &lt;br /&gt;Pokud máte občas pochybnosti o svém počínání, jestli je nebo není etické, tak vřele doporučuji k pročtení.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-7785539669501163905?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/7785539669501163905/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=7785539669501163905' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/7785539669501163905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/7785539669501163905'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2009/07/uvazujete-ekonomicky-dobre-nebo-zle.html' title='Uvažujete ekonomicky dobře nebo zle?'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_C6uR7Qx6Z7E/SmN5vEOHxsI/AAAAAAAAAyg/-fknSh9MziE/s72-c/146636.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-7978588286392859299</id><published>2009-04-15T07:25:00.005+02:00</published><updated>2010-06-01T10:41:19.219+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scjd'/><category scheme='http://www.blogger.com/atom/ns#' term='certification'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrency'/><title type='text'>Jak jsem se nechal certifikovat - SCJD</title><content type='html'>&lt;a href="http://www.amazon.com/gp/product/1590595165?ie=UTF8&amp;tag=pcharvatblog-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1590595165"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 125px; height: 164px;" border="0" src="http://www.apress.com/resource/bookcover/9781590595169?size=medium"&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=pcharvatblog-20&amp;l=as2&amp;o=1&amp;a=1590595165" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;br /&gt;Po zhruba půl roce, co jsem dělal &lt;a href="http://pcharvat.blogspot.com/2008/08/jak-jsem-se-nechal-certifikovat-scbcd.html"&gt;certifikát na EJB&lt;/a&gt; jsem se nechal opět uvrtat do certifikace. Vybral jsem si &lt;a href="http://www.sun.com/training/certification/java/scjd.xml"&gt;SCJD&lt;/a&gt; neboť mě z té celé nabídky přišlo, že je nejjednodušší (programovat umím, tak další prográmek do šuplíku už mě nemůže rozházet). Přesto jsem raději šáhl po &lt;a href="http://www.apress.com/book/view/9781590595169"&gt;knížce&lt;/a&gt;, která mě dokázala otevřít oči, co že se po mě vlastně chce. Už jsem četl i zábavnější, ale dala se přežít.&lt;br /&gt;&lt;br /&gt;Zadání bylo poměrně krátké, o to více jsem si ho ale musel dotvářet a hlavě zdůvodňovat, proč jsem se tak rozhodl. V tomto podle mě spočívá kámen celé certifikace, umět se rozhodnout a své rozhodnutí obhájit. Šlo o kombinaci server, tlustý klient (swing) a práce s vlákny - vypadá to, že tato trojkombinace je základem všech zadání (&lt;a href="http://www.coderanch.com/forums/f-25/Developer-Certification-SCJD"&gt;JavaRanch&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Jedinou věc, kterou jsem se musel učit byla práce s vlákny v Javě5 (zapomeňte na klíčové slovo sychronized). Výborná knížka, kterou mohu doporučit je Java Concurrency in Practice. &lt;a href="http://www.amazon.com/gp/product/0321349601?ie=UTF8&amp;tag=pcharvatblog-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321349601"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 121px; height: 160px;" border="0" src="http://4.bp.blogspot.com/_C6uR7Qx6Z7E/TATGRIsBOaI/AAAAAAAAA9A/zvtZL3Eqn6I/s400/51AG8p4X7WL._SL160_.jpg"&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=pcharvatblog-20&amp;l=as2&amp;o=1&amp;a=0321349601" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;br /&gt;&lt;br /&gt;Nejhorší období bylo čekání na výsledek, neboť osm pracovních týdnů trvalo chlapcům zkontrolovat, že je řešení ok. Naštěstí mě to dali (373/400). Body jsem ztratil hlavě na GUI (moc jsem se s ním nepáral) a na serverové části (použil jsem sokety a asi čekali RMI). &lt;br /&gt;&lt;br /&gt;Pokud se chystáte taky na tuto anabázi, tak vězte, že to bude složitější a časově náročnější, než si původně očekáváte.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-7978588286392859299?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/7978588286392859299/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=7978588286392859299' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/7978588286392859299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/7978588286392859299'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2009/04/jak-jsem-se-nechal-certifikovat-scjd.html' title='Jak jsem se nechal certifikovat - SCJD'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_C6uR7Qx6Z7E/TATGRIsBOaI/AAAAAAAAA9A/zvtZL3Eqn6I/s72-c/51AG8p4X7WL._SL160_.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-7123554081317039789</id><published>2009-04-03T09:42:00.004+02:00</published><updated>2010-06-01T11:07:00.508+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='intellij idea'/><category scheme='http://www.blogger.com/atom/ns#' term='wicket'/><category scheme='http://www.blogger.com/atom/ns#' term='grails'/><title type='text'>Wicket , Grails nebo snad něco jiného?</title><content type='html'>&lt;a href="http://www.amazon.com/gp/product/1932394982?ie=UTF8&amp;tag=pcharvatblog-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1932394982"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 150px; height: 188px;" border="0" src="http://www.manning.com/dashorst/dashorst_cover150.jpg"&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=pcharvatblog-20&amp;l=as2&amp;o=1&amp;a=1932394982" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;Na posledním &lt;a href="http://www.java.cz/detail.do?articleId=20439"&gt;českému JUGu&lt;/a&gt; se probíraly webové frameworky. Kontrétně &lt;a href="http://wicket.apache.org/"&gt;wicket&lt;/a&gt; a &lt;a href="http://www.grails.org/"&gt;grails&lt;/a&gt;. Za svůj život jsem se setkal s několika frameworky (hlavně &lt;a href="http://struts.apache.org/"&gt;struts&lt;/a&gt; a jeho klony) a musím říct, že přístup wicketu je mi velice blízký. Programuje se v něm podobně jako ve swingu, se kterým jsem kamarád. Začal jsem začal i číst knížku &lt;A href="http://www.manning.com/dashorst/"&gt;Wicket in Action&lt;/a&gt;, která je tradičně od &lt;a href="http://www.manning.com/"&gt;Manningu&lt;/a&gt; skvělá. Škoda, že na projektu na kterém právě vyšívám není povolen. &lt;br /&gt;&lt;br /&gt;Naproti tomu grails na mě působil jako totální úlet. Přestože se &lt;a href="http://www.jroller.com/vaclav/"&gt;Vašek Pech&lt;/a&gt; snažil, jediné co mě upoutalo je jeho práce s &lt;a href="http://www.jetbrains.com/idea/index.html"&gt;Ideou&lt;/a&gt;. Grails jako takový bych rozhodně nebral.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-7123554081317039789?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/7123554081317039789/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=7123554081317039789' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/7123554081317039789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/7123554081317039789'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2009/04/wicket-grails-nebo-snad-neco-jineho.html' title='Wicket , Grails nebo snad něco jiného?'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-7938813566042475125</id><published>2009-02-24T10:14:00.003+01:00</published><updated>2009-02-24T10:29:16.281+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='knihovna'/><title type='text'>Jak chráníte svoji identitu?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.dominoknihy.cz/images/bootlegs/bs_0553.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 89px; height: 131px;" src="http://www.dominoknihy.cz/images/bootlegs/bs_0553.jpg" border="0" alt="" /&gt;&lt;/a&gt; Abych si odpočinul od počítačové literatury, šáhnul jsem tentokrát po osvědčeném autorovi detektivek &lt;a href="http://www.jefferydeaver.com/"&gt;Jeffery Deaverovi&lt;/a&gt;. Jde o jeden z románů, kde hlavní detektiv Lincolna Rhyme a jeho roztleskávačka Amélie Sachsová, řeší šmodrchanec vražd. Pokud jste viděli film &lt;a href="http://www.csfd.cz/film/16594-sberatel-kosti-bone-collector-the/"&gt;Sběratel Kostí&lt;/a&gt; tak si je můžete představovat jako Denzela Washingtona a Angelinu Jolie.&lt;br /&gt;&lt;br /&gt;Příběhem jsem se ale z počítačového světa nevymanil. Hlavní vrahoun sbírá data o svých obětech a na místo činu dává podvržené důkazy, čímž docílí toho, že je odsouzen úplně někdo jiný. Jako zdroj dat používá datamining metody z databází firmy, která shromažďuje data o lidech (kde so co koupily - kreditky, kde se pohybují - mobily a kamery, jak jsou na tom se zákonem - policie apod.). Klasický big brother. &lt;br /&gt;&lt;br /&gt;Každopádně si asi příště rozmyslím, jestli mám zaplatit za nákup hotově či kartou. Člověk nikdy neví, kdo ho sleduje ;-).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-7938813566042475125?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/7938813566042475125/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=7938813566042475125' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/7938813566042475125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/7938813566042475125'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2009/02/jak-chranite-svoji-identitu.html' title='Jak chráníte svoji identitu?'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-5502172134659331170</id><published>2009-02-10T21:16:00.002+01:00</published><updated>2009-02-10T21:32:45.949+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='knihovna'/><title type='text'>Je svět plochý?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.academia.cz/upload/knihy-obalky/svetova-beletrie/svet_je_plochy.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 204px; height: 265px;" src="http://www.academia.cz/upload/knihy-obalky/svetova-beletrie/svet_je_plochy.jpg" border="0" alt="" /&gt;&lt;/a&gt;Když jsem si četl doporučení v &lt;a href="http://www.respekt.cz/"&gt;Respektu&lt;/a&gt;, že i v češtině vyšla kniha &lt;a href="http://en.wikipedia.org/wiki/Thomas_Friedman"&gt;Thomase Friedmana&lt;/a&gt;, tak jsem neváhal. Přece jen angličtinou zas až tak nevládnu, abych zvládl i texty laureáta Pulitzerovi ceny.  &lt;br /&gt;Kniha je hlavně o aspektech globalizace, outsourcingu, insourcingu, uploadingu a podobných buzzwordech. Je i o tom, proč je arabský svět tak vyhraněný, jak počítačové technologie přispívají ke světovému míru a tak. Je to Američan a patriot, takže nečekejte, že by se v názorech na Ameriku uskromňoval. &lt;br /&gt;&lt;br /&gt;Pokud žijete jen na svém dvorku, tak knihu rozhodně nečtěte, za komančů by byla na seznamu zakázaných.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-5502172134659331170?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/5502172134659331170/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=5502172134659331170' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/5502172134659331170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/5502172134659331170'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2009/02/je-svet-plochy.html' title='Je svět plochý?'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-4110500995402499290</id><published>2009-01-15T11:19:00.005+01:00</published><updated>2010-06-01T15:31:07.731+02:00</updated><title type='text'>Private constructor</title><content type='html'>&lt;a href="http://www.amazon.com/gp/product/0321356683?ie=UTF8&amp;tag=pcharvatblog-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321356683"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 127px; height: 160px;" border="0" src="http://1.bp.blogspot.com/_C6uR7Qx6Z7E/TAUIflHD-ZI/AAAAAAAAA9I/0mdGxwXUyxQ/s400/51EHjWvpClL._SL160_.jpg"&gt;&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=pcharvatblog-20&amp;l=as2&amp;o=1&amp;a=0321356683" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;I started read the &lt;a href="http://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683"&gt;Bloch's Effective Java, 2nd edition&lt;/a&gt;. I read the 1st edition couple years ago. I must say, that second edition is not only a facelift - there are much more items explained. E.g. generics, concurrent api, etc.&lt;br /&gt;&lt;br /&gt;Item 4 (Item 5 in the 1st ed.) is about &lt;b&gt;Protecting utility class with private constructor&lt;/b&gt;. When you have some class with only static methods (e.g. &lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Math.html"&gt;Math&lt;/a&gt;), it is useful to protect instantiation of this class. Standard way, how to implement it, is by private default constructor.&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public class MuUtilClass {&lt;br /&gt;  private MyUtilClass(){}&lt;br /&gt;  // other methods omitted&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Joshua find out, that you can change the accesibility of the constructor by reflection (&lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/AccessibleObject.html"&gt;AccessibleObject.setAccesible&lt;/a&gt;). Hence it is better to throw exception inside the constructor.&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public class MuUtilClass {&lt;br /&gt;  private MyUtilsClass() {&lt;br /&gt;    throw new AssertionError();&lt;br /&gt;  } &lt;br /&gt;  // other methods omitted&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-4110500995402499290?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/4110500995402499290/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=4110500995402499290' title='Počet komentářů: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/4110500995402499290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/4110500995402499290'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2009/01/private-constructor.html' title='Private constructor'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_C6uR7Qx6Z7E/TAUIflHD-ZI/AAAAAAAAA9I/0mdGxwXUyxQ/s72-c/51EHjWvpClL._SL160_.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-106793502833606046</id><published>2009-01-08T22:04:00.004+01:00</published><updated>2009-01-08T22:24:23.944+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programy'/><category scheme='http://www.blogger.com/atom/ns#' term='launchy'/><title type='text'>Launchy</title><content type='html'>Pozor, následující prográmek je vysoce návykový. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_C6uR7Qx6Z7E/SWZt_06UMeI/AAAAAAAAAp0/kHwqdOfWBKs/s1600-h/launchy.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 300px; height: 145px;" src="http://4.bp.blogspot.com/_C6uR7Qx6Z7E/SWZt_06UMeI/AAAAAAAAAp0/kHwqdOfWBKs/s320/launchy.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5289035755695649250" /&gt;&lt;/a&gt;&lt;br /&gt;Jde o spouščeč programů &lt;a href="http://www.launchy.net/"&gt;launchy&lt;/a&gt;. Prohledá vám hardisk a pak už to frčí. Po stisku ALT-Space otevře miniaturní textfield do kterého můžete začíst psát. Třeba 'word' a spustí vám Office Word. &lt;br /&gt;&lt;br /&gt;Mě pomáhá zejména s vyhledáváním knížek, které okupují značnou část mého disku. Napíšu třeba 'spring' a hned mi ukáže všechny knížky o springu. &lt;br /&gt;&lt;br /&gt;Myš už můžu vyhodit z okna ;-).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-106793502833606046?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/106793502833606046/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=106793502833606046' title='Počet komentářů: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/106793502833606046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/106793502833606046'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2009/01/launchy.html' title='Launchy'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_C6uR7Qx6Z7E/SWZt_06UMeI/AAAAAAAAAp0/kHwqdOfWBKs/s72-c/launchy.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-4028240096285547085</id><published>2008-12-08T15:42:00.005+01:00</published><updated>2008-12-09T11:58:31.167+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='knihovna'/><title type='text'>Haruki Murakami: Konec světa &amp; Hard-boiled Wonderland</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.kosmas.cz/obalky/1/142191.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 100px; height: 157px;" src="http://www.kosmas.cz/obalky/1/142191.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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 &lt;a href="http://www.iliteratura.cz"&gt;serióznějších kritiků&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Já bych chtěl poukázat na originální hlášky.&lt;br /&gt;&lt;br /&gt;&lt;li&gt;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] &lt;br /&gt;&lt;br /&gt;&lt;li&gt;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]&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Já připadá, že ve vás něco je. Anebo že vám naopak něco chybí. To vyjde docela nastejno. [s.60]&lt;br /&gt;&lt;br /&gt;&lt;li&gt;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]&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Smrti samotné se tolik nebojím. Jak napsal William Shakespeare: &lt;i&gt;kdo letos umře, má pokoj pro příští rok&lt;/i&gt;. [s.62]&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Její příšerný apetýt připomínal střelbu z těžkého kulometu do kůlny na dříví. [s.107]&lt;br /&gt;&lt;br /&gt;&lt;li&gt;"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]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-4028240096285547085?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/4028240096285547085/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=4028240096285547085' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/4028240096285547085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/4028240096285547085'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/12/haruki-murakami-konec-svta-hard-boiled.html' title='Haruki Murakami: Konec světa &amp; Hard-boiled Wonderland'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-6057934018595823870</id><published>2008-12-08T14:57:00.005+01:00</published><updated>2008-12-08T15:12:49.840+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>How to calculate age?</title><content type='html'>I offten have on my projects a lot of conditions, which depends on the &lt;b&gt;age&lt;/b&gt; of the client, user, his wife or dog ;-).&lt;br /&gt;&lt;br /&gt;Standard Java API is not very friendly for this use case. If you can't use &lt;a href="http://joda-time.sourceforge.net/"&gt;JodaTime&lt;/a&gt; as me, I hope you appreciate this little calculator.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;&lt;br /&gt;public class AgeCalculator {&lt;br /&gt;&lt;br /&gt;    public static int getAge(final Date dayOfBirth) {&lt;br /&gt;        return getAge(dayOfBirth, new Date());&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static int getAge(final Date dayOfBirth, final Date referenceDay) {&lt;br /&gt;        if (dayOfBirth == null) {&lt;br /&gt;            throw new IllegalArgumentException("Parameter 'dayOfBirth' can't be null.");&lt;br /&gt;        }&lt;br /&gt;        if (referenceDay == null) {&lt;br /&gt;            throw new IllegalArgumentException("Parameter 'referenceDay' can't be null.");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        final Calendar calRef = Calendar.getInstance();&lt;br /&gt;        calRef.setTime(referenceDay);&lt;br /&gt;&lt;br /&gt;        final Calendar cal = Calendar.getInstance();&lt;br /&gt;        cal.setTime(dayOfBirth);&lt;br /&gt;&lt;br /&gt;        final int yearRef = calRef.get(Calendar.YEAR);&lt;br /&gt;&lt;br /&gt;        final int year = cal.get(Calendar.YEAR);&lt;br /&gt;&lt;br /&gt;        int result = yearRef - year;&lt;br /&gt;&lt;br /&gt;        cal.set(Calendar.YEAR, yearRef);&lt;br /&gt;        if (calRef.before(cal)) {&lt;br /&gt;            result--;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return result;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-6057934018595823870?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/6057934018595823870/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=6057934018595823870' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/6057934018595823870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/6057934018595823870'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/12/how-to-calculate-age.html' title='How to calculate age?'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-2581121052064731977</id><published>2008-12-05T16:04:00.002+01:00</published><updated>2008-12-08T16:48:27.943+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Už nikdy více NPE</title><content type='html'>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. &lt;br /&gt;&lt;br /&gt;Horší to bylo s implementací. Kód byl úplně zamořen následující konstrukcí&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;if (someString!=null &amp;&amp; someString.trim().length()&gt;0) {&lt;br /&gt;   // do something&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;nebo ještě v komplikovaněji&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;if (firstName!=null &amp;&amp; firstName.trim().length()&gt;0 &amp;&amp; lastName!=null &amp;&amp; lastName.trim().length()&gt;0) {&lt;br /&gt;   // do something different&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;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. &lt;br /&gt;&lt;br /&gt;Neznalost neomlouvá, takže - pro tyto účely je už dávno vytvořená, zdokumentovaná a asi milionkrát otestovaná třída &lt;a href="http://commons.apache.org/lang/api/org/apache/commons/lang/StringUtils.html"&gt;StringUtils&lt;/a&gt;, která je součástí &lt;a href="http://commons.apache.org/lang/"&gt;apache commons lang&lt;/a&gt; balíčku (doporučuji prostudovat vše, co v této knihovničce je - pozor je vysoce návyková).&lt;br /&gt;&lt;br /&gt;Výsledek vypadá následovně - čitelnost o poznání lepší.&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;if (StringUtils.isNotBlank(firstName) &amp;&amp; StringUtils.isNotBlank(lastName)) {&lt;br /&gt;  // do someting&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Pokud tedy máte pocit, že si chcete napsat svoji vlastní MyUtil třídu vězte, že objevujete znova kolo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-2581121052064731977?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/2581121052064731977/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=2581121052064731977' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/2581121052064731977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/2581121052064731977'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/12/u-nikdy-vce-npe.html' title='Už nikdy více NPE'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-602484776748980281</id><published>2008-10-26T11:34:00.003+01:00</published><updated>2008-10-26T11:39:41.570+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tiger'/><category scheme='http://www.blogger.com/atom/ns#' term='modelling'/><title type='text'>Nepovedený zimmerit - díl třetí</title><content type='html'>Po mnoha večerech, kdy jsem si hrál s novým tmelem jsem nakonec vyměkl koupil plechy od &lt;a href="http://www.eduard.cz/"&gt;eduarda&lt;/a&gt;. Nejhorší bylo ten starý tmel dostat dolů. Myslím ale, že výsledek je tak o 100% lepší, než s použitím tmelu.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img28.imagevenue.com/img.php?image=16840_IMG_6826_122_952lo.JPG" target=_blank&gt;&lt;img src="http://img28.imagevenue.com/loc952/th_16840_IMG_6826_122_952lo.JPG" border="0"&gt;&lt;/a&gt;&lt;a href="http://img108.imagevenue.com/img.php?image=16849_IMG_6829_122_968lo.JPG" target=_blank&gt;&lt;img src="http://img108.imagevenue.com/loc968/th_16849_IMG_6829_122_968lo.JPG" border="0"&gt;&lt;/a&gt;&lt;a href="http://img34.imagevenue.com/img.php?image=16893_IMG_6830_122_606lo.JPG" target=_blank&gt;&lt;img src="http://img34.imagevenue.com/loc606/th_16893_IMG_6830_122_606lo.JPG" border="0"&gt;&lt;/a&gt;&lt;a href="http://img42.imagevenue.com/img.php?image=16902_IMG_6831_122_916lo.JPG" target=_blank&gt;&lt;img src="http://img42.imagevenue.com/loc916/th_16902_IMG_6831_122_916lo.JPG" border="0"&gt;&lt;/a&gt;&lt;a href="http://img256.imagevenue.com/img.php?image=16912_IMG_6832_122_99lo.JPG" target=_blank&gt;&lt;img src="http://img256.imagevenue.com/loc99/th_16912_IMG_6832_122_99lo.JPG" border="0"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-602484776748980281?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/602484776748980281/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=602484776748980281' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/602484776748980281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/602484776748980281'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/10/nepoveden-zimmerit-dl-tet.html' title='Nepovedený zimmerit - díl třetí'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-4844937656031158376</id><published>2008-10-17T16:16:00.004+02:00</published><updated>2008-10-17T16:34:46.113+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrency'/><title type='text'>Testing blocking operation</title><content type='html'>Sometimes I have a luck and I can write multi-threaded application. I like testing all my classes with &lt;a href="http://www.junit.org/"&gt;JUnit&lt;/a&gt; but it has no support for concurrency.&lt;br /&gt;&lt;br /&gt;During studding an excellent book &lt;a href=http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601&gt;Java Concurrency in Practice&lt;/a&gt;  which explains all new features added in JSE5 regarding to concurrency, I was looking forward to chapter about testing with JUnit.&lt;br /&gt;&lt;br /&gt;The author recommends - if you need to test, that your operation blocks the calling thread, it is similar pattern as testing that your operation throws Exception.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;void testTakeBlocksWhenEmpty() {&lt;br /&gt;    final BoundedBuffer&lt;Integer&gt; bb = new BoundedBuffer&lt;Integer&gt;(10);&lt;br /&gt;    Thread taker = new Thread() {&lt;br /&gt;        public void run() {&lt;br /&gt;            try {&lt;br /&gt;                int unused = bb.take();&lt;br /&gt;                fail();  // if we get here, it's an error&lt;br /&gt;            } catch (InterruptedException success) { }&lt;br /&gt;        }};&lt;br /&gt;    try {&lt;br /&gt;        taker.start();&lt;br /&gt;        Thread.sleep(LOCKUP_DETECT_TIMEOUT);&lt;br /&gt;        taker.interrupt();&lt;br /&gt;        taker.join(LOCKUP_DETECT_TIMEOUT);&lt;br /&gt;        assertFalse(taker.isAlive());&lt;br /&gt;    } catch (Exception unexpected) {&lt;br /&gt;        fail();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;While I was watching funny video about &lt;a href="http://www.parleys.com/display/PARLEYS/Home#slide=24;title=The%20Java%20Puzzlers;talk=134677130"&gt;java puzzles&lt;/a&gt; I was surprised, that the example from the book does &lt;emph&gt;not work&lt;/emph&gt; !!! &lt;br /&gt;&lt;br /&gt;JUnit framework all exceptions and errors which are thrown from user thread does not interprets as failure! Fortunately, it logs stack trace to the console at least.&lt;br /&gt;&lt;br /&gt;Try this simple example - what colour does your test - green or red ? &lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;    public void testFail() throws InterruptedException {&lt;br /&gt;        final Thread t = new Thread(new Runnable() {&lt;br /&gt;            public void run() {&lt;br /&gt;                assertEquals(2, 5);&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;        t.start();&lt;br /&gt;        t.join();&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;My is green and I expect, it should be red, because in my world, two does not equal to five.&lt;br /&gt;&lt;br /&gt;How to fix it? You need to catch the exception or error in your user thread and forward it to JUnit normal thread. For example in this way.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;    private volatile Exception eException = null;&lt;br /&gt;    private volatile Error eError = null;&lt;br /&gt;&lt;br /&gt;    public void testEquals() throws InterruptedException {&lt;br /&gt;        final Thread t = new Thread(new Runnable() {&lt;br /&gt;            public void run() {&lt;br /&gt;                try {&lt;br /&gt;                    assertEquals(3, 5);&lt;br /&gt;                } catch (Exception e) {&lt;br /&gt;                    eException = e;&lt;br /&gt;                } catch (Error e) {&lt;br /&gt;                    eError = e;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        });&lt;br /&gt;        t.start();&lt;br /&gt;        t.join();&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    protected void tearDown() throws Exception {&lt;br /&gt;        if (eException != null) throw eException;&lt;br /&gt;        if (eError !=null) throw eError;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void setUp() throws Exception {&lt;br /&gt;        eException = null;&lt;br /&gt;        eError = null;&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-4844937656031158376?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/4844937656031158376/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=4844937656031158376' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/4844937656031158376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/4844937656031158376'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/10/testing-blocking-operation.html' title='Testing blocking operation'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-3470776953576449721</id><published>2008-09-18T15:31:00.005+02:00</published><updated>2008-09-18T15:42:31.774+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='intellij idea'/><title type='text'>return ve finally ?</title><content type='html'>Na certifikačním serevru &lt;a href="http://www.javablackbelt.com"&gt;javablackbelt&lt;/a&gt; jsem narazil na otázku, jak se chová fuknce, pokud má více návratových míst. Docela mě zarazilo, že návratovou hodnotu lze přepsat ve finally bloku. &lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public class FinallyExample {&lt;br /&gt;&lt;br /&gt;    public static void main( String[] args ) {&lt;br /&gt;        System.out.println( test(true) );&lt;br /&gt;        System.out.println( test(false) );&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static String test(boolean e) {&lt;br /&gt;        try {&lt;br /&gt;            if (e) throw new RuntimeException();&lt;br /&gt;            return "A";&lt;br /&gt;        } catch ( Exception ex ) {&lt;br /&gt;            return "B";&lt;br /&gt;        } finally {&lt;br /&gt;            return "C";&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Bez ohledu na to, jestli v metodě dojde či ne k vyjímce, hodnota ve finally bloku nakonec vyhrává - program tedy vypíše dvakrát C C.&lt;br /&gt;&lt;br /&gt;Inu, ne nadarmo je v idei automaticky zapnutá inspekce, která ihned varuje.&lt;br /&gt;&lt;cite&gt;&lt;br /&gt;This inspection reports any instances of return statements inside of finally blocks. While occasionally intended, such return statements may mask exceptions thrown, and tremendously complicate debugging. &lt;br /&gt;&lt;/cite&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-3470776953576449721?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/3470776953576449721/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=3470776953576449721' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/3470776953576449721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/3470776953576449721'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/09/return-ve-finally.html' title='return ve finally ?'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-8778505065728527703</id><published>2008-09-17T13:33:00.002+02:00</published><updated>2008-09-17T13:40:57.463+02:00</updated><title type='text'>Konec aplikačních serverů tak jak je známe?</title><content type='html'>Po shlednutí &lt;a href="http://weblogs.java.net/blog/van_riper/archive/2008/09/rod_johnsons_sv.html"&gt;přednášky&lt;/a&gt; &lt;a href="http://blog.springsource.com/main/author/rodj/"&gt;Roda Johnsona&lt;/a&gt; se nemůžu ubránit dojmu, že koncept  &lt;a href="http://www.springsource.com/products/suite/applicationplatform"&gt;Spring application platform&lt;/a&gt; totálně převálcuje stávající implementace aplikačních serverů, tak jak je známe dnes. &lt;br /&gt;Na druhou stranu, jak znám stávající konzervativní zákazníky, kteří ještě ani nepřešli na Javu 5, mě optimismums opouští. &lt;br /&gt;Která banka bude první, a postaví svoje aplikace na springu?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-8778505065728527703?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/8778505065728527703/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=8778505065728527703' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/8778505065728527703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/8778505065728527703'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/09/konec-aplikanch-server-tak-jak-je-znme.html' title='Konec aplikačních serverů tak jak je známe?'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-26359251869776207</id><published>2008-08-20T14:08:00.005+02:00</published><updated>2008-09-17T11:36:36.618+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='certification'/><title type='text'>Jak jsem se nechal certifikovat – SCBCD</title><content type='html'>Ve &lt;a href="http://www.adastra.cz/"&gt;firmě&lt;/a&gt;, kde právě pracuji jsem se nechal uvrtat do toho, že povedu školení o EJB3. Materiály jsem převzal po kolegovi, takže jsem s tím neměl moc práce. Horší bylo, že EJB3 jsem znal jen z rychlíku. Přesně podle hesla: “Ten kdo to neumí, ten to učí“. Takže jsem musel začít od začátku. &lt;br /&gt;&lt;br /&gt;Pomohla mi knížka &lt;a href="http://www.amazon.com/EJB-3-Action-Debu-Panda/dp/1933988347"&gt;EJB3 in Action&lt;/a&gt; (mimochodem, knížky od &lt;br /&gt;&lt;a href="http://www.manning.com/"&gt;Manningu&lt;/a&gt;  jsou vždy výborné). Je teda trochu obsáhlejší, asi 700 stran,  takže na studium v tramvaji je to přece jen macek. Líbilo se mi, že se nesnaží obhajovat předchozí verze EJB a nevyhýbá se ani &lt;a href="http://www.springframework.org/"&gt;springu&lt;/a&gt; . Takže můžu jen doporučit.  &lt;br /&gt;&lt;br /&gt;Školení proběhlo v pohodě, a aby čas strávený studiem nepřišel vniveč, rozhodl jsem se, že se nechám ocertifikovat.&lt;br /&gt;&lt;br /&gt;Jako studijní materiál jsem zvolil samotnou &lt;a href="http://jcp.org/en/jsr/detail?id=220"&gt;specifikaci&lt;/a&gt;. Původně jsem si myslel,že se nebude dát číst, ale opak byl pravdou. Dokonce jsem díky ní odhalil některé &lt;a href="http://www.manning-sandbox.com/thread.jspa?threadID=24442&amp;tstart=30"&gt;chyby&lt;/a&gt; v knize (mimochodem,  autor odpovídá promptně).&lt;br /&gt;&lt;br /&gt;Na &lt;a href="http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=forum&amp;f=70"&gt; java ranči&lt;/a&gt; doporučovali ještě &lt;a href="http://java.boot.by/scbcd5-guide/"&gt; poznámky&lt;/a&gt; Mikalai Zaikina. Ty se ukázaly jako velice užitečné, neboť popisují i to, co EJB neumí.&lt;br /&gt;&lt;br /&gt;Abych nevyšel ze cviku, tak jsem si  za těžce zdaněné peníze koupený tester od &lt;a href="http://www.whizlabs.com/scbcd/scbcd5.0-details.html"&gt;whizlabu&lt;/a&gt;. Ten mě ale velice zklamal. Nevím jak tester vyvíjejí, ale mě padal jak hrušky, a když spadl po 61 zodpovězených otázkách, tak jsem ho v rámci duševní hygieny smazal. U některých otázek byli dokonce špatné odpovědi! Takže rozhodně nebrat.&lt;br /&gt;&lt;br /&gt;Naštěstí jsem od firmy dostal licenci na &lt;a href="http://www.ucertify.com/certifications/SUN/scbcd.html"&gt;uCerify&lt;/a&gt; – super věc, rozhodně doporučuji.&lt;br /&gt;&lt;br /&gt;Nakonec jsem zkoušku složil na 88%.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-26359251869776207?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/26359251869776207/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=26359251869776207' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/26359251869776207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/26359251869776207'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/08/jak-jsem-se-nechal-certifikovat-scbcd.html' title='Jak jsem se nechal certifikovat – SCBCD'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-8931188728342288185</id><published>2008-08-15T14:14:00.006+02:00</published><updated>2008-08-15T14:40:55.119+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='intellij idea'/><category scheme='http://www.blogger.com/atom/ns#' term='certification'/><title type='text'>Jak jsem se nechal ocertifikovat - SCJP</title><content type='html'>Po několika letech kdy jsem dostudoval &lt;a href="http://cyber.felk.cvut.cz/"&gt;výšku&lt;/a&gt; a ještě víc letech co se živím (bavím) programováním v javě jsem se nechal ukecat na certifikaci (SCJP) - prý tím stoupne moje cena na trhu práce.&lt;br /&gt;&lt;br /&gt;Nejdříve jsem si nabubřele myslel, že se nebudu muset nic učit - vždyť všechno už znám ne ;-) ? Kolegové, kteří už ono martýrium absolvovali mě varovali, že si mám zkusit alespoň nějaké cvičné testy, ať vím co čeho jdu - ještě že je mám (ty kolegy). &lt;br /&gt;&lt;br /&gt;Testovací příklady jsou zejména o tom, jestli daný kód jde nebo nejde zkompilovat a proč. Přiznám se, že tuto práci za mě dělá počítač sám, takže jsem se moc nechytal. Druhý zádrhel byla znalost API - třeba v které package je DateFormat a tak. Přiznám se, že slovo klíčové import jsem nenapsal od doby co je za mě &lt;a href="http://www.jetbrains.com/idea/"&gt;IDEA&lt;/a&gt; píše sama (minimálně 5 let). &lt;br /&gt;&lt;br /&gt;Na druhou stanu abych jen nehaněl, dozvěděl jsem se i o některých záludnostech, o kterých jsem nevěděl, neb jsem se s nimi nesetkal - např. anonymní iniciátory. &lt;br /&gt;&lt;br /&gt;Suma sumárum. Pokud se na certifikaci SCJP chystáte, určitě doporučuji nastudovat tuto &lt;a href="http://www.amazon.com/Certified-Programmer-310-055-Certification-Guides/dp/0072253606"&gt;knížku&lt;/a&gt;. Dále jsem měl k dispozici příklady testů od &lt;a href="http://www.whizlabs.com/scjp/scjp-5.0-details.html"&gt;whizlabu&lt;/a&gt;. Poté test uděláte bez problémů (já jen na 90%). &lt;br /&gt;&lt;br /&gt;Na co vše se dá certifikovat - &lt;a href="http://java.dzone.com/articles/certifications-may-i-see-the-m"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Poté, co jsem se nechal namočit do školení o EJB3 jako speaker, jsem se rozhodl, že si udělám i SCBCD, ale o tom až někdy příště.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-8931188728342288185?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/8931188728342288185/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=8931188728342288185' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/8931188728342288185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/8931188728342288185'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/08/jak-jsem-se-nechal-ocertifikovat-scjp.html' title='Jak jsem se nechal ocertifikovat - SCJP'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-2657943677930158380</id><published>2008-07-24T13:07:00.010+02:00</published><updated>2008-08-21T21:51:50.651+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>commonj TimerManager</title><content type='html'>Trápil jsem se rozběháním commonj knihovny na BEA WebLogic 9.2. Potřeboval jsem rozběhat periodický timer a byl jsem nucen použít tuto feature (&lt;a ref="http://www.opensymphony.com/quartz/"&gt;Quartz&lt;/a&gt; mi byl zakázán).&lt;br /&gt;Postupoval jsem podle &lt;a href="http://ftpna2.bea.com/pub/downloads/commonj/Commonj-TimerAndWorkManager-Specification-v1.1.pdf"&gt;manuálu&lt;/a&gt; a světe div se, nefungovalo to.&lt;br /&gt;&lt;br /&gt;Prý stačí vložit do web.xml následující konstrukci a je to&lt;br /&gt;&lt;pre name="code" class="xml:firstline[13]"&gt;&lt;br /&gt;&amp;lt;resource-ref&amp;gt;&lt;br /&gt;    &amp;lt;res-ref-name&amp;gt;timer/MyTimer&amp;lt;/res-ref-name&amp;gt;&lt;br /&gt;    &amp;lt;res-type&amp;gt;commonj.timer.TimerManager&amp;lt;/res-type&amp;gt;&lt;br /&gt;    &amp;lt;res-auth&amp;gt;Container&amp;lt;/res-auth&amp;gt;&lt;br /&gt;    &amp;lt;res-sharing-scope&amp;gt;Unshareable&amp;lt;/res-sharing-scope&amp;gt;&lt;br /&gt;&amp;lt;/resource-ref&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Problém ovšem nastane při deploy !?!&lt;br /&gt;Žádná package &lt;code&gt;commonj.timer&lt;/code&gt; totiž není, zato existuje &lt;code&gt;commonj.timer&lt;b&gt;s&lt;/b&gt;&lt;/code&gt;.&lt;br /&gt;Chyba je tedy v jednom písmenku - &lt;b&gt;s&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-2657943677930158380?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/2657943677930158380/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=2657943677930158380' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/2657943677930158380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/2657943677930158380'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/07/commonj-timermanager.html' title='commonj TimerManager'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-8080657742296337179</id><published>2008-07-11T11:39:00.003+02:00</published><updated>2008-07-11T11:43:32.103+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tiger'/><category scheme='http://www.blogger.com/atom/ns#' term='modelling'/><category scheme='http://www.blogger.com/atom/ns#' term='tamiya'/><title type='text'>Nepovedený zimmerit - díl druhý</title><content type='html'>Tak jsem udělal druhou verzi. S tím polyester putty se dělá o poznání lépe. Horší bylo ten starý strhnout. Výsledek sice není žádná hitparáda, ale alespoň vzdáleně to připomíná zimmerit. &lt;br /&gt;Zatím jsem pracoval jen na věži, ale plánuji předělávku všude.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img145.imagevenue.com/img.php?loc=loc1004&amp;image=33796_IMG_6611_122_1004lo.JPG" target=_blank&gt;&lt;img src="http://img145.imagevenue.com/loc1004/th_33796_IMG_6611_122_1004lo.JPG" border="0"&gt;&lt;/a&gt;&lt;a href="http://img176.imagevenue.com/img.php?loc=loc26&amp;image=33810_IMG_6612_122_26lo.JPG" target=_blank&gt;&lt;img src="http://img176.imagevenue.com/loc26/th_33810_IMG_6612_122_26lo.JPG" border="0"&gt;&lt;/a&gt;&lt;a href="http://img198.imagevenue.com/img.php?loc=loc475&amp;image=33818_IMG_6613_122_475lo.JPG" target=_blank&gt;&lt;img src="http://img198.imagevenue.com/loc475/th_33818_IMG_6613_122_475lo.JPG" border="0"&gt;&lt;/a&gt;&lt;a href="http://img106.imagevenue.com/img.php?loc=loc813&amp;image=33933_IMG_6614_122_813lo.JPG" target=_blank&gt;&lt;img src="http://img106.imagevenue.com/loc813/th_33933_IMG_6614_122_813lo.JPG" border="0"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-8080657742296337179?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/8080657742296337179/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=8080657742296337179' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/8080657742296337179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/8080657742296337179'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/07/nepoveden-zimmerit-dl-druh.html' title='Nepovedený zimmerit - díl druhý'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-5790549109196060154</id><published>2008-07-09T13:05:00.000+02:00</published><updated>2008-07-09T13:25:10.118+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tiger'/><category scheme='http://www.blogger.com/atom/ns#' term='modelling'/><category scheme='http://www.blogger.com/atom/ns#' term='tamiya'/><title type='text'>Nepovedený zimmerit - Tiger I, Tamiya 1:35</title><content type='html'>Pokusil jsem se o vytvoření &lt;a href="http://www.valka.cz/newdesign/v900/clanek_508.html"&gt;zimmeritu&lt;/a&gt; a bohužel ne moc uspěšně.&lt;br /&gt;&lt;br /&gt;Prošel jsem web a doporučené postupy a zakoupil Tamiya Epoxy Putty s nástrojem Zimmerit Coating Applicator taktéž od Tamiye.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img239.imagevenue.com/img.php?loc=loc45&amp;amp;image=45106_IMG_6608_122_45lo.JPG" target="_blank"&gt;&lt;img src="http://img239.imagevenue.com/loc45/th_45106_IMG_6608_122_45lo.JPG" border="0" /&gt;&lt;/a&gt;&lt;a href="http://img42.imagevenue.com/img.php?loc=loc950&amp;amp;image=45221_IMG_6610_122_950lo.JPG" target="_blank"&gt;&lt;img src="http://img42.imagevenue.com/loc950/th_45221_IMG_6610_122_950lo.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Asi nemám ten správný grif, neboť výsledek je tristní. Pousuďte sami.&lt;br /&gt;Navíc jsem se od toho tmelu neuvěřitelně upatlal a od plic zanadával.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img104.imagevenue.com/img.php?loc=loc525&amp;amp;image=44823_IMG_6594_122_525lo.JPG" target="_blank"&gt;&lt;img src="http://img104.imagevenue.com/loc525/th_44823_IMG_6594_122_525lo.JPG" border="0" /&gt;&lt;/a&gt;&lt;a href="http://img34.imagevenue.com/img.php?loc=loc672&amp;amp;image=44841_IMG_6596_122_672lo.JPG" target="_blank"&gt;&lt;img src="http://img34.imagevenue.com/loc672/th_44841_IMG_6596_122_672lo.JPG" border="0" /&gt;&lt;/a&gt;&lt;a href="http://img155.imagevenue.com/img.php?loc=loc626&amp;amp;image=44855_IMG_6600_122_626lo.JPG" target="_blank"&gt;&lt;img src="http://img155.imagevenue.com/loc626/th_44855_IMG_6600_122_626lo.JPG" border="0" /&gt;&lt;/a&gt;&lt;a href="http://img202.imagevenue.com/img.php?loc=loc174&amp;amp;image=44848_IMG_6599_122_174lo.JPG" target="_blank"&gt;&lt;img src="http://img202.imagevenue.com/loc174/th_44848_IMG_6599_122_174lo.JPG" border="0" /&gt;&lt;/a&gt;&lt;a href="http://img166.imagevenue.com/img.php?loc=loc606&amp;amp;image=44864_IMG_6601_122_606lo.JPG" target="_blank"&gt;&lt;img src="http://img166.imagevenue.com/loc606/th_44864_IMG_6601_122_606lo.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Naštěstí existuje &lt;a href="http://modelforum.upce.cz/forum/"&gt;fórum &lt;/a&gt;modelářů, kteří poradí. Prý jsem použil špatný tmel. Měl jsem použít tamiya polyester putty. Video, jak se zimmerit dělá také existuje.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/8KPv-c9mIO4&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/8KPv-c9mIO4&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Dnes si tedy letím do obchodu pro jiný tmel a zkusím to ještě jednou. Horší bude, že už mám nalepené detaily a budu je muset odlepit a pak znova přidělat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-5790549109196060154?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/5790549109196060154/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=5790549109196060154' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/5790549109196060154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/5790549109196060154'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/07/nepoveden-zimmerit.html' title='Nepovedený zimmerit - Tiger I, Tamiya 1:35'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8097067492815693285.post-3117027417035406638</id><published>2008-07-09T11:35:00.001+02:00</published><updated>2008-07-09T14:22:21.302+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='intellij idea'/><category scheme='http://www.blogger.com/atom/ns#' term='refcardz'/><title type='text'>Vychytávky v IntelliJ IDEA o kterých jsem nevěděl</title><content type='html'>Přihlásil jsem ke k odběru &lt;a href="http://refcardz.dzone.com/"&gt;refcardz&lt;/a&gt; a poslední příspěvek byl o &lt;a href="http://www.jetbrains.com/idea/"&gt;IntelliJ IDEA&lt;/a&gt;. Vzhledem k tomu, že Ideu používám již léta a vždy mě dokáže něčím překvapit jsem se pustil do čtení. Myslím si, že většinu funkcí znám, tak se zaměřím jen na ty, o kterých jsem nevěděl.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Copy/Paste&lt;/b&gt;&lt;br /&gt;To že se přes schránku kopíruje pomocí Ctrl+C/V není nic objevného. Zajímavé je ale to, že pokud není označené nic, automaticky se kopíruje celý řádek.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Autoscroll from Source&lt;/b&gt;&lt;br /&gt;V projektovém panelu lze zapnout funkci, že pokud změníte selekci ve stromečku, automaticky se v editoru otevře příslušný soubor. Opět nic světoborného a nečekaného. Zajímavé je to, že to může fungovat i naopak. Tedy, pokud se přepínáte mezi taby v editoru, automaticky se skroluje na příslušný prvek ve stromě. Dříve jsem pro tuto funkci používal zkratku Ctrl+F1.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Goto Class&lt;/b&gt;&lt;br /&gt;Pro nalezení třídy dlouhá leta používám Ctrl+N. Nevědel jsem ale, že pomocí Shift+Up/Down můžete vybrat tříd více.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Goto Parent&lt;/b&gt;&lt;br /&gt;Pokud jsem potřeboval skočit na metodu předka, kterou overriduji, vždy jsem klikal na ikonu vedle metody. Odedněška už na myš nešáhnu. Stačí Ctrl+U.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Autoscroll to Source in the Find pane&lt;/b&gt;&lt;br /&gt;Při vyhledávání pomocí Ctrl+F se ukáží výsledky v okně ve kterém se můžete pohybovat pomocí šipek nahoru a dolu. Lze zapnout i autoscroll, kdy při změně selekce ve stromě se automaticky odskroluje v editoru. Já toto většinou mám vypnuté, neb mě to vyrušuje. Zajímavé je ale, pokud máte autoscroll vypnutý, tak ho můžete "temporary" zapnout pomocí Ctrl+Alt+Up/Down.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Preview in the Find pane&lt;/b&gt;&lt;br /&gt;Po vyhledávání pomocí Ctrl+F se mi většinou změní otevřené soubory v editoru a musím je pracně hledat a otevírat znovu. Ve Find pane lze ale zapnout preview okno, ve kterém se při změně selekce ve stromu automaticky skroluje do preview okna.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Vyhledávání funkcí v menu&lt;/b&gt;&lt;br /&gt;Menu je poměrně rozáhlé a občas je probém najít tu správnou položku. Pomocí Ctrl+Shift+A lze vyhledávat v akcích menu. Toto považuji za velice užitečnou funkčnost. Škoda, že něco takového není i ve Wordu - tam tápu téměř pořád.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Expand Word&lt;/b&gt;&lt;br /&gt;Pomocí Alt+Slash umí editor napovídat jména proměných. Moc jsem nepochopil, jak to funguje, ale vyzkouším.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Surround with Live Template (Ctrl+Alt+J)&lt;/b&gt;&lt;br /&gt;To, že lze obalovat kusy kódu pomocí Ctrl+Alt+T jsem věděl a používám. Že existují Life templates (Ctrl+J) jsem věděl taky ale že může být life template+surround je pro mě novinka.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8097067492815693285-3117027417035406638?l=pcharvat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pcharvat.blogspot.com/feeds/3117027417035406638/comments/default' title='Komentáře k příspěvku'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8097067492815693285&amp;postID=3117027417035406638' title='Počet komentářů: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/3117027417035406638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8097067492815693285/posts/default/3117027417035406638'/><link rel='alternate' type='text/html' href='http://pcharvat.blogspot.com/2008/07/vychytvky-v-intellij-idea-o-kterch-jsem.html' title='Vychytávky v IntelliJ IDEA o kterých jsem nevěděl'/><author><name>Peter's Java Blog</name><uri>http://www.blogger.com/profile/10245779573182474616</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://bp2.blogger.com/_C6uR7Qx6Z7E/SHSYdUxHn1I/AAAAAAAAAoY/AyZnxJ1jPqg/S220/IMG_6188.JPG'/></author><thr:total>0</thr:total></entry></feed>
