<?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>Better Code &#187; Java</title>
	<atom:link href="http://bettercode.se/wordpress/category/java/feed" rel="self" type="application/rss+xml" />
	<link>http://bettercode.se/wordpress</link>
	<description>better business</description>
	<lastBuildDate>Tue, 16 Apr 2013 08:30:36 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Reverse Phone Lookup in Google App Engine</title>
		<link>http://bettercode.se/wordpress/503/reverse-phone-lookup-in-google-app-engine</link>
		<comments>http://bettercode.se/wordpress/503/reverse-phone-lookup-in-google-app-engine#comments</comments>
		<pubDate>Sun, 11 Mar 2012 20:26:05 +0000</pubDate>
		<dc:creator>Max Wenzin</dc:creator>
				<category><![CDATA[Git]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://bettercode.se/wordpress/?p=503</guid>
		<description><![CDATA[I wrote a small pet-project this weekend based on Java in Google App Engine. It&#8217;s a single-page web app that helps you use directory services (like white and yellow pages) in different countries. Ever needed to search for people in different countries? Hard to find which directory service to use? Well, this app solves that [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://bettercode.se/wordpress/wp-content/uploads/google-app-engine.png"><img class="alignleft size-full wp-image-504" title="google-app-engine" src="http://bettercode.se/wordpress/wp-content/uploads/google-app-engine.png" alt="" width="250" height="250" /></a>I wrote a small pet-project this weekend based on Java in Google App Engine.</p>
<p>It&#8217;s a single-page web app that helps you use directory services (like white and yellow pages) in different countries. Ever needed to search for people in different countries? Hard to find which directory service to use? Well, this app solves that problem for you by knowing the best services and providing you with a single form to use, regardless of which back-end site will provide you with the search result.</p>
<p>I havn&#8217;t quite named it yet. It started out with the sexy name &#8220;Reverse Phone Lookup&#8221;, but since most sites now allow searching for name or phone in the same field, that name was not really appropriate. It now has the totally generic and boring header: Global Directory Search. Yuck. Oh, well. You can reach the app at the following URL:</p>
<p><a href="http://reverse-phone-lookup.appspot.com/">http://reverse-phone-lookup.appspot.com/<br />
</a></p>
<p><a href="https://github.com/betrcode/ReversePhoneLookup">The source code is available at GitHub</a> if you&#8217;d like to write some request, or contribute!</p>
]]></content:encoded>
			<wfw:commentRss>http://bettercode.se/wordpress/503/reverse-phone-lookup-in-google-app-engine/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unit testing plsql</title>
		<link>http://bettercode.se/wordpress/200/unit-testing-plsql</link>
		<comments>http://bettercode.se/wordpress/200/unit-testing-plsql#comments</comments>
		<pubDate>Sat, 23 Apr 2011 20:30:41 +0000</pubDate>
		<dc:creator>Max Wenzin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://bettercode.se/wordpress/?p=200</guid>
		<description><![CDATA[My situation I currently have an assignment where there is a large PLSQL code base. It&#8217;s been developed actively for about 12 years and works quite well. I am not saying it&#8217;s flawless, but quite mature. There&#8217;s lots of room for improvement and lots of dead code that needs to be removed. Some of the [...]]]></description>
				<content:encoded><![CDATA[<h2>My situation</h2>
<p>I currently have an assignment where there is a large PLSQL code base. It&#8217;s been developed actively for about 12 years and works quite well. I am not saying it&#8217;s flawless, but quite mature. There&#8217;s lots of room for improvement and lots of dead code that needs to be removed.</p>
<p>Some of the plsql is called from the Java DAO layer of a front-end web application, but most of it is used for backoffice functionality. The parts that are accessed from the Java layer are tested through integration tests based on JUnit, but the large part that is only used from the backoffice has no unit test coverage.</p>
<h2>Doing something about it</h2>
<p>I&#8217;ve known about the utPLSQL framework for many years, but never gotten around to actually use it in a Continuous Integration environment. I decided it was time to do something about it and started by adding the installation of utPLSQL to the already in place automated database reinstallation build. The installation part was quite easy, I just dropped the utPLSQL install scripts into our own source control repository and made it part of our db install. Uninstalling utPLSQL was a bit tricker since it creates public synonyms and those are not dropped when the Oracle db user/schema is dropped. (And that&#8217;s how we &#8220;uninstall&#8221; our other schemas normally.) And if I let those public synonyms stay there, I would get errors on the next install. So I simply need to create a small script that dropped those public synonyms as part of the uninstall/install (reinstall <img src='http://bettercode.se/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) process.</p>
<p>After utPLSQL was part of our db installation, I created a couple of sample utPLSQL tests and tried them out. No problems there. I could run them from the SQL prompt without problem. But what I really wanted was to make them part of the build process in Hudson. So I started writing a JUnit test that would wrap the utPLSQL tests and then it would be runnable from Hudson.</p>
<p>After I while it struck me that I was writing something that someone else had probably written already and after a quick google I found the maven-utplsql-plugin. (insert holy graal sound here) Since we use Maven for the builds, this seemed like a perfect match. However, there were some pitfalls.</p>
<h2>Some pitfalls</h2>
<p>The maven-utplsql-plugin is currently not available in any public Maven repository. So, I had to download it and install it add it manually to our local Maven repo. The only problem was that our Maven repo was setup not to accept SNAPSHOT releases, and since we didn&#8217;t want to change that, I had to HACK the source files in the zip file and replace SNAPSHOT with STABLE in order for our Maven repo to accept the new artifact. In fact, this may lead to that I have to do some contributions to the dev team of the maven-utplsql-plugin to get it up to a RELEASE version and maybe even up on a public repository?</p>
<h2>The happy ending</h2>
<p>Finally, I added a new task to our db-reinstall profile in Maven. The new task simply calls the plugin which runs the tests. SUCCESS!</p>
<h2>My sources</h2>
<p>This guy got around to doing this a lot sooner than me: <a href="http://www.theserverlabs.com/blog/2009/05/18/continuous-integration-with-oracle-plsql-utplsql-and-hudson/">http://www.theserverlabs.com/blog/2009/05/18/continuous-integration-with-oracle-plsql-utplsql-and-hudson/</a></p>
<p>Here&#8217;s the Maven plugin for utplsql: <a href="http://code.google.com/p/maven-utplsql-plugin/">http://code.google.com/p/maven-utplsql-plugin/</a></p>
<p>The utPLSQL project: <a href="https://sourceforge.net/projects/utplsql/">https://sourceforge.net/projects/utplsql/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bettercode.se/wordpress/200/unit-testing-plsql/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ehcache Monitor is not free</title>
		<link>http://bettercode.se/wordpress/204/ehcache-monitor-is-not-free</link>
		<comments>http://bettercode.se/wordpress/204/ehcache-monitor-is-not-free#comments</comments>
		<pubDate>Fri, 25 Mar 2011 19:43:22 +0000</pubDate>
		<dc:creator>Max Wenzin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://bettercode.se/wordpress/?p=204</guid>
		<description><![CDATA[We use Ehcache in a software project I am involved in. The open source Ehcache project is licensed under the Apache 2.0 License and can therefore be used without having to pay a license fee. I love it, I think it&#8217;s GREAT. When I first tried Ehcache Monitor, I was happy to see that it [...]]]></description>
				<content:encoded><![CDATA[<p>We use Ehcache in a software project I am involved in. The open source Ehcache project is licensed under the Apache 2.0 License and can therefore be used without having to pay a license fee. I love it, I think it&#8217;s GREAT.</p>
<p>When I first tried Ehcache Monitor, I was happy to see that it solved a lot of our needs when it comes to monitoring and managing our caches across multiple servers in the cluster. However, it comes at a pretty high cost if you want to use it in a production environment. Terracotta do not currently sell it stand-alone, but only as a part of of the commercial versions of Ehcache (DX, EX or FX).</p>
<p>I currently have a dialogue going with a sales rep at Terracotta, and I hope they will start offering the monitor seperately, so that it can be used together with the open source version of Ehcache.</p>
<p><a href="http://ehcache.org/documentation/monitor.html">http://ehcache.org/documentation/monitor.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bettercode.se/wordpress/204/ehcache-monitor-is-not-free/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ehcache Monitor</title>
		<link>http://bettercode.se/wordpress/47/ehcache-monitor</link>
		<comments>http://bettercode.se/wordpress/47/ehcache-monitor#comments</comments>
		<pubDate>Mon, 21 Jun 2010 09:05:19 +0000</pubDate>
		<dc:creator>Max Wenzin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://bettercode.se/wordpress/?p=47</guid>
		<description><![CDATA[Attended a session about caching and scalability with Greg Luck and Jonas Bonér on Friday. Going to try out Ehcache Monitor today! http://ehcache.org/documentation/monitor.html]]></description>
				<content:encoded><![CDATA[<p>Attended a session about caching and scalability with Greg Luck and Jonas Bonér on Friday.</p>
<p>Going to try out Ehcache Monitor today!</p>
<p><a href="http://ehcache.org/documentation/monitor.html">http://ehcache.org/documentation/monitor.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bettercode.se/wordpress/47/ehcache-monitor/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scalability, performance &amp; caching with Greg Luck &amp; Jonas Bonér</title>
		<link>http://bettercode.se/wordpress/44/scalability-performance-caching-with-greg-luck-jonas-boner</link>
		<comments>http://bettercode.se/wordpress/44/scalability-performance-caching-with-greg-luck-jonas-boner#comments</comments>
		<pubDate>Fri, 18 Jun 2010 06:41:25 +0000</pubDate>
		<dc:creator>Max Wenzin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://bettercode.se/wordpress/?p=44</guid>
		<description><![CDATA[Going to a seminar about scalability, performance &#38; caching with Greg Luck &#38; Jonas Bonér today. It will hopefully be interesting! http://jwsgregluck10.eventbrite.com/]]></description>
				<content:encoded><![CDATA[<p>Going to a seminar about scalability, performance &amp; caching with Greg Luck &amp; Jonas Bonér today.</p>
<p>It will hopefully be interesting!</p>
<p><a href="http://jwsgregluck10.eventbrite.com/">http://jwsgregluck10.eventbrite.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bettercode.se/wordpress/44/scalability-performance-caching-with-greg-luck-jonas-boner/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>eGaming integration experience</title>
		<link>http://bettercode.se/wordpress/33/egaming-integration-experience</link>
		<comments>http://bettercode.se/wordpress/33/egaming-integration-experience#comments</comments>
		<pubDate>Sat, 20 Feb 2010 07:09:57 +0000</pubDate>
		<dc:creator>Max Wenzin</dc:creator>
				<category><![CDATA[eGaming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://bettercode.se/wordpress/?p=33</guid>
		<description><![CDATA[I have extensive experience in developing webservices for integrating different systems for eGaming. During the years, I&#8217;ve worked with the following providers: Playtech Poker (iPoker network) Microgaming Casino Tain Casino Evolution LiveCasino Vstech / GTS Games Parlay Bingo Cryptologic Poker]]></description>
				<content:encoded><![CDATA[<p>I have extensive experience in developing webservices for integrating different systems for eGaming. During the years, I&#8217;ve worked with the following providers:</p>
<ul>
<li>Playtech Poker (iPoker network)</li>
<li>Microgaming Casino</li>
<li>Tain Casino</li>
<li>Evolution LiveCasino</li>
<li>Vstech / GTS Games</li>
<li>Parlay Bingo</li>
<li>Cryptologic Poker</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://bettercode.se/wordpress/33/egaming-integration-experience/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
