<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Vitor Rodrigues</title>
	
	<link>http://www.vitorrodrigues.com/blog</link>
	<description />
	<pubDate>Tue, 28 Oct 2008 03:09:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-nd/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/vitorrodrigues/blog" type="application/rss+xml" /><feedburner:emailServiceId>632709</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><item>
		<title>Monitor calibration in Linux</title>
		<link>http://feeds.feedburner.com/~r/vitorrodrigues/blog/~3/434263718/</link>
		<comments>http://www.vitorrodrigues.com/blog/2008/10/27/monitor-calibration-in-linux/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 03:09:11 +0000</pubDate>
		<dc:creator>vitor</dc:creator>
		
		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Photography]]></category>

		<category><![CDATA[argyll]]></category>

		<category><![CDATA[argyllcms]]></category>

		<category><![CDATA[calibration]]></category>

		<category><![CDATA[color]]></category>

		<category><![CDATA[editing]]></category>

		<category><![CDATA[gimp]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[monitor]]></category>

		<category><![CDATA[opensource]]></category>

		<category><![CDATA[spyder2]]></category>

		<category><![CDATA[spyder2express]]></category>

		<guid isPermaLink="false">http://www.vitorrodrigues.com/blog/?p=135</guid>
		<description><![CDATA[If you are into photography, then you should already know that calibrating your monitor is something really important if you plan to print your pictures. I recently printed some photos and noticed that the printed colors were considerably different from the colors on my LCD. After comparing my monitor with a few others, it was [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">If you are into photography, then you should already know that calibrating your monitor is something really important if you plan to print your pictures. I recently printed some photos and noticed that the printed colors were considerably different from the colors on my LCD. After comparing my monitor with a few others, it was obvious that mine, and some of the others too, were not color calibrated.</p>
<p style="text-align: justify;">Monitors can be calibrated to display the &#8220;correct&#8221; colors by using a calibration device, complemented by the vendor software. I decided to buy the <a href="http://spyder.datacolor.com/product-mc-s2e.php">Spyder2Express</a> since it had good reviews and a reasonable price. Unfortunately, there is no color calibration device that is supported on Linux by its vendor and I currently use Linux (openSuse) as my main operative system. I could use my work laptop running windows to calibrate the monitor, then export the color profile and import it in Linux. There is an article <a href="http://jcornuz.wordpress.com/2007/09/26/color-managed-monitor-i/">here</a> on how to do it. With help from one of the comments in that article, I found about <a href="http://argyllcms.com/">Argyll Color Management System</a>. Argyll is a monitor calibration software package for Linux that supports most of the existing calibration devices. It uses the Windows binary software to create a Linux binary in order to be able to communicate with the device to run the calibration tests and create a color profile. It also provides an utility to apply the color profile to your monitor.</p>
<p style="text-align: justify;">The steps to calibrate your monitor in Linux using Argyll are pretty simple. In my case, using the Syper2Express device, all I had to do was runt the following commands(as root, or give the user permission to communicate with the usb device):</p>
<pre>$ cd Argyll_V1.0.3/
$ ./spyd2en -v /media/ColorVision/setup/setup.exe (creates binary file to communicate with device)
$ ./dispcal -v -y l -o MyMonitor (runs calibration tests and creates monitor color profile)
$  ./dispwin MyMonitor.icc (applies color profile to monitor)
</pre>
<p style="text-align: justify;">The generated color profile can also be imported to your post processing software like <a href="http://www.gimp.org/">GIMP</a> in order to use the monitor color profile instead of using a more common profile like sRGB or Adobe RGB.</p>
<p class="akst_link"><a href="http://www.vitorrodrigues.com/blog/?p=135&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_135" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.vitorrodrigues.com/blog/2008/10/27/monitor-calibration-in-linux/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=vitorrodrigues/blog&amp;itemurl=http%3A%2F%2Fwww.vitorrodrigues.com%2Fblog%2F2008%2F10%2F27%2Fmonitor-calibration-in-linux%2F</feedburner:awareness><feedburner:origLink>http://www.vitorrodrigues.com/blog/2008/10/27/monitor-calibration-in-linux/</feedburner:origLink></item>
		<item>
		<title>Batch update of EXIF info</title>
		<link>http://feeds.feedburner.com/~r/vitorrodrigues/blog/~3/385236671/</link>
		<comments>http://www.vitorrodrigues.com/blog/2008/09/06/batch-update-of-exif-info/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 19:26:40 +0000</pubDate>
		<dc:creator>vitor</dc:creator>
		
		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[exiftool exif opensource linux commandline utility phot]]></category>

		<guid isPermaLink="false">http://www.vitorrodrigues.com/blog/?p=134</guid>
		<description><![CDATA[exiftool is a very useful utility that allows you to query or edit EXIF information from pictures. Going through some of my pictures recently, I have found some sets of pictures with incorrect date in the EXIF info, be it a few hours off or even 1 year and a few days off. Fixing them [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sno.phy.queensu.ca/~phil/exiftool/">exiftool</a> is a very useful utility that allows you to query or edit EXIF information from pictures. Going through some of my pictures recently, I have found some sets of pictures with incorrect date in the EXIF info, be it a few hours off or even 1 year and a few days off. Fixing them one by one was not an option, so after a couple of searches on google I found exiftool. It is a command line utility that lets you edit EXIF information and you can do it in batches of files or folders, even using conditions to specify when a change must be applied.</p>
<p>For me, the need was only to change some photos info so that it shows the real time they were taken, three hours before the saved setting. The command was as simple as this:</p>
<p><code>exiftool -DateTimeOriginal-='0:0:0 3:0:0' -CreateDate-='0:0:0 3:0:0' myfolder/</code></p>
<p>The format for date changes is &#8216;YYY:MM:dd hh:mm:ss&#8217;.</p>
<p class="akst_link"><a href="http://www.vitorrodrigues.com/blog/?p=134&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_134" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.vitorrodrigues.com/blog/2008/09/06/batch-update-of-exif-info/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=vitorrodrigues/blog&amp;itemurl=http%3A%2F%2Fwww.vitorrodrigues.com%2Fblog%2F2008%2F09%2F06%2Fbatch-update-of-exif-info%2F</feedburner:awareness><feedburner:origLink>http://www.vitorrodrigues.com/blog/2008/09/06/batch-update-of-exif-info/</feedburner:origLink></item>
		<item>
		<title>Increasing disk size of a VMWare image</title>
		<link>http://feeds.feedburner.com/~r/vitorrodrigues/blog/~3/375378464/</link>
		<comments>http://www.vitorrodrigues.com/blog/2008/08/26/increasing-disk-size-of-a-vmware-image/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 17:04:08 +0000</pubDate>
		<dc:creator>vitor</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[coolsolution]]></category>

		<category><![CDATA[hint]]></category>

		<category><![CDATA[novel]]></category>

		<category><![CDATA[opensuse]]></category>

		<category><![CDATA[partition livecd]]></category>

		<category><![CDATA[suse]]></category>

		<category><![CDATA[trick]]></category>

		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://www.vitorrodrigues.com/blog/?p=133</guid>
		<description><![CDATA[Very useful tip from Novel CoolSolutions on how to increase the disk size of a VMWare image: http://www.novell.com/coolsolutions/tip/15344.html
I currently develop mostly in Windows using Eclipse, so I decided to create an openSuse 11.0 vmware image to test some of my code, as our product supports various platforms, including some flavors of Linux. The 10GB disk [...]]]></description>
			<content:encoded><![CDATA[<p>Very useful tip from Novel CoolSolutions on how to increase the disk size of a VMWare image: <a href="http://www.novell.com/coolsolutions/tip/15344.html">http://www.novell.com/coolsolutions/tip/15344.html</a></p>
<p>I currently develop mostly in Windows using Eclipse, so I decided to create an openSuse 11.0 vmware image to test some of my code, as our product supports various platforms, including some flavors of Linux. The 10GB disk size soon became too small and now I need to increase it. Here are the steps I had to do:</p>
<p>To resize the guest Os hard disk size, I issued:</p>
<ol>
<pre>vmware-vdiskmanager -x 15GB opensSuse.vmdk</pre>
</ol>
<p>However, step 1 only resized the disk, not the partitions. Starting the partition manager from within the guest Os didn&#8217;t work, because the partition can&#8217;t be altered while it is still mounted. A simple solution to overcome this issue is to use a Live CD. I still had the openSuse live CD ISO image I used to install the guest Os, so I just pointed the guest OS cd-rom drive to that .iso file.</p>
<p>After booting from the CD-ROM drive, go to Yast -&gt; System -&gt; Partitioner , select the partition you want to expand and click Resize. Select the new size for the partition and click Ok to apply the changes to the partition table.</p>
<p>Reboot your machine and voila! You existing partition will now have the new size.</p>
<p class="akst_link"><a href="http://www.vitorrodrigues.com/blog/?p=133&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_133" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.vitorrodrigues.com/blog/2008/08/26/increasing-disk-size-of-a-vmware-image/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=vitorrodrigues/blog&amp;itemurl=http%3A%2F%2Fwww.vitorrodrigues.com%2Fblog%2F2008%2F08%2F26%2Fincreasing-disk-size-of-a-vmware-image%2F</feedburner:awareness><feedburner:origLink>http://www.vitorrodrigues.com/blog/2008/08/26/increasing-disk-size-of-a-vmware-image/</feedburner:origLink></item>
		<item>
		<title>Commuting in San Jose and IT podcasts</title>
		<link>http://feeds.feedburner.com/~r/vitorrodrigues/blog/~3/338587107/</link>
		<comments>http://www.vitorrodrigues.com/blog/2008/07/17/commuting-in-san-jose-and-it-podcasts/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 02:13:17 +0000</pubDate>
		<dc:creator>vitor</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[commuting]]></category>

		<category><![CDATA[it]]></category>

		<category><![CDATA[podcasts]]></category>

		<category><![CDATA[reading]]></category>

		<category><![CDATA[siliconvalley]]></category>

		<category><![CDATA[softwareengineering]]></category>

		<category><![CDATA[vta]]></category>

		<guid isPermaLink="false">http://www.vitorrodrigues.com/blog/?p=132</guid>
		<description><![CDATA[After three years living in San Jose, I was proven wrong on my assumption that it was impossible to commute in San Jose using public transportation. After careful examination of VTA time tables, and several trial and error attempts, I am now commuting to work, having found some good things about commuting:

usually it takes me [...]]]></description>
			<content:encoded><![CDATA[<p>After three years living in San Jose, I was proven wrong on my assumption that it was impossible to commute in San Jose using public transportation. After careful examination of <a title="Valley Transportation Authority" href="http://www.vta.org">VTA</a> time tables, and several trial and error attempts, I am now commuting to work, having found some good things about commuting:</p>
<ul>
<li>usually it takes me 40 mins door-to-door. Not too bad, considering that the driving time was something between 15-30 minutes, depending on the luck with the 21! traffic lights between home and work (other than that, the drive was a monotonous 9 miles straight, right turn, 1 mile, arrived);</li>
<li>instead of losing 30-60 minutes driving to work every day, I actually found myself with 1h20 of free time to do some productive stuff like reading or listening to podcasts.</li>
</ul>
<p>Of course there are always drawbacks:</p>
<ul>
<li>the bus runs every 15 mins, light rail every 12 and shuttle bus to IBM about every 30 mins. If I get it right, I get from one place to the other in 40 mins. If I get it wrong a.k.a, lose the first bus or lightrail, it takes at least 30 mins more (have to catch next shuttle, if I get there on time).</li>
</ul>
<p>But the goal of this post is not really to dicuss about VTA&#8217;s schedule, but instead about podcasts, more specifically, IT podcasts. I have been alternating between reading and listening to podcasts during the trip, and the podcast I have been listening to is <a title="Software Engineering Radio podcast" href="http://www.se-radio.net/">Software Engineering Radio</a>. It is an excellent podcast, and I&#8217;m still in episode 30, so have a lot to go (they have 103 as of today <img src='http://www.vitorrodrigues.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ). However, I&#8217;m looking for other series to mix up with this one, and also because I might skip some of the episodes that are not of my interest.</p>
<p>So, what IT podcasts do you listen to and what do you like about them? I recently added two series to amarok, but haven&#8217;t listened to any episode yet:</p>
<ul>
<li><a href="http://www.ibm.com/developerworks/podcast/">IBM developerWorks podcasts</a></li>
<li><a href="http://itc.conversationsnetwork.org/series/innovators.html">Jon Udell&#8217;s interviews with innovators</a></li>
</ul>
<p>Don&#8217;t forget to leave your comment and let me know what are your favorite IT podcats! <img src='http://www.vitorrodrigues.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p class="akst_link"><a href="http://www.vitorrodrigues.com/blog/?p=132&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_132" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.vitorrodrigues.com/blog/2008/07/17/commuting-in-san-jose-and-it-podcasts/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=vitorrodrigues/blog&amp;itemurl=http%3A%2F%2Fwww.vitorrodrigues.com%2Fblog%2F2008%2F07%2F17%2Fcommuting-in-san-jose-and-it-podcasts%2F</feedburner:awareness><feedburner:origLink>http://www.vitorrodrigues.com/blog/2008/07/17/commuting-in-san-jose-and-it-podcasts/</feedburner:origLink></item>
		<item>
		<title>Mylyn task manager</title>
		<link>http://feeds.feedburner.com/~r/vitorrodrigues/blog/~3/324466502/</link>
		<comments>http://www.vitorrodrigues.com/blog/2008/07/01/mylyn-task-manager/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 21:19:45 +0000</pubDate>
		<dc:creator>vitor</dc:creator>
		
		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Software]]></category>

		<category><![CDATA[clearcase]]></category>

		<category><![CDATA[cvs]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[ide]]></category>

		<category><![CDATA[mylyn]]></category>

		<category><![CDATA[productivity]]></category>

		<category><![CDATA[svn]]></category>

		<category><![CDATA[taks]]></category>

		<guid isPermaLink="false">http://www.vitorrodrigues.com/blog/?p=131</guid>
		<description><![CDATA[When I migrated my development environment to Eclipse 3.4 Ganymede, one of the things that caught my attention on Eclipse&#8217;s update website was a plugin called Mylyn. A visit to the website, a look over the webcast and it sounded something promising.
It definitely is! Mylyn is a task manager that changes your IDE context based [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">When I migrated my development environment to <a href="http://www.eclipse.org/ganymede/">Eclipse 3.4 Ganymede</a>, one of the things that caught my attention on Eclipse&#8217;s update website was a plugin called <a href="http://www.eclipse.org/mylyn/">Mylyn</a>. A visit to the website, a look over the webcast and it sounded something promising.</p>
<p style="text-align: justify;">It definitely is! Mylyn is a task manager that changes your <a href="http://en.wikipedia.org/wiki/Integrated_development_environment">IDE</a> context based on tasks. You create a task, add resources to its context and when you activate the task, it hides all the other (unneeded) resources from your views (project/package explorer, outlines, editors, etc&#8230;). It provides integration with several task repositories, like <a href="http://www.bugzilla.org/">Bugzilla</a> and <a href="http://trac.edgewall.org/">Trac</a>. Unfortunately, it doesn&#8217;t provide a connector to <a href="http://www.ibm.com/software/awdtools/clearcase/">Clearcase</a>, but I&#8217;m still able to use it in an automated way.</p>
<p style="text-align: justify;">I find the tool really awesome when I do something basic like switching tasks: it just closes all the editor windows and projects in the explorer for the task I&#8217;m leaving and opens all the files I was working on for the task I&#8217;m switching to. This would take me several minutes to do by myself, so having a tool that does that in 1 second is pretty neat!</p>
<p style="text-align: justify;">Here are some more things I like about Mylyn:</p>
<ul>
<li>ability to customize <a href="http://en.wikipedia.org/wiki/Concurrent_Versions_System">CVS</a>/<a href="http://subversion.tigris.org/">SVN</a> checkin comments based on templates. Most, if not all, of my commit comments are in the form of &#8220;Bug#xxxxx: 1 line description of the bug and fix&#8221;. With Mylyn, I can get the comment populated automatically with information from the associated task.</li>
<li>when I (re)activate a task, it positions the cursor in the file and method (if java file) I was working on.</li>
<li>I can use the URL feature to link to the Clearcase defect page for each one of my defects</li>
<li>dynamically adds resources as we follow method references</li>
<li>Mylyn filters unrelated content from all views, but I especially like the end result for the package explorer and outline view. When working with classes that have tens of methods, showing just a handful of them in the outline simplifies things a lot!</li>
</ul>
<p>And the things I don&#8217;t like that much:</p>
<ul>
<li>no connector to Rational ClearCase. I have to copy some notes and Defect info from Clearcase to my task manually.</li>
<li>the option to show filtered content only shows content at the same level. I would like to have a &#8220;show all&#8221; option for when I need to look for some resource.</li>
<li>It slows down the system a bit. Not too bad, but I do notice it when I have several eclipse instances running.</li>
</ul>
<p>Overal, I think Mylyn is a great tool and very useful! Even more if you are working with Bugzilla/Trac projects.</p>
<p>If you want to give it a try, this is <a title="Mylyn" href="http://www.eclipse.org/mylyn/">Mylyn&#8217;s homepage</a> and this is a <a title="Mylyn Tutorial" href="http://www.ibm.com/developerworks/java/library/j-mylyn1/">Mylyn tutorial</a>.</p>
<p style="text-align: justify;"> </p>
<p class="akst_link"><a href="http://www.vitorrodrigues.com/blog/?p=131&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_131" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.vitorrodrigues.com/blog/2008/07/01/mylyn-task-manager/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=vitorrodrigues/blog&amp;itemurl=http%3A%2F%2Fwww.vitorrodrigues.com%2Fblog%2F2008%2F07%2F01%2Fmylyn-task-manager%2F</feedburner:awareness><feedburner:origLink>http://www.vitorrodrigues.com/blog/2008/07/01/mylyn-task-manager/</feedburner:origLink></item>
		<item>
		<title>JDBC performance tips</title>
		<link>http://feeds.feedburner.com/~r/vitorrodrigues/blog/~3/282335723/</link>
		<comments>http://www.vitorrodrigues.com/blog/2008/05/02/jdbc-performance-tips/#comments</comments>
		<pubDate>Fri, 02 May 2008 20:30:52 +0000</pubDate>
		<dc:creator>vitor</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jdbc]]></category>

		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.vitorrodrigues.com/blog/?p=128</guid>
		<description><![CDATA[If you are into java and database development, you will find this article to be a gold mine: http://www.javaperformancetuning.com/tips/jdbc.shtml
It contains links and summary to tens of other performance articles related with java database application development.
Share This
]]></description>
			<content:encoded><![CDATA[<p>If you are into java and database development, you will find this article to be a gold mine: <a href="http://www.javaperformancetuning.com/tips/jdbc.shtml">http://www.javaperformancetuning.com/tips/jdbc.shtml</a></p>
<p>It contains links and summary to tens of other performance articles related with java database application development.</p>
<p class="akst_link"><a href="http://www.vitorrodrigues.com/blog/?p=128&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_128" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.vitorrodrigues.com/blog/2008/05/02/jdbc-performance-tips/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=vitorrodrigues/blog&amp;itemurl=http%3A%2F%2Fwww.vitorrodrigues.com%2Fblog%2F2008%2F05%2F02%2Fjdbc-performance-tips%2F</feedburner:awareness><feedburner:origLink>http://www.vitorrodrigues.com/blog/2008/05/02/jdbc-performance-tips/</feedburner:origLink></item>
		<item>
		<title>Hi5 em “portugês”</title>
		<link>http://feeds.feedburner.com/~r/vitorrodrigues/blog/~3/255168055/</link>
		<comments>http://www.vitorrodrigues.com/blog/2008/03/20/hi5-em-portuges/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 22:17:05 +0000</pubDate>
		<dc:creator>vitor</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<category />

		<category><![CDATA[hi5]]></category>

		<category><![CDATA[mauportugues]]></category>

		<category><![CDATA[portuguese]]></category>

		<guid isPermaLink="false">http://www.vitorrodrigues.com/blog/2008/03/20/hi5-em-portuges/</guid>
		<description><![CDATA[Eu até aceiteva, mas tenho cá um feeling de que eles estão apenas interessados no meu donativo e não na minha amizade ;-).

PS: será que as comissões de festas se estão a render às novas tecnologias e vão passar a aceitar donativos via Paypal? 
Share This
]]></description>
			<content:encoded><![CDATA[<p>Eu até <em><strong>aceiteva</strong></em>, mas tenho cá um <em>feeling</em> de que eles estão apenas interessados no meu donativo e não na minha amizade ;-).</p>
<p><img src="http://www.vitorrodrigues.com/blog/wp-content/images/Other/aceiter.jpg" alt="aceiter.jpg" title="aceiter.jpg" border="0" height="227" width="434" /></p>
<p>PS: será que as comissões de festas se estão a render às novas tecnologias e vão passar a aceitar donativos via Paypal? <img src='http://www.vitorrodrigues.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p>
<p class="akst_link"><a href="http://www.vitorrodrigues.com/blog/?p=124&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_124" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.vitorrodrigues.com/blog/2008/03/20/hi5-em-portuges/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=vitorrodrigues/blog&amp;itemurl=http%3A%2F%2Fwww.vitorrodrigues.com%2Fblog%2F2008%2F03%2F20%2Fhi5-em-portuges%2F</feedburner:awareness><feedburner:origLink>http://www.vitorrodrigues.com/blog/2008/03/20/hi5-em-portuges/</feedburner:origLink></item>
		<item>
		<title>How to get Billionaire in one day</title>
		<link>http://feeds.feedburner.com/~r/vitorrodrigues/blog/~3/223005594/</link>
		<comments>http://www.vitorrodrigues.com/blog/2008/01/25/how-to-get-billionaire-in-one-day/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 16:31:39 +0000</pubDate>
		<dc:creator>vitor</dc:creator>
		
		<category><![CDATA[Internet]]></category>

		<category />

		<category><![CDATA[bug]]></category>

		<category><![CDATA[finance]]></category>

		<category><![CDATA[glitch]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[market]]></category>

		<category><![CDATA[stock]]></category>

		<guid isPermaLink="false">http://www.vitorrodrigues.com/blog/2008/01/25/how-to-get-billionaire-in-one-day/</guid>
		<description><![CDATA[Every other week Google Finance has a glitch in their real-time quote, resulting in some random company heading up the top gainers or losers. Usually, the glitch is just a few hundred or thousand percent in the company&#8217;s (de)valuation, but today it hit all records: 10,647,115,776.00%!!! One stock went up 10,647,115,776.00% in a single trading [...]]]></description>
			<content:encoded><![CDATA[<p>Every other week Google Finance has a glitch in their real-time quote, resulting in some random company heading up the top gainers or losers. Usually, the glitch is just a few hundred or thousand percent in the company&#8217;s (de)valuation, but today it hit all records: <span class="chg" id="ref_11108643_cp"><strong>10,647,115,776.00%</strong>!!! One stock went up </span><span class="chg" id="ref_11108643_cp">10,647,115,776.00% in a single trading day, to a stock value of </span><span class="pr" id="ref_11108643_l">8,619,905,024.00</span></p>
<p>I just which I had bought one single stock of this company yesterday <img src='http://www.vitorrodrigues.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><img src="http://www.vitorrodrigues.com/blog/wp-content/images/Other/google_finance.jpg" alt="google_finance.jpg" title="google_finance.jpg" border="0" height="290" width="469" /></p>
<p>It would be cool if NYSE servers had this type of glitch. The stock market would be much more fun and not so boring and depressing as it has been over the past months.</p>
<p class="akst_link"><a href="http://www.vitorrodrigues.com/blog/?p=122&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_122" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.vitorrodrigues.com/blog/2008/01/25/how-to-get-billionaire-in-one-day/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=vitorrodrigues/blog&amp;itemurl=http%3A%2F%2Fwww.vitorrodrigues.com%2Fblog%2F2008%2F01%2F25%2Fhow-to-get-billionaire-in-one-day%2F</feedburner:awareness><feedburner:origLink>http://www.vitorrodrigues.com/blog/2008/01/25/how-to-get-billionaire-in-one-day/</feedburner:origLink></item>
		<item>
		<title>SQLJ and JDBC</title>
		<link>http://feeds.feedburner.com/~r/vitorrodrigues/blog/~3/217080033/</link>
		<comments>http://www.vitorrodrigues.com/blog/2008/01/15/sqlj-and-jdbc/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 15:14:49 +0000</pubDate>
		<dc:creator>vitor</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category />

		<category><![CDATA[database]]></category>

		<category><![CDATA[db]]></category>

		<category><![CDATA[db2]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[dynamicsql]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jdbc]]></category>

		<category><![CDATA[oracle]]></category>

		<category><![CDATA[orm]]></category>

		<category><![CDATA[sql]]></category>

		<category><![CDATA[sqlj]]></category>

		<category><![CDATA[staticsql]]></category>

		<guid isPermaLink="false">http://www.vitorrodrigues.com/blog/2008/01/15/sqlj-and-jdbc/</guid>
		<description><![CDATA[As a follow up on my last post comparing Static SQL with Dynamic SQL, I will now post an example of how to run the same code using static and dynamic SQL.
One of my visitors left a comment saying that the scope of static and dynamic SQL in Oracle is different than the one I [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">As a follow up on my last post <a href="http://www.vitorrodrigues.com/blog/2008/01/14/static-sql-vs-dynamic-sql/">comparing Static SQL with Dynamic SQL</a>, I will now post an example of how to run the same code using static and dynamic SQL.</p>
<p align="justify">One of my visitors left a comment saying that the scope of static and dynamic SQL in Oracle is different than the one I mentioned. I am not familiar at all with Oracle, but was able to find some information on their <a href="http://download.oracle.com/docs/cd/A97336_01/buslog.102/a83724/overvw1.htm#1002497">documentation </a>where they compare JDBC and SQLJ. Since their concept of static vs dynamic SQL is different from the concept in DB2, so my examples may not make sense for Oracle users. I also found out that although Oracle has had plans to desupport SQLJ in its data server, that support has been <a href="http://www.oracle.com/technology/tech/java/sqlj_jdbc/index.html">reinstated </a>in their 10g release.</p>
<p align="justify">The two code samples I will show next are shipped with DB2 (get your free copy of <a href="http://www-306.ibm.com/software/data/db2/express/">DB2 Express-C</a>) and can be found in the file <em>%DB2FOLDER%/samples/java/sqlj/TbRead.java</em>. I&#8217;ll just use one of the several examples in that file, that executes a sub-select statement in the employee table.</p>
<p>Sample code in SQLJ:</p>
<pre>#sql cur7 = {SELECT job, edlevel, SUM(comm)</pre>
<pre>	FROM employeeWHERE job IN('DESIGNER', 'FIELDREP')GROUP BY ROLLUP(job, edlevel)};</pre>
<pre>while (true){</pre>
<pre>	#sql {FETCH :cur7 INTO :job, :edlevel, :commSum};</pre>
<pre>	if (cur7.endFetch()){</pre>
<pre>		break;</pre>
<pre>	}</pre>
<pre>	System.out.print("Job: " + job + " Ed Level: " + edlevel + " Tot Comm: " +commSum);</pre>
<pre>}</pre>
<p>Sample code in JDBC:</p>
<pre>Statement stmt = con.createStatement();</pre>
<pre>ResultSet rs = stmt.executeQuery("SELECT job, edlevel, SUM(comm) "</pre>
<pre>	+"  FROM employee "</pre>
<pre>	+"  WHERE job IN('DESIGNER','FIELDREP') "</pre>
<pre>	+"  GROUP BY ROLLUP(job, edlevel)");</pre>
<pre>	while (rs.next())</pre>
<pre>	{</pre>
<pre>	if (rs.getString(1) != null)</pre>
<pre>		{</pre>
<pre>		job = rs.getString(1);</pre>
<pre>		edlevel = rs.getString(1);</pre>
<pre>		commSum = rs.getString(1);</pre>
<pre>		System.out.print("Job: " + job + " Ed Level: " + edlevel + " Tot Comm: " +commSum);</pre>
<pre>		}</pre>
<pre>	}</pre>
<p>Although both styles present different syntax, from a developer&#8217;s perspective, the only main difference is than when using JDBC one needs to explicitly fetch the row values into Java variables one by one. A common comment from Java developers is that SQLJ is not really Java (one needs to use annotations instead of java method calls), so they prefer to stick with JDBC.</p>
<p>Like I explained in <a href="http://www.vitorrodrigues.com/blog/2008/01/14/static-sql-vs-dynamic-sql/">my previous post</a>, the biggest difference between these two styles (static SQL using SQLJ and dynamic SQL using JDBC) is that the SQL statements in the SQLJ files need to be compiled and bound to the database ahead of runtime. The following diagram illustrates this process:</p>
<p><img src="http://www.vitorrodrigues.com/blog/wp-content/images/Software/Programming/SQL/staticSQL.jpg" alt="staticSQL.jpg" title="staticSQL.jpg" border="0" height="252" width="500" /></p>
<p>After the deployment process, SQLJ execution is simpler than JDBC. While JDBC statements need to be prepared at execution time, SQLJ statements are already compiled and ready to use. The two following diagrams illustrate these differences:</p>
<p><img src="http://www.vitorrodrigues.com/blog/wp-content/images/Software/Programming/SQL/jdbcstatement.jpg" alt="jdbcstatement.jpg" title="jdbcstatement.jpg" border="0" height="157" width="250" /><img src="http://www.vitorrodrigues.com/blog/wp-content/images/Software/Programming/SQL/sqljstatement.jpg" alt="sqljstatement.jpg" title="sqljstatement.jpg" border="0" height="155" width="250" /></p>
<p>As you can see, static SQL execution process is much simpler, but it requires a complex deployment process. This is an aspect of database development where there is a clash between DBAs and Developers. While ones - the DBAs - prefer the much more refined security and execution control provided by SQLJ and static SQL, others - the Developers - prefer the easier development process of dynamic SQL in the form of JDBC.</p>
<p>Soon, I will talk here about a new Java Data Access platform that supports the usage of both static and dynamic SQL at runtime (through a JVM property), allowing DBAs and Developers to use dynamic SQL on development and test environments and going with static SQL on the production environment. This way, the development community will get the best of both worlds: ease of deployment during development and testing phase and greater performance and control on the production environment.</p>
<p>If you are looking for a data management and application development tool, you should take a look at the new IBM Data Studio. It is an eclipse-based development environment, free to download and to use and with support to all major RDBMS.  Download <a href="http://www-306.ibm.com/software/data/studio/">IBM Data Studio</a>.</p>
<p class="akst_link"><a href="http://www.vitorrodrigues.com/blog/?p=121&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_121" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.vitorrodrigues.com/blog/2008/01/15/sqlj-and-jdbc/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=vitorrodrigues/blog&amp;itemurl=http%3A%2F%2Fwww.vitorrodrigues.com%2Fblog%2F2008%2F01%2F15%2Fsqlj-and-jdbc%2F</feedburner:awareness><feedburner:origLink>http://www.vitorrodrigues.com/blog/2008/01/15/sqlj-and-jdbc/</feedburner:origLink></item>
		<item>
		<title>Static SQL vs Dynamic SQL</title>
		<link>http://feeds.feedburner.com/~r/vitorrodrigues/blog/~3/216249504/</link>
		<comments>http://www.vitorrodrigues.com/blog/2008/01/14/static-sql-vs-dynamic-sql/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 05:20:50 +0000</pubDate>
		<dc:creator>vitor</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[database]]></category>

		<category><![CDATA[db]]></category>

		<category><![CDATA[db2]]></category>

		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[jdbc]]></category>

		<category><![CDATA[jpa]]></category>

		<category><![CDATA[sql]]></category>

		<category><![CDATA[sqlj]]></category>

		<category><![CDATA[technical_articles]]></category>

		<guid isPermaLink="false">http://www.vitorrodrigues.com/blog/2008/01/14/static-sql-vs-dynamic-sql/</guid>
		<description><![CDATA[I have been wanting to write a few technical articles here on the blog, so I&#8217;ll start with something that is related with what I have been looking into at work: Static and Dynamic SQL.

From the conversations I have had with both DBAs and developers, it is clear that DBAs prefer static SQL, while developers [...]]]></description>
			<content:encoded><![CDATA[<p>I have been wanting to write a few technical articles here on the blog, so I&#8217;ll start with something that is related with what I have been looking into at work: Static and Dynamic SQL.
</p>
<p>From the conversations I have had with both DBAs and developers, it is clear that DBAs prefer static SQL, while developers prefer Dynamic SQL.
</p>
<p>The difference between static and dynamic SQL is that static SQL needs to be compiled and bound to the database before application runtime, while dynamic SQL is compiled during runtime. Next, I&#8217;ll show a list of pros and cons regarding each one.&nbsp;
</p>
<p><strong>Static SQL</strong>
</p>
<p><em><strong>Pros</strong></em>:
</p>
<ul>
<li><strong>compile at bind time</strong>. Since the statement is compiled only once and before we run our workload, we have all the database resources in order to generate the most optimal query execution plan. In DB2, there are 9 levels of optimization, being 5 the default one. When we bing our application package, we can pick the highest optimization level - 9 - and get the most optimal execution plan. Using a higher optimization level requires more resources for the compile phase, but since our workload is not yet running, we can afford this high resources requirement.</li>
<li><strong>security</strong>. Security is probably the most common reason why people use static SQL instead of dynamic SQL. Static SQL allows the DBA to set authorization at the package level. For example, consider an application package <em>app1</em>, that provides SQL functionality to select employee&#8217;s name and address from the table <em>employees</em>. The DBA can five user JOHN execution privileges on package <em>app1</em>, even if user JOHN does not have SELECT authority on table <em>employees</em>. Static SQL provides a much finer layer of security.</li>
</ul>
<p><em><strong>Cons:</strong></em>
</p>
<ul>
<li><strong>need to bind before runtime</strong>. Although binding before runtime usually allows for more optimized access plans, doing this in a test or development environment can be cumbersome.</li>
<li><strong>lack of tooling support</strong>. most of current IDEs provide coding assistance with support for APIs like JDBC. The lack of support from development tools discourages the use of static SQL.</li>
</ul>
<p><strong>Dynamic SQL</strong>
</p>
<p><em><strong>Pros</strong></em>:
</p>
<ul>
<li><strong>IDEs and APIs</strong>: using eclipse to develop Java code that interacts with the database using JDBC or JPA is much simpler than developing a SQLJ application.</li>
<li><strong>statement caching</strong>. Dynamic statement caching avoids the need to compile the same statement multiple times, increasing the performance to values close to static SQL. However, bear in mind that a cache miss will be extremely expensive.</li>
<li>
<p><strong>better statistics</strong>. Because the statement is compiled at runtime, it uses the latest statistics available, contributing to a better execution plan.<br />
    
  </p>
</li>
</ul>
<p><em><strong>Cons</strong></em>:
</p>
<ul>
<li><strong>compile at runtime</strong>. There are a few reasons why compile at runtime can be a bad thing:<br />
  </p>
<ul>
<li>every time a statement is executed, it needs to be compiled, increasing the total statement execution time</li>
<li>the compile time will account for the total execution time, so using higher optimization levels may slow down the overall performance instead of improving it.<br />
    </li>
<li>because the statement is only compiled at runtime, errors in the SQL statement won&#8217;t be detected until runtime.<br />
    </li>
</ul>
</li>
</ul>
<p>As you can see, there are several reasons why you would choose one over the other. There is no perfect solution! But if you ask me, I would suggest the following: use <strong>Static SQL if security is your main concern</strong> and use <strong>Dynamic SQL if ease of development is your main concern</strong>.
</p>
<p>
  </p>
<p class="akst_link"><a href="http://www.vitorrodrigues.com/blog/?p=120&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_120" class="akst_share_link" rel="nofollow">Share This</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.vitorrodrigues.com/blog/2008/01/14/static-sql-vs-dynamic-sql/feed/</wfw:commentRss>
		<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=vitorrodrigues/blog&amp;itemurl=http%3A%2F%2Fwww.vitorrodrigues.com%2Fblog%2F2008%2F01%2F14%2Fstatic-sql-vs-dynamic-sql%2F</feedburner:awareness><feedburner:origLink>http://www.vitorrodrigues.com/blog/2008/01/14/static-sql-vs-dynamic-sql/</feedburner:origLink></item>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetFeedData?uri=vitorrodrigues/blog</feedburner:awareness></channel>
</rss>
