<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><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:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Techtracer</title>
	
	<link>http://techtracer.com</link>
	<description>Tracing the course of Web Technology</description>
	<lastBuildDate>Mon, 26 Sep 2011 12:30:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
<image>
  <link>http://techtracer.com</link>
  <url>http://techtracer.com/wp-includes/images/favicon.png</url>
  <title>Techtracer</title>
</image>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/techtracer" /><feedburner:info uri="techtracer" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>techtracer</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>How to migrate preferences of one Eclipse workspace to another?</title>
		<link>http://feedproxy.google.com/~r/techtracer/~3/G1-tBotzBeQ/</link>
		<comments>http://techtracer.com/2011/08/29/how-to-migrate-preferences-of-one-eclipse-workspace-to-another/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 13:25:38 +0000</pubDate>
		<dc:creator>nitinpai</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://techtracer.com/?p=328</guid>
		<description><![CDATA[When you switch to a new workspace for the same project in Eclipse you generally have a lot of work to do before you start import or creating projects. This work majorly involves setting of preferences and other settings to your new workspace. This sometimes becomes painful and tiresome especially if you have a lot [...]]]></description>
			<content:encoded><![CDATA[<p>When you <strong>switch to a new workspace</strong> for the same project in Eclipse you generally have a lot of work to do before you start import or creating projects. This work majorly involves setting of <strong>preferences</strong> and other settings to your new workspace. This sometimes becomes painful and tiresome especially if you have a lot or project specific preferences to be applied to the workspace or have customized many of the default ones.</p>
<p>Also, it is many a times, error prone since you might forget some preferences and end up factoring why your code is not behaving the same way as it used to in your earlier workspace.</p>
<p>The secret to make this easier is to find out where does eclipse store this settings and thankfully it is easy enough. Eclipse stores all preferences in <strong>text format</strong>, properly separated for each individual plugin. So, migrating the settings from one workspace to another is just simple, copy-paste the setting files.</p>
<p>The location where the preferences are kept is :<br />
<strong><em>&lt;workspace_location&gt;</em>\.metadata\.plugins\ org.eclipse.core.runtime\.settings</strong></p>
<p><img style="border:1px" src="http://techtracer.com/wp-content/uploads/2011/08/eclipse_workspace_preferences1.png" alt="eclipse_workspace_preferences" title="eclipse_workspace_preferences" width="377" height="301" class="size-full wp-image-356" /></p>
<p>Check the folder and try to see what is within each file and you will see all your plugin settings in it.</p>
<p>So what you would need to do is to copy <strong>org.eclipse.core.runtime</strong> folder and paste it in your other workspace inside <strong>\.metadata\.plugins</strong>. Do not copy any other folder or else it may lead to some unusual workspace behavior. </p>
<p>If you want to transfer only the preference for a particular plugin then you just need to copy that individual file alone, from within this folder. </p>
<p><strong><u>Action Steps:</u></strong></p>
<ul>
<li>Switch your existing workspace to a temporary works<ins datetime="2011-09-26T12:26:09+00:00"></ins>pace. </li>
<li>Close eclipse</li>
<li>Copy the above folder and start eclipse with the temporary workspace</li>
<li>Now check all your earlier settings will be reflected</li>
</ul>
<p>Simple, isn&#8217;t it? Let me know if it worked for you.</p>
<h2>Related posts:</h2><ul><li><a href="http://techtracer.com/2007/04/04/java-5-generics-changing-for-good/" rel="bookmark" title="Permanent Link: Java 5 Generics &#8211; Changing for good">Java 5 Generics &#8211; Changing for good</a></li><li><a href="http://techtracer.com/2007/08/28/what-do-you-dream-for-in-an-ide/" rel="bookmark" title="Permanent Link: What Do You Dream For In An IDE?">What Do You Dream For In An IDE?</a></li><li><a href="http://techtracer.com/2007/08/26/eclipse-europa-has-ruined-my-day/" rel="bookmark" title="Permanent Link: Eclipse Europa Has Ruined My Day">Eclipse Europa Has Ruined My Day</a></li><li><a href="http://techtracer.com/2008/04/26/the-technique-of-virtual-deployment-in-tomcat/" rel="bookmark" title="Permanent Link: The Technique of Virtual Deployment in Tomcat">The Technique of Virtual Deployment in Tomcat</a></li><li><a href="http://techtracer.com/2007/03/31/development-and-deployment-structures-the-perfect-way-to-build-a-web-application/" rel="bookmark" title="Permanent Link: Development and Deployment Structures &#8211; the perfect way to build a web application">Development and Deployment Structures &#8211; the perfect way to build a web application</a></li></ul><br /><a href="http://techtracer.com/">Techtracer.com</a> Copyright &copy; 2008<br /> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techtracer?a=G1-tBotzBeQ:gPRHz2ldpM0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techtracer?i=G1-tBotzBeQ:gPRHz2ldpM0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=G1-tBotzBeQ:gPRHz2ldpM0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techtracer?i=G1-tBotzBeQ:gPRHz2ldpM0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=G1-tBotzBeQ:gPRHz2ldpM0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/techtracer?i=G1-tBotzBeQ:gPRHz2ldpM0:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techtracer/~4/G1-tBotzBeQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://techtracer.com/2011/08/29/how-to-migrate-preferences-of-one-eclipse-workspace-to-another/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://techtracer.com/2011/08/29/how-to-migrate-preferences-of-one-eclipse-workspace-to-another/</feedburner:origLink></item>
		<item>
		<title>The Great Hibernate Tutorial – a great jump start for beginners</title>
		<link>http://feedproxy.google.com/~r/techtracer/~3/s7wpp-TsKvM/</link>
		<comments>http://techtracer.com/2008/12/30/the-great-hibernate-tutorial-a-great-jump-start-for-beginners/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 05:42:17 +0000</pubDate>
		<dc:creator>nitinpai</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Java EE]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Beginner tutorial for hibernate]]></category>
		<category><![CDATA[Hibernate Tutorial]]></category>
		<category><![CDATA[steps for hibernate setup]]></category>

		<guid isPermaLink="false">http://techtracer.com/?p=278</guid>
		<description><![CDATA[Hibernate has become the de-facto ORM (Object Relational Mapping) framework for most of the organizations today. It provides a very simple framework to overcome the cumbersome techniques involved with core JDBC implementations. Whenever there is a project based on database intrinsic activities it is advisable to use Hibernate than do JDBC coding. It saves a [...]]]></description>
			<content:encoded><![CDATA[<p>Hibernate has become the de-facto <strong>ORM</strong> (<a href="http://en.wikipedia.org/wiki/Object-relational_mapping" target="_blank">Object Relational Mapping</a>) framework for most of the organizations today. It provides a very simple framework to overcome the cumbersome techniques involved with core <strong>JDBC</strong> implementations. Whenever there is a project based on database intrinsic activities it is <strong>advisable</strong> to use Hibernate than do JDBC coding. It saves a huge amount of time revolving around unnecessary chores. </p>
<p>Having said that, the major question which strikes anyone who does majorly JDBC is that how does a Hibernate DAO layer look like. Without looking at a practical implementation one cannot be easily convinced to work on it. This is the only compelling reason why I intended to write <strong>The</strong> <strong>Great Hibernate Tutorial</strong>.</p>
<p>This tutorial is aimed at those developers who want to get a<strong> </strong>quick breifing on <strong>how to implement a DAO layer using Hibernate</strong>. This tutorial does not cover the basics of ORM nor a detailed explanation of Hibernate configurations or api. It follows on the same route as the <a href="http://techtracer.com/2007/04/16/the-great-ant-tutorial-a-great-jump-start/" target="_self">Great Ant tutorial</a> which many readers liked.</p>
<p><strong>5 Steps to Designing a DAO in Hibernate:</strong></p>
<ol>
<li> Identify the tables which are required as entities in your project</li>
<li>Create the Hibernate Configuration file</li>
<li>Create the Hibernate entity mapping files (hbm) and entity classes</li>
<li>Make the DAO layer with the required functions</li>
<li>Test the DAO classes</li>
</ol>
<p><strong>Required Softwares</strong></p>
<p>The versions of the various open source software&#8217;s required for the implementation are</p>
<ul>
<li><a href="http://dev.mysql.com/downloads/mysql/5.1.html#win32" target=_blank>MySQL 5.0.5 for Windows</a></li>
<li><a href="http://dev.mysql.com/downloads/connector/j/5.0.html" target=_blank>MySQL ConnectorJ</a></li>
<li><a href="http://www.hibernate.org/6.html#A2" target=_blank>Hibernate Core 3.0</a></li>
<li><a href="http://java.sun.com/javase/downloads/index.jsp" target=_blank>JDK 1.5 or above</a></li>
<li><a href="http://www.eclipse.org/downloads/" target=_blank>Eclipse 3.3 or above</a></li>
</ul>
<p>So lets get going with<strong> the Great Hibernate Tutorial</strong>. The steps will explain you the specific details from the code while the actual code is present in the format of links at the <a href="#resources">bottom of this tutorial</a>. You can open the links in different tabs of your browser and then start reading the tutorial for getting a better understanding.</p>
<p><strong>Step 1. Identify the tables which are required as entities in your project</strong></p>
<p>For the tutorial I am designing a basic<strong> Attendance System</strong> for a company which currently has only two tables <strong>Employee</strong> and <strong>Dept</strong>. If your MySQL is not setup at the moment you may visit the tutorial on <a href="http://techtracer.com/2008/06/09/3-easy-steps-to-install-mysql-on-windows-xp/" target="_self">how to setup Mysql in windows XP</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="mysql" style="font-family:monospace;">&nbsp;
<span style="color: #990099; font-weight: bold;">CREATE</span> <span style="color: #990099; font-weight: bold;">TABLE</span> <span style="color: #008000;">`employee`</span> <span style="color: #FF00FF;">&#40;</span>                                                                                       
            <span style="color: #008000;">`psno`</span> <span style="color: #999900; font-weight: bold;">int</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">11</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span> <span style="color: #990099; font-weight: bold;">default</span> <span style="color: #008000;">'0'</span><span style="color: #000033;">,</span>                                                                          
            <span style="color: #008000;">`name`</span> <span style="color: #999900; font-weight: bold;">varchar</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">50</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #990099; font-weight: bold;">default</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #000033;">,</span>                                                                              
            <span style="color: #008000;">`pass`</span> <span style="color: #999900; font-weight: bold;">varchar</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">50</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #990099; font-weight: bold;">default</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #000033;">,</span>                                                                              
            <span style="color: #008000;">`proj<span style="color: #008080; font-weight: bold;">_</span>cd`</span> <span style="color: #999900; font-weight: bold;">varchar</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">45</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #000033;">,</span>                                                                               
            <span style="color: #008000;">`dept<span style="color: #008080; font-weight: bold;">_</span>name`</span> <span style="color: #999900; font-weight: bold;">varchar</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">45</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #000033;">,</span>                                                                             
            <span style="color: #990099; font-weight: bold;">PRIMARY KEY</span>  <span style="color: #990099; font-weight: bold;">USING</span> <span style="color: #990099; font-weight: bold;">BTREE</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">`psno`</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">,</span>                                                                            
            <span style="color: #990099; font-weight: bold;">KEY</span> <span style="color: #008000;">`FK<span style="color: #008080; font-weight: bold;">_</span>employee<span style="color: #008080; font-weight: bold;">_</span>newfk`</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">`proj<span style="color: #008080; font-weight: bold;">_</span>cd`</span><span style="color: #000033;">,</span><span style="color: #008000;">`dept<span style="color: #008080; font-weight: bold;">_</span>name`</span><span style="color: #FF00FF;">&#41;</span><span style="color: #000033;">,</span>                                                              
            <span style="color: #990099; font-weight: bold;">CONSTRAINT</span> <span style="color: #008000;">`employee<span style="color: #008080; font-weight: bold;">_</span>ibfk<span style="color: #008080; font-weight: bold;">_</span>1`</span> <span style="color: #990099; font-weight: bold;">FOREIGN KEY</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">`proj<span style="color: #008080; font-weight: bold;">_</span>cd`</span><span style="color: #000033;">,</span> <span style="color: #008000;">`dept<span style="color: #008080; font-weight: bold;">_</span>name`</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #990099; font-weight: bold;">REFERENCES</span> <span style="color: #008000;">`dept`</span> <span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">`PROJ<span style="color: #008080; font-weight: bold;">_</span>CD`</span><span style="color: #000033;">,</span> <span style="color: #008000;">`DEPT<span style="color: #008080; font-weight: bold;">_</span>NAME`</span><span style="color: #FF00FF;">&#41;</span>  
          <span style="color: #FF00FF;">&#41;</span> 
&nbsp;
&nbsp;
<span style="color: #990099; font-weight: bold;">CREATE</span> <span style="color: #990099; font-weight: bold;">TABLE</span> <span style="color: #008000;">`dept`</span> <span style="color: #FF00FF;">&#40;</span>                   
          <span style="color: #008000;">`PROJ<span style="color: #008080; font-weight: bold;">_</span>CD`</span> <span style="color: #999900; font-weight: bold;">varchar</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">45</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #000033;">,</span>       
          <span style="color: #008000;">`DEPT<span style="color: #008080; font-weight: bold;">_</span>NAME`</span> <span style="color: #999900; font-weight: bold;">varchar</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">45</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #CC0099; font-weight: bold;">NOT</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #000033;">,</span>     
          <span style="color: #008000;">`START<span style="color: #008080; font-weight: bold;">_</span>DATE`</span> <span style="color: #999900; font-weight: bold;">date</span> <span style="color: #990099; font-weight: bold;">default</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #000033;">,</span>       
          <span style="color: #008000;">`TYPE`</span> <span style="color: #999900; font-weight: bold;">varchar</span><span style="color: #FF00FF;">&#40;</span><span style="color: #008080;">45</span><span style="color: #FF00FF;">&#41;</span> <span style="color: #990099; font-weight: bold;">default</span> <span style="color: #9900FF; font-weight: bold;">NULL</span><span style="color: #000033;">,</span>      
          <span style="color: #990099; font-weight: bold;">PRIMARY KEY</span>  <span style="color: #FF00FF;">&#40;</span><span style="color: #008000;">`PROJ<span style="color: #008080; font-weight: bold;">_</span>CD`</span><span style="color: #000033;">,</span><span style="color: #008000;">`DEPT<span style="color: #008080; font-weight: bold;">_</span>NAME`</span><span style="color: #FF00FF;">&#41;</span>  
        <span style="color: #FF00FF;">&#41;</span></pre></div></div>

<p>The Employee and Dept have a one to many relationship. From the DDL it is evident that Dept table has composite keys. Usually <a href="http://codebetter.com/blogs/jeremy.miller/archive/2007/02/01/Composite-keys-are-evil.aspx" target="_blank">composite keys are considered evil</a> , but I am using it just for the sake of presenting a use case of <strong>configuring composite keys in hibernate</strong>.</p>
<p><strong>Step 2. Create the Hibernate Configuration file </strong></p>
<p>The Hibernate configuration file is where you provide all the connection level details. It is very straightforward configuration and appears similar to your JDBC connection statements. But unlike JDBC, you can specify many more things here like <strong>caching, dialects, debug queries</strong>. One important aspect of this configuration file is providing path of <strong>hbm</strong> files. Check the following two line of XML.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mapping</span> <span style="color: #000066;">resource</span>=<span style="color: #ff0000;">&quot;com/abc/entities/Employee.hbm.xml&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>     
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;mapping</span> <span style="color: #000066;">resource</span>=<span style="color: #ff0000;">&quot;com/abc/entities/Dept.hbm.xml&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>These lines are important. They specify the paths to your entity mapping files. Entity mapping files are those <strong>XML files</strong> which tell hibernate as to how the entity classes relate to the tables. It defines how the data should flow from class properties to the table columns. But you have to be careful in mentioning the <strong>paths</strong> to the mapping files. It is not required that the files be kept in the packages as I have done but it is considered a convention.</p>
<p><strong>Step 3. Create the Hibernate entity mapping files (hbm) and entity classes</strong></p>
<p>In this step we would be actually defining the <strong>mapping</strong>. I have kept all the entities in the package <strong>com.abc.entities</strong> along with the mapping files. The first element is obvious <em>&lt;hibernate-mapping&gt;</em>. Within this element you would most of the times define 3 elements: Class, ID and Property.</p>
<p><strong>Class</strong> &#8211; the class for which mapping to the table is being defined</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;class</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;com.abc.entities.Employee&quot;</span> <span style="color: #000066;">table</span>=<span style="color: #ff0000;">&quot;employee&quot;</span> <span style="color: #000066;">lazy</span>=<span style="color: #ff0000;">&quot;false&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span></pre></div></div>

<p>One extra attribute of the element you would notice is lazy=&#8221;false&#8221;. This is the lazy loading technique of ORM the details of which are beyond the scope of this tutorial. You may even not mention it.</p>
<p><strong>ID &#8211; Primary key</strong> is an absolute must in hibernate mapped tables. Primary Keys are mapped to ID as follows</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;psno&quot;</span> <span style="color: #000066;">column</span>=<span style="color: #ff0000;">&quot;psno&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;generator</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;assigned&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><strong>Generator </strong>means how the primary key is populated. If it was <strong>auto generated</strong> in the table then the value should have been &#8220;<strong>auto</strong>&#8220;. The value &#8220;<strong>assigned</strong>&#8221; means we will set it in the application itself. In case of Dept, since composite key exists we should define it as</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;composite-id</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;deptPK&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;com.abc.entities.DeptPK&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key-property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;projCode&quot;</span> <span style="color: #000066;">column</span>=<span style="color: #ff0000;">&quot;PROJ_CD&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key-property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;deptName&quot;</span> <span style="color: #000066;">column</span>=<span style="color: #ff0000;">&quot;DEPT_NAME&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/composite-id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p><strong>Property</strong> &#8211; These are columns which would be made as properties having getters and setters in the class definition</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;name&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span></pre></div></div>

<p>this would map name property of Employee class to the name column of employee table.</p>
<p><span style="text-decoration: underline;"><strong>Associations in Hibernate</strong></span></p>
<p>The above 3 are majorly used. Apart from that you can also mention <strong>cardinality mapping</strong> if required as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;many-to-one</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;dept&quot;</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;com.abc.entities.Dept&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;column</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;proj_cd&quot;</span> <span style="color: #000066;">not-null</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;column</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;dept_name&quot;</span> <span style="color: #000066;">not-null</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/many-to-one<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Since I have a <strong>composite key</strong> in Dept table I have mentioned two columns in the above mapping. This mapping can be read as &#8220;<em>MANY Employees are related TO ONE Dept with help of COLUMNS proj_cd and dept_name</em>&#8220;. These mappings are called as <strong>Associations </strong>in hibernate.</p>
<p>In the Dept mapping file since one dept can return <strong>multiple</strong> Employees, they would be returned in the form of a<strong> set</strong>. Hence we would have to map the set of Employee as:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;set</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;employees&quot;</span> <span style="color: #000066;">inverse</span>=<span style="color: #ff0000;">&quot;true&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;column</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;proj_cd&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
		<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;column</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;dept_name&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/key<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
	<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;one-to-many</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;com.abc.entities.Employee&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/set<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>The<strong> inverse=&#8221;true&#8221;</strong> says that the association is <strong>bidirectional</strong> which is another important concept in hibernate. In a bidirectional relationship you can reach an associated element from within one element and same applies the other way too. On the contrary you may even have <strong>unidirectional</strong> relationship in which you don&#8217;t specify mapping in the other classes.</p>
<p><span style="text-decoration: underline;"><strong>Defining Entity classes</strong></span></p>
<p>This is straight forward. Entity classes are simple <a href="http://en.wikipedia.org/wiki/JavaBeans" target="_blank">Java Beans</a>. You can view the class definition in the links provided at the bottom of this post. A <strong>no argument public constructor </strong>is a must in case you define a custom one.</p>
<p>One special case here would be for composite keys. Composite keys are defined in a <strong>separate class</strong>. After this, In the class where composite keys are required you would have to make a property of the composite-class-type.</p>
<p><strong>Step 4. Make the DAO layer with the required functions</strong></p>
<p>Finally we are the moment of salvation. The thing which we were waiting eagerly for implementing. The DAO layer. It is always a good practice to make a separate DAO class for holding utility functions. Hibernate requires that you always open a <strong>session</strong> before accessing the database and making <strong>transactions </strong>when you update the database. This requires repeatable lines of code.</p>
<p>So in order to avoid repeating ourselves its better to keep these lines of code in a DAO class as shown in the links below. Check for <em><strong>com.abc.dao.DAO.java</strong></em>. You may use the class as it is since it is a routine code. For coding your own classes to make use of the utility functions in the DAO extend your class with this <em><strong>DAO.</strong></em></p>
<p>Lets have a look at <em><strong>AdminDAO</strong></em>. Since I belive in interface based implementations I have provided <em><strong>AdminDAO</strong></em> as an interface and <em><strong>AdminDAOHibernateImpl</strong></em> as its implementation which extends <em><strong>DAO</strong></em>. The code is kept simple for understanding purposes. The things worth pondering are:</p>
<p>In functions which do an update on the tables you have to carry the following steps:</p>
<ol>
<li>begin();</li>
<li>getSession()&#8230;.; // save or update</li>
<li>commit();</li>
<li>rollback();  //in case of HibernateException and throw any custom business exception if required</li>
</ol>
<p>For fetching data you don&#8217;t need transactions so you don&#8217;t need to do the above steps. In this case you can just execute a query via the <em>getSession() </em>as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="java5" style="font-family:monospace;"><span style="color: #003399; font-weight: bold;">Query</span> q = getSession<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">createQuery</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;from Employee e inner join fetch e.dept where e.psno = :psno&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
q.<span style="color: #006633;">setString</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;psno&quot;</span>, psno.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Employee emp = <span style="color: #009900;">&#40;</span>Employee<span style="color: #009900;">&#41;</span> q.<span style="color: #006633;">uniqueResult</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><span style="text-decoration: underline;"><strong>Hibernate Query Language</strong></span></p>
<p>The above query syntax is called <strong>HQL (Hibernate Query Language)</strong>. It is syntactically very similar to JDBC with the difference that HQL queries are based on objects and not on tables so the names are <strong>case sensitive</strong> and <strong>aliases</strong> to objects are a must.</p>
<p>In HQL, you can either fetch a single result when you know that there would be exactly one row fetched. When you know that mutiple records might be returned then you can fetch the list as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="java5" style="font-family:monospace;"><span style="color: #003399; font-weight: bold;">Query</span> q = getSession<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">createQuery</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;from Employee&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399; font-weight: bold;">List</span><span style="color: #339933;">&lt;</span>Employee<span style="color: #339933;">&gt;</span> list = q.<span style="color: #006633;">list</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">return</span> list<span style="color: #339933;">;</span></pre></div></div>

<p><span style="text-decoration: underline;"><strong>Paging in Hibernate</strong></span></p>
<p>You can obtain paging in Hibernate very easily without any additional efforts by applying a max results criteria</p>

<div class="wp_syntax"><div class="code"><pre class="java5" style="font-family:monospace;">q.<span style="color: #006633;">setFirstResult</span><span style="color: #009900;">&#40;</span>firstResult<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
q.<span style="color: #006633;">setMaxResults</span><span style="color: #009900;">&#40;</span>maxResults<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Doesn&#8217;t it feel really good. JDBC users might feel jealous at this time1</p>
<p><strong>Step 5. Test the DAO classes</strong></p>
<p>Now, to our final strike. The testing can be done with POJO&#8217;s. For the tutorial I had created a service layer since I usally access teh DAO layer through the service layer. So the testing was done on the service layer instead of the DAO as this application was small. You can however test out directly the DAO functions.</p>

<div class="wp_syntax"><div class="code"><pre class="java5" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">static</span> <span style="color: #006600; font-weight: bold;">void</span> listTest<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003399; font-weight: bold;">List</span><span style="color: #339933;">&lt;</span>Employee<span style="color: #339933;">&gt;</span> employees = adminService.<span style="color: #006633;">getAllEmployees</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000;  font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>Employee emp: employees<span style="color: #009900;">&#41;</span>
			<span style="color: #003399; font-weight: bold;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>emp.<span style="color: #006633;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>AppException e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003399; font-weight: bold;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>e.<span style="color: #006633;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Wasn&#8217;t that a breeze? I hope that it was. Once you gain a thorough knowledge of <strong>ORM concepts </strong>then you would appreciate working with <strong>Hibernate</strong> even more. For further knowledge, I would recommend you to go through the <a href="http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch" target="_blank">impedence mismatch theory</a> to know the fundamental flaws surrounding JDBC. Working with Hibernate would then be real fun.</p>
<p>Enjoy folks!<br />
<a name="resources"></a><br />
<u><strong>Resources for the tutorial</strong></u></p>
<p>The below files are required for running the above tutorial. Copy these to your eclipse project and add the required libraries of hibernate and mysql before running the project.</p>
<p><em>Configuration</em><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/hibernatecfg.xml' target=_blank>hibernate.cfg.xml</a></p>
<p><em>Package: com.abc.entities</em><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/employeejava.txt' target=_blank>com.abc.entities.Employee.java</a><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/employeehbm.xml' target=_blank>Employee.hbm.xml</a><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/deptjava.txt' target=_blank>com.abc.entities.Dept.java</a><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/deptpkjava.txt' target=_blank>com.abc.entities.DeptPK.java</a><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/depthbm.xml' target=_blank>Dept.hbm.xml</a></p>
<p><em>Package: com.abc.dao</em><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/daojava.txt' target=_blank>com.abc.dao.DAO.java</a><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/admindaojava.txt' target=_blank>com.abc.dao.AdminDAO.java</a><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/admindaohibernateimpljava.txt' target=_blank>com.abc.dao.AdminDAOHibernateImpl.java</a></p>
<p><em>Package: com.abc.service</em><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/adminservicejava.txt' target=_blank>com.abc.service.AdminService.java</a><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/adminserviceimpljava.txt' target=_blank>com.abc.service.AdminServiceImpl.java</a><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/deptservicejava.txt' target=_blank>com.abc.service.DeptService.java</a><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/deptserviceimpljava.txt' target=_blank>com.abc.service.DeptServiceImpl.java</a></p>
<p><em>Package: com.abc.exceptions</em><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/appexceptionjava.txt' target=_blank>com.abc.exceptions.AppException.java</a></p>
<p><em>Package: com.abc.tests</em><br />
<a href='http://techtracer.com/wp-content/uploads/2008/12/depttestjava.txt' target=_blank>com.abc.tests.DeptTest.java</a></p>
<h2>Related posts:</h2><ul><li><a href="http://techtracer.com/2008/04/26/the-technique-of-virtual-deployment-in-tomcat/" rel="bookmark" title="Permanent Link: The Technique of Virtual Deployment in Tomcat">The Technique of Virtual Deployment in Tomcat</a></li><li><a href="http://techtracer.com/2007/04/16/the-great-ant-tutorial-a-great-jump-start/" rel="bookmark" title="Permanent Link: The Great Ant Tutorial &#8211; a great jump start">The Great Ant Tutorial &#8211; a great jump start</a></li><li><a href="http://techtracer.com/2008/01/09/impressive-google-chart-generator-scripts/" rel="bookmark" title="Permanent Link: Impressive Google Chart Generator Scripts">Impressive Google Chart Generator Scripts</a></li><li><a href="http://techtracer.com/2007/03/09/hello-world/" rel="bookmark" title="Permanent Link: Tracing the route of technology">Tracing the route of technology</a></li><li><a href="http://techtracer.com/2007/10/06/mozillas-new-killer-app-the-webrunner/" rel="bookmark" title="Permanent Link: Mozilla&#8217;s New Killer App &#8211; The WebRunner">Mozilla&#8217;s New Killer App &#8211; The WebRunner</a></li></ul><br /><a href="http://techtracer.com/">Techtracer.com</a> Copyright &copy; 2008<br /> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techtracer?a=s7wpp-TsKvM:RmbPYhopj54:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techtracer?i=s7wpp-TsKvM:RmbPYhopj54:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=s7wpp-TsKvM:RmbPYhopj54:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techtracer?i=s7wpp-TsKvM:RmbPYhopj54:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=s7wpp-TsKvM:RmbPYhopj54:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/techtracer?i=s7wpp-TsKvM:RmbPYhopj54:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techtracer/~4/s7wpp-TsKvM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://techtracer.com/2008/12/30/the-great-hibernate-tutorial-a-great-jump-start-for-beginners/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		<feedburner:origLink>http://techtracer.com/2008/12/30/the-great-hibernate-tutorial-a-great-jump-start-for-beginners/</feedburner:origLink></item>
		<item>
		<title>Reflection in Java – Simplified</title>
		<link>http://feedproxy.google.com/~r/techtracer/~3/jl-phJSJyh0/</link>
		<comments>http://techtracer.com/2008/11/24/reflection-in-java-simplified/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 04:23:37 +0000</pubDate>
		<dc:creator>nitinpai</dc:creator>
				<category><![CDATA[Concepts]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java Reflection]]></category>
		<category><![CDATA[Java Reflection tutorial]]></category>

		<guid isPermaLink="false">http://techtracer.com/?p=276</guid>
		<description><![CDATA[There are times when you wish you had some access to the information present in your Java classes. Information, such as which fields, methods and constructors are defined in it. This information is called as the metadata of a class and there is a way in which you can access easily without doing tedious coding [...]]]></description>
			<content:encoded><![CDATA[<p>There are times when you wish you had some access to the information present in your Java classes. Information, such as which fields, methods and constructors are defined in it. This information is called as the <strong>metadata</strong> of a class and there is a way in which you can access easily without doing tedious coding or resorting to any hacks. It is called as <strong>Reflection</strong>.</p>
<p><strong>Reflection in Java</strong> is done by using using the <strong>java.lang.Class</strong> class. This class provides access to all the information within your own applications classes or even the regular java library classes. Let’s say you have a class in a package called <em>com.tt.company.Employee </em>then if you need the metadata of the Employee class you would have to first assign it to the Class as :</p>

<div class="wp_syntax"><div class="code"><pre class="java5" style="font-family:monospace;"><span style="color: #003399; font-weight: bold;">Class</span> c = <span style="color: #003399; font-weight: bold;">Class</span>.<span style="color: #006633;">forName</span><span style="color: #009900;">&#40;</span>“com.<span style="color: #006633;">tt</span>.<span style="color: #006633;">company</span>.<span style="color: #006633;">Employee</span>”<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><span style="text-decoration: underline;"><strong>Accessing Fields, Methods and Constructors with Reflection</strong></span></p>
<p>If you are not sure which fields and methods are declared in a class and you don’t have access to the source code then you can easily get this information by simple looping.</p>
<p>For example, if I wanted to access the fields and methods declared in the class <em>Employe</em>e then its as simple as the below code.</p>

<div class="wp_syntax"><div class="code"><pre class="java5" style="font-family:monospace;"><span style="color: #003399; font-weight: bold;">Field</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> fields = c.<span style="color: #006633;">getFields</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399; font-weight: bold;">Method</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> methods = c.<span style="color: #006633;">getMethods</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000;  font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003399; font-weight: bold;">Field</span> f : fields<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #003399; font-weight: bold;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Field: &quot;</span> + f.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000;  font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003399; font-weight: bold;">Method</span> m : methods<span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #003399; font-weight: bold;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Method:&quot;</span> + m.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>You might get some additional methods if you use the <strong>getMethods() </strong>method. This is because, the <strong>getMethods() </strong>definition also chooses those methods which are present in any of the super classes present. In this case, if <em>Employee</em> class does not have any super class, but still it is a subclass of <em>Objec</em>t. Hence methods defined in the <em>Object</em> class would also form a part of the output.</p>
<p>In order to avoid the methods defined in the super class you should use the <strong>getDeclaredMethods()</strong> instead.</p>
<p><strong><span style="text-decoration: underline;">Note:</span></strong> An important point worth mentioning over here is that, the loop would produce only those methods or fields which are marked public. If you don’t have a public field or method it won’t be considered. In order to loop over them, use the <strong>getDelcaredFields() </strong>or <strong>getDeclaredMethods()</strong></p>
<p><span style="text-decoration: underline;"><strong>Fun Things to do with Relection in Java</strong></span></p>
<p>You can discover new techniques of programming once you feel the power of Reflection in your hands. The new techniques would include instantiation of objects dynamically, setting of values to fields and invoking methods without calling them explicitly.</p>
<p>Let’s take the case of a <strong>Singleton </strong>class into consideration for showing the true power of Reflection. For a Java novice, a singleton class is the one which has a<strong> private constructor</strong>. It isn’t practically true, but let’s assume that it is. Using reflection, this concept of singleton can be broken.</p>
<p>Here is an example of a Singleton class:</p>

<div class="wp_syntax"><div class="code"><pre class="java5" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SingleCandidate <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399; font-weight: bold;">String</span> name<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">static</span> <span style="color: #006600; font-weight: bold;">int</span> counter = <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">private</span> SingleCandidate<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
counter++<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399; font-weight: bold;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Instance #&quot;</span> + counter<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #006600; font-weight: bold;">void</span> showName<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #003399; font-weight: bold;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>name<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>A Singleton pattern dictates that only one instance of the object must be present at a given point of time in a JVM. So now, let’s take the above Singleton class for a ride with Reflection:</p>

<div class="wp_syntax"><div class="code"><pre class="java5" style="font-family:monospace;"><span style="color: #003399; font-weight: bold;">Class</span> singleton = SingleCandidate.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399; font-weight: bold;">Constructor</span> privateConstructor =  singleton.<span style="color: #006633;">getDeclaredConstructors</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
privateConstructor.<span style="color: #006633;">setAccessible</span><span style="color: #009900;">&#40;</span><span style="color: #006600; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//This is scary</span>
&nbsp;
SingleCandidate obj = <span style="color: #009900;">&#40;</span>SingleCandidate<span style="color: #009900;">&#41;</span> privateConstructor.<span style="color: #006633;">newInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
SingleCandidate obj2 = <span style="color: #009900;">&#40;</span>SingleCandidate<span style="color: #009900;">&#41;</span> privateConstructor.<span style="color: #006633;">newInstance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>The code is self explanatory and you will realize that in this way you can easily create many instances of the possible candidate for a singleton class in the JVM. How fool proof was that?</p>
<p><span style="text-decoration: underline;"><strong>Setting Values to Private Fields!</strong></span></p>
<p>What did you learn in encapsulation? Was it making fields private and public so that private fields could be accessed only by the class in which they are declared?  Reflection can break this too.</p>

<div class="wp_syntax"><div class="code"><pre class="java5" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//Even more scary</span>
&nbsp;
<span style="color: #003399; font-weight: bold;">Field</span> privateField = singleton.<span style="color: #006633;">getDeclaredField</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;name&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
privateField.<span style="color: #006633;">setAccessible</span><span style="color: #009900;">&#40;</span><span style="color: #006600; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
privateField.<span style="color: #006633;">set</span><span style="color: #009900;">&#40;</span>obj, <span style="color: #0000ff;">&quot;You are not a singleton anymore&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//Access private Constructor</span>
&nbsp;
<span style="color: #003399; font-weight: bold;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Accessing private Constructor: &quot;</span> + privateConstructor.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #666666; font-style: italic;">//Get a private field value</span>
&nbsp;
<span style="color: #003399; font-weight: bold;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Accessing private Field: &quot;</span> + privateField.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//Invoke a method</span>
&nbsp;
<span style="color: #003399; font-weight: bold;">Method</span> method = singleton.<span style="color: #006633;">getDeclaredMethod</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;showName&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
method.<span style="color: #006633;">invoke</span><span style="color: #009900;">&#40;</span>obj<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><span style="text-decoration: underline;"><strong>Reflection with Generics</strong></span></p>
<p>If you have tried out the above code in Eclipse you might see some warnings for the Class or Constructor usage. The warning message will be:</p>
<blockquote><p>Class is a raw type. References to generic type Class&lt;T&gt; should be parameterized</p>
<p>Constructor is a raw type. References to generic type Constructor&lt;T&gt; should be parameterized</p></blockquote>
<p>To suppress these warnings you will have to use the generic parameter &#8220;?&#8221; as follows:</p>

<div class="wp_syntax"><div class="code"><pre class="java5" style="font-family:monospace;"><span style="color: #003399; font-weight: bold;">Class</span><span style="color: #339933;">&lt;?&gt;</span> singleton = SingleCandidate.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #003399; font-weight: bold;">Constructor</span><span style="color: #339933;">&lt;?&gt;</span> privateConstructor =  singleton.<span style="color: #006633;">getDeclaredConstructors</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></pre></div></div>

<p>The questions mark symbol is a <a href="http://java.sun.com/docs/books/tutorial/extra/generics/wildcards.html" target="_blank">wildcard type</a> used in generics. This only applies only if you using <strong>Java 5</strong> or higher versions.</p>
<p><span style="text-decoration: underline;"><strong>Uses of reflection</strong></span></p>
<p>Reflection is <strong>powerful technique</strong> when used appropriately. The major usage of reflection comes in when you are building your own framework, compilers or development tools in which you need access to the metadata of the classes created by end users. You surely might have already used the best products of Reflection without even knowing about it.</p>
<ul>
<li>JSP gets converted to Servlets using Reflection.</li>
<li>The <strong>Spring</strong> framework uses Reflection to administer the references which you declare in your s<em>pring-config.xml</em> without you explicitly instantiating any object. The whole concept of <a href="http://techtracer.com/2007/04/26/getting-started-with-ioc-a-simplified-tutorial/" target="_self">Dependency Injection (Inversion of Control)</a> is conveniently implemented with Reflection.</li>
<li>Reflection also gave birth to the concept of <strong>aspect oriented programming</strong>.</li>
</ul>
<p>Reflection is not limited just to this post and nor Reflection is used for the purpose of breaking security. This article was aimed at showing you a direction with which you can explore Reflection more and discover new principles and techniques to build better applications.</p>
<h2>Related posts:</h2><ul><li><a href="http://techtracer.com/2007/03/28/convert-date-to-string-and-string-to-date-in-java/" rel="bookmark" title="Permanent Link: Convert Date to String and String to Date in Java">Convert Date to String and String to Date in Java</a></li><li><a href="http://techtracer.com/2007/04/26/getting-started-with-ioc-a-simplified-tutorial/" rel="bookmark" title="Permanent Link: Getting started with IoC &#8211; A simplified tutorial">Getting started with IoC &#8211; A simplified tutorial</a></li><li><a href="http://techtracer.com/2007/04/04/java-5-generics-changing-for-good/" rel="bookmark" title="Permanent Link: Java 5 Generics &#8211; Changing for good">Java 5 Generics &#8211; Changing for good</a></li><li><a href="http://techtracer.com/2007/08/01/j2ee-or-jee-java-5-or-java-15-is-sun-crazy/" rel="bookmark" title="Permanent Link: J2EE or JEE, Java 5 or Java 1.5 &#8211; Is SUN Crazy?">J2EE or JEE, Java 5 or Java 1.5 &#8211; Is SUN Crazy?</a></li><li><a href="http://techtracer.com/2006/10/15/microsoft-internet-explorer-7-nothing-special/" rel="bookmark" title="Permanent Link: Microsoft Internet Explorer 7 &#8211; Nothing Special">Microsoft Internet Explorer 7 &#8211; Nothing Special</a></li></ul><br /><a href="http://techtracer.com/">Techtracer.com</a> Copyright &copy; 2008<br /> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techtracer?a=jl-phJSJyh0:Rm0utIBXIuk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techtracer?i=jl-phJSJyh0:Rm0utIBXIuk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=jl-phJSJyh0:Rm0utIBXIuk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techtracer?i=jl-phJSJyh0:Rm0utIBXIuk:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=jl-phJSJyh0:Rm0utIBXIuk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/techtracer?i=jl-phJSJyh0:Rm0utIBXIuk:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techtracer/~4/jl-phJSJyh0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://techtracer.com/2008/11/24/reflection-in-java-simplified/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		<feedburner:origLink>http://techtracer.com/2008/11/24/reflection-in-java-simplified/</feedburner:origLink></item>
		<item>
		<title>Google Chrome – What’s in it for ya?</title>
		<link>http://feedproxy.google.com/~r/techtracer/~3/0tZeZjFpddU/</link>
		<comments>http://techtracer.com/2008/10/06/google-chrome-whats-in-it-for-ya/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 11:01:50 +0000</pubDate>
		<dc:creator>nitinpai</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://techtracer.com/?p=273</guid>
		<description><![CDATA[It was hardly a matter of a blog post on the official Google blog about the release of Google Chrome Beta to get noticed. That was it. And the rest of the work was done for free by the hoards of bloggers, internet marketing experts, forum members and mailers. The intention of Google to get [...]]]></description>
			<content:encoded><![CDATA[<p>It was hardly a matter of a <a href="http://googleblog.blogspot.com/2008/09/fresh-take-on-browser.html" target="_blank">blog post</a> on the official Google blog about the release of <strong>Google Chrome</strong> Beta to get noticed. That was it. And the rest of the work was done for free by the hoards of bloggers, internet marketing experts, forum members and mailers. The intention of Google to get its browser hooked to users got its due that easily. My post too does talk on Google Chrome but I don&#8217;t intend to rant on it or praise it or even compare it with the competitors. Is it really competing enough? That might be a question to ponder about but lets for a moment bask in the glory of the success of Chrome&#8217;s beta launch. Hey, its by Google, mate.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-274" title="google_chrome_logo" src="http://techtracer.com/wp-content/uploads/2008/10/google_chrome_logo.jpeg" alt="" width="116" height="108" /></p>
<p><strong>Future Smackdown</strong></p>
<p>I am not pretty sure behind the motive of the launch however. It might have got something to do with the browser wars in particular. You see, when the giants are busy fighting a dwarf can easily run away with the bounty. If the saying is anywhere close to truth then Google Chrome just might be the next big thing we have to wait and watch. What makes me say this you might wonder. Well, Internet Explorer is busy getting decked up for its <strong>version 8 </strong>release which Microsoft must be really pushing in with its best efforts. On the other hand Firefox has had a majestic release of its <strong>version 3.0</strong>. So where does Google Chrome fit in here? Remember, they say its in beta! Gmail was too!</p>
<p>Google Chrome has already been stated to possess best features of Firefox and other browsers. Bloggers have been ranting about this, the most. That is true since Google Chrome may not support plugins and themes feature as of now, on which Firefox has found its enormous success. But the first question to put up front is, is Google Chrome really just another browser or a <strong>desktop application</strong> which connects to the internet. Well both say the same thing but the mention of a different memory processing model for Chrome is something which you have to consider. Google won&#8217;t be silly to reinvent the wheel. It just might be a futuristic vision of Google which we are currently witnessing on a miniature scale. <strong>Google Suggest, Maps</strong> or <strong>GMail </strong>must ring the bells as I mention this.</p>
<p>People may crib and rant about Google Chrome but it hasn&#8217;t hampered the success of launch down even by a pint. In fact Google has made a smart move to get as many<strong> feedbacks</strong> as possible since it has made Chrome right from scratch. Now its motive would definitely be to do a write up once again and make a surprise launch with power packed features in the next version. I can see people waiting with baited breath keeping a hawks eye on every single move Google does.</p>
<p><strong>In For a Tough Competition?</strong></p>
<p>Google Chrome has been launched amidst <strong>Adobe Flex </strong>going mainstream with its enterprise presence and while <strong>Silverlight</strong> is being pushed into your face. You must have some or the other time come across Flex and Silverlight applications which left your mouth wide open to see the magic they do. Can a browser reduce these giant&#8217;s market share? Why do I ask?</p>
<p>If you carefully notice Chrome has heavily emphasized that it is going to <a href="http://www.google.com/chrome/intl/en/webmasters-faq.html#html5" target="_blank">support</a> the standards of web technologies like <strong>CSS, Javascript, HTML5</strong>. This means that Google Chrome would be a perfect foundation for web developers who always have been frustrated with browser dependencies when working with these web technologies. By using Chrome you might really enjoy developing a web application. This translates to more web developers being happy, more usage of standard features of Javascript, CSS and HTML, more usage of open technologies viz. <strong>Ajax, XML, JSON</strong>, leading to more usage of free tools &amp; less use of propreitary products.</p>
<p>All this means, more market share for open source and Google already has set its base up front with a plethora of tools. You name it, <strong>Google Gears, GWT, Google App Engine, Google Analytics, Google Maps</strong> etc for the web developers. More standards attribute to better web applications and all which is supported by Chrome inherently. The survival of Flex or Silverlight will be a debatable issue henceforth if Google Chrome manages to captilize on its intentions.</p>
<p>This sounds a huge success to Google Chrome. If this falls in line, then Firefox, Internet Explorer, Safari, Opera will be competing with Chrome rather than with themselves. Google will rise to the top and rule the universe. All of this is a distant dream for me and I don&#8217;t want to sound preachy now. You do the analysis as I will wait for a surprise in the next version of Google Chrome. It might just be the next big thing, you may never know!</p>
<p>The things I admire in the current release of Google Chrome :</p>
<ol>
<li>Full screen interface</li>
<li>Draggable tabs to windows and back into tabs</li>
<li>Neater display of history links and thumbnails of recent visits</li>
</ol>
<p><strong>Testing Google Chrome</strong></p>
<p>The thing you might be wondering at the moment is how to distinguish Chrome from the rest of the browsers. As Google mentions, <strong>Chrome</strong> sports a different <strong>memory management model</strong> which implements each tab as a whole <strong>new process</strong> instead of a thread. On opening a tab you would notice that the task manager would have a new process listed. In order to try out Chrome&#8217;s ability with this regards you should try opening a Javascript heavy page first in browsers such as Firefox and Internet Explorer.</p>
<p>Heavy Javascript attributes to browser hanging which is considered often as a painful process since all the tabs hang and the browser itself has to be killed to stop the loading. As far as Chrome goes, this nature would be handled in a completely different manner since you can now directly kill a tab process from the task manager without affecting the other open tabs.</p>
<p>While the above concept is not much useful for the casual surfer, it will be a must for web application users in times to come, since the advent of Web 2.0 has in fact spruced up the usage of Ajax which in turn has made the web application heavy for processing. Such a model would have been required any time in near future, but with Chrome stepping the right foot at the right time you can relax down a bit now. If you are a staunch <strong>Ajax developer</strong> then Chrome surely would come to your rescue.</p>
<h2>Related posts:</h2><ul><li><a href="http://techtracer.com/google-search/" rel="bookmark" title="Permanent Link: Search Results">Search Results</a></li><li><a href="http://techtracer.com/2007/10/14/unleash-the-power-in-your-blog-with-google-custom-search/" rel="bookmark" title="Permanent Link: Unleash the Power in Your Blog with Google Custom Search">Unleash the Power in Your Blog with Google Custom Search</a></li><li><a href="http://techtracer.com/2007/12/03/google-experiments-are-brilliant/" rel="bookmark" title="Permanent Link: Google Experiments are Brilliant">Google Experiments are Brilliant</a></li><li><a href="http://techtracer.com/2007/11/28/minesweeper-back-with-a-bang/" rel="bookmark" title="Permanent Link: Minesweeper &#8211; Back with a Bang">Minesweeper &#8211; Back with a Bang</a></li><li><a href="http://techtracer.com/2007/11/27/drool-over-the-all-new-google-android-ui/" rel="bookmark" title="Permanent Link: Drool Over the all new Google Android UI">Drool Over the all new Google Android UI</a></li></ul><br /><a href="http://techtracer.com/">Techtracer.com</a> Copyright &copy; 2008<br /> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techtracer?a=0tZeZjFpddU:kKApsbII-ZM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techtracer?i=0tZeZjFpddU:kKApsbII-ZM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=0tZeZjFpddU:kKApsbII-ZM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techtracer?i=0tZeZjFpddU:kKApsbII-ZM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=0tZeZjFpddU:kKApsbII-ZM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/techtracer?i=0tZeZjFpddU:kKApsbII-ZM:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techtracer/~4/0tZeZjFpddU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://techtracer.com/2008/10/06/google-chrome-whats-in-it-for-ya/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		<feedburner:origLink>http://techtracer.com/2008/10/06/google-chrome-whats-in-it-for-ya/</feedburner:origLink></item>
		<item>
		<title>ReadAir – Google Reader On My Desktop!</title>
		<link>http://feedproxy.google.com/~r/techtracer/~3/w9oYZkdHGYo/</link>
		<comments>http://techtracer.com/2008/07/06/readair-google-reader-on-my-desktop/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 15:03:00 +0000</pubDate>
		<dc:creator>nitinpai</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://techtracer.com/?p=271</guid>
		<description><![CDATA[The only constant thing for me in my life is change. I like to change my lifestyle, habits, hobbies once in a while so as to keep my mind fresh and active. I get bored with routines and so is the same case in my browsing activities or tools which I use. This time around [...]]]></description>
			<content:encoded><![CDATA[<p>The only constant thing for me in my life is <strong>change</strong>. I like to change my lifestyle, habits, hobbies once in a while so as to keep my mind fresh and active. I get bored with routines and so is the same case in my browsing activities or tools which I use. This time around my axe swayed in the direction of my age old favorite feed reader, <strong>Google Reader</strong>.</p>
<p>I am thoroughly satisfied with <a href="http://techtracer.com/2007/09/06/google-reader-search-goes-live/" target="_self">Google Reader</a> for reading my RSS feeds but I felt its been a long time I have spent on it and it has now started to bore me a bit. So I started some search for good desktop applications which would give some <strong>eye candy</strong> and also improve my productivity while learning from the feeds.</p>
<p>I have found one nice solution which has relieved me to some extent and which is certainly an impressive effort in the direction of web desktop integration. Its called <a href="http://code.google.com/p/readair/" target="_blank">ReadAir</a>. It is a really nice application for feed reading and I am impressed by its potential.  The reason I liked it was because it is built on <a href="http://www.adobe.com/products/air/" target="_blank">Adobe AIR</a>. I had become a fan of <strong>Adobe AIR</strong> when I had read about it for the first time.</p>
<p>Seeing a live usable application built on it was something I had waited for and<strong> ReadAir</strong> has confirmed my belief that sometime later in the future we are going to see amazing applications built for the desktops but running on the web. <a href="http://techtracer.com/2007/10/31/mozilla-prism-a-revolution-in-web-apps/" target="_blank">Mozilla Prism</a> is a yet another effort in this field.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-272" title="readair_google_reader" src="http://techtracer.com/wp-content/uploads/2008/07/readair_google_reader.jpg" alt="Readair_Google_Reader" width="389" height="290" /></p>
<p>Okay, coming back to the <strong>ReadAir</strong>. ReadAir is a desktop feed reader for reading your Google Reader feeds. The features that I can place my votes on are:</p>
<ul>
<li>Easy setup and login straight into Google Reader</li>
<li><strong>Direct synchronization</strong> of read posts with Google Reader</li>
<li>You can star any post directly inside it which is also visible later in your Google Reader</li>
<li>Add/Remove tags or feeds from within it</li>
<li>It has got a very minimalistic Interface yet its pretty neat looking</li>
<li>The feed post colors and fonts are soothing to the eye</li>
<li>It is quick in loading.</li>
<li>Clicking on the post title marks the post as read (This is better than scrolling the entire length of the post as in Google Reader)</li>
</ul>
<p>I was satisfied by the above basic features and also expect them to improve them in the future. Since the application is in its early days, some features can be cranky at times. For example, I found the <strong>auto update</strong> feature somewhat unnecessary. It updated the application with some new features which later started to show some errors. Also, the search is not fully functional and currently ReadAir does not support <strong>keyboard shortcuts</strong>.</p>
<p>Leaving apart the shortcomings, the synchronization was the best part of ReadAir. At least I have got a different reader for my taste and also due to the synchronization with Google Reader, I do not have to worry about <strong>re-reading the same posts</strong> if I happen to access Google Reader from a different location. I appreciate the commendable effort put up by <strong>Adam Mcgrath</strong> for bringing this idea to life and am looking forward for addition of more features.</p>
<p><a href="http://readair.googlecode.com/files/ReadAir.0.3.air" target="_blank">Try it</a>, its nice to have a change sometimes and I would always root for <strong>web desktop applications</strong> like these. For installing ReadAir you need to have Adobe Air installed on your system. Download Adobe Air from <a href="http://labs.adobe.com/downloads/air.html" target="_blank">here</a>.</p>
<h2>Related posts:</h2><ul><li><a href="http://techtracer.com/2007/04/09/web-and-desktop-apps-the-3rd-world-war/" rel="bookmark" title="Permanent Link: Web and Desktop Apps &#8211; the 3rd World War!">Web and Desktop Apps &#8211; the 3rd World War!</a></li><li><a href="http://techtracer.com/2007/10/06/mozillas-new-killer-app-the-webrunner/" rel="bookmark" title="Permanent Link: Mozilla&#8217;s New Killer App &#8211; The WebRunner">Mozilla&#8217;s New Killer App &#8211; The WebRunner</a></li><li><a href="http://techtracer.com/2007/10/14/unleash-the-power-in-your-blog-with-google-custom-search/" rel="bookmark" title="Permanent Link: Unleash the Power in Your Blog with Google Custom Search">Unleash the Power in Your Blog with Google Custom Search</a></li><li><a href="http://techtracer.com/2007/09/06/google-reader-search-goes-live/" rel="bookmark" title="Permanent Link: Google Reader Search Goes Live!">Google Reader Search Goes Live!</a></li><li><a href="http://techtracer.com/2007/07/25/adobe-reader-80-%e2%80%93-fully-loaded/" rel="bookmark" title="Permanent Link: Adobe Reader 8.0 &#8211; Fully Loaded">Adobe Reader 8.0 &#8211; Fully Loaded</a></li></ul><br /><a href="http://techtracer.com/">Techtracer.com</a> Copyright &copy; 2008<br /> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techtracer?a=w9oYZkdHGYo:Tbl64T7dCcI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techtracer?i=w9oYZkdHGYo:Tbl64T7dCcI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=w9oYZkdHGYo:Tbl64T7dCcI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techtracer?i=w9oYZkdHGYo:Tbl64T7dCcI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=w9oYZkdHGYo:Tbl64T7dCcI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/techtracer?i=w9oYZkdHGYo:Tbl64T7dCcI:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techtracer/~4/w9oYZkdHGYo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://techtracer.com/2008/07/06/readair-google-reader-on-my-desktop/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://techtracer.com/2008/07/06/readair-google-reader-on-my-desktop/</feedburner:origLink></item>
		<item>
		<title>Firefox 3 Review – It’s Simply Amazing</title>
		<link>http://feedproxy.google.com/~r/techtracer/~3/f5hYEJ8Mcrc/</link>
		<comments>http://techtracer.com/2008/06/22/firefox-3-review-its-simply-amazing/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 17:55:50 +0000</pubDate>
		<dc:creator>nitinpai</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Reviews]]></category>

		<guid isPermaLink="false">http://techtracer.com/?p=262</guid>
		<description><![CDATA[Firefox 3 has arrived and my behavior has changed right from the instance I have switched to Firefox 3. The sudden gush of excitement has made me more happier and I am starting to become more smart in the web world. Is it due to Firefox or something else, I am not sure but one [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Firefox 3</strong> has arrived and my behavior has changed right from the instance I have switched to Firefox 3. The sudden <a href="http://techtracer.com/2008/05/25/firefox-3-is-arriving-shortly-gear-up/" target="_self">gush of excitement</a> has made me more happier and I am starting to become more smart in the web world. Is it due to Firefox or something else, I am not sure but one thing which I am sure about is you must and must switch to Firefox 3.  Its rare that you come across something very perfect, efficient, creative and beautiful all at the same time, and this time its in the form of Firefox 3. Beauty has certainly met brains in the new version.</p>
<p>Without letting any of my excitement down, I am going to tell you the amazing things that I found in Firefox 3. First of all the <strong>startup time</strong> of Firefox 3 is much quicker than <a href="http://techtracer.com/2006/10/29/firefox-20-winner-of-the-browser-wars/" target="_self">Firefox 2</a>. The next things which strikes as it starts is its <strong>appearance</strong>. I have fallen in love with the two little glowy buttons for back and forward browsing. <img src='http://techtracer.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-267" title="firefox_3_buttons_large" src="http://techtracer.com/wp-content/uploads/2008/06/firefox_3_buttons_large.jpg" alt="Firefox 3 Buttons Large" width="100" height="56" /> <img class="alignnone size-full wp-image-265" title="firefox_3_buttons" src="http://techtracer.com/wp-content/uploads/2008/06/firefox_3_buttons.jpg" alt="Firefox 3 Buttons Small" width="84" height="53" /></p>
<p><span style="text-decoration: underline;"><strong>Now We Have The Awesomebar!</strong></span></p>
<p>The show stealer of the entire futuristic parade of Firefox 3 is its address bar or <strong>awesomebar</strong>. Its awesome in its true sense. You wouldn&#8217;t even have imagined that the lame old address bar can sometimes mean so much than just typing in URL&#8217;s. With this revolutionary address bar in Firefox 3 you would soon forget having to remember URL&#8217;s.</p>
<p>Yes, you don&#8217;t have to remember those lengthy creepy URL&#8217;s once you have Firefox 3 in your control. The address bar is so smart it can detect  the correct URL when you just type in the actual keywords which had made you open that page. For example, if you had opened a page which contained some information on &#8220;<strong>Firefox</strong>&#8221; and later on forgot which URL you had opened, just type in &#8220;<strong>Firefox</strong>&#8221; and the page URL would prompt up the list with &#8220;<strong>Firefox</strong>&#8221; highlighted. Incredible I must say.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-264" title="firefox_3_awesomebar" src="http://techtracer.com/wp-content/uploads/2008/06/firefox_3_awesomebar.jpg" alt="Firefox 3 Awesomebar" width="326" height="262" /></p>
<p>You may be guessing already what makes it so smart?  Well, from the past, Firefox has been keeping a store of the web page titles by caching in the URL&#8217;s you were opening up. But until the launch of Firefox 3, it was never used to good effect. Now in the new version, it makes a really good use of these title&#8217;s. Its a high probability that you would remember something in the page titles if you want to get back to the page you had visited earlier. So, its likely that instead of putting in the actual URL you would be putting the right <strong>keywords</strong>, and the right keywords are always present in? You guessed it right, in the <strong>page title</strong> of the page. This trick, has really transformed the address bar into Awesomebar.</p>
<p><span style="text-decoration: underline;"><strong>The Amazing Download Manager</strong></span></p>
<p>It was a lenghty wait and now the wait has been sweetly fulfilled by the Firefox 3 team. The much needed <strong>pause and resume</strong> feature of the download bar actually works in Firefox 3. Earlier, even though this feature was present, it lacked proper functioning and so you couldn&#8217;t rely on your resuming the downloads. But this time works. Yeehaa! With the amazing Download Manager you can again visit the page from where you had downloaded the file and also if you haven&#8217;t cleared the list you can search for the downloads.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-266" title="firefox_3_download_manager" src="http://techtracer.com/wp-content/uploads/2008/06/firefox_3_download_manager.jpg" alt="Firefox 3 Download Manager" width="381" height="223" /></p>
<p>I would expect the next version to have multiple simultaneous connections so that I would not have to use Flashget. <img src='http://techtracer.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><span style="text-decoration: underline;"><strong>The Amazing Addon Manager</strong></span></p>
<p>This is another show stealer after the Awesomebar. Remember those good old times when you wanted to add you favorite <strong>addons</strong>, you first searched Google or the addon&#8217;s page of Mozilla. Then you used to go to the page to read about the addon, see the <strong>ratings</strong> and then actually download the addon. Zip forward to Firefox 3, the good old days will become more better with the new addon manager. It&#8217;s got an <strong>inbuilt search engine</strong> which displays not only the relevant addon&#8217;s based on the search criteria but also the description which you would have seen on the actual addon page and it also shows you the rating! It was unbelievable for me when I saw this in action.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-263" title="firefox_3_addon_manager" src="http://techtracer.com/wp-content/uploads/2008/06/firefox_3_addon_manager.jpg" alt="Firefox 3 Addon Manager" width="416" height="316" /></p>
<p>To be true the when I said that my behavior has changed from the instance I downloaded Firefox 3, the feature which made it happen, was the <strong>Addon Manager</strong>. I have stopped being lazy in searching addons, and since I have an embedded search option, I have started to download addons like crazy. Its driving me mad. In just a day I have found so many amazing addon&#8217;s that had made my web browsing experience much much richer. I would put up a post soon for telling you about the addons which are my favorites.</p>
<p>Firefox 3 is a browser that you must not wait for downloading. The record of <strong>8 million</strong> Firefox 3 downloads in just <strong>24 hours</strong> is enough to <a href="http://www.spreadfirefox.com/en-US/worldrecord/" target="_blank">prove this</a>. The world is waiting for more. So without wasting much time, <a href="http://www.getfirefox.com/" target="_blank">grab it here</a> fast!</p>
<h2>Related posts:</h2><ul><li><a href="http://techtracer.com/2007/11/26/url-history-firefox-beats-ie-in-url-ordering/" rel="bookmark" title="Permanent Link: URL History &#8211; Firefox beats IE in URL Ordering">URL History &#8211; Firefox beats IE in URL Ordering</a></li><li><a href="http://techtracer.com/2008/05/25/firefox-3-is-arriving-shortly-gear-up/" rel="bookmark" title="Permanent Link: Firefox 3 is Arriving Shortly &#8211; Gear Up!">Firefox 3 is Arriving Shortly &#8211; Gear Up!</a></li><li><a href="http://techtracer.com/2007/11/05/feast-your-eyes-with-firefox-piclens/" rel="bookmark" title="Permanent Link: Feast Your Eyes With Firefox Piclens">Feast Your Eyes With Firefox Piclens</a></li><li><a href="http://techtracer.com/2008/02/16/power-of-xray-for-web-designers/" rel="bookmark" title="Permanent Link: Power of XRAY for Web Designers">Power of XRAY for Web Designers</a></li><li><a href="http://techtracer.com/2007/12/17/the-power-of-google-chart-api/" rel="bookmark" title="Permanent Link: The Power Of Google Chart API">The Power Of Google Chart API</a></li></ul><br /><a href="http://techtracer.com/">Techtracer.com</a> Copyright &copy; 2008<br /> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techtracer?a=f5hYEJ8Mcrc:7-jntCnZb4w:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techtracer?i=f5hYEJ8Mcrc:7-jntCnZb4w:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=f5hYEJ8Mcrc:7-jntCnZb4w:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techtracer?i=f5hYEJ8Mcrc:7-jntCnZb4w:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=f5hYEJ8Mcrc:7-jntCnZb4w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/techtracer?i=f5hYEJ8Mcrc:7-jntCnZb4w:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techtracer/~4/f5hYEJ8Mcrc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://techtracer.com/2008/06/22/firefox-3-review-its-simply-amazing/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://techtracer.com/2008/06/22/firefox-3-review-its-simply-amazing/</feedburner:origLink></item>
		<item>
		<title>Best Tools For Editing Your Photos Online</title>
		<link>http://feedproxy.google.com/~r/techtracer/~3/R9pyT_0sOq0/</link>
		<comments>http://techtracer.com/2008/06/15/best-tools-for-editing-your-photos-online/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 16:29:41 +0000</pubDate>
		<dc:creator>nitinpai</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://techtracer.com/?p=252</guid>
		<description><![CDATA[A few days back my colleague asked me if I could edit one photo of his in Photoshop. I am some what good at editing photos in Photoshop but at that particular point of time I could not help him since I did not have Photoshop installed on my system. This is really common case [...]]]></description>
			<content:encoded><![CDATA[<p>A few days back my colleague asked me if I could edit one photo of his in <strong>Photoshop</strong>. I am some what good at editing photos in Photoshop but at that particular point of time I could not help him since I did not have Photoshop installed on my system. This is really common case which most of us face. We want to edit our photos and at the most needed time we do not have the appropriate tools at our disposal. What do we do in such cases?</p>
<p>Enter <a href="http://techtracer.com/category/web-20/" target="_self">Web 2.0</a>, and you do not have to ponder much over lost time for waiting to get hold of a tool. In this era, whatever you think of is already available online. So without fretting just google up your requirement and you would be amazed by what kind of power the internet can provide you. Coming back to the question, I responded him coolly, to use an <strong>online photo editor</strong>! He was totally baffled at the thought. If you are too, then I might as well introduce to you the best tools for photo editing online. <img src='http://techtracer.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-decoration: underline;"><strong>Online Photo Editors</strong></p>
<p>The most important thing for a photo editor is to provide the features such as, cropping, editing brightness and contrast, sharpening and blurring, resize, effects and saving in multiple file formats. In a standalone editor you are most likely to find these features. But in an <strong>online </strong>environment the features will be severely limited with regards to <strong>flexibility</strong> of usage, since they are <strong>entirely web based</strong> which make them complicated to implement. I will suggest you some nifty tools which would actually make your work easier and lot more fun. Browsing across several editors I would recommend you 3 of the most liked online photo editors.</p>
<p><strong>1. Phixr</strong></p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-260" title="phixr_editing_tool" src="http://techtracer.com/wp-content/uploads/2008/06/phixr_editing_tool.jpg" alt="Phixtr Editor" width="354" height="363" /></p>
<p><a href="http://www.phixr.com/" target="_blank">Phixr</a> is an interesting tool which does not use Flash. It is completely <a href="http://techtracer.com/category/ajax/" target="_self">Ajax</a> based and has got the potential to give the user a complete satisfaction. The most likable feature I found in this was the ability to convert your photograph into an artistic <strong>polaroid </strong>snapshot, comment<strong> bubbles</strong> and<strong> effects.</strong> It gives you the facility of direct upload of the edited photo to numerous photo sharing sites like Facebook, Flickr, Picasaweb and so on. Moreover, its <strong>free</strong> to use.</p>
<p>Its not a compulsion for registering for using the tool. You can try out the <strong>demo</strong> from the photo shown on the front page itself and check the features for yourselfs. Look what I could come up in a few minutes of playing with this tool.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-261" title="phixr_edited_photo" src="http://techtracer.com/wp-content/uploads/2008/06/shallow-depth-of-field_phixr.jpg" alt="Phixr Effects" width="361" height="400" /></p>
<p style="text-align: left;"><strong>2. SplashUp</strong></p>
<p style="text-align: left;">If you are a Photoshop addict and cannot think of any other tool besides it, then you are in for a real surprise. <a href="http://www.splashup.com/" target="_blank">SplashUp</a>, earlier called <a href="http://www.fauxto.com/" target="_blank">Fauxto</a> is a very well designed application which closely resembles Photoshop. It has the same look and feel and is completely made in Flash. The bonus of using SplashUp is that you can actually save your work in its own file format so that you can continue working on it later. It is the <strong>first online tool</strong>, to give a <strong>layered</strong> editing environment and work on <strong>multiple images</strong> at the same time without your browser getting hanged up. Doesn&#8217;t that sound exciting enough?</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-258" title="splashup_editing_tool" src="http://techtracer.com/wp-content/uploads/2008/06/splashup_editing_tool.jpg" alt="SplashUp Editor" width="410" height="299" /></p>
<p style="text-align: left;"><strong>3. Picnik</strong></p>
<p style="text-align: left;"><a title="Picnik" href="http://www.picnik.com/" target="_blank">Picnik</a> one is one of my favorites and one of the most used tools while editing photos online. This is because, Flick has recently bought it, and it has been directly integrated into flickr. This makes editing your online flickr photos even more simpler. Just go to a flickr photo and choose the <strong>Edit</strong> <strong>Photo</strong> button, which opens up in a picnik editor mode. Check out for the humorous load messages it shows. The only thing I dislike about it is it takes a <strong>lot of time</strong> to load the photo which is not the case in <strong>SplashUp</strong>.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-259" title="picnik_editing_tool" src="http://techtracer.com/wp-content/uploads/2008/06/picnik_editing_tool.jpg" alt="Picnik Editor" width="409" height="234" /></p>
<p style="text-align: left;">Picnik has a lot of amazing features to offer but they all do not come for free. Yet you are free to use some commonly used features with ease. Check out for fancy <strong>text effects </strong>and<strong> custom shapes</strong>. They are surely fantastic. With a tool like Picnik you wouldn&#8217;t need Photoshop around for common usages.</p>
<h2>Related posts:</h2><ul><li><a href="http://techtracer.com/2008/05/28/create-beautiful-collages-out-of-your-photos/" rel="bookmark" title="Permanent Link: Create Beautiful Collages Out Of Your Photos">Create Beautiful Collages Out Of Your Photos</a></li><li><a href="http://techtracer.com/2007/10/13/hp-snapfish-india-for-cost-effective-printing/" rel="bookmark" title="Permanent Link: HP Snapfish India, For Cost Effective Printing">HP Snapfish India, For Cost Effective Printing</a></li><li><a href="http://techtracer.com/2007/11/05/feast-your-eyes-with-firefox-piclens/" rel="bookmark" title="Permanent Link: Feast Your Eyes With Firefox Piclens">Feast Your Eyes With Firefox Piclens</a></li><li><a href="http://techtracer.com/2007/04/09/web-and-desktop-apps-the-3rd-world-war/" rel="bookmark" title="Permanent Link: Web and Desktop Apps &#8211; the 3rd World War!">Web and Desktop Apps &#8211; the 3rd World War!</a></li><li><a href="http://techtracer.com/2007/12/20/goa-parade/" rel="bookmark" title="Permanent Link: GOA Parade!">GOA Parade!</a></li></ul><br /><a href="http://techtracer.com/">Techtracer.com</a> Copyright &copy; 2008<br /> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techtracer?a=R9pyT_0sOq0:besS5MFVe8E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techtracer?i=R9pyT_0sOq0:besS5MFVe8E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=R9pyT_0sOq0:besS5MFVe8E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techtracer?i=R9pyT_0sOq0:besS5MFVe8E:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=R9pyT_0sOq0:besS5MFVe8E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/techtracer?i=R9pyT_0sOq0:besS5MFVe8E:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techtracer/~4/R9pyT_0sOq0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://techtracer.com/2008/06/15/best-tools-for-editing-your-photos-online/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		<feedburner:origLink>http://techtracer.com/2008/06/15/best-tools-for-editing-your-photos-online/</feedburner:origLink></item>
		<item>
		<title>3 Easy Steps to Install MySQL on Windows XP</title>
		<link>http://feedproxy.google.com/~r/techtracer/~3/Wf_j4TOv3zQ/</link>
		<comments>http://techtracer.com/2008/06/09/3-easy-steps-to-install-mysql-on-windows-xp/#comments</comments>
		<pubDate>Mon, 09 Jun 2008 17:09:34 +0000</pubDate>
		<dc:creator>nitinpai</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://techtracer.com/?p=250</guid>
		<description><![CDATA[This article needed to be written from a long time and since it was not, I almost suffered the same hiccups during the installing of MySQL on Windows XP. Every single time I had to search the internet for the solutions which I often forgot over a period of time. So today without any procrastination, [...]]]></description>
			<content:encoded><![CDATA[<p>This article needed to be written from a long time and since it was not, I almost suffered the same hiccups during the <strong>installing of MySQL on Windows XP</strong>. Every single time I had to search the internet for the solutions which I often forgot over a period of time.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-251" title="logo_mysql_sun" src="http://techtracer.com/wp-content/uploads/2008/06/logo_mysql_sun.gif" alt="logo_mysql_sun" width="205" height="68" /></p>
<p>So today without any procrastination, I intend to put down the simplest of the steps to configure and run MySQL on Windows XP in the quickest of the time. First and foremost, as I always tend to follow a course is, break down the task into <strong>3 steps</strong>. They are:</p>
<p><strong><span style="text-decoration: underline;">Step 1: Getting the software</span><br />
</strong></p>
<p>Download the latest version of MySQL from the <a href="http://dev.mysql.com/downloads/" target="_blank">community site</a>. Unpack it into your desired folder. It is always a good practice to download the <strong>zipped archive</strong> of MySQL binary distribution since using the one click installer, you might sometimes lose the power of configuration manually.</p>
<p>Its also a better way to understand configuring manually since if you switch to a Unix based environment later on, you will have to carry out a similar procedure and there is usually no one click installer in such environments.</p>
<blockquote><p>I unpacked MySQL in <em>C:\Program Files\mysql-5.0.45-win32</em></p></blockquote>
<p><span style="text-decoration: underline;"><strong>Step 2 :  Configuring the environment</strong></span></p>
<p>While configuring in the Windows environment you have to do two things. One, putting a file having a name <strong>my.ini</strong> in the Windows folder of the operating system. Two, setting the path in your system environment variable. Here&#8217;s what you have to do:</p>
<p><strong>Creating Option File (my.ini)</strong></p>
<p>Go to your installation path of MySQL (In my case it is:  <em>C:\Program Files\mysql-5.0.45-win32</em>) and rename the file <strong>my-medium.ini</strong> to <strong>my.ini</strong>. Open the renamed file in notepad and add the following lines, just beneath the line which says, <strong># The MySQL server</strong> and above the line <strong>port = 3306</strong>:</p>
<blockquote><p>[mysqld]<br />
# set basedir to your installation path<br />
<strong> basedir</strong>=C:/Program Files/mysql-5.0.45-win32<br />
# set datadir to the location of your data directory<br />
<strong> datadir</strong>=D:/workspace/data</p></blockquote>
<p>The second line as shown above is, configuring your database directory. This means, the path which you assign to <strong>datadir </strong>will be the path where your databases will be created. You have to make sure that the path exists before you assign it. There will a data directory in the MySQL installed path. If you provide a <strong>different path</strong> to the data directory than this default one, you <strong>must copy</strong> the <strong>entire contents</strong> of the data directory in that path.</p>
<p>Finally, drop the my.ini file into your Windows directory. In my case, I copied the file into the path <strong>C:/Windows</strong></p>
<p><strong>Setting the environment variable</strong></p>
<p>After completing the above step, goto</p>
<blockquote><p>My Computer &gt; Properties &gt; Advanced &gt;Environment Variables &gt; System variables &gt; Path &gt; Edit</p></blockquote>
<p>In the <strong>Value</strong> box, goto the end of the line and put a <strong>semi colon</strong> and the path of the MySQL <strong>bin </strong>folder. In my case I have put it as:</p>
<blockquote><p>;C:\Program Files\mysql-5.0.45-win32\bin</p></blockquote>
<p>Click <strong>OK </strong>3 times and thats it with the configuration of MySQL. You are all set to test the installation.</p>
<p><span style="text-decoration: underline;"><strong>Step 3: Final Configurations and Running MySQL</strong></span></p>
<p>You are actually good to go for running mysql. For this, open up your command prompt and type in the command <strong>mysqld &#8211;console. </strong>This will start the mysql database server. Whenever you run this command henceforth you will see these lines at the end:</p>
<blockquote><p>[Note] mysqld: ready for connections.<br />
Version: &#8217;5.0.45-community-nt-log&#8217;  socket: &#8221;  port: 3306  MySQL Community Edit<br />
ion (GPL)</p></blockquote>
<p>When you see these lines, it means that mysql has started successfully. Its time to party!</p>
<p>Leave the command prompt open and start up another command prompt. For the first time you should do this:</p>
<blockquote><p>C:\&gt;<strong>mysql -u root -p</strong><br />
Enter password:</p></blockquote>
<p>When it will ask for a password, just hit Enter. It will allow access to you without a password and will show up a prompt as:</p>
<blockquote><p>Welcome to the MySQL monitor.  Commands end with ; or \g.<br />
Your MySQL connection id is 12<br />
Server version: 5.0.45-community-nt-log MySQL Community Edition (GPL)</p>
<p>Type &#8216;help;&#8217; or &#8216;\h&#8217; for help. Type &#8216;\c&#8217; to clear the buffer.</p>
<p>mysql&gt;</p></blockquote>
<p>Note that your database has <strong>anonymous</strong> access. It is not a secure thing to let it like that. You should always access the database with a password. So for setting up the password you will have to do the below steps. Put in the commands which are highlighted as shown:</p>
<blockquote><p>mysql&gt; <strong>update user set password=PASSWORD(&#8220;admin&#8221;) where User=&#8217;root&#8217;;</strong><br />
Query OK, 0 rows affected (0.00 sec)<br />
Rows matched: 3  Changed: 0  Warnings: 0</p>
<p>mysql&gt; <strong>flush privileges;</strong><br />
Query OK, 0 rows affected (0.00 sec)</p>
<p>mysql&gt; <strong>quit</strong><br />
Bye</p></blockquote>
<p>Once you have done this, try logging into the server again without a password. It must show the below error:</p>
<blockquote><p>C:\Documents and Settings\xpuser&gt;<strong>mysql -u root -p</strong><br />
Enter password:<br />
ERROR 1045 (28000): <strong>Access denied for user &#8216;root&#8217;@'localhost&#8217; (using password: NO)</strong></p></blockquote>
<p>This means, now your database is secure.You should be relieved that your mysql setup has got completed. Now every time you want to start in your database start the server in one command prompt and in the second command prompt login to the database server by doing:</p>
<blockquote><p>C:\&gt;<strong>mysql -u root -p</strong><br />
Enter password: <strong>admin</strong></p></blockquote>
<p>Thats it. Phew! I hope I remember the steps myself and now for my cup of cappuccino.</p>
<h2>Related posts:</h2><ul><li><a href="http://techtracer.com/2008/01/13/how-to-install-windows-live-writer/" rel="bookmark" title="Permanent Link: How To Install Windows Live Writer">How To Install Windows Live Writer</a></li><li><a href="http://techtracer.com/2007/03/12/xp-installation-the-34-minute-hiccup/" rel="bookmark" title="Permanent Link: XP Installation &#8211; The 34 minute hiccup">XP Installation &#8211; The 34 minute hiccup</a></li><li><a href="http://techtracer.com/2008/12/30/the-great-hibernate-tutorial-a-great-jump-start-for-beginners/" rel="bookmark" title="Permanent Link: The Great Hibernate Tutorial &#8211; a great jump start for beginners">The Great Hibernate Tutorial &#8211; a great jump start for beginners</a></li><li><a href="http://techtracer.com/2007/09/12/setting-up-ssl-on-tomcat-in-3-easy-steps/" rel="bookmark" title="Permanent Link: Setting Up SSL on Tomcat In 3 Easy Steps">Setting Up SSL on Tomcat In 3 Easy Steps</a></li><li><a href="http://techtracer.com/2007/11/05/feast-your-eyes-with-firefox-piclens/" rel="bookmark" title="Permanent Link: Feast Your Eyes With Firefox Piclens">Feast Your Eyes With Firefox Piclens</a></li></ul><br /><a href="http://techtracer.com/">Techtracer.com</a> Copyright &copy; 2008<br /> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techtracer?a=Wf_j4TOv3zQ:erBYOfuEmFI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techtracer?i=Wf_j4TOv3zQ:erBYOfuEmFI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=Wf_j4TOv3zQ:erBYOfuEmFI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techtracer?i=Wf_j4TOv3zQ:erBYOfuEmFI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=Wf_j4TOv3zQ:erBYOfuEmFI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/techtracer?i=Wf_j4TOv3zQ:erBYOfuEmFI:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techtracer/~4/Wf_j4TOv3zQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://techtracer.com/2008/06/09/3-easy-steps-to-install-mysql-on-windows-xp/feed/</wfw:commentRss>
		<slash:comments>65</slash:comments>
		<feedburner:origLink>http://techtracer.com/2008/06/09/3-easy-steps-to-install-mysql-on-windows-xp/</feedburner:origLink></item>
		<item>
		<title>Create Beautiful Collages Out Of Your Photos</title>
		<link>http://feedproxy.google.com/~r/techtracer/~3/oGbP0etDhas/</link>
		<comments>http://techtracer.com/2008/05/28/create-beautiful-collages-out-of-your-photos/#comments</comments>
		<pubDate>Wed, 28 May 2008 17:47:28 +0000</pubDate>
		<dc:creator>nitinpai</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Utilities]]></category>

		<guid isPermaLink="false">http://techtracer.com/?p=249</guid>
		<description><![CDATA[Did you always think about what creative stuff you can do with your photos? Well, I do most of the times and end up editing some of my most favorite ones and putting in some artistic touch. I always feel that, enriching the photos gives them a whole new dimension to look from. It might [...]]]></description>
			<content:encoded><![CDATA[<p>Did you always think about what creative stuff you can do with your photos? Well, I do most of the times and end up editing some of my most favorite ones and putting in some artistic touch. I always feel that, enriching the photos gives them a whole new dimension to look from. It might be either making it more attractive, more lovable or to enliven the sentiments you attached to them from a long time.</p>
<p>Whatever the reason may be, editing a photograph is no layman&#8217;s job. Sometime people give up half way through when they do not find the required results. I recently found a something which might make your spirit rise higher when you will notice the results you get out of it. The name of the tool is <a href="http://picasa.google.com/" target="_new">Picasa</a>. Its a tool from <strong>Google</strong>. I am sure you must have used it many time to upload your photos to the online <a href="http://picasaweb.google.com/nitinclicks" target="_new">Picasaweb</a>. But did you ever try making collages from it. <strong>Picasa</strong> can generate some really amazing collages out of your precious photos and make them really gift worthy or send it amongst friends as a memoir.</p>
<p style="text-align: center;"><img src="http://picasa.google.com/assets/logo.gif" alt="Picassa_Logo" /></p>
<p>So here&#8217;s how you can make collages out of your photos:</p>
<p style="text-align: center;"><a href="http://picasaweb.google.com/nitinclicks/WaterKingdom/photo#5205463216164148834" target="_new"><img src="http://lh4.ggpht.com/nitinclicks/SD2FNyLTlmI/AAAAAAAAA9A/ivu-ddNCh6E/collage-1.jpg?imgmax=512" alt="Picture_Pile_Collage" width="512" height="384" /></a></p>
<ul style="text-align: left;">
<li>Download and install Picasa if you don&#8217;t have it already <a href="http://picasa.google.com/download/" target="_new">from here</a></li>
<li>When you open it Picasa will start indexing all your image folders</li>
<li>Choose a folder of which you want to make a collage from</li>
<li>Now carefully <strong>select</strong> the photos which are your favorite and which you want inside the collage</li>
<li>Click the <strong>Collage</strong> button in the bottom bar</li>
<li>Your collage will be loaded in the dialog mode</li>
<li>You might not be satisfied with the collage at first so you can try one of the 2 tricks</li>
<li>Press<strong> Shift and drag</strong> your mouse pointer on the collage window. You will see a change in the<strong> layout</strong></li>
<li>Keep trying till you are satisfied with a layout</li>
<li>Sometimes, you might like a layout but not how the pictures are placed</li>
<li>In this case press <strong>Ctrl and drag</strong> the mouse pointer. The layout will be same but the pictures will start to<strong> randomize </strong>in their placement.</li>
<li>Once you are done, hit the <strong>Create</strong> Button and specify <strong>location</strong> as the &#8220;current folder&#8221;</li>
<li>The collage gets created and gives you a chance to <strong>edit</strong> the collage</li>
<li>Here you can try out interesting <strong>presets</strong> which include making the collage black and white or giving it a sepia tone or soft focusing it. You can have real fun over here.</li>
<li>After finishing with the effect choose <strong>file &gt; save</strong>. A backup of the original will automatically be made</li>
<li>So here you are with a amazing memorabilia of your treasured photos. Sounds simple isn&#8217;t it?<a href="http://picasaweb.google.com/nitinclicks/WaterKingdom/photo#5205463216164148834" target="_new"><br />
</a></li>
</ul>
<p style="text-align: left;">You can do different types of collages in Picassa. The one above is called the &#8220;<strong>Picture Pile</strong>&#8220;. The other types include:</p>
<p style="text-align: left;"><strong>Picture Grid</strong></p>
<p style="text-align: center;"><a href="http://picasaweb.google.com/nitinclicks/WaterKingdom/photo#5205463628481009266" target="_new"><img src="http://lh4.ggpht.com/nitinclicks/SD2FlyLTlnI/AAAAAAAAA9g/dtVuJZAVWKE/s288/collage1.jpg" alt="Contact_Sheet_Collage" /></a></p>
<p style="text-align: left;"><strong>Contact Sheet</strong></p>
<p style="text-align: center;"><a href="http://picasaweb.google.com/nitinclicks/WaterKingdom/photo#5205462254091474514" target="_new"><img src="http://lh4.ggpht.com/nitinclicks/SD2EVyLTllI/AAAAAAAAA84/BP5ona4_P6k/s288/collage1.jpg" alt="Picture_Grid_Collage" /></a></p>
<p style="text-align: left;">You can always edit the collage features after saving it. But however there is no provision to change the photos of it later. You would have to again do the above steps for making a new collage.</p>
<h2>Related posts:</h2><ul><li><a href="http://techtracer.com/2007/11/05/feast-your-eyes-with-firefox-piclens/" rel="bookmark" title="Permanent Link: Feast Your Eyes With Firefox Piclens">Feast Your Eyes With Firefox Piclens</a></li><li><a href="http://techtracer.com/2008/06/15/best-tools-for-editing-your-photos-online/" rel="bookmark" title="Permanent Link: Best Tools For Editing Your Photos Online">Best Tools For Editing Your Photos Online</a></li><li><a href="http://techtracer.com/2007/12/20/goa-parade/" rel="bookmark" title="Permanent Link: GOA Parade!">GOA Parade!</a></li><li><a href="http://techtracer.com/contact/" rel="bookmark" title="Permanent Link: Contact">Contact</a></li><li><a href="http://techtracer.com/2007/10/13/hp-snapfish-india-for-cost-effective-printing/" rel="bookmark" title="Permanent Link: HP Snapfish India, For Cost Effective Printing">HP Snapfish India, For Cost Effective Printing</a></li></ul><br /><a href="http://techtracer.com/">Techtracer.com</a> Copyright &copy; 2008<br /> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techtracer?a=oGbP0etDhas:-0ej7TIA8F8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techtracer?i=oGbP0etDhas:-0ej7TIA8F8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=oGbP0etDhas:-0ej7TIA8F8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techtracer?i=oGbP0etDhas:-0ej7TIA8F8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=oGbP0etDhas:-0ej7TIA8F8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/techtracer?i=oGbP0etDhas:-0ej7TIA8F8:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techtracer/~4/oGbP0etDhas" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://techtracer.com/2008/05/28/create-beautiful-collages-out-of-your-photos/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://techtracer.com/2008/05/28/create-beautiful-collages-out-of-your-photos/</feedburner:origLink></item>
		<item>
		<title>Firefox 3 is Arriving Shortly – Gear Up!</title>
		<link>http://feedproxy.google.com/~r/techtracer/~3/9rapEd0apSY/</link>
		<comments>http://techtracer.com/2008/05/25/firefox-3-is-arriving-shortly-gear-up/#comments</comments>
		<pubDate>Sun, 25 May 2008 17:42:01 +0000</pubDate>
		<dc:creator>nitinpai</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Opinions]]></category>

		<guid isPermaLink="false">http://techtracer.com/2008/05/25/firefox-3-is-arriving-shortly-gear-up/</guid>
		<description><![CDATA[All you internet power users, here&#8217;s the time to rejoice and keep your fingers crossed for the big occasion. Firefox, the king of browsers is all set to launch in its grandeur form and it is going to be more amazing than ever. Firefox version 3, the highly expected launch, is coming near. The guys [...]]]></description>
			<content:encoded><![CDATA[<p>All you internet power users, here&#8217;s the time to rejoice and keep your fingers crossed for the big occasion. <a href="www.mozilla.com/firefox/" target="_blank">Firefox</a>, the king of browsers is all set to launch in its grandeur form and it is going to be more amazing than ever. <strong>Firefox version 3</strong>, the highly expected launch, is coming near. The guys over at Mozilla have already given the enthusiastic testers their high time by releasing their Beta candidate last year. And going by the features, people have reported in their blogs and wiki&#8217;s this time, Firefox is going to turn out as the emperor. Code named &#8220;<strong>Gran Paradiso</strong>&#8220;, Firefox is bound to live up to its expectations.</p>
<p><img src="http://techtracer.com/wp-content/uploads/2008/05/firefox_logo.png" alt="Firefox_Logo" style="float: left; margin-right: 10px" /> Firefox has released the <a href="http://www.mozilla.com/en-US/firefox/3.0rc1/releasenotes/" target="_blank">full feature release candidate</a> which is said to be quite stable, but its not yet the final release. From what the bloggers have been publishing about this release candidate it seems quite evident that the features are simply eye popping. The major surprise comes in the form of a fast browser loaded with features. One thing the Mozilla guys have stuck to their mission, is improving the <strong>browser speed</strong> and <strong>load</strong> capabilities. From the <a href="http://ejohn.org/blog/firefox-3-memory-use/" target="_blank">reports</a> on comparisons of the performance of various browsers Firefox 3 has passed out with <a href="http://mozillalinks.org/wp/2008/02/firefox-3-ultimate-feature-performance/" target="_blank">flying colors</a>. Also the new version sports a more<strong> native look </strong>and feel of the underlying <strong>OS</strong>. This means, but obviously, that, you must switch over to Firefox 3 once it releases.</p>
<p>If you are thinking that a speedier browser owes to compromises on its feature set, then Firefox 3 is all set to prove you wrong. The earlier much wanted features are already there. In fact, they have been <strong>upgraded</strong> to a marvelous level. If you loved the last update in the clubbing of add-on and themes manager, this time they have put in a<strong> search</strong> right within it! Believe it or not, Firefox 3 will allow searching for plugins and themes right through your add-on/ theme manager.</p>
<p><img src="http://lifehacker.com/assets/resources/2008/05/ff3_addons.png" height="186" width="264" /></p>
<p>If you are indeed a hard core surfer then you must be having loads of <strong>bookmarks </strong>stacked up in your folders of the Firefox<strong> bookmark manager</strong>. But if you always thought that tagging was a feature required to quickly access the bookmarks then you thought it right. Firefox 3 has upgraded its bookmark manager and made it &#8220;<strong>places organizer</strong>&#8220;. With the new organizer, you can now tag your bookmarks along with some nifty smart searches and time line ordering of bookmarks.</p>
<p><img src="http://lifehacker.com/assets/resources/2008/05/places_organizer.png" height="152" width="216" />          <img src="http://lifehacker.com/assets/resources/2008/05/smart_bookmarks.png" height="97" width="233" /></p>
<p>One of the most difficult things to work within <strong>Firefox 2</strong> is the <strong>download manager</strong>. When I download a particular thing I always save it to a different location. But later on, I always tend to forget the location where I had downloaded it from because of my frequent downloading habits. Firefox 3 is going to be a major upgrade for me in this aspect, since it includes a download manager which shows the<strong> link</strong> where the download<strong> came from</strong>. It also would be supporting <strong>resume</strong> states in event of a system crash. I am not sure if this, because till now my resumes have never worked, especially in Firefox 2. But I am being confident this time around. <img src='http://techtracer.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img src="http://lifehacker.com/assets/resources/2008/05/ff3_downloads.png" height="139" width="221" /></p>
<p>Besides the above major upgrades, they also have made <a href="http://lifehacker.com/392160/top-10-firefox-3-features" target="_blank">many other tweaks</a>, which include, their password remembering prompt. It is not obtrusive any longer with the popup every time you try to log in. This time, it allows remembering only those passwords when you actually log in, which means, no storing of wrong passwords.</p>
<p><img src="http://lifehacker.com/assets/resources/2008/05/ff3_signin.png" height="74" width="227" /></p>
<p>Firefox 3 is about to arrive. I am excited and absolutely thrilled about it. Its gonna be a wild ride yet again. Gear up!</p>
<p><em style="font-size: 11px">Images Courtesy: <a href="http://lifehacker.com" target="_blank">Lifehacker</a></em></p>
<h2>Related posts:</h2><ul><li><a href="http://techtracer.com/2008/06/22/firefox-3-review-its-simply-amazing/" rel="bookmark" title="Permanent Link: Firefox 3 Review &#8211; It&#8217;s Simply Amazing">Firefox 3 Review &#8211; It&#8217;s Simply Amazing</a></li><li><a href="http://techtracer.com/2006/10/29/firefox-20-winner-of-the-browser-wars/" rel="bookmark" title="Permanent Link: Firefox 2.0 &#8211; Winner Of The Browser Wars">Firefox 2.0 &#8211; Winner Of The Browser Wars</a></li><li><a href="http://techtracer.com/2007/11/05/feast-your-eyes-with-firefox-piclens/" rel="bookmark" title="Permanent Link: Feast Your Eyes With Firefox Piclens">Feast Your Eyes With Firefox Piclens</a></li><li><a href="http://techtracer.com/2007/11/26/url-history-firefox-beats-ie-in-url-ordering/" rel="bookmark" title="Permanent Link: URL History &#8211; Firefox beats IE in URL Ordering">URL History &#8211; Firefox beats IE in URL Ordering</a></li><li><a href="http://techtracer.com/2008/02/16/power-of-xray-for-web-designers/" rel="bookmark" title="Permanent Link: Power of XRAY for Web Designers">Power of XRAY for Web Designers</a></li></ul><br /><a href="http://techtracer.com/">Techtracer.com</a> Copyright &copy; 2008<br /> <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/techtracer?a=9rapEd0apSY:Euuk78_ctCs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/techtracer?i=9rapEd0apSY:Euuk78_ctCs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=9rapEd0apSY:Euuk78_ctCs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/techtracer?i=9rapEd0apSY:Euuk78_ctCs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/techtracer?a=9rapEd0apSY:Euuk78_ctCs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/techtracer?i=9rapEd0apSY:Euuk78_ctCs:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/techtracer/~4/9rapEd0apSY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://techtracer.com/2008/05/25/firefox-3-is-arriving-shortly-gear-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://techtracer.com/2008/05/25/firefox-3-is-arriving-shortly-gear-up/</feedburner:origLink></item>
	</channel>
</rss>

