<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog.Project13.pl &#187; spring</title>
	<atom:link href="http://www.blog.project13.pl/index.php/tag/spring/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blog.project13.pl</link>
	<description>The Blog of a Coder</description>
	<lastBuildDate>Sun, 05 Feb 2012 02:28:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>[fun] &#8220;Holy turnaround, Batman!&#8221;</title>
		<link>http://www.blog.project13.pl/index.php/fun/1385/fun-holy-turnaround-batman/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/1385/fun-holy-turnaround-batman/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 00:22:03 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[deploy]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[jrebel]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1385</guid>
		<description><![CDATA[&#160; I&#8217;ve been featured in the JRebel Blog for my killer tweeting skillz&#8230; ;-) Thanks guys for the cool tool and for being so cool to the community! :-) http://zeroturnaround.com/blog/bazinga-rebellions-on-twitter-on-the-road-and-some-more-exciting-news/]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>I&#8217;ve been featured in the <a title="JRebel Blog" href="http://zeroturnaround.com/blog/bazinga-rebellions-on-twitter-on-the-road-and-some-more-exciting-news/" onclick="urchinTracker('/outgoing/zeroturnaround.com/blog/bazinga-rebellions-on-twitter-on-the-road-and-some-more-exciting-news/?referer=');">JRebel Blog</a> for my killer tweeting skillz&#8230; ;-)<br />
Thanks guys for the cool tool and for being so cool to the community! :-)</p>
<p style="text-align: center;"><a href="http://www.blog.project13.pl/wp-content/uploads/2011/11/zero_turnaround_ktoso.png"><img class="aligncenter size-medium wp-image-1386" title="zero_turnaround_ktoso" src="http://www.blog.project13.pl/wp-content/uploads/2011/11/zero_turnaround_ktoso-300x290.png" alt="" width="370" /></a></p>
<p style="text-align: center;"><a href="http://zeroturnaround.com/blog/bazinga-rebellions-on-twitter-on-the-road-and-some-more-exciting-news/" onclick="urchinTracker('/outgoing/zeroturnaround.com/blog/bazinga-rebellions-on-twitter-on-the-road-and-some-more-exciting-news/?referer=');">http://zeroturnaround.com/blog/bazinga-rebellions-on-twitter-on-the-road-and-some-more-exciting-news/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/1385/fun-holy-turnaround-batman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>@RunWith JUnit4 with BOTH SpringJUnit4ClassRunner and Parameterized</title>
		<link>http://www.blog.project13.pl/index.php/coding/1077/runwith-junit4-with-both-springjunit4classrunner-and-parameterized/</link>
		<comments>http://www.blog.project13.pl/index.php/coding/1077/runwith-junit4-with-both-springjunit4classrunner-and-parameterized/#comments</comments>
		<pubDate>Sat, 13 Nov 2010 00:05:39 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[junit]]></category>
		<category><![CDATA[junit4]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=1077</guid>
		<description><![CDATA[Ok, now for a quick trick before I get into writing more about git and our last javacamp (movies are still being converted, sorry for the long wait). If you code in Java, you most probably use (you really should use) some dependecy injection mechanisms. They&#8217;re really great and take care about all the setup [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, now for a quick trick before I get into writing more about git and our last javacamp (movies are still being converted, sorry for the long wait).</p>
<p>If you code in Java, you most probably use (you really should use) some dependecy injection mechanisms. They&#8217;re really great and take care about all the setup that need&#8217;s to be done before you can move on to your coding. The same thigh applies to testing, you&#8217;d rather write:</p>
<div class="geshi no java">
<div class="head">//yay</div>
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @Autowired</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; MyComponent component<span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Than use the new operator, or worse, perform some super weird setup to build this object. If you use spring, you&#8217;d write an test like this to make it support Spring&#8217;s DI:</p>
<div class="geshi no java">
<div class="head">//an JUnit test with spring DI</div>
<ol>
<li class="li1">
<div class="de1">@RunWith<span class="br0">&#40;</span>SpringJUnit4ClassRunner.<span class="kw2">class</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">@ContextConfiguration<span class="br0">&#40;</span>locations = <span class="br0">&#123;</span><span class="st0">&quot;classpath:applicationContext.xml&quot;</span><span class="br0">&#125;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw2">class</span> EmailTest <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @Autowired</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; MyComponent component<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">//&#8230; awesome tests</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>That&#8217;s all you need to make your tests properly autowire all components they&#8217;re using. So far so good &#8211; probably nothing new here, and nothing complicated. So let&#8217;s move on to some &#8220;super big data set&#8221; that needs to be tested, over the same flow over and over again. We&#8217;ll use an super conplicated example to showcase what I mean:</p>
<div class="geshi no java">
<div class="head">//inside an test class</div>
<ol>
<li class="li1">
<div class="de1">@Test</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">public</span> <span class="kw4">void</span> testIsValidEmail<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw2">throws</span> <span class="kw3">Exception</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; assertTrue<span class="br0">&#40;</span><span class="st0">&quot;hey, that&#39;s an good email!&quot;</span>, isValidEmail<span class="br0">&#40;</span>validEmail1<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">//&#8230; more tests&#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; assertTrue<span class="br0">&#40;</span><span class="st0">&quot;hey, that&#39;s an good email!&quot;</span>, isValidEmail<span class="br0">&#40;</span>validEmail2<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">//&#8230;over and over again&#8230;</span></div>
</li>
</ol>
</div>
<p>Ok, that&#8217;s obviously stupid&#8230; :-) So, how do we deal with repetitive tests, that need some bigger dataset than just this email example (given here because it&#8217;s short and good enough for our example test)&#8230;? We&#8217;d use @RunWith(Parameterized.class), the class would then look something like this:</p>
<div class="geshi no java">
<div class="head">//my test with only params</div>
<ol>
<li class="li1">
<div class="de1">@RunWith<span class="br0">&#40;</span>Parameterized.<span class="kw2">class</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">class</span> EmailTest <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">String</span> validEmail<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="coMULTI">/** We&#39;re testing only good emails, for the sake of simplicity of the example */</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @Parameters</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">static</span> Collection<span class="sy0">&amp;</span>lt<span class="sy0">;</span>Object<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">&amp;</span>gt<span class="sy0">;</span> data<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> <span class="kw3">Arrays</span>.<span class="me1">asList</span><span class="br0">&#40;</span><span class="kw2">new</span> <span class="kw3">Object</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><span class="st0">&quot;a@a.pl&quot;</span> <span class="coMULTI">/*more params here*/</span><span class="br0">&#125;</span>, <span class="br0">&#123;</span><span class="st0">&quot;exmaple@example.com&quot;</span>, <span class="coMULTI">/* more params here*/</span><span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> EmailTest<span class="br0">&#40;</span><span class="kw3">String</span> validEmail <span class="coMULTI">/* more params would land here*/</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">this</span>.<span class="me1">validEmail</span> = validEmail<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @Test</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> testIsValidEmail<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw2">throws</span> <span class="kw3">Exception</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">boolean</span> wasOk = StringTools.<span class="me1">isEmail</span><span class="br0">&#40;</span>validEmail<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; assertTrue<span class="br0">&#40;</span><span class="st0">&quot;This should have been ok&quot;</span>, wasOk<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">//&#8230; more stuff</span></div>
</li>
</ol>
</div>
<p>Ok, that&#8217;s a nice way to make your code in the tests smaller yet have an nice overview through all of your tested data. Each array will be inserted in the constructor, and then ran as an seperate test &#8211; with each dataset. Nice, isn&#8217;t it?</p>
<p>Ok, but what if we want to have both Spring&#8217;s DI and an @Parameters &#8220;test data provider&#8221;&#8230;? Can you spot the problem? Yup, JUnit4 can only have ONE @RunWith annotation, and it doesn&#8217;t accept multiple runners. Which totaly makes sense when you think about it, but then there is our special case of DI, which really doesn&#8217;t change the way an test wotks, it just makes setup easier&#8230; All that said, here&#8217;s how to use both spring and parameters in your Junit4 tests:</p>
<div class="geshi no java">
<div class="head">//mytest with DI and params</div>
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @RunWith<span class="br0">&#40;</span>Parameterized.<span class="kw2">class</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @ContextConfiguration<span class="br0">&#40;</span>locations = <span class="br0">&#123;</span><span class="st0">&quot;classpath:applicationContext.xml&quot;</span><span class="br0">&#125;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">class</span> EmailTest <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">private</span> TestContextManager testContextManager<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw3">String</span> validEmail<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @Before</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> setUpContext<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw2">throws</span> <span class="kw3">Exception</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//this is where the magic happens, we actually do &quot;by hand&quot; what the spring runner would do for us,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// read the JavaDoc for the class bellow to know exactly what it does, the method names are quite accurate though</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">this</span>.<span class="me1">testContextManager</span> = <span class="kw2">new</span> TestContextManager<span class="br0">&#40;</span>getClass<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">this</span>.<span class="me1">testContextManager</span>.<span class="me1">prepareTestInstance</span><span class="br0">&#40;</span><span class="kw2">this</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @Parameters</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">static</span> Collection<span class="sy0">&lt;</span>object <span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">&gt;</span> data<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">return</span> <span class="kw3">Arrays</span>.<span class="me1">asList</span><span class="br0">&#40;</span><span class="kw2">new</span> <span class="kw3">Object</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><span class="st0">&quot;a@a.pl&quot;</span><span class="br0">&#125;</span>,<span class="br0">&#123;</span><span class="st0">&quot;exmaple@example.com&quot;</span><span class="br0">&#125;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> EmailTest<span class="br0">&#40;</span><span class="kw3">String</span> validEmail<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">this</span>.<span class="me1">validEmail</span> = validEmail<span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; @Test</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">public</span> <span class="kw4">void</span> testIsValidEmail<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw2">throws</span> <span class="kw3">Exception</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">boolean</span> email = StringTools.<span class="me1">isEmail</span><span class="br0">&#40;</span>validEmail<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; assertTrue<span class="br0">&#40;</span><span class="st0">&quot;should be OK&quot;</span>, wasOk<span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">//&#8230; more stuff&#8230;&lt;/object&gt;</span></div>
</li>
</ol>
</div>
<p>That&#8217;s it :-) We do what the spring Runner would do for us, instanciate an application context and prepare it &#8211; that&#8217;s when the DI happens. Note that we cant use another runner annotation, but we can as usual specify where to find the appContext.xml&#8217;s.</p>
<p>That&#8217;s all, hope this will prove useful to some of you :-) <strong>Keep your tests clean!</strong></p>
<p>PS: Warning, most of this code was written in wordpress, it may contain minor spelling errors ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/coding/1077/runwith-junit4-with-both-springjunit4classrunner-and-parameterized/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>[Diff] context.getBean(); Spring 3.0 vs. 2.5.6</title>
		<link>http://www.blog.project13.pl/index.php/fun/819/diff-context-getbean-spring-3-0-vs-2-5-6/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/819/diff-context-getbean-spring-3-0-vs-2-5-6/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 17:34:10 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=819</guid>
		<description><![CDATA[I just found an nice thing in Spring 3.0. I was using it in one of mu current projects, but the client wanted us to use 2.5.6 as it would be provided on the server. Switching back was really easy, no problems there ;-) One interesting thing I found was that while in Spring 3.0 [...]]]></description>
			<content:encoded><![CDATA[<p>I just found an nice thing in Spring 3.0. I was using it in one of mu current projects, but the client wanted us to use 2.5.6 as it would be provided on the server. Switching back was really easy, no problems there ;-)</p>
<p>One interesting thing I found was that while in Spring 3.0 this is perfecly legal and quite nice:</p>
<div class="geshi no java">
<div class="head">//spring 3.0+</div>
<ol>
<li class="li1">
<div class="de1">ClassPathXmlApplicationContext context = <span class="kw2">new</span> ClassPathXmlApplicationContext<span class="br0">&#40;</span><span class="st0">&quot;/spring-config.xml&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">final</span> OperatorDao morphiaDao = context.<span class="me1">getBean</span><span class="br0">&#40;</span>OperatorDaoMorphiaImpl.<span class="kw2">class</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>You can&#8217;t do this in Spring 2.5.6.  So I basically &#8220;discovered&#8221; a feature of Spring 3 by seeing that Spring 2 doesn&#8217;t have it after doing an &#8220;downgrade&#8221;. I always thought such getBean implementation has been there &#8220;since always&#8221;&#8230; ;-) (The lack of explicit casting is always an welcome addition.)</p>
<p>Anyways, here is the plain old 2.5.6 version of getting a Bean:</p>
<div class="geshi no java">
<div class="head">// spring 2.5.6</div>
<ol>
<li class="li1">
<div class="de1"><span class="kw2">final</span> OperatorDao morphiaDao = <span class="br0">&#40;</span>OperatorDao<span class="br0">&#41;</span> context.<span class="me1">getBean</span><span class="br0">&#40;</span><span class="st0">&quot;operatorMorphiaDao&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>Btw: The above code was taken from some quickly written JUnit tests&#8230; I think I&#8217;ll post them soon, btw: <strong>Mongo = awesome; Morphia = awesome; Mongo + Moprhia = Uber Awesome :-)</strong><em></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/819/diff-context-getbean-spring-3-0-vs-2-5-6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ip2cntry &#8211; ex-appengine app (mainly JAX-RS)</title>
		<link>http://www.blog.project13.pl/index.php/coding/727/ip2cntry-ex-appengine-app-mainly-jax-rs/</link>
		<comments>http://www.blog.project13.pl/index.php/coding/727/ip2cntry-ex-appengine-app-mainly-jax-rs/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 15:13:04 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[appengine]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[web dev]]></category>
		<category><![CDATA[webdeveloper]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=727</guid>
		<description><![CDATA[I&#8217;ve been coding an simple RESTful &#8220;ip to country&#8221; conversion service. I&#8217;ve decided to put it up to appengine &#8211; so that everybody may use it freely even if I&#8217;d change my server etc&#8230; And if looked quite nice the first day &#8211; buw when I got to do some &#8220;real stuff&#8221; app engine started [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;"><img title="appengine and duke" src="http://api.ning.com/files/mDJ*r0VXJVM5*LNj5uct5fwBIDcQH99SKTN-zzCVyDf306EuzF6lbwkJW6cGVJOUNtAen43aPLTd9HtdVcYgFuxB-d8SufPD/dukeongae.jpg" alt="" width="151" height="138" /></div>
<p>I&#8217;ve been coding an simple RESTful &#8220;ip to country&#8221; conversion service. I&#8217;ve decided to put it up to appengine &#8211; so that everybody may use it freely even if I&#8217;d change my server etc&#8230; And if looked quite nice the first day &#8211; buw when I got to do some &#8220;real stuff&#8221; app engine started to get in my way, here&#8217;s a quick rundown of the problems I&#8217;ve found with appengine:</p>
<ol>
<li>I need to download and update the ip&lt;-&gt;country database every few days. I&#8217;d use an <strong>GZIPInputStream</strong> and <strong>BufferedReader</strong> to get the file I was interested in and update the database. Did appengine allow me to use such an simple aparoach?
<ol>
<li><strong style="color: #03c300;">pro:</strong> appengine provides a very nice cron-like mechanism. So I just had to create an <strong>cron.xml in WEB-INF</strong> and this part was ready to go! This was in fact easier and more fun than in classic <strong>Spring + Open Symphony Quartz</strong>.</li>
<li><strong style="color: #cb0007;">con:</strong>I checked if this tactic was OK with the JRE whilelist and checked the Quotas &#8211; <a href="http://code.google.com/appengine/docs/quotas.html#UrlFetch" onclick="urchinTracker('/outgoing/code.google.com/appengine/docs/quotas.html_UrlFetch?referer=');">http://code.google.com/appengine/docs/quotas.html#UrlFetch</a>, &#8220;seems ok&#8221; &#8211; I thought &#8211; &#8220;nothing about per connection limits, only daily quotas.&#8221;. After writing the code, I discovered that even though on the main quota page there was no word about per connection limits, in fact there are such quotas, but a little more hidden: <a href="http://code.google.com/appengine/docs/java/urlfetch/overview.html" onclick="urchinTracker('/outgoing/code.google.com/appengine/docs/java/urlfetch/overview.html?referer=');">http://code.google.com/appengine/docs/java/urlfetch/overview.html</a> Max request/response sizes are capped at exactly 1MB.<br />
As my gzipped file is around 1.1MB,<strong> appengine killed my simple idea&#8230;</strong> I&#8217;d have to split the file into separate ones &#8211; on another server, and then fetch the separated files onto appengine.</li>
<li><strong style="color: #cb0007;">con:</strong>The<strong> </strong>mentione CRON mechanism is quite funny. You don&#8217;t call<strong> methods </strong>but URLs &#8211; and they are normally called as if one would launch them from the browser &#8211; thus, traffic and &#8220;max time&#8221; quotas do count there as well. So rather than calling an method, as you&#8217;d do with OpenSymphony &#8211; you create an Servlet that does all the work. This may me both good, and bad&#8230; You cound do all the CRON stuff by hand if it got out of sync etc&#8230; I didn&#8217;t really like it, and as mentioned&#8230; <strong>When doing my &#8220;big batch database update&#8221; the servlet would simply timeout&#8230;</strong></li>
</ol>
</li>
<li>Let&#8217;s talk about the <strong>dataStore</strong>. As you all probably know&#8230; AppEngine does not provide and &#8220;database&#8221; per se. It&#8217;s not relational and has quite some limitations. BUT!<strong> That&#8217;s quite ok, as it&#8217;s very quick and very very scalable!</strong> And most of the time&#8230; Do you really need all those fancy relations? ;-) It was an ideal place to hold my super simple data: &#8220;ip region = country&#8221; mapping in a persistent way. &#8220;Another nice thing on appengine for this application I&#8217;m going to write.&#8221; &#8211; I thought. Was I right?
<ol>
<li><strong style="color: #03c300;">pro/con:</strong> Not really&#8230; I used JPA but JDO (which is prefered by appengine from what I&#8217;ve seen) also works nice on GAE. The setup did run quite ok while I was running tests on my local machine. Deployment is also an breeze and <strong>I didn&#8217;t have to use any complicated dependencies to get it running &#8211; &#8220;yay, no maven!&#8221;. </strong>You just have to enchance the classes you want to make persistent (just as hibernate does).</li>
<li><strong style="color: #cb0007;">con:</strong>The problems started when I wanted to <strong>clear my datastore.</strong> Nothing easier than that, right&#8230;? &#8220;delete from BlaBla&#8221; and we&#8217;re done. Yeah, but not on GAE. As even the &#8220;max rows a query touches&#8221; are limited &#8211; to 500. So there I am, with my 100.000 rows, and I have to delete them in 500 rows per query&#8230; Of course I can&#8217;t call this in an loop &#8211; as  the timeout quota would get in my way and kill the app.From what I&#8217;ve seen, people do solve this using a CRON task that calls this &#8220;clearDatabase&#8221; servlet until it&#8217;s  done &#8211; ugh, not a nice solution but I can&#8217;t think of any other solution :\</li>
<li><strong style="color: #cb0007;">con:</strong>The only query I need to do in this app is basically:
<pre>SELECT range FROM RemoteIpData as range
             WHERE range.ipFrom &lt;= ?1
               AND range.ipTo &gt;= ?2
<em>#and this would always return 1 entry!</em>
</pre>
<p>And guess what&#8230; <strong>AppEngine does not support multiple &#8220;less/more than&#8221; operands in one query!</strong> If you think hard about what BigTable is, it does make some sense. More information about &#8220;<strong>GQL</strong>&#8221; can be found here: <a href="http://code.google.com/appengine/docs/python/datastore/gqlreference.html" onclick="urchinTracker('/outgoing/code.google.com/appengine/docs/python/datastore/gqlreference.html?referer=');">http://code.google.com/appengine/docs/python/datastore/gqlreference.html</a> All the <a href="http://code.google.com/appengine/docs/java/datastore/queriesandindexes.html" onclick="urchinTracker('/outgoing/code.google.com/appengine/docs/java/datastore/queriesandindexes.html?referer=');">restrictions about the Queries you can do are documented here</a> &#8211; some are really counter intuitive when you come from an RDBMS enviroment&#8230; Ah well ;-) Oh, and yet another <a href="http://blog.newsplore.com/2009/06/06/reviewing-google-appengine-for-java-part-2" onclick="urchinTracker('/outgoing/blog.newsplore.com/2009/06/06/reviewing-google-appengine-for-java-part-2?referer=');">great link about GAE limitations</a>.</p>
<p>Having this limitation, really sucks for my normally &#8220;super simple query&#8221;, and I&#8217;d have to change the data structure somehow or do some awful 2 queries and then combine them in Java (omg teh terrorr&#8230; :&lt;). So, while developing on appengine, keep in ming &#8211; simple things might turn out quite complicated due to the nature of BigTable. If you know all the limitations when designing the system and not while finishing it, you&#8217;ll be a happier man&#8230; ;-)</li>
<li><strong>neutral</strong>: Primary keys can&#8217;t be Integers etc, as AppEngine uses it&#8217;s own &#8220;Key&#8221; type. :-)</li>
</ol>
</li>
<li>Having that all said. Appengine&#8217;s administration panel is quite ok. And the not-so-newly-added log search etc are really fine tools. Something an plain old tomcat can not offer. On the other hand, the limitations can really be a deal breaker! My app was really fairly simple, and yet appengines quotas managed to really get in my way. Keep this in mind while thinking about using it. You may also try Amazon&#8217;s cloud or CloudForce from SalesForce etc&#8230; They all do offer a quite less restrictive enviroment.</li>
<li>If you&#8217;re interested, deployment does take about 5-7 minutes before the new version is visible on the web &#8211; so don&#8217;t panic if you&#8217;re still seeing the old version after deploying the new one.</li>
<li>My opinion about GAE&#8230;? <span style="text-size: xx-small;">(semi serious ;-))</span></li>
</ol>
<blockquote><p><em><strong>&#8220;Screw you clouds, I&#8217;m going /home!&#8221;</strong></em><br />
<span style="text-size: xx-small;">(<a href="http://www.youtube.com/watch?v=7oH5Qc2zTrs&amp;feature=related" onclick="urchinTracker('/outgoing/www.youtube.com/watch?v=7oH5Qc2zTrs_amp_feature=related&amp;referer=');">intended southpark pun</a>)</span><em><strong><br />
</strong></em></p></blockquote>
<p>I&#8217;ll finish this project using my ol&#8217; pal, <strong>Tomcat6</strong> which I&#8217;ve already got running for <a href="http://netbeans.edu.pl" onclick="urchinTracker('/outgoing/netbeans.edu.pl?referer=');">netbeans.edu.pl</a> (but that was an grails app).</p>
<p>I&#8217;ve also decided to use Spring, which I didn&#8217;t really need on appengine &#8211; as the only thing I was doing was so small that all the logic was around 10 lines in the servlets&#8230; But if using hibernate and all the other &#8220;real&#8221; JEE stuff, I felt I&#8217;d need to &#8220;do this right&#8221; so I&#8217;ve decided for Spring 3 and Maven2&#8230; I&#8217;ll try to build this project from gradle soon too!</p>
<p>ALSO! If interested in an more experienced programmers view on appengine (I&#8217;m still a novice), go and read <a href="http://art-of-software.blogspot.com/2010/04/goole-application-engine.html" onclick="urchinTracker('/outgoing/art-of-software.blogspot.com/2010/04/goole-application-engine.html?referer=');">this blog post about GAE on Sławek Sobótkas blog.</a> All in all we seem to agree that the limitations can be an pain in the a&#8230; ;-)</p>
<p>The source for the appengine version is on my github account. I&#8217;m porting it to an plain old tomcat environment and will post this version there too when it&#8217;s ready to run (<strong>tomcat deployment </strong>is somehow hell with such apps for me&#8230; Any tips are really welcome :-))</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/coding/727/ip2cntry-ex-appengine-app-mainly-jax-rs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GeeCON 2010 &#8211; Review</title>
		<link>http://www.blog.project13.pl/index.php/fun/614/geecon-2010-review/</link>
		<comments>http://www.blog.project13.pl/index.php/fun/614/geecon-2010-review/#comments</comments>
		<pubDate>Mon, 17 May 2010 15:54:17 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[geecon]]></category>
		<category><![CDATA[gpars]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jpa]]></category>
		<category><![CDATA[JUG]]></category>
		<category><![CDATA[meeting]]></category>
		<category><![CDATA[polishjug]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=614</guid>
		<description><![CDATA[So the long awaited GeeCON 2010 has come to an end yesterday. Of course I was there, and had quite an amazing time there yet again. Here&#8217;s, as usually, a small review/roundup of al the three days GeeCON lasted. It&#8217;s been really fun, as I was not only attending all the sessions but hanging around [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" title="GeeCON 2010" src="http://2010.geecon.org/images/menu/logo_haslo.png" alt="geecon 2010 in Poznań" width="206" height="85" /></p>
<p>So the long awaited GeeCON 2010 has come to an end yesterday. Of course I was there, and had quite an amazing time there yet again. Here&#8217;s, as usually, a small review/roundup of al the three days GeeCON lasted. It&#8217;s been really fun, as I was not only attending all the sessions but hanging around with some of the speakers &#8211; that was the most fun and interesting part I think.</p>
<h2>Day 0 &#8211; VeryBerry</h2>
<p>After an long 8hour trip by train, we (I was with two friends this time) finally arrived in Poznań. We stayed at the<a href="http://www.very-berry.pl/" onclick="urchinTracker('/outgoing/www.very-berry.pl/?referer=');"> VeryBerry</a> hostel and I&#8217;d really like to recomend it to anyone who&#8217;d like to stay in Poznań, the prices are low but the service is top notch and the rooms really new and neat :-) After some minor coding, we went to sleep and got read for&#8230;</p>
<h2>Day 1 &#8211; GeeCON University: Gradle Training &amp; JUGs @ Poznań</h2>
<h3><img class="alignright" title="Gradle Hans Dockter" src="http://lh6.ggpht.com/_QYvjrzcDZMc/S-t3VAQCjeI/AAAAAAAAAXM/Pxh07KtSgb4/s640/IMG_9321.jpg" alt="" width="120" />Gradle Training with <a href="http://2010.geecon.org/speakerdetails/30" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/30?referer=');">Hans Dockter</a></h3>
<p>I was quite interested in Gradle since I&#8217;ve seen it in action at SFI (JavaCamp #3 had the same presentation) so I was really happy to be &#8220;trained&#8221; on it by Gradle inc CEO &#8211; Hans Dockter. Apparently they are using it a little (main stuff is still in maven) at SoftwareMind. The training sadly didn&#8217;t include as much coding as I&#8217;d wish it would, but as Hans said, there&#8217;s too much of us (it was the most popular training) and we had 1 day instead of 2 which usually this training would last. The topics where well distrubuted and now all trainees have a really good basic knowlage to start out with gradle. I&#8217;m hoping to do this in my soon projects, some ant task usage from within Gradle will be required to build GWT/Vaadin stuff, but hey &#8211; the integration is really awesome.</p>
<p>Another fun part was getting home from the University (it&#8217;s really awesome by the way) as we took one cab with Hans Dockter and Oliver Gierke (who talked about his Hades project on the 2nd day). We chatted a little in German and dropped them of at their Hotel. Next stop&#8230; JUGs meeting~!</p>
<h3>JUGs @ Poznań <a href="http://www.jug.poznan.pl/2010/05/spotkanie-poznan-jug-jugsgeecon-12-05-2010/" onclick="urchinTracker('/outgoing/www.jug.poznan.pl/2010/05/spotkanie-poznan-jug-jugsgeecon-12-05-2010/?referer=');">(more info)</a></h3>
<p>This was an short (2h) meeting of the PolishJUG and PoznańJUG. Here we met the rest of my PolishJUG pals, such as Marcin Gadamer and Miroslav Kopecky. And also <a href="http://blogs.sun.com/geertjan/entry/geecon" onclick="urchinTracker('/outgoing/blogs.sun.com/geertjan/entry/geecon?referer=');">Geertjan from NetBeans</a> as he was presenting NBPlatform to the JUGs. It was a quite fun session as there was both <a href="http://2010.geecon.org/speakerdetails/13" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/13?referer=');">Chris Aniszyk</a> from Eclipse (and also an OSGi expert) and <a href="http://blogs.sun.com/geertjan/entry/geecon" onclick="urchinTracker('/outgoing/blogs.sun.com/geertjan/entry/geecon?referer=');">Geertjan Wielenga </a>with NetBeans Platform &#8211; both of which are nice platforms to develop on. The final talk was by <a href="http://2010.geecon.org/speakerdetails/1" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/1?referer=');">Ed Burns</a> in which he presented how the UI enviroment was evolving during the last years and how desktop vs web is now batteling for the users attention. All three would eventually present their talks at the first day of GeeCON &#8211; Geertjan dropped in as <a href="http://2010.geecon.org/speakerdetails/32" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/32?referer=');">Ikai Lan</a> replacement as he got <a href="http://twitter.com/ikai/status/13917092508" onclick="urchinTracker('/outgoing/twitter.com/ikai/status/13917092508?referer=');">really sick</a> and couldn&#8217;t do his speech (in case you&#8217;re wondering why he&#8217;s not listed in the speakers section).</p>
<p>Later we went to a nice Pub called Fuego where we had some interesting conversations with all the speakers and members the Polish and Poznań JUGs&#8230; Let&#8217;s move on to day 1, shall we..?</p>
<h2>Day 2 &#8211; GeeCON &amp; Geeky Pool Party</h2>
<h3><a href="http://2010.geecon.org/speakerdetails/41" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/41?referer=');"><img class="alignright" title="Fitzborn" src="http://lh4.ggpht.com/_QYvjrzcDZMc/S-vOKB2kj9I/AAAAAAAAAaI/vPqGq_DTnok/s640/IMG_1013.jpg" alt="" width="120" />Thorbiörn Fritzon</a><br />
The Future of Java<a href="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_1013.jpg"><img class="alignright size-medium wp-image-662" title="Thorbiorn Fritzon" src="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_1013-200x300.jpg" alt="" height="200" /></a></h3>
<p>The first (and also sponsored ;-)) presentation was done really professional and was mostly about assuring all present programmers that oracle does care about the java community and will continue (even more than sun) to evolve java. Well, this might me be true, but the presentation, while really amazing from the visual side, didn&#8217;t really involve more facts than the statement about Java Oracle has released a while ago.</p>
<h3><a href="http://2010.geecon.org/speakerdetails/11" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/11?referer=');">Holly Cummins</a><br />
Apache Aries: Enterprise OSGi in Action<a href="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_1107.jpg"><img class="alignright size-medium wp-image-661" title="holly cummins" src="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_1107-200x300.jpg" alt="" height="200" /></a></h3>
<p>I hoped to really grasp the whole OSGi concept after this presentation and partially I did. Holly did kind of introduce OSGi to us and tried to show it in action &#8211; which sadly didn&#8217;t go to well (loosing the war you need to deploy can be quite an problem&#8230; ;-)). One thing that Oliver didn&#8217;t agree on is that she said that Class loading is the best thing about OSGi, yet as <a href="http://twitter.com/olivergierke/status/13903130095" onclick="urchinTracker('/outgoing/twitter.com/olivergierke/status/13903130095?referer=');">Oliver and some others tweeted</a> &#8211; <a href="http://twitter.com/njbartlett/status/13905076207" onclick="urchinTracker('/outgoing/twitter.com/njbartlett/status/13905076207?referer=');">it&#8217;s just an enabeler for Services to exist</a>.</p>
<h3><a href="http://2010.geecon.org/speakerdetails/25" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/25?referer=');"><img class="alignright" title="Craig L Russell" src="http://lh6.ggpht.com/_QYvjrzcDZMc/S-vleQs1_4I/AAAAAAAAAa0/grytFtg-L8c/s640/IMG_1414.jpg" alt="" width="120" />Craig L Russell</a><br />
Easy to Use Highly Available Java Database  Access<a href="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_1414.jpg"><img class="alignright size-medium wp-image-660" title="Craig L Russel" src="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_1414-200x300.jpg" alt="" height="200" /></a></h3>
<p>This was a presentation about the MySQL&#8217;s <strong>Cluster storage engine</strong>. It was interesting to see how such technologies are in fact used from the code &#8211; it&#8217;s quite easy actually &#8211; almost like using an normal MySQL instance. There are some limitations of course &#8211; as the lack of relations etc. but if you&#8217;d need HA and Fault Tolerance it&#8217;s definitely one way you could go.</p>
<p>Some of the talk was about ClusterJ which is an slightly more advanced way to interact with your Cluster from Java&#8230; <a href="http://dev.mysql.com/doc/ndbapi/en/mccj-using-clusterj.html" onclick="urchinTracker('/outgoing/dev.mysql.com/doc/ndbapi/en/mccj-using-clusterj.html?referer=');">More about it can be read here</a></p>
<h3><a href="http://2010.geecon.org/speakerdetails/39" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/39?referer=');">Christian Tzolov<br />
</a>Rapid Server Side Java Development Using  Spring Roo</h3>
<p>Though I didn&#8217;t attend this one, I included it in this review in order to say this: Roo ownz (any command line tool that really helps at dev time ownz) :-) I&#8217;ve seen some of it in action some time ago, and it&#8217;s really helping while developing what you&#8217;d call &#8220;plain java apps&#8221;, without the goodness of Grails generate stuff&#8230; If you still haven&#8217;t seen it in action: <a href="http://www.springsource.org/roo" onclick="urchinTracker('/outgoing/www.springsource.org/roo?referer=');">take a look</a>, its definitely worth it. (It&#8217;s an <strong>development time only tool </strong>that like the grails command line app, can really speed up your development time with setting up basic Domain Objects, Persistence etc&#8230;)</p>
<h3><a href="http://2010.geecon.org/speakerdetails/12" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/12?referer=');">Eugene Ciurana</a><br />
The High Availability Non-Stop,  Fault-Tolerant Services Tutorial<a href="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_1627.jpg"><img class="alignright size-medium wp-image-653" title="eugene" src="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_1627-300x200.jpg" alt="" width="200" /></a></h3>
<p><strong>A very good talk about scalability and availability.</strong> Eugene explained to us what the typical bottlenecks could be and how we can cope with them, by scaling <strong>up </strong>or <strong>out</strong> &#8211; (at last someone clearly defined those two to me). Some of his real live examples where really interesting as one company that switched to an cluster to store their data and not OracleDB what would cost them A LOT&#8230; All in all, it was quite educational but sadly &#8211; it&#8217;s something I won&#8217;t be seeing in my upcoming years as &#8220;novice developer&#8221;.</p>
<h3><a href="http://2010.geecon.org/speakerdetails/1" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/1?referer=');">Ed Burns<br />
</a>JSF 2.0, Myth and Reality<a href="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_1865.jpg"><img class="alignright size-medium wp-image-657" title="ed burns" src="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_1865-200x300.jpg" alt="" width="150" /></a><img class="alignright" title="Ed Burns" src="http://lh4.ggpht.com/_QYvjrzcDZMc/S-wONKHz2JI/AAAAAAAAAdE/hVt9BwTTcuA/s640/IMG_1865.jpg" alt="" width="120" /></h3>
<p>As Ed is one of co-spec lead for the JSF 2.0 (and also &#8220;worked on a wide  variety of client and server side web technologies since 1994, including  NCSA Mosaic, Mozilla, the Sun Java Plugin, Jakarta Tomcat and, most  recently JavaServer Faces.&#8221;) we were all really interested in his talk. He addmited what they did wrong with JSF 1.x and showed how most of the problems where adressed in the 2.0 release. Is was a quite nice talk, but sadly (and with some maven problems ;-))</p>
<h3><a href="http://2010.geecon.org/speakerdetails/8" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/8?referer=');">Matthias Wessendorf<br />
</a>Practical Comet and JSF</h3>
<p>I&#8217;ve been really interested in ServerSidePush for a long time, so this was an really fun presentation to watch. There were some implementations and Java Libraries shown. If interested, take a look at <a href="https://atmosphere.dev.java.net/" onclick="urchinTracker('/outgoing/atmosphere.dev.java.net/?referer=');">Atmosphere</a> on java.net or the <a href="http://martin.ankerl.com/2007/08/21/ajax-dojo-comet-tutorial/" onclick="urchinTracker('/outgoing/martin.ankerl.com/2007/08/21/ajax-dojo-comet-tutorial/?referer=');">Dojo implementation</a> which I&#8217;ve been reading about lately. (<a href="http://www.ibm.com/developerworks/web/library/wa-cometjava/index.html" onclick="urchinTracker('/outgoing/www.ibm.com/developerworks/web/library/wa-cometjava/index.html?referer=');">another nice link</a>) All in all, it&#8217;s not quite there yet, and will sometimes have to fall back to polling. Hopefully websockets from HTML5 could be a nice thing to use comet in all the future browsers.</p>
<h3><a href="http://2010.geecon.org/speakerdetails/18" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/18?referer=');">Vaclav Pech<br />
</a>Get &#8216;em before they get you</h3>
<p><a href="http://blogs.sun.com/geertjan/entry/geecon" onclick="urchinTracker('/outgoing/blogs.sun.com/geertjan/entry/geecon?referer=');">Geertjan</a> introduced me to <a href="http://www.jroller.com/vaclav/" onclick="urchinTracker('/outgoing/www.jroller.com/vaclav/?referer=');">Vaclav Pech</a> sometime during GeeCON and also I&#8217;ve been following him on twiiter quite for a while, and I must say the stuff he coded is really impressive &#8211; and all his presentations were well prepared and fun :-) That said, let&#8217;s move on to this particular session.<a href="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_2053.jpg"><img class="alignright size-medium wp-image-695" title="IMG_2053" src="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_2053-300x200.jpg" alt="" width="200" /></a></p>
<p>A sponsored talk, but nonetheless quite interesting, as Vaclav showed us how to even better utilize all the features that IntelliJ IDEA has. Most of the tools where known to me, but some where new or interesting (it&#8217;s quite simple to write your own inspections btw!) The parallel session was Ed Burns with his &#8220;Rockstar Programmer&#8221; book-talk, Vaclav noticed that Ed&#8217;s talk probably has the people who need to become such programmers, while this one has people who already are&#8230; ;-) Following that idea, Vaclav went bughunting with us and all the various IDEA tools &#8211; it was a nice presentation, with a good link between the audience and him :-)</p>
<h3>Geeky Pool Party</h3>
<p style="text-align: center;"><img class="aligncenter" title="Ed Burns, Eugene Ciurana, Craig L Russell" src="http://lh6.ggpht.com/_QYvjrzcDZMc/S-05vafvtNI/AAAAAAAAAgQ/gqmdKVdmr4I/s912/IMG_2086.jpg" alt="Ed Burns, Eugene Ciurana, Craig L Russell" width="400" /></p>
<p style="text-align: left;"><img class="alignright" title="GeeCON Pool Party" src="http://lh3.ggpht.com/_QYvjrzcDZMc/S-054OHFFPI/AAAAAAAAAgc/Nzu0q6pA-J8/s912/IMG_2127.jpg" alt="" width="200" />In the evening all Geeks where invited to the Black Pool (Pool Club) where one had an occasion to talk with fellow developers and speakers. We had a nice talk with James Williams &#8211; not only (but mostly ;-)) about development but also how education works in Poland etc etc&#8230; Later I joined the GeeCON and Sun teams at the Pool and played a little with Łukasz (not sure of the name, sorry!?) who recognized me as the &#8220;guy from JavaCamps with <acronym title="The Guy from the RedHat Logo">Shadowman</acronym> on the laptop&#8221; :-) //That said, Shadowman FTW! :-)</p>
<h2>Day 3 &#8211; GeeCON &amp; GeekTrain back to Cracow</h2>
<h3><a href="http://2010.geecon.org/speakerdetails/16" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/16?referer=');">Oliver Gierke</a><br />
Easing JPA DAO development with Hades<a href="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_2266.jpg"><img class="alignright size-medium wp-image-651" title="Oliver Gierke, spring source" src="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_2266-200x300.jpg" alt="" width="150" /></a></h3>
<p>Hades is an really nice way to speed up your DAO development, read more about it here: <a href="http://redmine.synyx.org/projects/show/hades" onclick="urchinTracker('/outgoing/redmine.synyx.org/projects/show/hades?referer=');">Synyx Hades</a>. I&#8217;ve bee riding a cab with Oliver before and already heard how good of a programmer he seems to be, the presentation just confirmed this. Hades is really well thought out and intuitive to use. Most of the time, <strong>all you have to do is write an DAO Interface</strong>, that you then use to access your data&#8230; Yeah, just an interface &#8211; no implementation needed &#8211; all the implementing is done by hades. It looks at the interface and tries to guess what an method should be doing, most common prefixes as findBySomething or findAll or other get&#8217;s are supported and generic. When you need an custom implementation, you can easily do this as well, and it&#8217;s possible to reuse named queries&#8230; Really nice, and the upcomming version will be JPA2.0 compatible :-) Big kudos to the Hades team&#8230;</p>
<p>The sources used in the presentation can be found on github: <a href="http://github.com/olivergierke/hades-geecon" onclick="urchinTracker('/outgoing/github.com/olivergierke/hades-geecon?referer=');">http://github.com/olivergierke/hades-geecon</a></p>
<h3><a href="http://2010.geecon.org/speakerdetails/18" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/18?referer=');">Vaclav Pech</a><br />
Unleash your processor(s)<a href="http://www.blog.project13.pl/wp-content/uploads/2010/05/4610245556_ea01d4844b_o.jpg"><img class="alignright size-medium wp-image-625" title="4610245556_ea01d4844b_o" src="http://www.blog.project13.pl/wp-content/uploads/2010/05/4610245556_ea01d4844b_o-300x200.jpg" alt="" width="200" /></a></h3>
<p>A really nice intro into paralelisation &#8211; NOT multi threading. Vaclav presented such abstractions as Actors, Agents, Fork/Join and Dataflows&#8230; Of course most of this was shown in Groovy as Vaclav is involved in the development of <a href="http://gpars.codehaus.org/Dataflow" onclick="urchinTracker('/outgoing/gpars.codehaus.org/Dataflow?referer=');">GPars</a>. It&#8217;s been quite insightful and now I also know what this AKKA thing is that some people are so fascinated about. Also some Scala and Cloujure examples where really fun to investigate &#8211; scala in fact is in many ways so very much elegant and ideal for such sollutions &#8211; though Groovy GPars also has me convinced. The <em>withPool 4 {&#8230;}</em> is a nice feat for example, and thats just the tip of the iceberg.</p>
<h3><a href="http://2010.geecon.org/speakerdetails/7" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/7?referer=');">Joonas Lehtinen</a><br />
Vaadin &#8211; Rich <img class="alignright" title="Audience" src="http://lh6.ggpht.com/_QYvjrzcDZMc/S-wQnLdBuKI/AAAAAAAAAdM/EAbnpkT5Emk/s912/IMG_1877.jpg" alt="" width="200" />Web Applications in  Server-side Java without Plug-ins or JavaScript</h3>
<p>I&#8217;ve been trying out vaadin lately and it&#8217;s quite nice. Above all, it&#8217;s &#8220;a GWT that looks good&#8221;. The presentation was lead quite profesionally but all in all didn&#8217;t really show any &#8220;meat&#8221; od the framework. One thing I&#8217;m concerned about is the (as Hans Dockter likes to call it) &#8220;<strong>Frameworkitis</strong>&#8220;, I&#8217;m kind of afraid that it might be hard to force Vaadin to do things that the projectant&#8217;s didn&#8217;t think about&#8230; I&#8217;m hoping to continue to code my simple rss reader with an vaadin front end &#8211; and also I&#8217;d like to add some simple JAX-RS powered REST access to it&#8230;</p>
<h3><a href="http://2010.geecon.org/speakerdetails/24" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/24?referer=');">James Williams</a><br />
Game Programming with Groovy</h3>
<p>We&#8217;ve had a nice talk with James during day1&#8242;s pool party. He&#8217;s been using Grails lately and is working in the US. His talk was ment to be a more fun/geeky one, and showed simple groovy apps/games, one involving JavaLibrary usage to access the Wiimote sensors. Thus, the code was mostly &#8220;looking like java&#8221; and not much groovyish was in there.</p>
<h3><a href="http://2010.geecon.org/speakerdetails/15" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/15?referer=');">Charles Nutter</a><br />
Duby: a Fast, Ruby-like Language for the JVM</h3>
<p>I just the last part of this talk, as James didn&#8217;t take all the time he had so I went over to look at &#8220;this Duby thing&#8221;. The best quote I&#8217;ve head from GeeCON comes from this talk, it went something like this:</p>
<blockquote><p>Obviously I&#8217;ve been looking at the JVMs source a whole lot. [...] So what&#8217;s the neatest feature we all would like in Java&#8230;? MultiLineStrings, for christ&#8217;s sake!!! [...] <strong>And I&#8217;ve been looking thought the Java&#8217;s sources and there is one single damn if statement, that basically says: &#8220;If string, dont allow multiple lines&#8221;. And I was like &#8220;&#8230; You ****!!! For all those years&#8230;!! Argh!!!&#8221;</strong></p></blockquote>
<h3><a href="http://2010.geecon.org/speakerdetails/18" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/18?referer=');">Vaclav Pech</a><br />
Groovy actors and concurrent dataflow with  GPars</h3>
<p>It was basically the same (well, with more code examples) presentation as the one I&#8217;ve seen before, so I switched and went to see Adam Warski and the <strong>Checkers Framework</strong>.</p>
<p>I also had a small talk after this with Łukasz who recognized me from  the JavaCamps and has been presenting <a href="../index.php/coding/327/javacamp-1/">on  the 1st JC on his Swing/JNLP usage at his work</a>. Sadly I wasn&#8217;t into Griffon since then so I couldn&#8217;t really give him more tips about it more than that it looks really promising from looking at the examples.</p>
<h3><a href="http://2010.geecon.org/speakerdetails/22" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/22?referer=');">Adam Warski</a><br />
Static analysis using JSR308 annotations</h3>
<p>The <strong>checkers framework</strong> is a new thing to Java and it basically allows to annotate Types, in a current point in time. Your method can require an <strong>@Hashed String</strong> and would not compile if passing it an normal <strong>String</strong> it opens up quite some interesting interactions, some of which Adam has implemented in his <a href="http://www.warski.org/typestate.html" onclick="urchinTracker('/outgoing/www.warski.org/typestate.html?referer=');">TypeState checker</a> which is checking the status of collections if it is safe to read from some place in the code or not &#8211; by setting the collections @annotation to certain States (like &#8220;you haven&#8217;t called isReady, do please dont read from me!&#8221;). It&#8217;s an interesting way to detect errors in your code before execution time.</p>
<h3>Bruno Bossola<br />
Object Oriented for nonbelievers<a href="http://www.blog.project13.pl/wp-content/uploads/2010/05/DSC006981.jpg"><img class="alignright size-medium wp-image-659" title="DSC00698" src="http://www.blog.project13.pl/wp-content/uploads/2010/05/DSC006981-300x169.jpg" alt="" width="200" /></a></h3>
<p>One of the most fun talks on GeeCON. It was about how we somehow strayed away from what OO used to be, ObjectOriented Design. Nowadays people start out not by building an ObjectModel of their Domain but look for frameworks to use&#8230; His talk was there to bring us back to the basics what OO should be about and showed some patterns in use (simple, yet effective). One particulary fun quote from this talk is the last sentence:</p>
<blockquote><p>Why am I calling this talk &#8220;for nonbelievers&#8221;? Well&#8230; You all agree with me that OODesign is important, but tommorrow you&#8217;ll go back to choosing from all those fun frameworks anyways! ;-)</p></blockquote>
<h3><a href="http://2010.geecon.org/speakerdetails/35" onclick="urchinTracker('/outgoing/2010.geecon.org/speakerdetails/35?referer=');">Mark Struberg</a><br />
JSR-299 Context and Dependency Injection</h3>
<p>An very important topic as DI gonna be standarized now&#8230; Sadly Mark&#8217;s voice was quite monotone and we were all powered out at the time&#8230; The presentation as such, was very well prepared and later there was some source shown &#8211; that&#8217;s how I like it.</p>
<h3>End of GeeCON 2010</h3>
<p><a href="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_0780.jpg"><img class="aligncenter size-medium wp-image-626" title="IMG_0780" src="http://www.blog.project13.pl/wp-content/uploads/2010/05/IMG_0780-200x300.jpg" alt="" width="200" height="300" /></a></p>
<p>After some &#8220;bye bye&#8221; with crew members and speakers, we went to our hostel and back to Cracow &#8211; it was a fun event, hope to come back next year. What would I like to be different? Well, more awesome speakers &#8211; Scott Davis would be really cool, I&#8217;ve seen his talks on JDD09 and they really changed how I think and code. He opened my mind to &#8220;Java the Platform&#8221; and Groovy and all the other awesome languages. Such speakers would be more than welcome anytime! Oh, and more <strong>&#8220;hands on&#8221;</strong>!</p>
<h3>GeekTrain back to Cracow, and an surprise meeting :-)</h3>
<p>In the train we met some fellow programmer who recognized our GeeCON stuff and most of the trip we where talking about the conference and our studies/work&#8230; It was a fun ending for a fun conference&#8230; ;-) See you next year!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/fun/614/geecon-2010-review/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>def recent = [python, grails, netbeans platform, hibernate, spring, vaadin, google guava]</title>
		<link>http://www.blog.project13.pl/index.php/project13/606/def-recent-python-grails-netbeans-platform-hibernate-spring-vaadin-google-guava/</link>
		<comments>http://www.blog.project13.pl/index.php/project13/606/def-recent-python-grails-netbeans-platform-hibernate-spring-vaadin-google-guava/#comments</comments>
		<pubDate>Sat, 08 May 2010 20:24:15 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Project13]]></category>
		<category><![CDATA[agh]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[google guava]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[netbeans platform]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[vaadin]]></category>
		<category><![CDATA[webmaster]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=606</guid>
		<description><![CDATA[Just an quick summary of what I&#8217;ve been coding lately: http://github.com/barthez/mysql.integra.dbfiller &#8211; an simple Python app that is able to generate SQL code with inserts that we need to fill up our database for load testing. It&#8217;s doing an simple simulation of people checking in and out from various activities at some job and calculates [...]]]></description>
			<content:encoded><![CDATA[<p>Just an quick summary of what I&#8217;ve been coding lately:</p>
<p><a href="http://github.com/barthez/mysql.integra.dbfiller" onclick="urchinTracker('/outgoing/github.com/barthez/mysql.integra.dbfiller?referer=');">http://github.com/barthez/mysql.integra.dbfiller</a> &#8211; an<strong> </strong>simple Python app that is able to generate SQL code with inserts that we need to fill up our database for load testing. It&#8217;s doing an simple simulation of people checking in and out from various activities at some job and calculates when who should cone and do their shift&#8230; My friend Bartek is by far more into python, and has coded most of this app (just check the impact charts ;-)), so much of the kudos for this goes to him.</p>
<p>Noticed an <strong>gigantic hardware problem </strong>our student groups server&#8230; Some didn&#8217;t believe me in the beginning&#8230; This week we went to see how much of the harddrives &#8220;went bye bye&#8221; in real life, as there was nothing that could be done remotely. I&#8217;ve been battling with the read-only / filesystem some evenings before, and concluded that it&#8217;s not just a small hdd failure &#8211; it had to be something BIG&#8230; And boy, BIG it was&#8230; Something between all the drives and the rest of the server seems to have died. My best guess is the SCSI controller&#8230; It&#8217;s not really worth it to replace the parts as the server was very very old, well, let&#8217;s hope we get some (anything) machine to finally run our tests on. <strong><a href="http://www.youtube.com/watch?v=htKY2oD85rs" onclick="urchinTracker('/outgoing/www.youtube.com/watch?v=htKY2oD85rs&amp;referer=');">SCSI Controllers on fire&#8230;</a></strong></p>
<p><a href="http://www.netbeans.edu.pl" onclick="urchinTracker('/outgoing/www.netbeans.edu.pl?referer=');">netbeans.edu.pl</a> &#8211; was written by me in <strong>Grails</strong>. I have yet to release the sources, but will do so for sure &#8211; after I polish them a little, because they&#8217;ve been written under immense time pressure etc. It&#8217;s a quite nice framework, but <strong>obviously it&#8217;s an overkill for such an simple site</strong> as netbeans.edu.pl&#8230; It was quite fun to write <strong>my own taglib for the twitter integration</strong> and also I&#8217;ve also used the<strong> GoogleData API</strong> to serve images directly from Picasa Web Albums&#8230; Of course there are PHP lib&#8217;s that could do this, but it just seemed &#8220;nicer&#8221; to me to write this in Groovy&#8230;</p>
<p>After the NBPTraining me and two friends started developing an simple <a href="http://github.com/ktoso/TravelingSalesman-NBP" onclick="urchinTracker('/outgoing/github.com/ktoso/TravelingSalesman-NBP?referer=');"><strong>Traveling Salesman Visualization</strong> using the <strong>NetBeans Platform</strong> &#8211; solving the problem with<strong> Genetic Algorithms</strong></a>. We&#8217;ve decided to use prefuse for the graph visualization stuff&#8230; Let&#8217;s hope it was a good decision &#8211; of course I know that it&#8217;s not being developed since a long time, and the API isn&#8217;t even Generic, but it looks quite nice and the workflow with grapghs is really neat &#8211; the &#8220;actions&#8221; stuff&#8230; I&#8217;ll be trying to write our own renderer for this program so keep your fingers crossed &#8211; hope it&#8217;s turn out well. Sadly, were presenting an pre-alpha of this program on Wednesday and I won&#8217;t be able to come to the uni as at that time I&#8217;ll be taking the Gradle Training at GeeCON. :-)</p>
<p>Inspired by both <a href="http://koziolekweb.pl/2010/03/28/songs-of-vaadin/" onclick="urchinTracker('/outgoing/koziolekweb.pl/2010/03/28/songs-of-vaadin/?referer=');">koziołek&#8217;</a>s post about <a href="http://vaadin.com/" onclick="urchinTracker('/outgoing/vaadin.com/?referer=');">vaadin</a> + spring and the nice tutorial that <a href="http://darekzon.com/" onclick="urchinTracker('/outgoing/darekzon.com/?referer=');">Darek Zoń has been writing lately</a> I decided to take another look at Vaadin. I&#8217;d describe it best as&#8230; <em>&#8220;GWT that looks and feels good right from the start&#8221;&#8230; ;-)</em> The sources of what might become an simple rss reader app can be found on github: <strong><a href="http://github.com/ktoso/RssR" onclick="urchinTracker('/outgoing/github.com/ktoso/RssR?referer=');">RssR &#8211; vaadin rss reader</a></strong>. I&#8217;ve had some experience with GWT while trying to create an online <a href="http://github.com/ktoso/gwt-crossword" onclick="urchinTracker('/outgoing/github.com/ktoso/gwt-crossword?referer=');">crossword solving</a> system, but I have to admit &#8211; it&#8217;s not really near it&#8217;s final stages&#8230; And I somehow dont have the willpower to go back to it at this moment &#8211; while starting out with it I hoped that I could easily just drop my existing crossword stuff into GWT and add some simple frontend &#8211; turned out that this isn&#8217;t so easy. Ah well. Vaadin on the other side looks much nicer for some &#8220;real, even if generic, webapp&#8221;, so I chose to try implementing an simple rssreader based on it. Loging in and basic hibernate setup (not finished yet) is already in place. Oh, and I&#8217;m also <strong>using maven on this one</strong>. If you&#8217;re interested in it, or are just abour ti start an Vaadin project, <a href="http://github.com/ktoso/RssR" onclick="urchinTracker('/outgoing/github.com/ktoso/RssR?referer=');">check out the sources</a> and maby they&#8217;ll help you out figuring out what all this is about :-) It&#8217;s able to run on jetty by calling <strong>mvn jetty:run-war</strong> :-) <em>(lol just found an google code project about exactly the same stuff only written in pure spring <a href="http://code.google.com/p/rsser/source/browse/trunk/rsser/src/main/resources/messages.properties" onclick="urchinTracker('/outgoing/code.google.com/p/rsser/source/browse/trunk/rsser/src/main/resources/messages.properties?referer=');">http://code.google.com/p/rsser</a> Kudos to the coder! :-))</em></p>
<p>Oh and just an minor mention about <a href="http://code.google.com/p/guava-libraries" onclick="urchinTracker('/outgoing/code.google.com/p/guava-libraries?referer=');"><strong>Google Guava</strong></a>, I&#8217;ve been looking at it&#8217;s API lately and it&#8217;s quite nice I think. It&#8217;s <strong>not as magic filled as op4j</strong>, but this might be just the good thing about it. As I had to do an presentation to pass an class about presentations at school, I&#8217;ve done this <a href="http://www.slideshare.net/ktoso/guava" onclick="urchinTracker('/outgoing/www.slideshare.net/ktoso/guava?referer=');">super simple presentation about a very basic subset of Guava&#8217;s features</a>. While doing it I&#8217;ve learned how to use the <a href="http://pl.wikipedia.org/wiki/Beamer_(LaTeX)" onclick="urchinTracker('/outgoing/pl.wikipedia.org/wiki/Beamer_LaTeX?referer=');">LaTeX Beamer class,</a> and yup, it&#8217;s really very nice indeed! Notice the coloured Java syntax? Nice trick, ain&#8217;t it :-)</p>
<p>Oh, and while doing all this I also created an very simple website <a href="http://www.kemerling.pl/" onclick="urchinTracker('/outgoing/www.kemerling.pl/?referer=');">www.kemerling.pl</a>. The graphics where done by another friend of mine. It was quite hell to get all this to display properly (the while part, with bazylion transparent layers&#8230; ;-)), but I hope it looks all right :-)</p>
<p>Hmm&#8230; back to coding! Gotta improve the NBP Traveling Salesman now :-)</p>
<p>PS: It seems that this blog has been added to <a href="http://www.dworld.pl/blogEntry/blog/113" onclick="urchinTracker('/outgoing/www.dworld.pl/blogEntry/blog/113?referer=');">www.dworld.pl/blogEntry/blog/113</a>! Whoa that&#8217;s really really awesome and I&#8217;m really really grateful to be aggregated together with Poland&#8217;s most active Java bloggers :-) I don&#8217;t know whom I should thank for adding me there, so I&#8217;ll thank that the whole community and <a href="http://www.dworld.pl/page/show/Grzegorz_Duda" onclick="urchinTracker('/outgoing/www.dworld.pl/page/show/Grzegorz_Duda?referer=');">Grzegorz Duda</a> as dworlds author :-)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/project13/606/def-recent-python-grails-netbeans-platform-hibernate-spring-vaadin-google-guava/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Spring books ordered for Christmas</title>
		<link>http://www.blog.project13.pl/index.php/coding/334/new-spring-books-ordered-for-christmas/</link>
		<comments>http://www.blog.project13.pl/index.php/coding/334/new-spring-books-ordered-for-christmas/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 22:53:52 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[scjp]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=334</guid>
		<description><![CDATA[Yup, following my recent trend to spend all the money from birthdays and other occasions where I get my hands on some cash on books/meetings/training, for Christmas I ordered two great (and more or less up to date (it&#8217;s about 2.5 and not 1.x as the books that I already have)) books about Java. SCJP [...]]]></description>
			<content:encoded><![CDATA[<p>Yup, following my recent trend to spend all the money from birthdays and other occasions where I get my hands on some cash on books/meetings/training, for Christmas I ordered two great (and more or less up to date (it&#8217;s about 2.5 and not 1.x as the books that I already have)) books about <strong>Java</strong>.</p>
<p><img class="alignleft" src="https://images-na.ssl-images-amazon.com/images/I/5196TMHebqL._SY100_.jpg" alt="" width="78" height="100" /><a href="http://www.amazon.com/gp/product/0071591060/ref=oss_T15_product" onclick="urchinTracker('/outgoing/www.amazon.com/gp/product/0071591060/ref=oss_T15_product?referer=');"><span> SCJP Sun Certified Programmer for Java 6 Exam 310-065</span></a> a so called must have when preparing for the SCJP Exam, which I&#8217;ll be taking in 2010 I hope.</p>
<p><img class="alignright" src="https://images-na.ssl-images-amazon.com/images/I/51jbaHl7McL._SY100_.jpg" alt="" width="76" height="100" />And <a href="http://www.amazon.com/gp/product/1590599799/ref=oss_T15_product" onclick="urchinTracker('/outgoing/www.amazon.com/gp/product/1590599799/ref=oss_T15_product?referer=');"><span> Spring Recipes: A Problem-Solution Approach (Books for Professionals by Professionals)</span></a><span> which  should give me a decent boost when starting out with Spring development &#8211; as that&#8217;s exactly what I&#8217;m right now begining to do.</span><a href="http://www.amazon.com/gp/product/1590599799/ref=oss_T15_product" onclick="urchinTracker('/outgoing/www.amazon.com/gp/product/1590599799/ref=oss_T15_product?referer=');"></a></p>
<p><span>When I get and read them I&#8217;ll share my thoughts on how good (or not) they are&#8230; :-)<br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/coding/334/new-spring-books-ordered-for-christmas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaCamp #1</title>
		<link>http://www.blog.project13.pl/index.php/coding/327/javacamp-1/</link>
		<comments>http://www.blog.project13.pl/index.php/coding/327/javacamp-1/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 18:17:53 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[agh]]></category>
		<category><![CDATA[JavaCamp]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[JUG]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[study]]></category>
		<category><![CDATA[swing]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=327</guid>
		<description><![CDATA[Today another Java User Group Meeting (more info) was held&#8230; This time at my university (AGH &#8211; University of Science and Technology). :-) I wasn&#8217;t there from the beginning as I had some work to do, but I managed to get there after the &#8220;pizza-pause&#8221; and listen to: Miroslav Kopecky, talking about Matlab in Java [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="PJUG" src="http://www.java.pl/banner/pjug_logo.jpg" alt="" width="126" height="157" />Today another <strong>Java User Group</strong> Meeting (<a href="http://www.java.pl/?p=111" onclick="urchinTracker('/outgoing/www.java.pl/?p=111&amp;referer=');">more info</a>) was held&#8230; This time at my university (<a href="http://www.agh.edu.pl/en" onclick="urchinTracker('/outgoing/www.agh.edu.pl/en?referer=');">AGH &#8211; University of Science and Technology</a>). :-)</p>
<p>I wasn&#8217;t there from the beginning as I had some work to do, but I managed to get there after the &#8220;pizza-pause&#8221; and listen to:</p>
<ul>
<li><strong>Miroslav Kopecky</strong>, talking about <strong>Matlab in Java</strong> (in English).</li>
</ul>
<p>It was quite interesting to see how MatLab can be used in Java apps to make complex calculations really simple (well&#8230; let matlab do the for you basically). I like the idea of exporting plots from matlab directly to JavaScript, thus allowing nice WebApps with heavy math behind them (stock analysis etc.). That said, matlab is closed source as you propably know, and this makes it kinda sucky to develop J2SE apps based on it, as the enduser has to buy matlab anyways to use you program. A solution mentioned is getting 1 matlab license, put it on a server ane make your aplication a webapp &#8211; I agree that this is propably the best solution to avoid this &#8220;license hell&#8221; but it&#8217;s sad that there is no other license for endusers of procucts that use matlab as their math engine&#8230; Next up was:</p>
<ul>
<li><strong>Łukasz Czerpak</strong> with the topic: “Swingowa aplikacja rozproszona dystrybuowana poprzez Java Web Start” (technologie: EJB3/JPA, Java Web Start, OpenEJB+Tomcat+Hibernate, Swing Application Framework). <em>(whoa, that&#8217;s long)</em></li>
</ul>
<p>He talked about his real live experience with an (banking) app that they &#8220;ported&#8221; to WebStart using GlassFish and then Tomcat+OpenEJB. A nice fact that I learned from this presentation was about how easy glassfish is. &#8230;and slow and big&#8230; JARs that a user needs to download from JavaWebStart are about 41MB, that&#8217;s a lot &#8211; since the app talked about was like 300KB. Tomcat on the otherhand is both quicker and smaller &#8211; there&#8217;s a little more to configure though &#8211; but I guess thats a small price to pay. Sadly he didn&#8217;t have time to say anything about Griffon which I&#8217;m a little interested in lately. It was quite interesting though&#8230; :-)</p>
<p>All in all, I liked it and will attend the next meeting in January &#8211; hope to be there from the start and not only halfway through as today. ;-)</p>
<p><em>PS: There was a sad ending for this day for me though. As I really didn&#8217;t want to miss even more of this meeting, and so I parked my car where it&#8217;s not allowed in order to save some time. When I came back to my car after the meeting my car&#8217;s wheel was &#8220;locked&#8221; (by the police) and got a ticket for wrong parking&#8230; So the free JavaCamp didn&#8217;t end up being so free for me&#8230; ;-)<br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/coding/327/javacamp-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>12th Śląsk Java User Group Meeting in Gliwice</title>
		<link>http://www.blog.project13.pl/index.php/coding/292/15th-slask-jug-meeting-in-g/</link>
		<comments>http://www.blog.project13.pl/index.php/coding/292/15th-slask-jug-meeting-in-g/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 13:24:10 +0000</pubDate>
		<dc:creator>Ktoso</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[j2ee]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JUG]]></category>
		<category><![CDATA[meeting]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.blog.project13.pl/?p=292</guid>
		<description><![CDATA[This week I went to the &#8220;12th Śląsk Java User Group Meeting&#8221; in Gliwice (12 Spotkanie Śląskiej Grupy Użytkowników Java) (which is like 90min away from my hometown Cracow), but it was really worth the ride! Sadly I got there 30min late, and thus missed the intro but the rest of the presentation was really [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><img class="aligncenter" title="15 spotkanie śląskiej grupy użytkowników javy" src="http://jdn.pl/files/plakat_logo_Marek_Piowczyk%20%281%29.jpg" alt="" width="488" height="342" />This week I went to the &#8220;12th Śląsk Java User Group Meeting&#8221; in <strong>Gliwice</strong> (<strong>12 Spotkanie Śląskiej Grupy Użytkowników Java</strong>) (which is like 90min away from my hometown Cracow), but it was really worth the ride! Sadly I got there 30min late, and thus missed the intro but the rest of the presentation was really interesting and really well prepared (by <strong>Zbyszko Pałka</strong>). The main topic was, as you can guess by the image to the left here, FLEX and how to use it with Java (Spring + Blaze DS + PureMVC).</p>
<p style="text-align: left;">Zbyszek created a simple example application. A simple contacts list, with the frontend done in flex. Simple yet good enough to show off all the basic ideas and interactions in such an application. The best thing about the presentation was that he constantly pointed out what could be done better, how something should or should not be done etc&#8230;</p>
<p style="text-align: left;">All in all using flex as an frontend seems to me just as a javascript/ajax replacement with &#8220;shiny and cool&#8221; effects, not really increasing the value of a product oferall&#8230; Well, I guess being &#8220;shiny and cool&#8221; can be attractive to some clients, or flex could be a v. good solution if our service would rely heavily on media steraming etc&#8230; That&#8217;s the better usecases  I see for flex at this moment I guess. The very big downsides are IMHO the <strong>horrifying amount of code duplication</strong> and relying on strings or other identyficators which we call (events etc) a little out of nowhere &#8211; the strings etc have to be the same in <strong>ActionScript</strong> and <strong>Java</strong>, this makes refactoring an even more delicate process&#8230; Zbyszko also noted that after developing a big app for a long time, the code is very<strong> &#8220;esoteric&#8221;</strong> and <strong>&#8220;magical&#8221;</strong>, and introducing new team members can be really a pain&#8230; That said, neither me, nor some Team Leaders present at this meeting would use this tech after seeing it &#8211; It was very interesting to see real devs criticize some tech they&#8217;ve just seen in action.</p>
<p style="text-align: left;">I hope to be able to go over to Gliwice <strong>every two weeks</strong> to listen/learn something from these <em>real developers</em> :-) Upcomming topics propably will include <strong>JBoss</strong> (I&#8217;d love to learn about this) or <strong>GWT</strong> (less code duplication than here!)&#8230;</p>
<p style="text-align: left;"><em>PS: Next week I&#8217;ll be attending an FLEX meeting sponsored by Adobe at my University &#8211; They&#8217;ll try to show FLEX as some kind of god-like-solution I guess&#8230; The more happy am I that I already was shown what in reality sucks in this technology from a practical java-developer view point&#8230; <strong>;-)</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.project13.pl/index.php/coding/292/15th-slask-jug-meeting-in-g/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

