<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-23257774</id><updated>2012-01-19T07:01:21.520+05:30</updated><category term='Personal'/><category term='Blogger Hacks'/><category term='Time Management'/><category term='Fedora'/><category term='SCTP'/><category term='Microsoft'/><category term='MySQL'/><category term='SQL'/><category term='Javascript'/><category term='hSenid Mobile'/><category term='OpenCV'/><category term='Hibernate'/><category term='ASP'/><category term='Java'/><category term='diGIT'/><category term='Google'/><category term='Programming'/><category term='C#'/><category term='Productivity'/><category term='MsSqlServer'/><category term='Firefox'/><category term='Other'/><category term='Git'/><category term='Soltura'/><category term='Maven'/><category term='Linux'/><category term='Eclipse'/><category term='SDP'/><category term='Ubuntu'/><category term='Spring'/><category term='Tips and Tricks'/><category term='OpenJDK'/><category term='Utilities'/><title type='text'>Sandarenu's Blog</title><subtitle type='html'>All about Me and My Experiences...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default?start-index=101&amp;max-results=100'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>141</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-23257774.post-8841862829233408800</id><published>2012-01-19T07:01:00.000+05:30</published><updated>2012-01-19T07:01:21.532+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Solving no-interface issue in Wireshark on Ubuntu 11.10</title><content type='html'>Recently I switched to Ubuntu 11.10 as OS in my development machine. Previously I was using Fedora 12. When I installed Wireshark in ubuntu and run it, wireshark didn't show any interfaces which can capture packets. I think it is because wireshark was not run as root user. In fedora when I start wireshark it &amp;nbsp;ask to run as root and get the password. In ubuntu it was not like that.&lt;br /&gt;So after doing some googleing found a solution at a blog post by&amp;nbsp;&lt;a href="http://www.tavshed.com/?p=104" title="tavshed's blog post"&gt;tavshed&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;pre class="bash"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;sudo&lt;/span&gt; groupadd wireshark&lt;br /&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;sudo&lt;/span&gt; usermod &lt;span style="color: #660033;"&gt;-a&lt;/span&gt; &lt;span style="color: #660033;"&gt;-G&lt;/span&gt; wireshark YOUR_USER_NAME&lt;br /&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;sudo&lt;/span&gt; &lt;span style="color: #c20cb9; font-weight: bold;"&gt;chgrp&lt;/span&gt; wireshark &lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;usr&lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;bin&lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;dumpcap&lt;br /&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;sudo&lt;/span&gt; &lt;span style="color: #c20cb9; font-weight: bold;"&gt;chmod&lt;/span&gt; 750 &lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;usr&lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;bin&lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;dumpcap&lt;br /&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;sudo&lt;/span&gt; setcap cap_net_raw,&lt;span style="color: #007800;"&gt;cap_net_admin&lt;/span&gt;=eip &lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;usr&lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;bin&lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;dumpcap&lt;br /&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;sudo&lt;/span&gt; getcap &lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;usr&lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;bin&lt;span style="font-weight: bold;"&gt;/&lt;/span&gt;dumpcap&lt;/pre&gt;&lt;pre class="bash"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;sudo&lt;/span&gt; chmod +xs /usr/bin/dumpcap&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-8841862829233408800?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/8841862829233408800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=8841862829233408800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8841862829233408800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8841862829233408800'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2012/01/solving-no-interface-issue-in-wireshark.html' title='Solving no-interface issue in Wireshark on Ubuntu 11.10'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-5206598838143967477</id><published>2011-11-18T07:02:00.001+05:30</published><updated>2011-11-18T07:17:00.906+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Creating Java Command Line Applications using jLine</title><content type='html'>Most common way of writing a command line application in java is to use BufferedReader to read user input. But if you want more features like tab completion, you have to write code to handle it from the scratch in BufferedReader method.&lt;br /&gt;&lt;br /&gt;There is a nice library called jLine&amp;nbsp;&lt;a href="http://jline.sourceforge.net/"&gt;http://jline.sourceforge.net/&lt;/a&gt;&amp;nbsp;which can be used to write nice CLI apps without much effort. It has out of the box support for;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Command History&amp;nbsp;&lt;/li&gt;&lt;li&gt;Tab completion&amp;nbsp;&lt;/li&gt;&lt;li&gt;Line editing&amp;nbsp;&lt;/li&gt;&lt;li&gt;Custom Key Bindings&amp;nbsp;&lt;/li&gt;&lt;li&gt;Character masking&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I've written simple sample application on how to use jLine. You can check that out in github&amp;nbsp;&lt;a href="https://github.com/sandarenu/sample-apps/tree/master/java-cli-app"&gt;https://github.com/sandarenu/sample-apps/tree/master/java-cli-app&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-5206598838143967477?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/5206598838143967477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=5206598838143967477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5206598838143967477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5206598838143967477'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2011/11/creating-java-command-line-applications.html' title='Creating Java Command Line Applications using jLine'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-1496803709792263330</id><published>2011-10-17T07:48:00.001+05:30</published><updated>2011-10-17T07:48:46.216+05:30</updated><title type='text'>Another Tech Genius Passed Away...</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-UQe_73304RE/TpuQZsRaHqI/AAAAAAAAA6w/r58YJaSiK_E/s1600/dennis_ritchie.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-UQe_73304RE/TpuQZsRaHqI/AAAAAAAAA6w/r58YJaSiK_E/s1600/dennis_ritchie.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dennis Ritche, co-author&amp;nbsp;of C programming language and one of the creators of Unix operating system has passed away last week. His inventions changed the way how we do things in the computer industry.&lt;br /&gt;Thank You Dennis....&lt;br /&gt;&lt;br /&gt;It is really sad to see that two of the great minds in technology world passed away in a month...&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-1496803709792263330?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/1496803709792263330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=1496803709792263330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1496803709792263330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1496803709792263330'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2011/10/another-tech-genius-passed-away.html' title='Another Tech Genius Passed Away...'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-UQe_73304RE/TpuQZsRaHqI/AAAAAAAAA6w/r58YJaSiK_E/s72-c/dennis_ritchie.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-8826053575096151241</id><published>2011-10-06T13:49:00.001+05:30</published><updated>2011-10-06T13:49:21.352+05:30</updated><title type='text'>Remembering Steve Jobs</title><content type='html'>Steve Jobs, one of the greatest visionaries of our time has passed away on Wednesday(5th Oct 2011). He was 56.&lt;br /&gt;&lt;br /&gt;At 2005 Stanford address quated on his own mortality, saying:&lt;br /&gt;&lt;b&gt;“Remembering that I’ll be dead soon is the most important tool I’ve ever encountered to help me make the big choices in life. Because almost everything — all external expectations, all pride, all fear of embarrassment or failure - these things just fall away in the face of death, leaving only what is truly important.&lt;/b&gt;”&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-gAIl8wSyvFk/To1jlXOfKrI/AAAAAAAAA6s/FbPJQV_wbMI/s1600/Steve-Jobs.jpeg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-gAIl8wSyvFk/To1jlXOfKrI/AAAAAAAAA6s/FbPJQV_wbMI/s1600/Steve-Jobs.jpeg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-8826053575096151241?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/8826053575096151241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=8826053575096151241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8826053575096151241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8826053575096151241'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2011/10/remembering-steve-jobs.html' title='Remembering Steve Jobs'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-gAIl8wSyvFk/To1jlXOfKrI/AAAAAAAAA6s/FbPJQV_wbMI/s72-c/Steve-Jobs.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-3487341101462293239</id><published>2011-09-08T08:29:00.001+05:30</published><updated>2011-09-08T08:29:11.737+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Git'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>How to Use Multiple GIT Accounts</title><content type='html'>Yesterday at HMS we moved some of our projects to GIT from SVN repository. So in order to access that office GIT repository I had to create a new ssh key using my office email address. I already had a ssh key which I used to access my GitHub account. So once I created new key I was unable to access GitHub since in normal configuration ssh can only have one public key.&lt;br /&gt;But I wanted to find a way which I can use both office GIT server login and my GitHub login. After doing some searching on google I found a solution to that. For that we'll have to create ssh config file. So I created following config file at my .ssh folder&lt;br /&gt;vi ~/.ssh/config&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# hms-git&lt;br /&gt;Host hms-git&lt;br /&gt;&amp;nbsp;&amp;nbsp;HostName git.myoffice.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;User git&lt;br /&gt;&amp;nbsp;&amp;nbsp;IdentityFile /home/sandarenu/.ssh/id_rsa&lt;br /&gt;&lt;br /&gt;# github&lt;br /&gt;Host github.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;HostName github.com&lt;br /&gt;&amp;nbsp;&amp;nbsp;User git&lt;br /&gt;&amp;nbsp;&amp;nbsp;IdentityFile /home/sandarenu/.ssh/id_rsa_github&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;Once this config file is saved I could clone office git projects using&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;git clone git@hms-git:myproject&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To clone GitHub project I could use&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp;git clone git@github.com:sandarenu/task_tracker.git&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-3487341101462293239?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/3487341101462293239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=3487341101462293239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3487341101462293239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3487341101462293239'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2011/09/how-to-use-multiple-git-accounts.html' title='How to Use Multiple GIT Accounts'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-4312898438411191228</id><published>2011-07-08T07:55:00.000+05:30</published><updated>2011-07-08T07:55:32.190+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Using SoapUI for Web Service Testing</title><content type='html'>&lt;a href="http://www.soapui.org/"&gt;SoapUI&lt;/a&gt; is a great tool which can be used to test web services. In this post I'll show you how to set up SoapUI project for WS testing.&lt;br /&gt;&lt;br /&gt;Create new project from File -&amp;gt;New SoapUI Project, and in "New Project Dialog" give name and the location of the WSDL file.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-TkfxF_g1XF8/Tgvgt3-58GI/AAAAAAAAA5w/0fB_Zo3t7IM/s1600/new-ws-project.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="160" src="http://3.bp.blogspot.com/-TkfxF_g1XF8/Tgvgt3-58GI/AAAAAAAAA5w/0fB_Zo3t7IM/s320/new-ws-project.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can find the sample wsdl file I used for testing in github &lt;a href="https://github.com/sandarenu/soapui-test"&gt;https://github.com/sandarenu/soapui-test&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Web Service Mocking&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Service mocking is required when you are writing a web service clients and either you don't have the web service implemented or you don't have the access to the real service. Here's how to do that using SoapUI.&lt;br /&gt;&lt;br /&gt;Create Mock of the web service by right clicking on the project and selecting 'Generate MockService'.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ztbKFhaXn0s/Tgvgubo8k1I/AAAAAAAAA50/Q_lwfPMKmwc/s1600/mock-service-config.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="http://2.bp.blogspot.com/-ztbKFhaXn0s/Tgvgubo8k1I/AAAAAAAAA50/Q_lwfPMKmwc/s320/mock-service-config.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Once mock service is created you can mock the operations by clicking on the small icon in the service mock dialog.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-SVBD4n8CfC0/TgvgtVUGGmI/AAAAAAAAA5s/EoIyYvrk9-s/s1600/project-structure.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="http://2.bp.blogspot.com/-SVBD4n8CfC0/TgvgtVUGGmI/AAAAAAAAA5s/EoIyYvrk9-s/s320/project-structure.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Double click on the operation you just mocked and you'll get a dialog to configure mock responses.&lt;br /&gt;You can configure any number of mock responses and then select how those response to be dispatched when our mock service receives WS request. There are many dispatching strategies available such as "Script", "Sequence", "Query Match", etc...&lt;br /&gt;&lt;br /&gt;When you do some integration testing you need your mock service to respond based on different parameters of the requests you send. In such cases you can either use "Script" or "Query Match" dispatch mechanism.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Web Service Testing&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;We can use SoapUI to create test cases to test a Web Service we developed. To create a test suite right click on the project and select "New TestSuite" from the context menu. Then right click on the test suite we just created and select "New TestCase".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-7o0ex8jh50A/TgvgsGpI6cI/AAAAAAAAA5k/1Vcm8vn4SDQ/s1600/testcase.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="http://4.bp.blogspot.com/-7o0ex8jh50A/TgvgsGpI6cI/AAAAAAAAA5k/1Vcm8vn4SDQ/s320/testcase.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Once we have created the test case we can add test steps to it. Lets add a test step to test time for time zone 'lk'. Right click on the test steps dialog and select "Test Request" and create the request you want to test.&lt;br /&gt;Once test request is created we can add assertion step to it. Click the "Assertions" button at the bottom of the test request editor.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-yezUBg8G8_Y/TgvgvPHk4-I/AAAAAAAAA54/5kLGRm-CmWg/s1600/mock-operation.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="168" src="http://3.bp.blogspot.com/-yezUBg8G8_Y/TgvgvPHk4-I/AAAAAAAAA54/5kLGRm-CmWg/s320/mock-operation.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Right click on the assertion editor and add "xPath Match"&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-utW4JTUFqFw/Tgvgq74yJRI/AAAAAAAAA5c/C_EZ4SqQQ1E/s1600/xquery-match-assertion.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://1.bp.blogspot.com/-utW4JTUFqFw/Tgvgq74yJRI/AAAAAAAAA5c/C_EZ4SqQQ1E/s320/xquery-match-assertion.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Put //Time as "xQuery Expression" and put value you are expecting as "Expected Result"&lt;br /&gt;&lt;br /&gt;Now you can test this request using the Mock WS you created before. Start the mock service by clicking on the small green arrow found in the top of the "TimeServiceMock". Then open the test case you created above by double clicking it. Then run the test case again by clicking small green arrow in the to of the dialog box.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ddFhBlNBsdM/ThZpPkNdWqI/AAAAAAAAA6I/tkRXfIaRMLw/s1600/run-test-case.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-ddFhBlNBsdM/ThZpPkNdWqI/AAAAAAAAA6I/tkRXfIaRMLw/s320/run-test-case.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;If every thing went well you'll be able get success result for your test case.&lt;br /&gt;&lt;br /&gt;This is just the start. You can then add more test cases and assertions and improve your test suite. SoapUI site has good documentation on how to do functional testing. &lt;a href="http://www.soapui.org/Getting-Started/functional-testing.html"&gt;http://www.soapui.org/Getting-Started/functional-testing.html&lt;/a&gt;&lt;br /&gt;You can refer that and get more information.&lt;br /&gt;&lt;br /&gt;You can also find the SoapUI project for this example at https://github.com/sandarenu/soapui-test. Download it and open it using "File -&amp;gt; Import Project"&lt;br /&gt;&lt;br /&gt;Happy Testing.....&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-4312898438411191228?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/4312898438411191228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=4312898438411191228' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4312898438411191228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4312898438411191228'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2011/07/using-soapui-for-web-service-testing.html' title='Using SoapUI for Web Service Testing'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-TkfxF_g1XF8/Tgvgt3-58GI/AAAAAAAAA5w/0fB_Zo3t7IM/s72-c/new-ws-project.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-4685147056028589486</id><published>2011-07-03T14:04:00.001+05:30</published><updated>2011-07-03T14:05:06.207+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Solving 'symbol lookup error' in new Eclipse 3.7 Indigo in Fedora</title><content type='html'>When I downloaded and run the latest eclipse 3.7 Indigo release, it crashed with a strange error.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;symbol lookup error: /usr/lib/libwebkit-1.0.so.2: undefined symbol: soup_content_decoder_get_typ&lt;/span&gt;e&lt;br /&gt;&lt;br /&gt;After some searching in the web I found out that it is due that I'm having an older version of&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;libsoup&lt;/span&gt;&lt;/b&gt; library.&amp;nbsp;I had&amp;nbsp;libsoup-2.28.1-1.fc12.i686 in my fedora 12.&lt;br /&gt;Issue was solved by updating that library using yum.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;yum update libsoup&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-4685147056028589486?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/4685147056028589486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=4685147056028589486' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4685147056028589486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4685147056028589486'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2011/07/solving-symbol-lookup-error-in-new.html' title='Solving &apos;symbol lookup error&apos; in new Eclipse 3.7 Indigo in Fedora'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-464289302904801519</id><published>2011-05-06T11:05:00.000+05:30</published><updated>2011-05-06T11:05:57.986+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><title type='text'>Hibernate HQL Select Query Based on Item in a One-to-Many Relationship</title><content type='html'>Few days back I had a situation where I have to fetch some data based on a value of an item stored in one-to-many relationship. I my project I had two classes like below. I had to fetch all the Oders that has&amp;nbsp;particular&amp;nbsp;item.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background: #ffffff; color: black;"&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;class&lt;/span&gt; Order &lt;span style="color: purple;"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: maroon; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #bb7977; font-weight: bold;"&gt;List&lt;/span&gt;&lt;span style="color: #808030;"&gt;&amp;lt;&lt;/span&gt;Item&lt;span style="color: #808030;"&gt;&amp;gt;&lt;/span&gt; items&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: dimgrey;"&gt;//more code ...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: maroon; font-weight: bold;"&gt;class&lt;/span&gt; Item &lt;span style="color: purple;"&gt;{&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: maroon; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #bb7977; font-weight: bold;"&gt;String&lt;/span&gt; itemId&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: maroon; font-weight: bold;"&gt;private&lt;/span&gt; &lt;span style="color: #bb7977; font-weight: bold;"&gt;String&lt;/span&gt; name&lt;span style="color: purple;"&gt;;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: dimgrey;"&gt;//more code ...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: purple;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;With native SQL it was not that difficult, but since I've used Hibernate I wanted to find a way to do it in HQL. After some searching in Google I found out how to do it.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;select o from Order o left join o.items its where its.itemId = :itemId&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-464289302904801519?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/464289302904801519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=464289302904801519' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/464289302904801519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/464289302904801519'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2011/05/hibernate-hql-select-query-based-on.html' title='Hibernate HQL Select Query Based on Item in a One-to-Many Relationship'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-5328321795975763339</id><published>2011-04-21T07:48:00.000+05:30</published><updated>2011-04-21T07:48:11.517+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Different views for your blog</title><content type='html'>Recently Blogger started providing different views for the blogs created in it. They are very cute way to view our blogs in different angles. Following is snapshot view of my blog.&lt;div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-nJiNMA4HAvE/Ta-TkQaSp8I/AAAAAAAAA5Y/CdxkxjRXDzg/s1600/blogger_snapshot.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="210" src="http://2.bp.blogspot.com/-nJiNMA4HAvE/Ta-TkQaSp8I/AAAAAAAAA5Y/CdxkxjRXDzg/s400/blogger_snapshot.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Try my blog on those different views using following urls.&lt;/div&gt;&lt;div&gt;&lt;a href="http://sandarenu.blogspot.com/view/flipcard"&gt;http://sandarenu.blogspot.com/view/flipcard&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://sandarenu.blogspot.com/view/mosaic"&gt;http://sandarenu.blogspot.com/view/mosaic&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://sandarenu.blogspot.com/view/sidebar"&gt;http://sandarenu.blogspot.com/view/sidebar&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://sandarenu.blogspot.com/view/snapshot"&gt;http://sandarenu.blogspot.com/view/snapshot&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://sandarenu.blogspot.com/view/timeslide"&gt;http://sandarenu.blogspot.com/view/timeslide&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-5328321795975763339?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/5328321795975763339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=5328321795975763339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5328321795975763339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5328321795975763339'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2011/04/different-views-for-your-blog.html' title='Different views for your blog'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-nJiNMA4HAvE/Ta-TkQaSp8I/AAAAAAAAA5Y/CdxkxjRXDzg/s72-c/blogger_snapshot.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-3943399214764794976</id><published>2011-04-21T07:34:00.000+05:30</published><updated>2011-04-21T07:34:08.614+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>After Long Time.......</title><content type='html'>Its being long time since my last post......&lt;br /&gt;Hopping to do some posts more frequently in coming months. So keep your fingers crossed :)&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-3943399214764794976?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/3943399214764794976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=3943399214764794976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3943399214764794976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3943399214764794976'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2011/04/after-long-time.html' title='After Long Time.......'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-924360479817338419</id><published>2010-05-04T07:43:00.000+05:30</published><updated>2010-05-04T07:43:19.345+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='MsSqlServer'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>MySql - Ms Sql Server Database Portability</title><content type='html'>Few weeks back I was given a task to migrate a Java application using MySQL as its database to MS SQL Server. It was actually not a full migration, rather application should be able work with both MySQL and MS SQL Server. Since we had used Hibernate in our application I thought it will be a easy thing. But when I dig deep in to the application and started migration I was proved to be wrong. I encounter lot of issues and hence thought of documenting them so any one can get some help. Major headache was the difference in some direct SQL commands used in the application. Following are the list of issues I encounter and how I solved them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. JDBC Driver Issue with the Microsoft JDBC Driver&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; First thought of using JDBC driver provided by&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=99B21B65-E98F-4A61-B811-19912601FDC9&amp;amp;displaylang=en"&gt; Microsoft for MS SQL Server 2005&lt;/a&gt;.&amp;nbsp; But when I ran the test cases I got few issues with it.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1). Gave execption "org.hibernate.MappingException: No Dialect mapping for JDBC type: -9 "&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; After some investigation found out that it was due to NVARCHAR datatype. There is another opensource driver called &lt;a href="http://jtds.sourceforge.net/"&gt;jtds&lt;/a&gt;. Which is more actively developed as well. With that driver I did not get that MappingException.&lt;br /&gt;&lt;br /&gt;2. Data type differences&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; For queries like "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;SELECT count(id) From myTable&lt;/span&gt;", MySql JDBC driver returns datatype java.math.BigInteger and with MsSQL jtds JDBC driver we get datatype java.lang.Integer. So I had to convert it to string first and then convert to long&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;String countStr = summaryRow[1] == null? "0": String.valueOf(summaryRow[1]);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; long count = Long.parseLong(countStr);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. Nullable Unique columns not supported in MsSql Server. In Sql Server NULL is taken as a value and hence can't have multiple rows with null, but in MySql we can have Nullable unique columns. So when table schema is generated through Hibernate we have to execute additional update query to perform a workaround for this issue. Here we add new column called 'my-table_id_add' to the table. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;declare unique_key_list_my-table cursor for&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; select OBJECT_NAME(OBJECT_ID)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM sys.objects&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE type_desc LIKE '%CONSTRAINT' and OBJECT_NAME(OBJECT_ID) LIKE 'UQ__my-table%'&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;OPEN unique_key_list_my-table&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FETCH NEXT FROM unique_key_list_my-table INTO @keyName&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set @RowNum = 0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHILE @@FETCH_STATUS = 0&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEGIN&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; set @RowNum = @RowNum + 1&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; print cast(@RowNum as char(1)) + ' ' + @keyName&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; if not @keyName is null&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; begin&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select @sql = 'ALTER TABLE [my-table] DROP CONSTRAINT [' + @keyName + ']'&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; execute sp_executesql @sql&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; end&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FETCH NEXT FROM unique_key_list_my-table INTO @keyName&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CLOSE unique_key_list_my-table&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DEALLOCATE unique_key_list_my-table&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ALTER TABLE my-table ADD my-table_id_add AS (CASE WHEN my-table_id IS NULL THEN CAST(id AS VARCHAR(30)) ELSE my-table_id END);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ALTER TABLE my-table ADD CONSTRAINT UQ__my-table_my-table_id UNIQUE(my-table_id_add);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;TIMESTAMP&lt;/span&gt; in MS Sql server is not functionally same as MySQL. Have to use &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;GETDATE()&lt;/span&gt; function for that.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.g: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Create table timestamp_test DATETIME default(GETDATE())&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5. In Ms Sql Server we can't use '&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;user&lt;/span&gt;' as table/field name, but that is possible in MySql. &lt;br /&gt;&lt;br /&gt;6. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;LIMIT&lt;/span&gt; is not supported in Ms Sql Server and there is no easy way if we want go select some range of data. In MySql we use "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;SELECT * FROM my-table LIMIT 10, 20&lt;/span&gt;" to select records from 10 to 20, but in Ms Sql Server we have to use something like "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (ORDER BY id) as row FROM my-table ) a WHERE row &amp;gt; 10 and row &amp;lt;= 20&lt;/span&gt;"&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-924360479817338419?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/924360479817338419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=924360479817338419' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/924360479817338419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/924360479817338419'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2010/05/mysql-ms-sql-server-database.html' title='MySql - Ms Sql Server Database Portability'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-2012209831877583917</id><published>2010-02-17T14:48:00.000+05:30</published><updated>2010-02-17T14:48:31.701+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Maven'/><title type='text'>Integrating YUI Compressor to your Maven Web Project</title><content type='html'>Size of the javascript files and css files in a website has a big affect on its performance. Especially in slow connections lot of time will be spent on downloading those files. We recently came across such situation. Our website was using jQuery and some other javascipt libraries. Some of them were more than 100kb. Sometimes it took more than 10 seconds to load a page. When we view the loading statistics using developer-tools in Chrome it showed that browser had downloaded more than 500kb of scripts and css.&lt;br /&gt;&lt;br /&gt;One way to reduce this script size is to compress them. Our script files contained lot of comments, licencing statements, nice formattings, long meaningful variable names etc... which increases the file size. &lt;a href="http://developer.yahoo.com/yui/compressor/" target="_blank"&gt;YUI Compressor&lt;/a&gt; is a free utility by Yahoo which can be use to compress our scripts by removing above mentioned things. It is jar file and you can use that and compress file by file.&lt;br /&gt;&lt;br /&gt;But that is not very practicle to keep those minimized scripts in develepment since after minimizing you won't be able read them and edit them when needed. Best method is to do the minization when you create the war file. Luckly there is a &lt;a href="http://alchim.sourceforge.net/yuicompressor-maven-plugin/" target="_blank"&gt;maven plugin for this&lt;/a&gt;. Following is the plugin component you can add to your maven pom.&lt;br /&gt;&lt;br /&gt;&lt;style type="text/css"&gt;.code0 { font-size: small; font-family: Consolas, "Courier New", Courier, Monospace; color: #000000; background-color: #ffffff; }.code1 { margin: 0em; }.code2 { margin: 0em; width: 100%; background-color: #f0f0f0; }.code3 { color: #006400; }.code4 { color: #000000; }.code5 { color: #008b8b; font-weight: bold; }.code6 { color: #00008b; }&lt;/style&gt;&lt;br /&gt;&lt;div class="code0"&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;plugins&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;....&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;plugin&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;groupId&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;span class="code4"&gt;org&lt;/span&gt;&lt;span class="code3"&gt;.&lt;/span&gt;&lt;span class="code4"&gt;apache&lt;/span&gt;&lt;span class="code3"&gt;.&lt;/span&gt;&lt;span class="code4"&gt;maven&lt;/span&gt;&lt;span class="code3"&gt;.&lt;/span&gt;&lt;span class="code4"&gt;plugins&lt;/span&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;groupId&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;artifactId&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;span class="code4"&gt;maven&lt;/span&gt;&lt;span class="code3"&gt;-&lt;/span&gt;&lt;span class="code4"&gt;war&lt;/span&gt;&lt;span class="code3"&gt;-&lt;/span&gt;&lt;span class="code4"&gt;plugin&lt;/span&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;artifactId&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;configuration&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;webResources&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;resource&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;directory&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code4"&gt;$&lt;/span&gt;&lt;span class="code3"&gt;{&lt;/span&gt;&lt;span class="code4"&gt;project&lt;/span&gt;&lt;span class="code3"&gt;.&lt;/span&gt;&lt;span class="code4"&gt;build&lt;/span&gt;&lt;span class="code3"&gt;.&lt;/span&gt;&lt;span class="code4"&gt;directory&lt;/span&gt;&lt;span class="code3"&gt;}/&lt;/span&gt;&lt;span class="code4"&gt;minimized&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;directory&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;targetPath&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;/&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;targetPath&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;filtering&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;span class="code5"&gt;false&lt;/span&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;filtering&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;resource&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;webResources&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;configuration&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;plugin&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;plugin&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;groupId&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;span class="code4"&gt;net&lt;/span&gt;&lt;span class="code3"&gt;.&lt;/span&gt;&lt;span class="code4"&gt;sf&lt;/span&gt;&lt;span class="code3"&gt;.&lt;/span&gt;&lt;span class="code4"&gt;alchim&lt;/span&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;groupId&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;artifactId&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;span class="code4"&gt;yuicompressor&lt;/span&gt;&lt;span class="code3"&gt;-&lt;/span&gt;&lt;span class="code4"&gt;maven&lt;/span&gt;&lt;span class="code3"&gt;-&lt;/span&gt;&lt;span class="code4"&gt;plugin&lt;/span&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;artifactId&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;version&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;span class="code6"&gt;0.7.1&lt;/span&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;version&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;executions&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;execution&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;goals&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;goal&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;span class="code4"&gt;compress&lt;/span&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;goal&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;goals&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;execution&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;executions&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;configuration&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;webappDirectory&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code4"&gt;$&lt;/span&gt;&lt;span class="code3"&gt;{&lt;/span&gt;&lt;span class="code4"&gt;project&lt;/span&gt;&lt;span class="code3"&gt;.&lt;/span&gt;&lt;span class="code4"&gt;build&lt;/span&gt;&lt;span class="code3"&gt;.&lt;/span&gt;&lt;span class="code4"&gt;directory&lt;/span&gt;&lt;span class="code3"&gt;}/&lt;/span&gt;&lt;span class="code4"&gt;minimized&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;webappDirectory&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;&lt;/span&gt;&lt;span class="code4"&gt;nosuffix&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;span class="code5"&gt;true&lt;/span&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;nosuffix&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;configuration&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;plugin&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code2"&gt;&lt;span class="code3"&gt;....&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code1"&gt;&lt;span class="code3"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="code4"&gt;plugins&lt;/span&gt;&lt;span class="code3"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When you run mnv clean package YUI compressor will compress the scripts and put them in target/minimized folder and those will be used to create the war file.&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-2012209831877583917?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/2012209831877583917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=2012209831877583917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2012209831877583917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2012209831877583917'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2010/02/integrating-yui-compressor-to-your.html' title='Integrating YUI Compressor to your Maven Web Project'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-4767738491647900893</id><published>2010-01-15T06:44:00.001+05:30</published><updated>2010-01-15T06:45:17.493+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><title type='text'>8 Stages of Programming a New Feature</title><content type='html'>This is a really nice comic I came across few days back. It is really nice and explains every thing what we generally going through as software engineers.....&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_tedTUODQRM0/S0_A2UwBK_I/AAAAAAAAA3E/ALdUDKkv168/s1600-h/8-stages-programming.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/_tedTUODQRM0/S0_A2UwBK_I/AAAAAAAAA3E/ALdUDKkv168/s640/8-stages-programming.jpg" width="452" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;This one was originally published at&amp;nbsp;&lt;a href="http://www.my25percent.com/2009/09/eight-stages-of-programming-new-feature.html"&gt;http://www.my25percent.com/2009/09/eight-stages-of-programming-new-feature.html&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-4767738491647900893?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/4767738491647900893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=4767738491647900893' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4767738491647900893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4767738491647900893'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2010/01/8-stages-of-programming-new-feature.html' title='8 Stages of Programming a New Feature'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_tedTUODQRM0/S0_A2UwBK_I/AAAAAAAAA3E/ALdUDKkv168/s72-c/8-stages-programming.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-2626259799909526433</id><published>2010-01-01T08:02:00.000+05:30</published><updated>2010-01-01T08:02:45.759+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Happy New Year 2010</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_tedTUODQRM0/Sz1eDp2Le_I/AAAAAAAAA2g/IwOQbZUxR8I/s1600-h/Happy+New+Year+-+Suba+Aluth+Avruddak+Vewa.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_tedTUODQRM0/Sz1eDp2Le_I/AAAAAAAAA2g/IwOQbZUxR8I/s400/Happy+New+Year+-+Suba+Aluth+Avruddak+Vewa.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;Wish You All a Very Happy and Prosperous&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;New Year!&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;b&gt;May All Your Dreams Come True in This Wonderful Year...&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-2626259799909526433?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/2626259799909526433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=2626259799909526433' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2626259799909526433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2626259799909526433'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2010/01/happy-new-year-2010.html' title='Happy New Year 2010'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tedTUODQRM0/Sz1eDp2Le_I/AAAAAAAAA2g/IwOQbZUxR8I/s72-c/Happy+New+Year+-+Suba+Aluth+Avruddak+Vewa.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6446891725508412843</id><published>2010-01-01T07:41:00.002+05:30</published><updated>2010-01-01T07:48:47.048+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Soltura'/><category scheme='http://www.blogger.com/atom/ns#' term='SDP'/><category scheme='http://www.blogger.com/atom/ns#' term='hSenid Mobile'/><title type='text'>Traditional SDP Vs mChoice Soltura</title><content type='html'>&lt;span style="font-family: arial, sans-serif; font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'trebuchet ms', sans-serif;"&gt;&lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Service_delivery_platform"&gt;SDPs&lt;/a&gt;&lt;/b&gt; are commonly developed as core systems which interconnect different Telco network services and provide one unified access point for customers (application developers). This will reduce the application development cost rapidly and easy management of applications&amp;nbsp;&lt;span style="font-family: arial, sans-serif;"&gt;&lt;span style="font-family: 'trebuchet ms', sans-serif;"&gt;for the Telco. Even though SDP reduces the application development cost, still the most difficult part remains; which is the development of the business logic of the application. With SDP model&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'trebuchet ms', sans-serif;"&gt;if&lt;/span&gt;&lt;span style="font-family: 'trebuchet ms', sans-serif;"&gt;&amp;nbsp;any content provider wants to run a&amp;nbsp;mobile application, then they have to consider about two things;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family: 'trebuchet ms', sans-serif;"&gt;Developing/running and maintaining the application&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'trebuchet ms', sans-serif;"&gt;Managing the content provided by the application&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family: 'trebuchet ms', sans-serif;"&gt;These two are completely different things. For a genuine content provider &lt;b&gt;'Developing/running and maintaining'&lt;/b&gt;&amp;nbsp;an application is a completely new thing and it will deviate his concentration from providing valuable content. In addition to that, content provider also has to bear the cost of infrastructure required to run the application. Initial&amp;nbsp;cost of developing the application and buying infrastructure can be really high. This startup cost is one of the main reasons blocking many of the new comers entering to the market.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: 'trebuchet ms', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: 'trebuchet ms', sans-serif;"&gt;This is where the &lt;b&gt;mChoice Soltura TM&lt;/b&gt; come in to the scene. mChoice Soltura is not just a SDP, rather it provides infrastructure for content providers to create their own application with virtually zero cost. &lt;b&gt;They don't have to worry about creating applications, maintaining them and infrastructure requirements to run those applications&lt;/b&gt;.&amp;nbsp;They can put 100% of their attention to the creation of the content. mChoice Soltura will provide different types of applications, so the content provider can choose the application matching to their requirement and use it.&amp;nbsp;mChoice Soltura provides a simple and powerful Web Based Interface for content provider to create/manage application and manage content.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: 'trebuchet ms', sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black; font-family: 'trebuchet ms', sans-serif;"&gt;mChoice Soltura releases the burden of application creation, maintenance and infrastructure management and brings the&amp;nbsp;freedom to the content providers.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6446891725508412843?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6446891725508412843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6446891725508412843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6446891725508412843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6446891725508412843'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2010/01/traditional-sdp-vs-mchoice-soltura.html' title='Traditional SDP Vs mChoice Soltura'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-8517764202401971682</id><published>2009-11-14T14:03:00.002+05:30</published><updated>2009-11-14T14:05:27.568+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SCTP'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenJDK'/><title type='text'>Reducing the Time Between SCTP Message Received and SCTP_SACK Sent</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Last few weeks I was involved with a development related to SCTP protocol in Java. I have also done two posts on how to get started with SCTP. During that project I came across a strange issue. That is I receive two responses for all the packets I send to the peer. After doing some investigation we found that it is due to that from my application SCTP SACK message is sent after 200ms. Because of that delay peer thinks that I have not received the message and sent it again. &lt;br /&gt;That 200ms is a configuration based on the SCTP RFC. According to that an acknowledgment(SACK) should be generated for at least every second packet received, and SHOULD be generated within 200 ms of the arrival of any unacknowledged DATA chunk.So to fix this issue I had to find a way to reduce the delay between message receiving and SACK sending. &lt;br /&gt;We can reduce that time delay by editing the value of /proc/sys/net/sctp/sack_timeout property file. Just use following to set timeout to 50ms.&amp;nbsp; &lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;echo 50 &amp;gt; /proc/sys/net/sctp/sack_timeout&lt;br /&gt;&lt;/div&gt;After doing that that two response issue was fixed.&amp;nbsp; Thanks Chris at sctp-dev@openjdk.java.net for helping me on fixing this issue.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="technorati-tags"&gt;&lt;a href="http://technorati.com/tag/SCTP" rel="tag"&gt;SCTP&lt;/a&gt;, &lt;a href="http://technorati.com/tag/OpenJDK" rel="tag"&gt;OpenJDK&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Java" rel="tag"&gt;Java&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Programming" rel="tag"&gt;Programming&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-8517764202401971682?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/8517764202401971682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=8517764202401971682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8517764202401971682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8517764202401971682'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/11/reducing-time-between-sctp-message.html' title='Reducing the Time Between SCTP Message Received and SCTP_SACK Sent'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-1019134960011257715</id><published>2009-10-16T08:17:00.005+05:30</published><updated>2009-10-16T08:38:05.270+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Catching JVM Shutdown event</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/lang/hook-design.html" target="_blank"&gt;Shutdown hook&lt;/a&gt; is a mechanism provided by java for us to handle shutdown event of our applications. We can attach any piece of code to this and execute them just before JVM exits.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;a name="line1"&gt;&lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;class&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;ShutDownHookTest&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;      &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;static&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;main&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(32, 64, 160);"&gt;String&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;args&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;throws&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;Exception&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(32, 64, 160);"&gt;System&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;out&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;println&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"System Started..."&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;                &lt;span style="color: rgb(32, 64, 160);"&gt;Runtime&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;getRuntime&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;addShutdownHook&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;Thread&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt; &lt;strong&gt;new&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;Runnable&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;                      &lt;strong&gt;public&lt;/strong&gt; &lt;strong&gt;void&lt;/strong&gt; &lt;span style="color: rgb(32, 64, 160);"&gt;run&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;                              &lt;span style="color: rgb(32, 64, 160);"&gt;System&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;out&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;println&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;"System is Shutting Down..."&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;                      &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;              &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;              &lt;span style="color: rgb(32, 64, 160);"&gt;Thread&lt;/span&gt;.&lt;span style="color: rgb(32, 64, 160);"&gt;sleep&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;10000&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;;&lt;/span&gt;&lt;br /&gt;      &lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(68, 68, 255);"&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Compile and run this sample code and press Crt+C to exit the application, you can see that "System is Shutting Down" message prints before application exiting.&lt;br /&gt;&lt;br /&gt;But we have to be careful when using this, because if the shutdown code we attach to the shutdown hook end up in an infinite loop, our application will be stuck and only way to exit will be killing the process.&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-1019134960011257715?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/1019134960011257715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=1019134960011257715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1019134960011257715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1019134960011257715'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/10/catchig-jvm-shutdown-event.html' title='Catching JVM Shutdown event'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-9181578520918408102</id><published>2009-09-25T12:02:00.003+05:30</published><updated>2009-09-25T12:08:48.123+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>InfoQ allow you to download Mp3s</title><content type='html'>Finally, a feature I was waiting for long time has been included to &lt;a href="http://www.infoq.com"&gt;InfoQ&lt;/a&gt;. Now they give the mp3 files of the presentations posted in the site. &lt;a href="http://sandarenu.blogspot.com/2009/07/download-presentation-videos-from-infoq.html"&gt;Previously we had to use some tools to capture the streaming flash video&lt;/a&gt; and convert them in to mp3.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tedTUODQRM0/SrxlGKNXb1I/AAAAAAAAAz4/L0eDivifBQc/s1600-h/infoq-mp3-download.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 240px;" src="http://2.bp.blogspot.com/_tedTUODQRM0/SrxlGKNXb1I/AAAAAAAAAz4/L0eDivifBQc/s400/infoq-mp3-download.png" alt="" id="BLOGGER_PHOTO_ID_5385290410922307410" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-9181578520918408102?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/9181578520918408102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=9181578520918408102' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/9181578520918408102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/9181578520918408102'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/09/infoq-allow-you-to-download-mp3s.html' title='InfoQ allow you to download Mp3s'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tedTUODQRM0/SrxlGKNXb1I/AAAAAAAAAz4/L0eDivifBQc/s72-c/infoq-mp3-download.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-8097817534726726400</id><published>2009-08-08T13:23:00.001+05:30</published><updated>2009-08-08T13:23:48.742+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><title type='text'>Command Line Client for JMX</title><content type='html'>&lt;p&gt;JMX is a mechanism where we can used to monitor and control our java applications remotely. We can expose variables and methods to outside using JMX.&amp;#160; To access these exposed variables or methods, we have to use JMX Client. JConsole is the JMX client application shipped with Java. It is a swing based application.&lt;/p&gt;  &lt;p&gt;There is nothing wrong with JConsole if I'm using it in from my desktop. But issue is when I want to run it on a remote machine through ssh, I can't use X because of bandwidth limitations. So ideal tool for such situation is to use CLI tool. &lt;/p&gt;  &lt;p&gt;After searching few minutes in goolgle I found this cute little tool called &lt;strong&gt;&amp;quot;&lt;/strong&gt;&lt;a href="http://www.cyclopsgroup.org/projects/jmxterm/" target="_blank"&gt;&lt;strong&gt;Jmxterm (JMX&amp;#160; Terminal)&amp;quot;.&lt;/strong&gt;&lt;/a&gt; It is again a Java application and give you all the features you need when you use JMX. It is really user friendly as well. It has auto command completion and also can remember previous command you used. It is just like bash. &lt;/p&gt;  &lt;p&gt;&lt;font face="cour" size="1"&gt;[sandarenu@localhost jmx-commandline]$ java -jar jmxterm-1.0-alpha-4-uber.jar     &lt;br /&gt;Welcome to JMX terminal. Type &amp;quot;help&amp;quot; for available commands.      &lt;br /&gt;$&amp;gt;help      &lt;br /&gt;#following commands are available to use:      &lt;br /&gt;about&amp;#160;&amp;#160;&amp;#160; - Display about page      &lt;br /&gt;bean&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Display or set current selected MBean.      &lt;br /&gt;beans&amp;#160;&amp;#160;&amp;#160; - List available beans under a domain or all domains      &lt;br /&gt;bye&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Terminate console and exit      &lt;br /&gt;close&amp;#160;&amp;#160;&amp;#160; - Close current JMX connection      &lt;br /&gt;domain&amp;#160;&amp;#160; - Display or set current selected domain.      &lt;br /&gt;domains&amp;#160; - List all available domain names      &lt;br /&gt;exit&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Terminate console and exit      &lt;br /&gt;get&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Get value of MBean attribute(s)      &lt;br /&gt;help&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Display available commands or usage of a command      &lt;br /&gt;info&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Display detail information about an MBean      &lt;br /&gt;jvms&amp;#160;&amp;#160;&amp;#160;&amp;#160; - List all running local JVM processes      &lt;br /&gt;open&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Open JMX session or display current connection      &lt;br /&gt;option&amp;#160;&amp;#160; - Set options for command session      &lt;br /&gt;quit&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Terminate console and exit      &lt;br /&gt;run&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Invoke an MBean operation      &lt;br /&gt;set&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Set value of an MBean attribute &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cour" size="1"&gt;$&amp;gt;jvms     &lt;br /&gt;2686&amp;#160;&amp;#160;&amp;#160;&amp;#160; ( ) -      &lt;br /&gt;12216&amp;#160;&amp;#160;&amp;#160; ( ) - jmxterm-1.0-alpha-4-uber.jar      &lt;br /&gt;12200&amp;#160;&amp;#160;&amp;#160; ( ) - hsendidmobile.ss7.sampleapp.performance.ApplicationStarter      &lt;br /&gt;$&amp;gt;open 12200      &lt;br /&gt;$&amp;gt;bean Performance:name=smsSender,type=map      &lt;br /&gt;#bean is set to Performance:name=smsSender,type=map      &lt;br /&gt;$&amp;gt;info      &lt;br /&gt;#mbean = Performance:name=smsSender,type=map      &lt;br /&gt;#class name = hsendidmobile.ss7.sampleapp.performance.sms.ForwardMoSenderMBean      &lt;br /&gt;#there is no attribute      &lt;br /&gt;# operations      &lt;br /&gt;&amp;#160; %0&amp;#160;&amp;#160; - int currrentTps()      &lt;br /&gt;&amp;#160; %1&amp;#160;&amp;#160; - void sendMessage()      &lt;br /&gt;&amp;#160; %2&amp;#160;&amp;#160; - void sendTps(int p1)      &lt;br /&gt;&amp;#160; %3&amp;#160;&amp;#160; - void sendTpsParallay(int p1,int p2)      &lt;br /&gt;&amp;#160; %4&amp;#160;&amp;#160; - void stopSending()      &lt;br /&gt;#there's no notifications      &lt;br /&gt;$&amp;gt;run sendMessage      &lt;br /&gt;#calling operation sendMessage of mbean Performance:name=smsSender,type=map      &lt;br /&gt;#operation returns:      &lt;br /&gt;null&lt;/font&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:67ef1d29-3ef5-476a-bf29-92107623d220" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/JMX" rel="tag"&gt;JMX&lt;/a&gt;,&lt;a href="http://technorati.com/tags/CLI" rel="tag"&gt;CLI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JConsole" rel="tag"&gt;JConsole&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-8097817534726726400?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/8097817534726726400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=8097817534726726400' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8097817534726726400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8097817534726726400'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/08/command-line-client-for-jmx.html' title='Command Line Client for JMX'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-2198112233713814082</id><published>2009-07-11T08:50:00.001+05:30</published><updated>2009-07-11T08:50:54.969+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Download Presentation Videos from InfoQ</title><content type='html'>&lt;p&gt;&lt;a href="http://infoq.com" target="_blank"&gt;InfoQ&lt;/a&gt; is a very resource full web site for anyone in the software industry. They have lot of articles, white papers, and presentations in various topics related to software engineering. Presentation videos found in InfoQ have being recorded during various conferences and are really useful. I really love watching those videos since it is great opportunity to listen to industry experts. &lt;/p&gt;  &lt;p&gt;But the problem was that I had to sit in front of the browser and watch those videos. So I though of downloading those videos watch them when I have free time, or when I'm traveling. So I tried to download the flv using many of the free tools available in the web. But they were not successful at all. After many unsuccessful attempts, I found a way to download those presentations. It is a tool called Grub-Pro coming with Orbit-Downloader. &lt;a href="http://www.orbitdownloader.com/Grab-Pro-tutorials.htm" target="_blank"&gt;Here is the tutorial for it&lt;/a&gt;. Only issue with this tool is that you have to use Internet Explorer. But no worries, as long as I can download the video, I don't mind even using IE for a while :)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_tedTUODQRM0/SlgE-o0VQGI/AAAAAAAAAzQ/yhmkd5TaJxM/s1600-h/grubproinIE4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="278" alt="grub-pro-in-IE" src="http://lh4.ggpht.com/_tedTUODQRM0/SlgFC4cEItI/AAAAAAAAAzU/pteppJ940y8/grubproinIE_thumb2.png?imgmax=800" width="433" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_tedTUODQRM0/SlgFEPdD5-I/AAAAAAAAAzY/h4L_aqMcb-M/s1600-h/grubprodownload2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="214" alt="grub-pro-download" src="http://lh5.ggpht.com/_tedTUODQRM0/SlgFFV5XGfI/AAAAAAAAAzc/mJdY5WhAlfE/grubprodownload_thumb.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5733402a-7c8d-4817-bb07-18b685cd44a2" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/InfoQ%20Presentations" rel="tag"&gt;InfoQ Presentations&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Orbit%20Downloader" rel="tag"&gt;Orbit Downloader&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Grub-Pro" rel="tag"&gt;Grub-Pro&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-2198112233713814082?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/2198112233713814082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=2198112233713814082' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2198112233713814082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2198112233713814082'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/07/download-presentation-videos-from-infoq.html' title='Download Presentation Videos from InfoQ'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_tedTUODQRM0/SlgFC4cEItI/AAAAAAAAAzU/pteppJ940y8/s72-c/grubproinIE_thumb2.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-1608670496659753015</id><published>2009-06-14T10:31:00.001+05:30</published><updated>2009-06-14T10:31:50.167+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Task Focused Programing with Mylyn and TaskTop</title><content type='html'>&lt;p&gt; Few days back I came across &lt;a href="http://www.infoq.com/presentations/mik-kersten-eclipse-mylin-tfi" target="_blank"&gt;this presentation at InfoQ site&lt;/a&gt; regarding &amp;quot;Eclipse, Mylyn and the TFI&amp;quot;. I've seen the Mylyn view in the Eclipse and my idea about that was like some kind of a task management tool that comes with Eclipse IDE. After watching the vide my idea about Mylyn changed a lot and I was really exited about Mylyn and wanted to give it a try.&amp;#160; Mylyn is an open source product, there is a commercial version as well, which is called &lt;a href="http://tasktop.com" target="_blank"&gt;TaskTop&lt;/a&gt;. In task top there is a free version called &amp;quot;TaskTop Starter&amp;quot; which has some more features like Time Tracking. &lt;/p&gt;  &lt;h4&gt;&lt;u&gt;Installing Mylyn and TaskTop&lt;/u&gt;&lt;/h4&gt;  &lt;p&gt;Mylyn comes by default with many of Eclipse editions. I was using Eclipse JEE Developer edition and it already had Mylyn. So most probably you also having it already. If you don't have Mylyn pug-in already installed in your Eclipse you can get it from &lt;a href="http://www.eclipse.org/mylyn/" target="_blank"&gt;Eclipse site.&lt;/a&gt; It has all the instruction you need to install it. &lt;/p&gt;  &lt;p&gt;Once you install Mylyn you'll get a new view called &amp;quot;Task&amp;quot;. If it is not already shown you can get it from Window -&amp;gt; Show View -&amp;gt; Other.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_tedTUODQRM0/SjSD_ouHO1I/AAAAAAAAAx8/EzOQbDjP1dg/s1600-h/task-view%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="154" alt="task-view" src="http://lh6.ggpht.com/_tedTUODQRM0/SjSEBNsBzVI/AAAAAAAAAyA/5xt0P4dG408/task-view_thumb.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To install TaskTop starter edition follow the instructions given in &lt;a href="http://tasktop.com/support/download/" target="_blank"&gt;TaskTop site&lt;/a&gt;. Before installing TaskTop you should do a complete update of your Eclipse. Otherwise you'll get some errors regarding incompatibilities. &lt;/p&gt;  &lt;h4&gt;&lt;u&gt;Some Interesting Features of Mylyn/TaskTop&lt;/u&gt;&lt;/h4&gt;  &lt;p&gt;Mylyn is all about task focused programing. It allows you to do multitasking with ease. When you create a task all the editors you open are attached to that task. So when you move to another task you can see all the file which you had opened already there. You don't need to waist time on opening and closing editors when switching from one task to another.&amp;#160; Trust me this can improve your productivity many times. I personally experiences this during last tow days &lt;/p&gt;  &lt;p&gt;I used mylyn.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_tedTUODQRM0/SjSEERzfPJI/AAAAAAAAAyE/e_HItyBl038/s1600-h/task-list%5B4%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="196" alt="task-list" src="http://lh3.ggpht.com/_tedTUODQRM0/SjSEFxFH1II/AAAAAAAAAyI/v20QpTUTBto/task-list_thumb%5B2%5D.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_tedTUODQRM0/SjSEISxw3tI/AAAAAAAAAyM/SXE_eOsM1ag/s1600-h/creating-new-task%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="196" alt="creating-new-task" src="http://lh3.ggpht.com/_tedTUODQRM0/SjSEJ93bDGI/AAAAAAAAAyQ/1VsyXVwf6X4/creating-new-task_thumb.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can also integrate bug reports from common bug tracking systems like bugzilla and Jira. Most interesting thing about this is that you can share how you fix the bug with other developers as well. Lett's say you had to open 5 files and do changes in order to fix the bug. When you mark the bug as Fixed you can also attach Mylyn context as well. So when other open it, mylyn will automatically open the files you have opened when you fixed that bug. &lt;/p&gt;  &lt;p&gt;Another interesting thing is you can see how you have spent your time on various tasks you have performed during the day. This feature comes with the TaskTop Starter.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_tedTUODQRM0/SjSENuVRgII/AAAAAAAAAyU/J4yvsps_MmA/s1600-h/time-tracking%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="196" alt="time-tracking" src="http://lh5.ggpht.com/_tedTUODQRM0/SjSEPGBEgRI/AAAAAAAAAyY/HACldnnCNPY/time-tracking_thumb.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;There are many more interesting things regarding Mylyn. This is only an enlightment article. If you are interested you should watch that InfoQ video.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0c3388d9-e71a-4edc-857c-b76a70b62d4c" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Mylyn" rel="tag"&gt;Mylyn&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TaskTop" rel="tag"&gt;TaskTop&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Task%20Focused%20Programing.%20Eclipse" rel="tag"&gt;Task Focused Programing. Eclipse&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Productivity" rel="tag"&gt;Productivity&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-1608670496659753015?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/1608670496659753015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=1608670496659753015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1608670496659753015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1608670496659753015'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/06/task-focused-programing-with-mylyn-and.html' title='Task Focused Programing with Mylyn and TaskTop'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_tedTUODQRM0/SjSEBNsBzVI/AAAAAAAAAyA/5xt0P4dG408/s72-c/task-view_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-1322371123600448030</id><published>2009-05-02T12:45:00.000+05:30</published><updated>2009-05-02T12:45:00.698+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='SCTP'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenJDK'/><title type='text'>SCTP Client-Server in Java</title><content type='html'>&lt;p&gt;As I promised in &lt;a href="http://sandarenu.blogspot.com/2009/05/communicating-over-sctp-in-java.html" target="_blank"&gt;my previous article&lt;/a&gt; here is very simple Client Server example for SCTP in Java. If you still have not installed and tested OpenJDK please follow the instructions given in &lt;a href="http://sandarenu.blogspot.com/2009/05/communicating-over-sctp-in-java.html" target="_blank"&gt;my previous article&lt;/a&gt;.&lt;/p&gt;  &lt;h5&gt;&lt;strong&gt;SCTP Server&lt;/strong&gt;&lt;/h5&gt;  &lt;p&gt;import java.io.IOException;    &lt;br /&gt;import java.net.InetSocketAddress;     &lt;br /&gt;import java.net.SocketAddress;     &lt;br /&gt;import java.nio.ByteBuffer; &lt;/p&gt;  &lt;p&gt;import com.sun.nio.sctp.MessageInfo;    &lt;br /&gt;import com.sun.nio.sctp.SctpChannel;     &lt;br /&gt;import com.sun.nio.sctp.SctpServerChannel; &lt;/p&gt;  &lt;p&gt;/**    &lt;br /&gt;* @author sandarenu     &lt;br /&gt;* $LastChangedDate$     &lt;br /&gt;* $LastChangedBy$     &lt;br /&gt;* $LastChangedRevision$     &lt;br /&gt;*/     &lt;br /&gt;public class SctpServer { &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public static void main(String[] args) throws IOException {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SocketAddress serverSocketAddress = new InetSocketAddress(1111);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;create and bind for sctp address&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SctpServerChannel sctpServerChannel =&amp;#160; SctpServerChannel.open().bind(serverSocketAddress);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;address bind process finished successfully&amp;quot;); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SctpChannel sctpChannel;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; while ((sctpChannel = sctpServerChannel.accept()) != null) {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;client connection received&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;sctpChannel.getRemoteAddresses() = &amp;quot; + sctpChannel.getRemoteAddresses());     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;sctpChannel.association() = &amp;quot; + sctpChannel.association());     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MessageInfo messageInfo = sctpChannel.receive(ByteBuffer.allocate(64000) , null, null);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(messageInfo); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;}&lt;/p&gt;  &lt;h5&gt;&lt;strong&gt;SCTP Client&lt;/strong&gt;&lt;/h5&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;import java.io.IOException;    &lt;br /&gt;import java.net.InetAddress;     &lt;br /&gt;import java.net.InetSocketAddress;     &lt;br /&gt;import java.net.SocketAddress;     &lt;br /&gt;import java.nio.ByteBuffer; &lt;/p&gt;  &lt;p&gt;import com.sun.nio.sctp.MessageInfo;    &lt;br /&gt;import com.sun.nio.sctp.SctpChannel; &lt;/p&gt;  &lt;p&gt;/**    &lt;br /&gt;* @author sandarenu     &lt;br /&gt;* $LastChangedDate$     &lt;br /&gt;* $LastChangedBy$     &lt;br /&gt;* $LastChangedRevision$     &lt;br /&gt;*/     &lt;br /&gt;public class SctpClient { &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public static void main(String[] args) throws IOException {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; try {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SocketAddress socketAddress = new InetSocketAddress( 6050);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;open connection for socket [&amp;quot; + socketAddress + &amp;quot;]&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SctpChannel sctpChannel = SctpChannel.open();//(socketAddress, 1 ,1 );     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sctpChannel.bind(new InetSocketAddress( 6060));     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sctpChannel.connect(socketAddress, 1 ,1); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;sctpChannel.getRemoteAddresses() = &amp;quot; + sctpChannel.getRemoteAddresses());    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;sctpChannel.getAllLocalAddresses() = &amp;quot; + sctpChannel.getAllLocalAddresses());     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;sctpChannel.isConnectionPending() = &amp;quot; + sctpChannel.isConnectionPending());     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;sctpChannel.isOpen() = &amp;quot; + sctpChannel.isOpen());     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;sctpChannel.isRegistered() = &amp;quot; + sctpChannel.isRegistered());     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;sctpChannel.provider() = &amp;quot; + sctpChannel.provider());     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;sctpChannel.association() = &amp;quot; + sctpChannel.association()); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;send bytes&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; final ByteBuffer byteBuffer = ByteBuffer.allocate(64000);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Simple M3ua ASP_Up message     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; byte [] message = new byte []{1,0,3,1,0,0,0,24,0,17,0,8,0,0,0,1,0,4,0,8,84,101,115,116}; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; final MessageInfo messageInfo = MessageInfo.createOutGoing(null, 0);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;messageInfo = &amp;quot; + messageInfo);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;messageInfo.streamNumber() = &amp;quot; + messageInfo.streamNumber()); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; byteBuffer.put(message);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; byteBuffer.flip(); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; try {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sctpChannel.send(byteBuffer, messageInfo);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } catch (Exception e) {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; e.printStackTrace();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(&amp;quot;close connection&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sctpChannel.close(); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } catch (Exception e) {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; e.printStackTrace();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;   &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a21ad710-c827-456c-badf-832168e1622e" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Java" rel="tag"&gt;Java&lt;/a&gt;,&lt;a href="http://technorati.com/tags/OpenJDK" rel="tag"&gt;OpenJDK&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Programming" rel="tag"&gt;Programming&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SCTP" rel="tag"&gt;SCTP&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-1322371123600448030?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/1322371123600448030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=1322371123600448030' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1322371123600448030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1322371123600448030'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/05/sctp-client-server-in-java.html' title='SCTP Client-Server in Java'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-7117720317445931349</id><published>2009-05-01T12:28:00.001+05:30</published><updated>2009-05-01T12:28:41.825+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='SCTP'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenJDK'/><title type='text'>Communicating over SCTP in Java</title><content type='html'>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol" target="_blank"&gt;SCTP - Stream Control Transmission Protocol&lt;/a&gt; is a relatively new (standardize in year 200 by IETF) transport layer protocol to design to operate over IP. It is an alternative for TCP and UDP and combines many good features of those protocols. Main intention of developing SCTP was to cater the growing demand of IP telephony market.&amp;#160; &lt;/p&gt;  &lt;p&gt;Since SCTP is relatively new protocol programming language support for this is also not as commonly available as TCP or UDP, especially you are Java developer. But is you are a C/C++ developer then you have no problem, there is a very good guide on &lt;a href="http://www.unpbook.com/" target="_blank"&gt;UNIX - Network Programing Vol1-3rd Edition&lt;/a&gt; (chapter 9, 10 and 23). &lt;/p&gt;  &lt;p&gt;If you are Java developer then you'd have to use OpenJDK instead of Sun java JDK, since at present only OpenJDK has the support for SCTP. So first thing you have do is to &lt;a href="http://download.java.net/jdk7/sctp/" target="_blank"&gt;download and install OpenJDK-7&lt;/a&gt;.&amp;#160; Currently it only has versions for Linux and Solaris, again if you are using Windows then you'll have to do some more research. I've tried this only on Linux(Fedora), may be later I'll try with Windows as well. If your Linux kernel do not support SCTP, then you'll have install &lt;a href="http://lksctp.sourceforge.net/" target="_blank"&gt;LKSCTP&lt;/a&gt; as well. &lt;a href="http://openjdk.java.net/projects/sctp/html/gettingstarted.html" target="_blank"&gt;Here is the small getting started guide at OpenJDK&lt;/a&gt; site. You can use the small test program given that guide to test whether your SCTP stack if working properly. I'll post small client-server program in SCTP in a later post. &lt;/p&gt;  &lt;p&gt;PS: I found this SCTP library for Windows &lt;a href="http://www.sctp.be/sctplib/"&gt;http://www.sctp.be/sctplib/&lt;/a&gt;, but couldn't check whether there is a support from OpenJDK-SCTP side for windows. If you find something please let me know as well.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:db909547-4870-46d2-ae62-95a2c3c2910e" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/SCTP" rel="tag"&gt;SCTP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/OpenJDK" rel="tag"&gt;OpenJDK&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Java" rel="tag"&gt;Java&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Linux" rel="tag"&gt;Linux&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Programming" rel="tag"&gt;Programming&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-7117720317445931349?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/7117720317445931349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=7117720317445931349' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7117720317445931349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7117720317445931349'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/05/communicating-over-sctp-in-java.html' title='Communicating over SCTP in Java'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-3959332002601612316</id><published>2009-03-22T10:06:00.001+05:30</published><updated>2009-03-22T10:06:56.663+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenCV'/><title type='text'>OpenCV - Haar Training Resources</title><content type='html'>&lt;p&gt;There were lot of good feed back for my &lt;a href="http://sandarenu.blogspot.com/search/label/OpenCV" target="_blank"&gt;OpenCV articles&lt;/a&gt; (&lt;a href="http://sandarenu.blogspot.com/2008/06/opencv-computer-vision-library.html" target="_blank"&gt;Article1&lt;/a&gt;, &lt;a href="http://sandarenu.blogspot.com/2008/07/getting-started-with-opencv.html" target="_blank"&gt;Article 2&lt;/a&gt;). There were lot of inquires regarding Haar Training and how to do it. Since I was bit busy with my work at hSenind I couldn't put any replies for that. Finally I managed to find some time to put together few URL and important tools where you can use to create your own classifier XML. &lt;/p&gt;  &lt;p&gt;If you are interested in OpenCV vision library you should join to &lt;a href="http://groups.yahoo.com/subscribe/OpenCV" target="_blank"&gt;OpenCV&lt;/a&gt; yahoo group. It is very active and has lot of resources as well.&amp;#160; Following are some good links I used when I was learning on how to do Haar Training with OpenCV.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://note.sonots.com/?cmd=htmlinsert&amp;amp;page=haartraining" href="http://note.sonots.com/?cmd=htmlinsert&amp;amp;page=haartraining" target="_blank"&gt;http://note.sonots.com/?cmd=htmlinsert&amp;amp;page=haartraining&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://opencv.willowgarage.com/wiki/FaceDetection" href="http://opencv.willowgarage.com/wiki/FaceDetection" target="_blank"&gt;http://opencv.willowgarage.com/wiki/FaceDetection&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://note.sonots.com/SciSoftware/haartraining.html" href="http://note.sonots.com/SciSoftware/haartraining.html" target="_blank"&gt;http://note.sonots.com/SciSoftware/haartraining.html&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="https://webeng.cs.ait.ac.th/cvwiki/opencv:tutorial:haartraining" href="https://webeng.cs.ait.ac.th/cvwiki/opencv:tutorial:haartraining" target="_blank"&gt;https://webeng.cs.ait.ac.th/cvwiki/opencv:tutorial:haartraining&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://64.233.169.104/search?q=cache:PMA3ghxtCbwJ:rogerioferis.com/ClassMarch10/CreatingBoostedClassifiers.doc+HaarTraining+%2B+OpenCV&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=48" href="http://64.233.169.104/search?q=cache:PMA3ghxtCbwJ:rogerioferis.com/ClassMarch10/CreatingBoostedClassifiers.doc+HaarTraining+%2B+OpenCV&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=48" target="_blank"&gt;http://64.233.169.104/search?q=cache:PMA3ghxtCbwJ:rogerioferis.com/ClassMarch10/CreatingBoostedClassifiers.doc+HaarTraining+%2B+OpenCV&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;cd=48&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Most important thing to consider when doing Haar training is to have good positive and negative image set. We have created a small utility modifying sample program provide with OpenCV to create positive samples. You can &lt;a href="http://sandarenu.googlepages.com/CV_TrainingPrj.cpp" target="_blank"&gt;download the source here&lt;/a&gt;. Using that you can create positive samples to detect some object using a video. You can move frame by frame in the video using &lt;strong&gt;'Space Bar',&lt;/strong&gt; mark the areas that contain the object you want to detect using mouse and save it just by pressing &lt;strong&gt;'S'.&lt;/strong&gt; Utility will create the text file required fro training. &lt;/p&gt;  &lt;p&gt;Utility can also be used to create sample images to be used for &lt;a href="http://en.wikipedia.org/wiki/Hidden_Markov_model" target="_blank"&gt;HMM&lt;/a&gt; training as well. If you are interested in HMM following &lt;a title="http://www.bernardotti.it/portal/showthread.php?t=17777" href="http://www.bernardotti.it/portal/showthread.php?t=17777"&gt;http://www.bernardotti.it/portal/showthread.php?t=17777&lt;/a&gt; has a good article on how to use HMM with OpenCV.&lt;/p&gt;  &lt;p&gt;   &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8677ace1-2231-462f-bc2b-acf8660be0d7" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/OpenCV" rel="tag"&gt;OpenCV&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Haar%20Training" rel="tag"&gt;Haar Training&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HMM" rel="tag"&gt;HMM&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Object%20Detection" rel="tag"&gt;Object Detection&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Computer%20Vision" rel="tag"&gt;Computer Vision&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-3959332002601612316?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/3959332002601612316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=3959332002601612316' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3959332002601612316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3959332002601612316'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/03/opencv-haar-training-resources.html' title='OpenCV - Haar Training Resources'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-1856031278524428222</id><published>2009-03-15T10:27:00.001+05:30</published><updated>2009-03-15T10:27:21.438+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Refactoring Messy Code</title><content type='html'>&lt;p&gt;Few days back I started to refactor some code of a project which I started few years back. Well actually I started working on that project during my second year first semester at the university. It is kind of a pet project which I started with one of my friends. When we started the project, our knowledge about best practices to be used when coding was near zero (I guess it is actually zero). &lt;/p&gt;  &lt;p&gt;When I look back the source code of the project, it is like a hell. All possible bad practices are there in our code, very long methods (there is a one method doing some complex calculation which has more than 1350 lines :D ), code duplication, one class doing many things and the list goes on... &lt;/p&gt;  &lt;p&gt;Well I can't blame my self for coding this kind of mess, since at that time I was just beginning my journey as a developer and didn't knew any thing about best practices. But I can't keep the code this way since it's readability is 0%; can you imagine reading a method with 1350 lines and understanding. Code has become more messy sine we have included lot of new features and requirement changes here and there. Any how we managed to deal with the code up to now, but now it is overwhelming. &lt;/p&gt;  &lt;p&gt;Refractoring is not an easy task, we have to make sure that existing functionalities do not break as well as have to keep up with the new requirements as well.&amp;#160; As Martin Fowler describes in his famous book &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0201485672" target="_blank"&gt;Refactoring: Improving the Design of Existing Code&lt;/a&gt;, there should not be any &amp;quot;Grand redesigns&amp;quot;, recatoring should be an incremental process. This is going be be a good experience for me. Let's see how it goes..... &lt;/p&gt;  &lt;p&gt;   &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:66773ee4-a1c8-44a7-bb14-9710640b9195" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Refactoring" rel="tag"&gt;Refactoring&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Messy%20Code" rel="tag"&gt;Messy Code&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Programming" rel="tag"&gt;Programming&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-1856031278524428222?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/1856031278524428222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=1856031278524428222' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1856031278524428222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1856031278524428222'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/03/refactoring-messy-code.html' title='Refactoring Messy Code'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-1454100636376583654</id><published>2009-03-02T10:19:00.003+05:30</published><updated>2009-03-02T10:27:48.903+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><title type='text'>Craftsmanship and Ethics</title><content type='html'>This is &lt;a href="http://www.infoq.com/presentations/craftmanship-ethics"&gt;nice presentation by Robert C. Martin&lt;/a&gt; posted at InfoQ. Here he talk about things that makes us professional. He talk about lot of important topics which help us to do better programming. If you are interested in programming this a going to be really really helpful for you.&lt;br /&gt;In my point of view it is a MUST read for every programmer.&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-1454100636376583654?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/1454100636376583654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=1454100636376583654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1454100636376583654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1454100636376583654'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/03/craftsmanship-and-ethics.html' title='Craftsmanship and Ethics'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-4671434225164187000</id><published>2009-02-07T11:13:00.004+05:30</published><updated>2009-02-07T11:29:20.169+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='diGIT'/><title type='text'>diGIT Magazine Launched</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tedTUODQRM0/SY0i2ty73eI/AAAAAAAAAws/mSSYfYcOKL0/s1600-h/digit.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 203px; height: 106px;" src="http://1.bp.blogspot.com/_tedTUODQRM0/SY0i2ty73eI/AAAAAAAAAws/mSSYfYcOKL0/s400/digit.png" alt="" id="BLOGGER_PHOTO_ID_5299930659886456290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;First release of the diGIT magazine was launched this month. It is a magazine dedicated for various stuff related to IT. This first release of the magazine is fairly large and rich in content ranging from introductory articles to advance stuff like Agent technology.  So everyone from school children to university students can gain a lot from it.&lt;br /&gt;You can view the &lt;a href="http://www.digit.lk/"&gt;online version of diGIT&lt;/a&gt; or you can &lt;a href="http://www.digit.lk/?q=node/67"&gt;download it in pdf format&lt;/a&gt;.&lt;br /&gt;I also contributed to this magazine. My article is basically about &lt;a href="http://www.digit.lk/?q=node/155"&gt;how to start writing better code&lt;/a&gt;. I'm planning to write a series of articles on this topics covering various aspects of better coding practices and methods.&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-4671434225164187000?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/4671434225164187000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=4671434225164187000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4671434225164187000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4671434225164187000'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/02/digit-magazine-launched.html' title='diGIT Magazine Launched'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tedTUODQRM0/SY0i2ty73eI/AAAAAAAAAws/mSSYfYcOKL0/s72-c/digit.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6770971133003080276</id><published>2009-01-25T11:55:00.003+05:30</published><updated>2009-01-25T13:21:02.466+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Alternative for JMS Receiver</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Around 6 weeks back I was working on a project that used JMS. Application needed to receive messages through an ActiveMQ queue and then send those as SMS messages to a SMSC. This message sending happens as a batch and I needed to get batch size of messages from ActiveMQ inorder to send.  I used JmsTemplate provided by Spring framework for this and used receive method to get messages from the queue.&lt;br /&gt;Initially it was working fine, but later after more testing I found out that sometimes JmsTemplate's receive method do not return messages eventhough there are thousands of messages in the queue. I &lt;a href="http://www.google.lk/search?hl=si&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;q=JMSTemplate+%2B+return+null&amp;amp;btnG=%E0%B7%83%E0%B7%9C%E0%B6%BA%E0%B6%B1%E0%B7%8A%E0%B6%B1&amp;amp;meta="&gt;Googled&lt;/a&gt;, followed instructions given in many &lt;a href="http://www.nabble.com/Spring-JmsTemplate-receive%28%29-returns-null-with-messages-in-Queue-td18402053.html"&gt;forum posts&lt;/a&gt; and &lt;a href="http://activemq.apache.org/jmstemplate-gotchas.html"&gt;ActiveMQ site&lt;/a&gt; with out much success.&lt;br /&gt;Then one of my collegue Romith started searching source codes of some popular open source projects to see how they have used JMS receives. We were lucky... In Mule's code we found out the they have used JMS listners as a receiver. (May be mule people also have faced the same kind of problem as we were with receivers :) )&lt;br /&gt;When we want to receive a message we initialise listener and get the message and then close that listener. We also developed simple class that can do the same, and it did the trick for us.  Following is the simple class where we use JmsListerns to work as JmsReceiver.&lt;br /&gt;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;import org.jencks.amqpool.PooledConnectionFactory;&lt;br /&gt;&lt;br /&gt;import javax.jms.*;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.Hashtable;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Map;&lt;br /&gt;&lt;br /&gt;public class JMSQueueReceiverImpl implements MessageListener {&lt;br /&gt;&lt;br /&gt;    private QueueConnectionFactory queueConnectionFactory;&lt;br /&gt;    private Queue queue;&lt;br /&gt;    private QueueConnection queueConnection;&lt;br /&gt;    private QueueSession queueSession;&lt;br /&gt;    private QueueReceiver queueReceiver;&lt;br /&gt;    private final Object messageReceiveWaitLock = new Object();&lt;br /&gt;    private MessageConsumer messageConsumer;&lt;br /&gt;    private Log logger = LogFactory.getLog(JMSQueueReceiverImpl.class);&lt;br /&gt;    private List&lt;message&gt; receivedMessages = new ArrayList&lt;message&gt;(20);&lt;br /&gt;    private int requiredMessages = 0;&lt;br /&gt;    private int RECEIVE_ALL_TIMEOUT = 1000;&lt;br /&gt;    private PooledConnectionFactory pooledConnectionFactory;&lt;br /&gt;    private static Map&lt;string,&gt;&gt; missedMessages = new Hashtable&lt;string,&gt;&gt;();&lt;br /&gt;    private static long totalJmsMessageConsumed = 0;&lt;br /&gt;    private static long totalJmsMessageReceived =0;&lt;br /&gt;    private static long connectionCreateCount = 0;&lt;br /&gt;    private static long connectionCloseCount = 0;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public JMSQueueReceiverImpl(QueueConnectionFactory queueConnectionFactory, Queue queue) {&lt;br /&gt;        this.queueConnectionFactory = queueConnectionFactory;&lt;br /&gt;        this.queue = queue;&lt;br /&gt;        try {&lt;br /&gt;            if (logger.isDebugEnabled()) {&lt;br /&gt;                logger.debug("[" + ++connectionCreateCount + "] Creating the connection to the Queue [" + queue.toString() + "]");&lt;br /&gt;            }&lt;br /&gt;            queueConnection = (QueueConnection)pooledConnectionFactory.createConnection();&lt;br /&gt;            queueSession = queueConnection.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);&lt;br /&gt;            messageConsumer = queueSession.createConsumer(queue);&lt;br /&gt;//            doStart(queue);&lt;br /&gt;            receiveFromCacheIfExtraMessagesFetched(this.queue.getQueueName());&lt;br /&gt;        } catch (JMSException e) {&lt;br /&gt;            if (logger.isDebugEnabled()) {&lt;br /&gt;                logger.debug("Error while creating the connection ", e);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public JMSQueueReceiverImpl(PooledConnectionFactory pooledConnectionFactory, Queue queue) {&lt;br /&gt;        this.pooledConnectionFactory =  pooledConnectionFactory;&lt;br /&gt;//        this.queueConnectionFactory = queueConnectionFactory;&lt;br /&gt;        this.queue = queue;&lt;br /&gt;        try {&lt;br /&gt;            if (logger.isDebugEnabled()) {&lt;br /&gt;                logger.debug("[" + ++connectionCreateCount + "] Creating the connection to the Queue [" + queue.toString() + "]");&lt;br /&gt;            }&lt;br /&gt;            queueConnection = (QueueConnection)pooledConnectionFactory.createConnection();&lt;br /&gt;            queueSession = queueConnection.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE);&lt;br /&gt;            messageConsumer = queueSession.createConsumer(queue);&lt;br /&gt;//            doStart(queue);&lt;br /&gt;            receiveFromCacheIfExtraMessagesFetched(this.queue.getQueueName());&lt;br /&gt;        } catch (JMSException e) {&lt;br /&gt;            if (logger.isDebugEnabled()) {&lt;br /&gt;                logger.debug("Error while creating the connection ", e);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void doStart(long timeout) throws JMSException {&lt;br /&gt;        messageConsumer.setMessageListener(this);&lt;br /&gt;        queueConnection.start();&lt;br /&gt;        synchronized (messageReceiveWaitLock) {&lt;br /&gt;            try {&lt;br /&gt;                messageReceiveWaitLock.wait(timeout);&lt;br /&gt;            } catch (InterruptedException e) {&lt;br /&gt;                logger.info(e);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        messageConsumer.setMessageListener(null);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void doStop() throws JMSException {&lt;br /&gt;        messageConsumer.setMessageListener(null);&lt;br /&gt;        //queueConnection.stop();&lt;br /&gt;        synchronized (messageReceiveWaitLock) {&lt;br /&gt;            messageReceiveWaitLock.notify();&lt;br /&gt;        }&lt;br /&gt;        if (logger.isDebugEnabled()) {&lt;br /&gt;            logger.debug("Message receiving finished");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Message receive(long timeout) {&lt;br /&gt;        try {&lt;br /&gt;            requiredMessages = 1;&lt;br /&gt;            if (receivedMessages.size() &gt; 0) {&lt;br /&gt;                if (logger.isDebugEnabled()) {&lt;br /&gt;                    logger.debug("[pre-single] success jms receive calls [" + ++totalJmsMessageConsumed + "]");&lt;br /&gt;                }&lt;br /&gt;                return receivedMessages.remove(0);&lt;br /&gt;            }&lt;br /&gt;            doStart(timeout);&lt;br /&gt;            if (receivedMessages.size() &gt; 0) {&lt;br /&gt;                if (logger.isDebugEnabled()) {&lt;br /&gt;                    logger.debug("[single] success jms receive calls [" + ++totalJmsMessageConsumed + "]");&lt;br /&gt;                }&lt;br /&gt;                return receivedMessages.remove(0);&lt;br /&gt;            }&lt;br /&gt;            return null;&lt;br /&gt;        } catch (JMSException e) {&lt;br /&gt;            logger.error("Error while starting message receiving", e);&lt;br /&gt;            return null;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public List&lt;message&gt; receive(long timeout, int messageCount) {&lt;br /&gt;        try {&lt;br /&gt;            requiredMessages = messageCount;&lt;br /&gt;            doStart(timeout);&lt;br /&gt;            totalJmsMessageConsumed += receivedMessages.size();&lt;br /&gt;            if (logger.isDebugEnabled()) {&lt;br /&gt;                logger.debug("[count] success jms receive calls [" + totalJmsMessageConsumed + "]");&lt;br /&gt;            }&lt;br /&gt;            return receivedMessages;&lt;br /&gt;        } catch (JMSException e) {&lt;br /&gt;            logger.error("Error while starting message receiving", e);&lt;br /&gt;            return null;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public List&lt;message&gt; receiveAll(long timeout) {&lt;br /&gt;        try {&lt;br /&gt;            requiredMessages = -1;&lt;br /&gt;            doStart(timeout);&lt;br /&gt;            return receivedMessages;&lt;br /&gt;        } catch (JMSException e) {&lt;br /&gt;            logger.error("Error while starting message receiving", e);&lt;br /&gt;            return null;&lt;br /&gt;        } finally {&lt;br /&gt;            try {&lt;br /&gt;                doStop();&lt;br /&gt;            } catch (JMSException e) {&lt;br /&gt;                logger.error("Error while stopping message receving", e);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void closeConnection() {&lt;br /&gt;        if (logger.isDebugEnabled()) {&lt;br /&gt;            logger.debug("[" + ++connectionCloseCount + "]Closing connection from queue [" + queue + "]");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            cacheIfExtraMessagesFetched();&lt;br /&gt;            try {&lt;br /&gt;                if(messageConsumer!= null){&lt;br /&gt;                    messageConsumer.close();&lt;br /&gt;                }&lt;br /&gt;            } catch (JMSException e) {&lt;br /&gt;                logger.error("Error while stopping message receiver[consumer] ", e);&lt;br /&gt;            }&lt;br /&gt;            try {&lt;br /&gt;                if (queueSession != null) {&lt;br /&gt;                    queueSession.close();&lt;br /&gt;                }&lt;br /&gt;            } catch (JMSException e) {&lt;br /&gt;                logger.error("Error while stopping message receiver[session] ", e);&lt;br /&gt;            }&lt;br /&gt;            queueConnection.close();&lt;br /&gt;        }catch (JMSException e) {&lt;br /&gt;            logger.error("Error while stopping message receiver[connection] ", e);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void cacheIfExtraMessagesFetched() throws JMSException {&lt;br /&gt;        if (receivedMessages.size() &gt; 0) {&lt;br /&gt;            if (logger.isDebugEnabled()) {&lt;br /&gt;                logger.debug("Extra fetched message count is [" + receivedMessages.size() + "]");&lt;br /&gt;            }&lt;br /&gt;            String queueName = queue.getQueueName();&lt;br /&gt;            List&lt;message&gt; queueMissed = missedMessages.get(queueName);&lt;br /&gt;            if (queueMissed == null) {&lt;br /&gt;                queueMissed = new ArrayList&lt;message&gt;();&lt;br /&gt;                missedMessages.put(queueName, queueMissed);&lt;br /&gt;            }&lt;br /&gt;            while (receivedMessages.size() &gt; 0) {&lt;br /&gt;                queueMissed.add(receivedMessages.remove(0));&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void receiveFromCacheIfExtraMessagesFetched(String queueName) throws JMSException {&lt;br /&gt;        List&lt;message&gt; extraMessages = missedMessages.get(queueName);&lt;br /&gt;        if ( (extraMessages == null) || (extraMessages.size() == 0)) {&lt;br /&gt;            return;&lt;br /&gt;        }&lt;br /&gt;        if (logger.isDebugEnabled()) {&lt;br /&gt;            logger.debug("Extra fetched message count [" + extraMessages.size() + "]");&lt;br /&gt;        }&lt;br /&gt;        while (extraMessages.size() &gt; 0) {&lt;br /&gt;            receivedMessages.add(extraMessages.remove(0));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public synchronized void onMessage(Message message) {&lt;br /&gt;        try {&lt;br /&gt;            if (logger.isDebugEnabled()) {&lt;br /&gt;                logger.debug("[" + ++totalJmsMessageReceived + "] Jms message received jms-correlation-id[" + message.getJMSCorrelationID() + "]");&lt;br /&gt;            }&lt;br /&gt;            receivedMessages.add(message);&lt;br /&gt;            message.acknowledge();&lt;br /&gt;            if (receivedMessages.size() &gt;= requiredMessages) {&lt;br /&gt;                if (logger.isDebugEnabled()) {&lt;br /&gt;                    logger.debug("all messages had been received ");&lt;br /&gt;                }&lt;br /&gt;                try {&lt;br /&gt;                    doStop();&lt;br /&gt;                } catch (JMSException e) {&lt;br /&gt;                    logger.error("Error while stopping message receiving", e);&lt;br /&gt;                }&lt;br /&gt;                try {&lt;br /&gt;                    Thread.sleep(5);&lt;br /&gt;                } catch (InterruptedException e) {&lt;br /&gt;                    //&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        } catch (JMSException e) {&lt;br /&gt;            logger.error("Error while acknowledging ", e);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setRECEIVE_ALL_TIMEOUT(int RECEIVE_ALL_TIMEOUT) {&lt;br /&gt;        this.RECEIVE_ALL_TIMEOUT = RECEIVE_ALL_TIMEOUT;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   /* public static void main(String[] args) {&lt;br /&gt;        BasicConfigurator.configure();&lt;br /&gt;&lt;br /&gt;//        PropertyConfigurator propertyConfigurator = new PropertyConfigurator();&lt;br /&gt;//        Logger logger = Logger.getLogger("sample");&lt;br /&gt;//        LoggerRepository loggerRepository = new Hierarchy(logger);&lt;br /&gt;//        propertyConfigurator.doConfigure("log4j.properties", loggerRepository);&lt;br /&gt;&lt;br /&gt;        org.apache.activemq.ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory();&lt;br /&gt;        PooledConnectionFactory pool = new PooledConnectionFactory();&lt;br /&gt;        factory.setBrokerURL("failover://(tcp://localhost:61616?connectionTimeout=1000&amp;amp;soTimeout=1000&amp;amp;wireFormat.maxInactivityDuration=1000&amp;amp;wireFormat.tightEncodingEnabled=false)?initialReconnectDelay=100");&lt;br /&gt;        pool.setConnectionFactory(factory);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        Thread thread1 = new Thread(new MessageReceiver(pool, new ActiveMQQueue("recharge.subscriber.response"))); thread1.start();&lt;br /&gt;        Thread thread2 = new Thread(new MessageReceiver(pool, new ActiveMQQueue("transfer.sender.agent.response"))); thread2.start();&lt;br /&gt;        Thread thread3 = new Thread(new MessageReceiver(pool, new ActiveMQQueue("recharge.agent.response"))); thread3.start();&lt;br /&gt;        Thread thread4 = new Thread(new MessageReceiver(pool, new ActiveMQQueue("sap.reversedeposit.sms.queue"))); thread4.start();&lt;br /&gt;        Thread thread5 = new Thread(new MessageReceiver(pool, new ActiveMQQueue("transfer.receiver.agent.response"))); thread5.start();&lt;br /&gt;        Thread thread6 = new Thread(new MessageReceiver(pool, new ActiveMQQueue("checkreloads.agent.response"))); thread6.start();&lt;br /&gt;        Thread thread7 = new Thread(new MessageReceiver(pool, new ActiveMQQueue("changepin.agent.response"))); thread7.start();&lt;br /&gt;        Thread thread8 = new Thread(new MessageReceiver(pool, new ActiveMQQueue("sap.deposit.sms.queue"))); thread8.start();&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static class MessageReceiver implements Runnable {&lt;br /&gt;        PooledConnectionFactory pool;&lt;br /&gt;        ActiveMQQueue activeMQQueue;&lt;br /&gt;        WaitLock waitLock;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        private MessageReceiver(PooledConnectionFactory pool, ActiveMQQueue activeMQQueue) {&lt;br /&gt;            this.pool = pool;&lt;br /&gt;            this.activeMQQueue = activeMQQueue;&lt;br /&gt;            waitLock = new WaitLock();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public void run() {&lt;br /&gt;&lt;br /&gt;            for (int i =0; i &lt; 100; i++) {&lt;br /&gt;                JMSQueueReceiverImpl listener = new JMSQueueReceiverImpl(pool, activeMQQueue);&lt;br /&gt;&lt;br /&gt;                for (int j =0; j &lt; 20; j++) {&lt;br /&gt;                    listener.receive(10);&lt;br /&gt;                }&lt;br /&gt;                listener.closeConnection();&lt;br /&gt;                try {&lt;br /&gt;                    synchronized (waitLock) {&lt;br /&gt;                        waitLock.wait(200);&lt;br /&gt;                    }&lt;br /&gt;                } catch (InterruptedException e) {&lt;br /&gt;                    e.printStackTrace();  //todo implement the method&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private class WaitLock {&lt;br /&gt;            private WaitLock() {&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }*/&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;We have used Jencks ActiveMQ connection pool here. You&lt;a href="http://jencks.codehaus.org/AMQPool"&gt; can download if from codehaus here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="technorati-tags"&gt;&lt;a rel="tag" href="http://technorati.com/tag/JMS"&gt;JMS&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tag/JmsReceiver"&gt;JmsReceiver&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tag/ActiveMQ"&gt;ActiveMQ&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tag/JmsTemplate"&gt;JmsTemplate&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6770971133003080276?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6770971133003080276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6770971133003080276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6770971133003080276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6770971133003080276'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/01/alternative-for-jms-receiver.html' title='Alternative for JMS Receiver'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-7811803155384628517</id><published>2009-01-18T09:16:00.005+05:30</published><updated>2009-01-18T09:57:47.521+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><title type='text'>OpenXava - Easiest way to create DB driven websites in Java</title><content type='html'>If you are a someone interested in computer programming, at some point of time you may have created a DB driven website. If you have done that you may know how difficult it is to create even a small website. Even with code generation facilities provided by IDEs and ORM tools like Hibernate you have to do quite a lot to get your web app running.&lt;br /&gt;This is where OpenXava (OX) comes in handy. It is really easy to create DB driven web app using this framework. With OX to create Db driven web app only thing you have to do is to define your business entities. Yes, that is the only thing you have to do, and OX will create you nice AJAX driven website with all CRUD operations implemented and also with reporting capabilities with PDF and Excel. It is amazing right....&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_tedTUODQRM0/SXKty7FeozI/AAAAAAAAAwA/648erkHxRV4/s1600-h/openxava_webapp.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 283px;" src="http://2.bp.blogspot.com/_tedTUODQRM0/SXKty7FeozI/AAAAAAAAAwA/648erkHxRV4/s400/openxava_webapp.png" alt="" id="BLOGGER_PHOTO_ID_5292483602479489842" border="0" /&gt;&lt;/a&gt;How much time do you think will take to create above simple web app?, an hour... Actually it only took me 10 minutes to create it with all those features, what I did was implemented &lt;a href="http://sandarenu.googlepages.com/Customer.java"&gt;simple pojo class Customer&lt;/a&gt; and everything else was done by OX.&lt;br /&gt;OX provides you lot of customization capabilities as well. So I think this is a good time saver tool.&lt;br /&gt;&lt;a href="http://www.gestion400.com/web/guest/home"&gt;Download OX from here&lt;/a&gt; and see for your self....&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-7811803155384628517?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/7811803155384628517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=7811803155384628517' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7811803155384628517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7811803155384628517'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/01/openxava-easiest-way-to-create-db.html' title='OpenXava - Easiest way to create DB driven websites in Java'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tedTUODQRM0/SXKty7FeozI/AAAAAAAAAwA/648erkHxRV4/s72-c/openxava_webapp.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-5277978905832318269</id><published>2009-01-01T07:44:00.002+05:30</published><updated>2009-01-01T07:49:12.319+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Wishing you a Very Happy New Year</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tedTUODQRM0/SVwnqwuxTbI/AAAAAAAAAu4/wSM3MfMe76M/s1600-h/new-year-2009.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 380px; height: 296px;" src="http://3.bp.blogspot.com/_tedTUODQRM0/SVwnqwuxTbI/AAAAAAAAAu4/wSM3MfMe76M/s400/new-year-2009.jpg" alt="" id="BLOGGER_PHOTO_ID_5286143678215179698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: comic sans,cursive;"&gt;&lt;span style="font-size: small;"&gt;&lt;strong&gt;Wish you all a very happy new year.&lt;br /&gt;May all your dreams come true in this wonderful year....&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-5277978905832318269?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/5277978905832318269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=5277978905832318269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5277978905832318269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5277978905832318269'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2009/01/wishing-you-very-happy-new-year.html' title='Wishing you a Very Happy New Year'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tedTUODQRM0/SVwnqwuxTbI/AAAAAAAAAu4/wSM3MfMe76M/s72-c/new-year-2009.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-168367696774023304</id><published>2008-12-26T08:25:00.000+05:30</published><updated>2008-12-26T08:26:48.458+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Time Management'/><title type='text'>2009 Sri Lankan Holidays List</title><content type='html'>Year 2008 has almost came to an end. This is the best time to get started to welcome new year. As with last year I created a List of Sri Lankan holidays, which you can add to Outlook, Thunderbird or Google calendar.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Outlook Holiday List&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;– – – – – – – – – Start Copy – – – – – – – – –&lt;br /&gt;[Sri Lanka] 26&lt;br /&gt;Duruthu Full Moon Poya Day(BPM),2009/1/10&lt;br /&gt;Tamil Thai Pongal Day(BPM),2009/1/14&lt;br /&gt;National Day(BPM),2009/2/4&lt;br /&gt;Navam Full Moon Poya Day(BPM),2009/2/9&lt;br /&gt;Mahasivarathri Day(BP),2009/2/23&lt;br /&gt;Medin Full Moon Poya Day(BPM),2009/3/10&lt;br /&gt;Milad-Un-Nabi (Holy Prophet’s Birthday)(BPM),2009/3/10&lt;br /&gt;Bak Full Moon Poya Day(BPM),2009/4/9&lt;br /&gt;Good Friday(BP),2009/4/10&lt;br /&gt;Day Prior to Sinhala &amp;amp; Tamil New Year Day(BPM),2009/4/13&lt;br /&gt;Sinhala &amp;amp; Tamil New Year Day(BPM),2009/4/14&lt;br /&gt;May Day(BPM),2009/5/1&lt;br /&gt;Vesak Full Moon Poya Day(BPM),2009/5/8&lt;br /&gt;Day following Vesak Full Moon Poya Day(BPM),2009/5/9&lt;br /&gt;Poson Full Moon Poya Day(BPM),2009/6/7&lt;br /&gt;Esala Full Moon Poya Day(BPM),2009/7/6&lt;br /&gt;Nikini Full Moon Poya Day(BPM),2009/8/5&lt;br /&gt;Binara Full Moon Poya Day(BPM),2009/9/4&lt;br /&gt;Id-Ul-Fitr (Ramazan Festival Day)(BP),2009/9/21&lt;br /&gt;Vap Full Moon Poya Day(BPM),2009/10/3&lt;br /&gt;Deepavali Festival Day(BP),2009/10/17&lt;br /&gt;Il Full Moon Poya Day(BPM),2009/11/2&lt;br /&gt;Id-Ul-Alha (Hadji Festival Day)(BP),2009/11/28&lt;br /&gt;Unduvap Full Moon Poya Day(BPM),2009/12/1&lt;br /&gt;Christmas Day(BPM),2009/12/25&lt;br /&gt;Duruthu Full Moon Poya Day(BPM),2009/12/31&lt;br /&gt;– – – – – – End Copy – – – – – – –&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Please follow the&lt;a target="_blank" href="http://sandarenu.blogspot.com/2007/01/add-sri-lankan-holidays-to-your-outlook.html"&gt; instructions given in one of my previous posts to add holidays list to Outlook. &lt;/a&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; If you have last year’s list under Sri Lanka you will need to replace it with this year’s ones&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;&lt;br /&gt;Google Calendar&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Just click on the link to add the Holiday Calendar to your Google calendar.&lt;br /&gt;&lt;a target="_blank" href="http://www.google.com/calendar/render?cid=trbsm3c2ek1f1l3500qr4muejs@group.calendar.google.com"&gt;http://www.google.com/calendar/render?cid=trbsm3c2ek1f1l3500qr4muejs@group.calendar.google.com&lt;/a&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;Thunderbird&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;In order to add calendar to Thunderbird you have to have Lightning add-on installed. Follow the &lt;a target="_blank" href="http://bfish.xaedalus.net/?p=239"&gt;instructions given here&lt;/a&gt; if you haven't installed Lightning yet.&lt;br /&gt;&lt;br /&gt;After installation go to Calendar view. and select Calendar -&gt; New Calendar from main menu.  From the Create New Calendar window select &gt;On the Network, click &gt;Next, select &gt;Google Calendar as the format and insert the following URL into the &gt;Location field. &lt;a target="_blank" href="http://www.google.com/calendar/ical/trbsm3c2ek1f1l3500qr4muejs%40group.calendar.google.com/public/basic.ics"&gt;http://www.google.com/calendar/ical/trbsm3c2ek1f1l3500qr4muejs%40group.calendar.google.com/public/basic.ics&lt;/a&gt;&lt;br /&gt;Click &gt;Next, eventually enter your Google &gt;User Name and &gt;Password and click &gt;OK, &gt;Name your calendar, give it a &gt;Color, click &gt;Next and finally &gt;Finish to complete the procedure.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hope this will help you.....&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-168367696774023304?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/168367696774023304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=168367696774023304' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/168367696774023304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/168367696774023304'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/12/2009-sri-lankan-holidays-list.html' title='2009 Sri Lankan Holidays List'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-2280305965070014860</id><published>2008-12-12T10:44:00.004+05:30</published><updated>2008-12-12T10:58:50.968+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><title type='text'>Solving Spring Schema not found issue</title><content type='html'>Few weeks back when we were testing a Mobicents application I came across a strange error from Spring.&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;Warning parsing XML: XML InputStream(68) schema_reference.4: Failed to &lt;br/&gt;read schema document 'http://www.springframework.org/schema/beans/spring-beans-2.0.xsd',&lt;br/&gt; because 1) could not find the document; &lt;br/&gt;2) the document could not be read;&lt;br/&gt; 3) the root element of the document is not &lt;xsd:schema&gt;.&lt;br /&gt;&lt;/xsd:schema&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Application was working fine few hours before and I was wondering what could be the error. Later I found out that this error comes because I've unpluged the network cable, application worked fine when I plugged it back. It was seems to be that Spring is trying to download schemas from internet rather than using files in classpath. This was a serious issue because machines at production site do not have internet access.&lt;br /&gt;&lt;br /&gt;After few hours of searching we found out that a way to tell spring to get schemas from class path rather than downloading. Just give classpath:schema location in Spring xml context file in the opening declaration instead of giving url http://www.springframework.org/schema/beans/spring-beans-2.5.xsd.&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;&amp;lt;beans schemalocation="http://www.springframework.org/schema/beans&lt;br/&gt; classpath:org/springframework/beans/factory/xml/spring-beans-2.5.xsd"&lt;br/&gt; xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br/&gt; xmlns="http://www.springframework.org/schema/beans"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-2280305965070014860?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/2280305965070014860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=2280305965070014860' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2280305965070014860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2280305965070014860'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/12/solving-spring-schema-not-found-issue.html' title='Solving Spring Schema not found issue'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-836908123469943362</id><published>2008-11-12T21:10:00.001+05:30</published><updated>2008-11-13T07:56:16.756+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Extending Nautilus with Scripts</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Nautilus is the default file browser we get with Gnome. Today I found out about wonderful feature of it. We can very easily extend Nautilus functionalities by adding our own custom scripts.  These scripts can be any executable file like shell script, python script or even C/C++ program.  You only have copy your scripts to &lt;br /&gt;~/.gnome2/nautilus-scripts&lt;br /&gt;We can get information such as current directory path, selected files using environmental variables set by Nautilus. Full set of variables are as follows.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;NAUTILUS_SCRIPT_SELECTED_FILE_PATHS -lists the paths of the currently selected files, separated by newlines. Works only on local filesystem.&lt;/li&gt;&lt;li&gt;NAUTILUS_SCRIPT_SELECTED_URIS - contains the URIs (file://file) of the selected files, separated by newlines. Works on both local and remote filesystems.&lt;/li&gt;&lt;li&gt;NAUTILUS_SCRIPT_CURRENT_URI - contains the URI of the current directory. Works for both local and remote filesystems.&lt;/li&gt;&lt;li&gt;NAUTILUS_SCRIPT_WINDOW_GEOMETRY -provides the window location and geometry of the browser window.&lt;/li&gt;&lt;/ul&gt;Nautilus also passes list of selected files as args to your script.  So we can use them to do what ever processing we want to do. &lt;br /&gt;&lt;br /&gt;This is a simple script that will prompt all selected files in a message box.&lt;br /&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;#Author: M.A.C.Sandarenu http://sandarenu.blogspot.com&lt;br /&gt;for arg&lt;br /&gt;do&lt;br /&gt;fileList="${fileList}${arg}, "&lt;br /&gt;done&lt;br /&gt;zenity --info  --text="You have selected following file(s) ""$fileList"&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-836908123469943362?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/836908123469943362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=836908123469943362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/836908123469943362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/836908123469943362'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/11/extending-nautilus-with-scripts_2902.html' title='Extending Nautilus with Scripts'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-179062545175593697</id><published>2008-11-02T10:56:00.002+05:30</published><updated>2008-11-02T11:02:23.448+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>CrossOver Rocks.....</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I managed to grab a copy of&lt;a href="http://www.codeweavers.com/" target="_blank"&gt; CodeWeaver's&lt;/a&gt; CossOver software using their 28th October promotion campaign. For those who don't know about CodeWeaver, they are the people behind the FOSS project &lt;a href="http://www.winehq.org/" target="_blank"&gt;wine&lt;/a&gt; which enables users to run windows applicaiton on their Linux boxes. CrossOver is commercial counterpart of the wine. The gave away $70 worth CrossOver Professional version for free on 28 Oct as a pomotion.&lt;br /&gt;&lt;br /&gt;I Installed Microsoft Office 2007 on my Fedora 9 box using CrossOver and it works fine. I managed to install Word, Excel and Powepoint, but had problems with installing Visio.&lt;br /&gt;&lt;br /&gt;Unfortunately CodeWeaver's aren't going to do this kind of promotions in near future. So you'll have to use Wine if you didn't managed to grab a copy on 28th Oct.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_tedTUODQRM0/SQ05dFcmaeI/AAAAAAAAAjY/y5zZzE4DBoM/%5BUNSET%5D.png?imgmax=800" style="max-width: 800px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/_tedTUODQRM0/SQ05iqevnrI/AAAAAAAAAjc/LyXayaNSpmA/%5BUNSET%5D.png?imgmax=800" style="max-width: 800px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" src="http://lh6.ggpht.com/_tedTUODQRM0/SQ058lwCD6I/AAAAAAAAAjg/uOiD96tctvE/%5BUNSET%5D.png?imgmax=800" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-179062545175593697?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/179062545175593697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=179062545175593697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/179062545175593697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/179062545175593697'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/11/crossover-rocks.html' title='CrossOver Rocks.....'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_tedTUODQRM0/SQ05dFcmaeI/AAAAAAAAAjY/y5zZzE4DBoM/s72-c/%5BUNSET%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-3999318110890806272</id><published>2008-10-25T10:56:00.001+05:30</published><updated>2008-10-25T10:56:08.454+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>I'm Back after some time.....</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;During last few days I was unable to do any blogging simply because I was too busy with my work at hSenid. I just started my first job at hSenid 1st of October and It was really wonderful. On the first day itself I was put in to a really challenging project. I had to learn lot of new technologies such as JSLEE, SMPP, JMS, JMX, AOP and so on... &lt;br/&gt;I'd learnt lot of new things and I'll hopping to share with you all as I get some free time :)&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-3999318110890806272?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/3999318110890806272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=3999318110890806272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3999318110890806272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3999318110890806272'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/10/i-back-after-some-time.html' title='I&amp;#39;m Back after some time.....'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-3645196268065562625</id><published>2008-10-04T09:55:00.002+05:30</published><updated>2008-10-04T10:04:56.835+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>HTML Signatures for Your Favorite Webmail Services</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Today I got to know about wonderful Firefox add-on called &lt;a href="http://www.wisestamp.com/"&gt;WiseStamp&lt;/a&gt;. It allows you to add nice HTML signatures to popular webmail services like Gmail, Yahoo, Live mail and AOL mail. This was a add-on I waited for long time. Some time ago I used Greasemonkey script to add HTML signature for Gmail. Now with WiseStamp I can use common set of signatures for all my webmail accounts.&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/sandarenu/SObtPcU7gRI/AAAAAAAAAiw/QVm5V6p8KXA/%5BUNSET%5D.png" style="max-width: 800px;" /&gt;&lt;br /&gt;Give it a try, You'll love it.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-3645196268065562625?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/3645196268065562625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=3645196268065562625' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3645196268065562625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3645196268065562625'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/10/html-signatures-for-your-favorite.html' title='HTML Signatures for Your Favorite Webmail Services'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/sandarenu/SObtPcU7gRI/AAAAAAAAAiw/QVm5V6p8KXA/s72-c/%5BUNSET%5D.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-219050730320221563</id><published>2008-09-27T08:40:00.001+05:30</published><updated>2008-09-27T08:44:05.043+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>7 Years of Excellence - Faculty of Information Technology, University of Moratuwa</title><content type='html'>&lt;span style="font-family: Times New Roman;"&gt;&lt;b&gt;[Press release from FIT anniversary celebration committee]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Times New Roman;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;The Faculty of Information Technology (FIT), University of Moratuwa which was established in year 2001 is the only faculty of its kind, producing pioneers to the ever growing IT industry in Sri Lanka. With the rapid growth and expansion of the information technology, FIT provides immense service to the nation by creating highly skilled IT professionals to bridge the gap between the demand and supply of IT personnel in the industry.&lt;br /&gt;&lt;br /&gt;Despite the lack of adequate resources, both physical and human, the Faculty commenced its academic activities with a batch of 47 students in 2002. Its first home was a rented facility at Borella. The intake was increased to 100 in 2005 in response to the steadily increasing demand by the IT industry and also to provide more opportunities in this field to the talented youth of the country.&lt;br /&gt;&lt;br /&gt;Though a fledgling faculty, FIT started its first postgraduate program in IT in 2004 with the PG Diploma/M.Sc. in Information Technology. In August 2008, the Faculty launched another postgraduate program, the PG Diploma/M. Sc in Artificial Intelligence (AI). This is the first postgraduate programs of this kind in Sri Lanka. The faculty also conducts several professional development programs from time to time. The FIT will continue to develop and expand its academic programs, adapting to the ever-changing needs of the IT industry to become an entity which both the students and the industry would look up to.&lt;br /&gt;&lt;br /&gt;A landmark in the faculty's march towards progress is the completion of the first phase of a new state of the art building complex at the University of Moratuwa premises in August 2008. To celebrate this occasion and 7 years of excellence in the field of IT education, the Faculty will hold a series of events comprising of a multi religious ceremony, a symposium and a cricket tournament, followed by an exhibition of student innovations.&lt;br /&gt;&lt;br /&gt;An academic conference on the theme "Graduation, Entrepreneurship and Success", will be held on 27th September 2008 at the new faculty premises with the participation students, alumni, members of the staff and industry representatives. Lead by a distinguished panel of resource persons, this conference is intended to provide students with the opportunity to experience through role models and success stories, how they can make a success of their careers in many different ways after graduation. The objectives of this symposium can be further elaborated as:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To create a culture of entrepreneurship among the students.&lt;/li&gt;&lt;li&gt;To learn through the experience of accomplished entrepreneurs.&lt;/li&gt;&lt;li&gt;An opportunity for the students to interact with the industry leaders.&lt;/li&gt;&lt;li&gt;To create better awareness among the corporate community about the Faculty of IT.&lt;/li&gt;&lt;li&gt;To establish links with the industry to emphasize the value and recognition of the Faculty as a leading educational body.&lt;/li&gt;&lt;li&gt;To broaden the knowledge of students on new trends in the IT industry&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Among the distinguished resource persons at this event will be Mr.W.K.H Wegapitiya, CEO of Laugfs Holdings Limited, Dr. Sanjiva Weerawarana, Chairman &amp;amp; CEO of WSO2, Mr. Mohamed Azmeer, CEO of ConceptNursery, Mr. Ramesh Shanmuganathan, Group's Chief Information Officer, John Keels Holdings, Mr. Harsha Purasinghe, CEO of Microimage (Pvt) Ltd and Peter De Almeida, CEO of e-nable (Pvt) Ltd.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The event will conclude with a get-together at which all students past and present, will come together to celebrate the inauguration of the Faculty's new home. They will be joined by the industry representatives to create an enthralling atmosphere of celebration and entertainment.&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-219050730320221563?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/219050730320221563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=219050730320221563' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/219050730320221563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/219050730320221563'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/09/7-years-of-excellence-faculty-of.html' title='7 Years of Excellence - Faculty of Information Technology, University of Moratuwa'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-854482619108712688</id><published>2008-09-26T19:36:00.003+05:30</published><updated>2008-09-26T19:49:44.815+05:30</updated><title type='text'>Error on launching Tomcat from Eclipse in Fedora 9</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Last few days I was doing some self learning on Servlets and JSP.&amp;nbsp; After doing few examples using Text Editor, I wanted to see how to create dynamic website using Eclipse; my favourite IDE. I followed the instructions given in a &lt;a href="http://www.ibm.com/developerworks/opensource/library/os-eclipse-tomcat/" target="_blank"&gt;article in IBM site&lt;/a&gt;. But when I try to start the Tomcat server from Eclipse I got an strange error.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Exception in thread "main" java.lang.NoClassDefFoundError:&lt;br/&gt; org/apache/commons/logging/LogFactory&lt;/pre&gt;&lt;br /&gt;&lt;pre&gt;&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_tedTUODQRM0/SNzs99TPBHI/AAAAAAAAAiQ/UDWlyI3mkDM/s1600-h/EclipseTomcatError.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_tedTUODQRM0/SNzs99TPBHI/AAAAAAAAAiQ/FGg4lMUmibU/s400-R/EclipseTomcatError.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I didn't have a clue about this error. As usual Google save my day. I found &lt;a href="https://www.zarb.org/pipermail/jpackage-discuss/2008-May/012583.html" target="_blank"&gt;this post regarding the same error&lt;/a&gt; by Greg Johnson. &lt;br /&gt;&lt;br /&gt;In order to solve this problem you have to download the &lt;a href="http://commons.apache.org/downloads/download_logging.cgi" target="_blank"&gt;Apache commons 1.1.1 &lt;/a&gt;and copy commons-logging-api-1.1.1.jar to /usr/share/tomcat/bin folder.&amp;nbsp; After copping that jar I was able to start Tomcat from Eclipse without any issue. &lt;br /&gt;&lt;br /&gt;Thanks Greg, you save my day :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-854482619108712688?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/854482619108712688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=854482619108712688' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/854482619108712688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/854482619108712688'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/09/error-on-launching-tomcat-from-eclipse.html' title='Error on launching Tomcat from Eclipse in Fedora 9'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tedTUODQRM0/SNzs99TPBHI/AAAAAAAAAiQ/FGg4lMUmibU/s72-Rc/EclipseTomcatError.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-5976950631601661337</id><published>2008-09-18T09:21:00.001+05:30</published><updated>2008-09-18T09:21:49.151+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>End of a Beginning....</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/sandarenu/SNHQT-TODVI/AAAAAAAAAfw/P8aHTkI_mDw/s1600-h/graduate%5B5%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="graduate" src="http://lh4.ggpht.com/sandarenu/SNHQUy8X5MI/AAAAAAAAAf0/15lfGeQp6sE/graduate_thumb%5B3%5D.jpg?imgmax=800" width="240" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It seems yesterday that I first walked into the university, yet 4 and 1/2 years have passed. Exams of my final semester at university finished yesterday :)&lt;/p&gt;  &lt;p&gt;It was a wonderful 4 1/2 years at FIT. I take this moment to Thank all academic, non-academic staff and my batch mates at &lt;a href="http://www.itfac.mrt.ac.lk" target="_blank"&gt;Faculty of Information Technology, University of Moratuwa&lt;/a&gt; for guidance and support they gave me during all these years. &lt;/p&gt;  &lt;p&gt;Next step of my journey begins 1st of October as a Software Engineer at &lt;a href="http://www.hsenidmobile.com/" target="_blank"&gt;hSenid&lt;/a&gt;.... &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-5976950631601661337?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/5976950631601661337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=5976950631601661337' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5976950631601661337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5976950631601661337'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/09/end-of-beginning.html' title='End of a Beginning....'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/sandarenu/SNHQUy8X5MI/AAAAAAAAAf0/15lfGeQp6sE/s72-c/graduate_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6746694872860514870</id><published>2008-08-14T09:12:00.001+05:30</published><updated>2008-08-14T09:12:10.953+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Firefox on Fedora - No sound on Flash Videos</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;font face='sans-serif'&gt;I recently shifted to Fedora from Windows XP. In Fedora it did not give sounds when I was watching flash videos such as from YouTube in Firefox. It was a big problem for me. But after some research I found out that it is due to not installing a dependency library 'libflashsupport' with Adobe Flash plugin. Fixing this problem is very simple, just insall that library using yum.&lt;br/&gt;&lt;/font&gt;&lt;br/&gt;&lt;font face='Courier New'&gt;yum install libflashsupport&lt;br/&gt;&lt;br/&gt;&lt;font face='sans-serif'&gt;After intalling it I got the sounds. :)&lt;/font&gt;&lt;br/&gt;&lt;/font&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6746694872860514870?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6746694872860514870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6746694872860514870' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6746694872860514870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6746694872860514870'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/08/firefox-on-fedora-no-sound-on-flash.html' title='Firefox on Fedora - No sound on Flash Videos'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6113669736311901450</id><published>2008-08-01T22:34:00.004+05:30</published><updated>2008-09-30T08:47:33.961+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Reading Excel Date fields from Java</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span style="font-family: sans-serif;"&gt;Previously&lt;a href="http://sandarenu.blogspot.com/2007/11/reading-excel-files-from-java.html"&gt; I posted on how to read data from Microsoft Excel&lt;/a&gt; file using Apache POI HSSF. This is a small addition to that.&lt;br /&gt;&lt;br /&gt;If the Excel file you are to read is using 'Date' fields, then you have to be little careful about it. In HSSF these Date fields are taken as numeric fields. Anyway that is how Dates are handled in Excel; it uses an Integer to keep number of days since 1900-Jan-0. Luckily the there is a small utility provided by HSSF to covert these Execl Dates to Java Date format. Just use &lt;b&gt;&lt;span style="font-family: Courier New;"&gt;HSSFDateUtil.getJavaDate(double)&lt;/span&gt;&lt;/b&gt; method.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;//Date of Birth&lt;br /&gt;HSSFRow row = sheet.getRow(ROW_C_DOB);&lt;br /&gt;//Handle Excel Date type cells&lt;br /&gt;HSSFCell cell = row.getCell(COLUMN_DATA);&lt;br /&gt;if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; Date d = HSSFDateUtil.getJavaDate(cell.getNumericCellValue());&lt;br /&gt;&amp;nbsp; client.setBirthDay(d);&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; String tmp =&amp;nbsp;&amp;nbsp;&amp;nbsp; row.getCell(COLUMN_DATA).getRichStringCellValue().toString();&lt;br /&gt;&amp;nbsp; client.setBirthDay(Util.getDate(tmp)); &lt;br /&gt;} &lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6113669736311901450?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6113669736311901450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6113669736311901450' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6113669736311901450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6113669736311901450'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/08/reading-excel-date-fields-from-java.html' title='Reading Excel Date fields from Java'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6720960052502524770</id><published>2008-07-27T18:27:00.001+05:30</published><updated>2008-07-27T18:27:16.451+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenCV'/><title type='text'>Getting Started with OpenCV</title><content type='html'>&lt;p&gt;Finally our final year project is finished. As I've &lt;a href="http://sandarenu.blogspot.com/2008/06/opencv-computer-vision-library.html"&gt;promised in my previous post&lt;/a&gt; I'm going to do few posts on OpenCV. In this post I'm going to tell you how to configure MS Visual Studio 2005 to work with OpenCV library.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 1: Installiny OpenCV&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;First you have to &lt;a href="http://sourceforge.net/projects/opencvlibrary/" target="_blank"&gt;download the OpenCV library from Sourceforge&lt;/a&gt; and run the installer. It will install OpenCV library on your computer. By default it will be installed to &amp;quot;C:\Program Files\OpenCV&amp;quot;. Installer will add &amp;quot;C:\Program Files\OpenCV\bin&amp;quot; to system's PATH variable. But sometimes this do not happen properly. In such cases you'll have to add OpenCV bin directory manually to the system's PATH.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/sandarenu/SIxwdJ4knLI/AAAAAAAAAes/qK6nFn7fhbQ/s1600-h/OpenCV%20installer%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="238" alt="OpenCV installer" src="http://lh6.ggpht.com/sandarenu/SIxwemNnB_I/AAAAAAAAAew/h4b4dKSnt_Y/OpenCV%20installer_thumb%5B1%5D.jpg?imgmax=800" width="304" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Download OpenCV: &lt;a title="http://sourceforge.net/projects/opencvlibrary/" href="http://sourceforge.net/projects/opencvlibrary/"&gt;http://sourceforge.net/projects/opencvlibrary/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 2: Configuring VS 2005&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In order to use OpenCv from VS you have to add libraries and header files to projects path. Create Win32 Console Application in VS 2005. Then right click the project form the Solution Explorer and select Properties.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/sandarenu/SIxwfytcwXI/AAAAAAAAAe0/uSzF9c41Bow/s1600-h/project%20properties%5B2%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="project properties" src="http://lh6.ggpht.com/sandarenu/SIxwgxVGKwI/AAAAAAAAAe4/iPTqnRkTWo4/project%20properties_thumb.jpg?imgmax=800" width="123" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Under &amp;quot;Configuration Properties -&amp;gt; C/C++ -&amp;gt; General&amp;quot; put following folders to &amp;quot;Additional Include Directories&amp;quot;.&lt;/p&gt;  &lt;p&gt;C:\Program Files\OpenCV\cxcore\include    &lt;br /&gt;C:\Program Files\OpenCV\cv\include\     &lt;br /&gt;C:\Program Files\OpenCV\cvaux\include     &lt;br /&gt;C:\Program Files\OpenCV\otherlibs\highgui &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/sandarenu/SIxwjEsRpyI/AAAAAAAAAe8/XKYyl6W3N1Q/s1600-h/set%20include%20directories%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="213" alt="set include directories" src="http://lh3.ggpht.com/sandarenu/SIxwkxfv8OI/AAAAAAAAAfA/b2rVtho-0lY/set%20include%20directories_thumb%5B1%5D.jpg?imgmax=800" width="304" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then under &amp;quot;Configuration Properties -&amp;gt; Linker -&amp;gt; Input&amp;quot; put following folders to &amp;quot;Additional Dependencies&amp;quot;. Add them line by line with double quotes.&lt;/p&gt;  &lt;p&gt;&amp;quot;C:\Program Files\OpenCV\lib\cv.lib&amp;quot;   &lt;br /&gt;&amp;quot;C:\Program Files\OpenCV\lib\cvaux.lib&amp;quot;    &lt;br /&gt;&amp;quot;C:\Program Files\OpenCV\lib\cxcore.lib&amp;quot;    &lt;br /&gt;&amp;quot;C:\Program Files\OpenCV\lib\highgui.lib&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/sandarenu/SIxwm2eOWnI/AAAAAAAAAfE/q48Q3IrkwLI/s1600-h/set%20linker%20dependancies%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="213" alt="set linker dependancies" src="http://lh3.ggpht.com/sandarenu/SIxwoKHarhI/AAAAAAAAAfI/sMKTFU2iUZM/set%20linker%20dependancies_thumb%5B1%5D.jpg?imgmax=800" width="304" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Sometimes it is possible that you don't have above lib files in &amp;quot;C:\Program Files\OpenCV\lib&amp;quot; folder. In such situations you just have to compile the OpenCV solution.&lt;/p&gt;  &lt;p&gt;It is also possible for you to get complains regarding corex100.dll (it can be corexXXX.dll) when running your OpenCV application. If you get such error build the OpenCV solution and check whether the &amp;quot;C:\Program Files\OpenCV\bin&amp;quot; folder is in your system PATH, if not you either have to add that to the path or copy all the DLLs in bin folder to C:\WINDOWS\SYSTEM32 folder.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/sandarenu/SIxwph6YMBI/AAAAAAAAAfM/2wcTaDyD0Co/s1600-h/opencv%20solution%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="96" alt="opencv solution" src="http://lh4.ggpht.com/sandarenu/SIxwqi9xQ0I/AAAAAAAAAfQ/l32aWaQdHpk/opencv%20solution_thumb%5B1%5D.jpg?imgmax=800" width="304" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So that basically what you have to do to configure VS2005. You can check whether you have configured the VS correctly by compiling and running some sample applications in the &amp;quot;C:\Program Files\OpenCV\samples\c&amp;quot; folder. So have fun with OpenCV. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6720960052502524770?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6720960052502524770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6720960052502524770' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6720960052502524770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6720960052502524770'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/07/getting-started-with-opencv.html' title='Getting Started with OpenCV'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/sandarenu/SIxwemNnB_I/AAAAAAAAAew/h4b4dKSnt_Y/s72-c/OpenCV%20installer_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-5714848428772319321</id><published>2008-07-17T07:38:00.001+05:30</published><updated>2008-07-17T07:38:46.151+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Back to Firefox 2</title><content type='html'>&lt;p&gt;It's being nearly a month or so I've started using Firefox 3 browser. Yes it has lot of cool new features such as new address bar. But I'm having a big problem with new FF3. It is giving me &amp;quot;Network Timeout Error&amp;quot; all the time. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/sandarenu/SH6pl7DSwPI/AAAAAAAAAek/FN3Oy8LokPs/s1600-h/FFtimeout%5B4%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="366" alt="FFtimeout" src="http://lh3.ggpht.com/sandarenu/SH6pp-lhQxI/AAAAAAAAAeo/1WlNDGfl22g/FFtimeout_thumb%5B2%5D.png?imgmax=800" width="487" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I have to do multiple refreshes to view the page, and if the page is having lost of images than those are also not loaded.&amp;#160; But when I checked the same site with IE, it loads the page correctly and without any issues. &lt;/p&gt;  &lt;p&gt;When I searched the Google for this issue I found that FF3 is having some issue related to this Timeout problem. &lt;a title="http://wiki.mozilla.org/Firefox3_Timeout_Problem" href="http://wiki.mozilla.org/Firefox3_Timeout_Problem"&gt;http://wiki.mozilla.org/Firefox3_Timeout_Problem&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So until a fix is available I'm going back to good old FF2. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-5714848428772319321?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/5714848428772319321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=5714848428772319321' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5714848428772319321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5714848428772319321'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/07/back-to-firefox-2.html' title='Back to Firefox 2'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/sandarenu/SH6pp-lhQxI/AAAAAAAAAeo/1WlNDGfl22g/s72-c/FFtimeout_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-63475330615886767</id><published>2008-07-09T16:41:00.001+05:30</published><updated>2008-07-09T16:41:31.790+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Gmail Provides Remote Sign Out and Tracking of Account Activities</title><content type='html'>&lt;p&gt;If you are using Gmail this may the security feature that you were looking for ages... Now Google let you monitor your account activities and Sign out remotely. This is very good news for people like me because I access gmail from multiple computers, including from the computers at university labs.&amp;#160; Read more about this from &lt;/p&gt; &lt;a href="http://gmailblog.blogspot.com/2008/07/remote-sign-out-and-info-to-help-you.html" target="_blank"&gt;Gmail Blog &amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/sandarenu/SHSc0fWCTuI/AAAAAAAAAeU/9vhHEYwb8LY/s1600-h/gmail_Remote_Signout1%5B9%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="149" alt="gmail_Remote_Signout1" src="http://lh5.ggpht.com/sandarenu/SHSc1SbnRYI/AAAAAAAAAeY/u_t0hgJr4jA/gmail_Remote_Signout1_thumb%5B5%5D.png?imgmax=800" width="408" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;a href="http://lh6.ggpht.com/sandarenu/SHSc2lxPFjI/AAAAAAAAAec/Ys0PslhQAI4/s1600-h/gmail_Remote_Signout2%5B6%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="292" alt="gmail_Remote_Signout2" src="http://lh3.ggpht.com/sandarenu/SHSc4ojkH8I/AAAAAAAAAeg/bcpXKDiVZEI/gmail_Remote_Signout2_thumb%5B4%5D.png?imgmax=800" width="416" border="0" /&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-63475330615886767?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/63475330615886767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=63475330615886767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/63475330615886767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/63475330615886767'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/07/gmail-provides-remote-sign-out-and.html' title='Gmail Provides Remote Sign Out and Tracking of Account Activities'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/sandarenu/SHSc1SbnRYI/AAAAAAAAAeY/u_t0hgJr4jA/s72-c/gmail_Remote_Signout1_thumb%5B5%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-7162593270126473792</id><published>2008-07-06T19:48:00.001+05:30</published><updated>2008-07-06T19:48:07.753+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><title type='text'>All-in-One Media Converter</title><content type='html'>&lt;p&gt;&amp;#160;&lt;a href="http://formatoz.com/index.html" target="_blank"&gt;FormatFactory&lt;/a&gt; is a free application that can convert video, audio and images in to different file formats. It also supports batch file conversion as well. As reported by &lt;a href="http://www.downloadsquad.com/2008/07/05/formatfactory-free-windows-media-conversion/" target="_blank"&gt;DownloadSquad&lt;/a&gt; is seems to be really good application. &lt;a href="http://lh3.ggpht.com/sandarenu/SHDUD-gv0EI/AAAAAAAAAeM/XXjGJ55w2yA/s1600-h/image%5B13%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="226" alt="FormatFactory" src="http://lh4.ggpht.com/sandarenu/SHDUHp4BDxI/AAAAAAAAAeQ/74bun1y-uJw/image_thumb%5B11%5D.png?imgmax=800" width="484" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-7162593270126473792?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/7162593270126473792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=7162593270126473792' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7162593270126473792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7162593270126473792'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/07/all-in-one-media-converter.html' title='All-in-One Media Converter'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/sandarenu/SHDUHp4BDxI/AAAAAAAAAeQ/74bun1y-uJw/s72-c/image_thumb%5B11%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-2511214631722140887</id><published>2008-06-23T20:02:00.001+05:30</published><updated>2008-06-23T20:02:06.804+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenCV'/><title type='text'>OpenCV - Computer Vision Library</title><content type='html'>&lt;p&gt;&lt;a href="http://sourceforge.net/projects/opencvlibrary/" target="_blank"&gt;OpenCV&lt;/a&gt; is an open source computer vision library developed by Intel. This library is written in C/C++ and it has lot of very powerful image processing features. &lt;/p&gt;  &lt;p&gt;I got to know about this library few months back when I was doing researches for our final year project. Our project &amp;quot;Sign2Voice&amp;quot; interprets signs of sign language to voice in real time using a video captured using simple webcam. &lt;/p&gt;  &lt;p&gt;OpenCV has rich image processing API that that provides wide range of functionally ranging from simple image processing tasks to machine learning algorithms.&amp;#160; In our project we uses OpenCV library to detect and identify sign language hand gestures. We uses Haar-Cascade classifier provided with OpenCV to detect hand. After training the classifier with set of positive and negative images we can use the classifier to detect objects. OpenCV has a good trained classifier for &lt;a href="http://opencvlibrary.sourceforge.net/FaceDetection" target="_blank"&gt;face detection&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Training of Haar-classifier is not an easy task. This became especially difficult because there is nor proper documentation for this process. Their are few web sites that give instructions on how to train, but they are not that comprehensive. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://note.sonots.com/?cmd=htmlinsert&amp;amp;page=haartraining" href="http://note.sonots.com/?cmd=htmlinsert&amp;amp;page=haartraining"&gt;http://note.sonots.com/?cmd=htmlinsert&amp;amp;page=haartraining&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://note.sonots.com/?SciSoftware%2Fhaartraining" href="http://note.sonots.com/?SciSoftware%2Fhaartraining"&gt;http://note.sonots.com/?SciSoftware%2Fhaartraining&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We had to do lot of experiments and learn through trail and error to find out how to do the training properly. After lot of failures we managed to achieve good results in had detection.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/sandarenu/SF-zvX-ABiI/AAAAAAAAAd8/okQPBNQEiTs/s1600-h/hand_detect%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="205" alt="hand_detect" src="http://lh6.ggpht.com/sandarenu/SF-zy787cUI/AAAAAAAAAeA/PdknSRAbkiM/hand_detect_thumb.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://lh6.ggpht.com/sandarenu/SF-z2EKiyBI/AAAAAAAAAeE/g_w3aT6Hugo/s1600-h/hand_detect1%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="205" alt="hand_detect1" src="http://lh4.ggpht.com/sandarenu/SF-z5LVkXqI/AAAAAAAAAeI/eh1qRKamKsg/hand_detect1_thumb.png?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I'm planning to do some posts regarding how to train haar-classifier share the knowledge I gained with you in future. So keep you figures crossed. :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-2511214631722140887?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/2511214631722140887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=2511214631722140887' title='24 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2511214631722140887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2511214631722140887'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/06/opencv-computer-vision-library.html' title='OpenCV - Computer Vision Library'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/sandarenu/SF-zy787cUI/AAAAAAAAAeA/PdknSRAbkiM/s72-c/hand_detect_thumb.png?imgmax=800' height='72' width='72'/><thr:total>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-5342072776153916109</id><published>2008-06-20T17:42:00.001+05:30</published><updated>2008-06-20T17:42:46.063+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><title type='text'>Artificial Neural Networks for Solving Complex Problems</title><content type='html'>&lt;p&gt;I just completed my independent study review paper. As the title suggests, it was about &amp;quot;Using Artificial Neural Networks to Solve Complex Problems&amp;quot;. If you haven't heard about neural networks before, they are a new approach for solve problem inspired by inner workings of human brain. In traditional computing we have to give step by step instructions on how to solve specific problem to the computer. But in ANN that is not necessary, they can learn how to solve a particular problem from samples.&lt;/p&gt;  &lt;p&gt;ANN technology is not a new thing, they exist since 1940s. When I first started this study, I thought that ANNs are only used for pattern recognition/classification and predicting some factors. But when I go more deeper in to the research, I was amazed by the diversity of fields where ANN is used. Most of the applications I came across during my review were successful in achieving their goals, but in field of cryptography use of ANN was not as successful as other fields. &lt;/p&gt;  &lt;p&gt;Even though ANN technology is very successful in solving complex problem they have their own set of limitations. Major limitation is it's lack of ability to explain how they generate output. Another main limitation is not having formal method to find optimal network architecture for solving particular problem. But even with these limitations, future of ANN looks promising. There is lot of research going on in dedicated ANN hardware and hybrid ANNS.&amp;#160; &lt;/p&gt;  &lt;p&gt;You can &lt;a href="http://sandarenu.googlepages.com/UsingANNsforSolvingComplexProblems.pdf" target="_blank"&gt;download my complete review paper here&lt;/a&gt;. Hope this will help you to learn more about ANN and it's applications.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-5342072776153916109?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/5342072776153916109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=5342072776153916109' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5342072776153916109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5342072776153916109'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/06/artificial-neural-networks-for-solving.html' title='Artificial Neural Networks for Solving Complex Problems'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-7411226430153955057</id><published>2008-06-05T08:51:00.002+05:30</published><updated>2008-06-05T08:53:00.375+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><title type='text'>A Picture is Worth More Than Thousand Words</title><content type='html'>&lt;p&gt;This picture tells the whole story....&lt;img style="border: 0px none ;" alt="ATT1135779" src="http://lh4.ggpht.com/sandarenu/SEdbpEg4jkI/AAAAAAAAAcQ/tvLdpa_wvb8/ATT1135779_thumb%5B3%5D.jpg?imgmax=800" border="0" height="282" width="529" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-7411226430153955057?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/7411226430153955057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=7411226430153955057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7411226430153955057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7411226430153955057'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/06/picture-is-worth-more-than-thousand.html' title='A Picture is Worth More Than Thousand Words'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/sandarenu/SEdbpEg4jkI/AAAAAAAAAcQ/tvLdpa_wvb8/s72-c/ATT1135779_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-8937512968831208365</id><published>2008-05-25T09:25:00.001+05:30</published><updated>2008-05-25T09:25:46.900+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Time Management'/><title type='text'>Being Punctual....</title><content type='html'>&lt;p&gt;Well, what do you think about this....being punctual? &lt;/p&gt;  &lt;p&gt;I&amp;#8217;m not sure about you, but I hate people coming late and not doing things on time. Especially in here most of the people don&amp;#8217;t take this seriously, they never come on time. As an undergraduate I have seen lot of my batch mates coming to lectures, group meetings late. They are the most selfish people; they don&amp;#8217;t think that they are wasting time of others. As professionals I think we should learn about how to do time management and being punctual. &lt;/p&gt;  &lt;p&gt;I found these two articles at &lt;a href="http://www.lifehack.org" target="_blank"&gt;lifehack&lt;/a&gt; about the &lt;a href="http://www.lifehack.org/articles/productivity/punctuality-counts.html" target="_blank"&gt;importance of being punctual&lt;/a&gt; and most importantly &lt;a href="http://www.lifehack.org/articles/productivity/how-to-be-on-time-every-time.html" target="_blank"&gt;how to do that&lt;/a&gt;. Hope this will encourage you to be punctual...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-8937512968831208365?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/8937512968831208365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=8937512968831208365' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8937512968831208365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8937512968831208365'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/05/being-punctual.html' title='Being Punctual....'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-2882582490947797605</id><published>2008-05-20T07:45:00.001+05:30</published><updated>2008-05-20T07:45:05.719+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><title type='text'>සාමයේ පහන් දැල්වෙන, සුභ වෙසක් මංගල්‍යයක් වේවා - Have a Peaceful Vesak</title><content type='html'>&lt;p&gt;&lt;a href="http://lh5.ggpht.com/sandarenu/SDI0HS215bI/AAAAAAAAAZU/z8epKyXo0Ig/s1600-h/vesak-card-2%5B5%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="380" alt="vesak-card-2" src="http://lh3.ggpht.com/sandarenu/SDI0Jy215cI/AAAAAAAAAZc/FlV5R0Q4bps/vesak-card-2_thumb%5B3%5D.jpg?imgmax=800" width="506" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-2882582490947797605?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/2882582490947797605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=2882582490947797605' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2882582490947797605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2882582490947797605'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/05/have-peaceful-vesak.html' title='සාමයේ පහන් දැල්වෙන, සුභ වෙසක් මංගල්‍යයක් වේවා - Have a Peaceful Vesak'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/sandarenu/SDI0Jy215cI/AAAAAAAAAZc/FlV5R0Q4bps/s72-c/vesak-card-2_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-7055426994877353215</id><published>2008-05-14T08:32:00.001+05:30</published><updated>2008-05-14T08:35:35.257+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>University of Moratuwa is the 1st in Top 10 Universities for Google Summer of Code 2008</title><content type='html'>&lt;p&gt;Few weeks back I posted about that Sri Lanka being among the top ten counties in Google Summer of Codes 2008. But there is more good news. This time among top 10 universities. I'm very proud to see that &lt;strong&gt;University of Moratuwa(UOM)&lt;/strong&gt; is the 1st among top 10 universities. This is a BIG BIG achievement for us. &lt;/p&gt;  &lt;p&gt;Congratulations to all my friend at UOM.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/sandarenu/SCpWPS215XI/AAAAAAAAAY0/naQKGFifV5U/s1600-h/image%5B9%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="261" alt="image" src="http://lh6.ggpht.com/sandarenu/SCpWRi215YI/AAAAAAAAAY8/o24c9s8xFko/image_thumb%5B5%5D.png?imgmax=800" width="464" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/sandarenu/SCpWUi215ZI/AAAAAAAAAZE/vVPDoTKPuIA/s1600-h/image%5B10%5D.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="262" alt="image" src="http://lh6.ggpht.com/sandarenu/SCpWWi215aI/AAAAAAAAAZM/NJ9qa5oP_ec/image_thumb%5B6%5D.png?imgmax=800" width="464" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;a href="http://google-opensource.blogspot.com/2008/05/this-weeks-top-10s-universities-for.html" target="_blank"&gt;Read more about this....&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-7055426994877353215?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/7055426994877353215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=7055426994877353215' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7055426994877353215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7055426994877353215'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/05/university-of-moratuwa-is-1st-in-top-10.html' title='University of Moratuwa is the 1st in Top 10 Universities for Google Summer of Code 2008'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/sandarenu/SCpWRi215YI/AAAAAAAAAY8/o24c9s8xFko/s72-c/image_thumb%5B5%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-4865265662329670102</id><published>2008-04-30T18:33:00.001+05:30</published><updated>2008-04-30T18:33:43.456+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Sri Lanka among Top 10 for Google Summer of Code 2008</title><content type='html'>&lt;p&gt; Sri Lankan academic community is making its name more and more visible in the global arena. I saw this in the &lt;a href="http://google-opensource.blogspot.com/" target="_blank"&gt;Google Open Source Blog&lt;/a&gt; which list out the top 10 countries at Google Summer of Codes 2008. It is very happy to see that Sri Lanka is among the top in both applicants and accepted project vise.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="296" alt="image" src="http://lh4.ggpht.com/sandarenu/SBhuJe0aPAI/AAAAAAAAAX8/_I7N0rYzbWw/image%5B17%5D.png?imgmax=800" width="436" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="310" alt="image" src="http://lh5.ggpht.com/sandarenu/SBhuLu0aPBI/AAAAAAAAAYE/1b5-L4_D3ps/image%5B16%5D.png?imgmax=800" width="436" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;See &lt;a href="http://google-opensource.blogspot.com/2008/04/two-top-10s-for-google-summer-of-code.html" target="_blank"&gt;the full blog post at Google Open Source Blog...&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-4865265662329670102?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/4865265662329670102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=4865265662329670102' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4865265662329670102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4865265662329670102'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/04/sri-lanka-among-top-10-for-google.html' title='Sri Lanka among Top 10 for Google Summer of Code 2008'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/sandarenu/SBhuJe0aPAI/AAAAAAAAAX8/_I7N0rYzbWw/s72-c/image%5B17%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-4285746137717125222</id><published>2008-04-23T09:04:00.001+05:30</published><updated>2008-04-23T09:04:49.123+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Imagine Cup is back to UOM</title><content type='html'>&lt;p&gt;Yesterday we had the final round of the Software Design category of the Imagine Cup Sri Lanka competition. There were six teams selected for the finals. Out of that six, three teams were from University of Moratuwa, two from UCSC and other one from SLIIT. &lt;/p&gt;  &lt;p&gt;This years theme was &amp;quot;Imagine a world where technology enables sustainable environment&amp;quot;, so all of the projects were about how we can save our planet Earth.&lt;/p&gt;  &lt;p&gt;For the fourth convective time undergraduates from University of Moratuwa managed to win the trophy. This time it was a joint effort by both Faculty of Information Technology and Engineering. Team &amp;quot;Sasrutha&amp;quot; presenting the project &amp;quot;Haritha Prayathna&amp;quot; won the 1st place.&amp;#160; They will fly to France on July to participate for the global finals.&lt;/p&gt;  &lt;p&gt;Like last time this year also 2nd place was won by team &amp;quot;Gagana&amp;quot; from SLIIT and 3rd place was won by team &amp;quot;Will Power&amp;quot; from University of Moratuwa, Faculty of Engineering. &lt;/p&gt;  &lt;h4 align="center"&gt;&lt;font color="#008000"&gt;Congratulations to the winners.&lt;/font&gt;&lt;/h4&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-4285746137717125222?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/4285746137717125222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=4285746137717125222' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4285746137717125222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4285746137717125222'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/04/imagine-cup-is-back-to-uom.html' title='Imagine Cup is back to UOM'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-8414645085920523568</id><published>2008-04-14T07:46:00.001+05:30</published><updated>2008-04-14T07:46:50.088+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Wish You All a Very Happy Sinhala and Tamil New Year</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="6"&gt;සුභ අලුත් අවුරැද්දක් &amp;#8205;&amp;#8205;&amp;#8205;ෙව්වා&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="6"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/sandarenu/SAK-h1QPHyI/AAAAAAAAAXU/-Ekp_WmfwJM/s1600-h/Happy%20New%20Year%20-%20Suba%20Aluth%20Avruddak%20Vewa%5B6%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="Happy New Year - Suba Aluth Avruddak Vewa" src="http://lh6.ggpht.com/sandarenu/SAK-kFQPHzI/AAAAAAAAAXc/YHtjTkBqStA/Happy%20New%20Year%20-%20Suba%20Aluth%20Avruddak%20Vewa_thumb%5B4%5D.jpg?imgmax=800" width="369" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-8414645085920523568?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/8414645085920523568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=8414645085920523568' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8414645085920523568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8414645085920523568'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/04/wish-you-all-very-happy-sinhala-and.html' title='Wish You All a Very Happy Sinhala and Tamil New Year'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/sandarenu/SAK-kFQPHzI/AAAAAAAAAXc/YHtjTkBqStA/s72-c/Happy%20New%20Year%20-%20Suba%20Aluth%20Avruddak%20Vewa_thumb%5B4%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6672073782461347978</id><published>2008-04-09T07:29:00.001+05:30</published><updated>2008-04-09T07:30:03.747+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Imagine Cup 2008 Sri Lanka Finals</title><content type='html'>&lt;p&gt;&lt;a href="http://www.imaginecup.lk/event_getinvite.aspx" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="258" alt="Get invited for Imagine Cup 2008 Sri Lanka finals" src="http://lh5.google.com/sandarenu/R_wi7pYOReI/AAAAAAAAAW0/jmooCtf1IxA/getinvite%5B5%5D.png" width="503" border="0" /&gt;&lt;/a&gt; It is your chance to &lt;a href="http://www.imaginecup.lk/event_getinvite.aspx" target="_blank"&gt;get an invitation to participate for the Sri Lanka's premier IT event&lt;/a&gt;. Hurry up. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6672073782461347978?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6672073782461347978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6672073782461347978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6672073782461347978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6672073782461347978'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/04/imagine-cup-2008-sri-lanka-finals.html' title='Imagine Cup 2008 Sri Lanka Finals'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-328597921143688994</id><published>2008-04-04T16:46:00.001+05:30</published><updated>2008-04-04T16:47:48.867+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>MySQL taking long time to connect</title><content type='html'>&lt;p&gt;Today I experienced strange issue with MySQL server which I'm using to developing and testing applications. Today it took unbelievably long time to connect. When I try to connect to the server using, do not connect and after long time it gave an irrelevant error.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.google.com/sandarenu/R_YOBZYORcI/AAAAAAAAAWk/yVUdSBJoJk8/mysql1%5B8%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="245" alt="mysql error message" src="http://lh3.google.com/sandarenu/R_YOFpYORdI/AAAAAAAAAWs/k9And-DbgGk/mysql1_thumb%5B4%5D.png" width="481" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; I searched the net to find what could be the issue, and found &lt;a href="http://bugs.mysql.com/bug.php?id=28805" target="_blank"&gt;this&lt;/a&gt; which is somewhat similar to my issue. But I couldn't fix the issue :(. Finally I uninstall MySQL and reinstall it. Haa... it works properly :D. &lt;/p&gt;  &lt;p&gt;Ok, reinstalling may not be the best way to it, their may be some work around for this issue. If you know something about this issue please be kind enough to share it with me. :))&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-328597921143688994?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/328597921143688994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=328597921143688994' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/328597921143688994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/328597921143688994'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/04/mysql-taking-long-time-to-connect.html' title='MySQL taking long time to connect'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6738202584161050027</id><published>2008-04-03T16:48:00.001+05:30</published><updated>2008-04-03T16:48:46.605+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>After Long Time...</title><content type='html'>&lt;p&gt;It's being a while since my last post. It was mainly due to I'm being busy with my studies for the end semester exams. Today was the final day :D. Now I'm free again till the final semester starts at the end of April and hope to do more blogging :)).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6738202584161050027?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6738202584161050027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6738202584161050027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6738202584161050027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6738202584161050027'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/04/after-long-time.html' title='After Long Time...'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-851546529298436425</id><published>2008-03-07T18:40:00.001+05:30</published><updated>2008-03-07T18:40:28.343+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Microsoft Excel as 3D Game Engine??</title><content type='html'>&lt;p&gt;Today I came across &lt;a href="http://www.gamasutra.com/view/feature/3563/microsoft_excel_revolutionary_3d_.php" target="_blank"&gt;this wonderful article&lt;/a&gt; which shows how Microsoft Excel can be used to render 3D graphics. Sounds amazing isn't it..... &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.google.com/sandarenu/R9E-sle6kaI/AAAAAAAAAV8/uG96ASd30Uc/Excel3D%5B3%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="319" alt="3D grapgics rendering in MS Excel" src="http://lh5.google.com/sandarenu/R9E-wVe6kbI/AAAAAAAAAWE/JD63jZVnR4w/Excel3D_thumb%5B1%5D" width="319" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-851546529298436425?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/851546529298436425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=851546529298436425' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/851546529298436425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/851546529298436425'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/03/microsoft-excel-as-3d-game-engine.html' title='Microsoft Excel as 3D Game Engine??'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-4669478574778654741</id><published>2008-02-25T20:28:00.001+05:30</published><updated>2008-02-25T20:28:27.574+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>TreeTable in Java using SwingX</title><content type='html'>&lt;p&gt;TreeTable is a combination of Tree and Table. It can be very nice component when you want to display tabular data in a hierarchical manner. Last week when I was looking for a component that can be used to implement TreeTable, I came across JXTreeTable. It is a component of SwingX package by &lt;a href="https://swingx.dev.java.net/" target="_blank"&gt;SwingLabs.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.google.com/sandarenu/R8LXiSk181I/AAAAAAAAAVs/qlkTqHl93cU/TreeTable%5B3%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="344" alt="TreeTable" src="http://lh5.google.com/sandarenu/R8LXkSk182I/AAAAAAAAAV0/NESiFm1sEnM/TreeTable_thumb%5B1%5D" width="344" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Using JXTreeTable we can create TreeTable very easily. Only difficult part is creating the DataModel to match with our requirement. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://sandarenu.googlepages.com/TreeTable_src.rar" target="_blank"&gt;This is the sample application&lt;/a&gt;, I did for my HCI assignment with contains code for how to use&amp;#160; JXTreeTable. You can &lt;a href="http://swinglabs.org/downloads.jsp" target="_blank"&gt;download SwingX here.&lt;/a&gt; Hope this will be helpful for you. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-4669478574778654741?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/4669478574778654741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=4669478574778654741' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4669478574778654741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4669478574778654741'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/02/treetable-in-java-using-swingx.html' title='TreeTable in Java using SwingX'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-263159005765754124</id><published>2008-02-09T07:52:00.001+05:30</published><updated>2008-02-09T07:52:17.614+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Maximum RAM supported in Windows XP</title><content type='html'>&lt;p&gt;Recently I assembled a new computer with 4GB RAM. My motherboard supports up to 8GB RAM and &lt;a href="http://www.microsoft.com/whdc/system/platform/server/PAE/PAEmem.mspx" target="_blank"&gt;Widows XP supports 4GB RAM&lt;/a&gt; so no problem.....&lt;/p&gt;  &lt;p&gt;But when I open the System Properties, it shows only 3.23GB of RAM. Where did the rest go? OK, I'm using onboard VGA with 256MB memory, so part of the RAM will be allocated to that and will not be shown in System Properties. But even with that there is considerable amount of RAM is missing.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.google.com/sandarenu/R60OUsgHDWI/AAAAAAAAAVc/JLtL_wjo53Q/ram%5B2%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="114" alt="4GB RAM not showing in System Properties." src="http://lh5.google.com/sandarenu/R60OWMgHDXI/AAAAAAAAAVk/XuQPj2A42oc/ram_thumb" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I wanted to know why it is. So I did an Google search and &lt;a href="http://members.cox.net/slatteryt/RAM.html" target="_blank"&gt;found out this&lt;/a&gt;. Reason is XP uses its 32bit address space not only to address memory but also to address some other components like System ROM , APIC(s),Integrated PCI devices, such as network connectors and SCSI controllers, PCI cards , Graphics card, etc... Because of this some part of the ram may not be accessible by the operating system since it ran out of address space. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-263159005765754124?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/263159005765754124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=263159005765754124' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/263159005765754124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/263159005765754124'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/02/maximum-ram-supported-in-windows-xp.html' title='Maximum RAM supported in Windows XP'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-5149364486645863196</id><published>2008-02-03T11:24:00.001+05:30</published><updated>2008-02-03T11:24:56.751+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Using Bookmarks in Eclipse</title><content type='html'>&lt;p&gt;When we are writing programs it is important to keep track of important locations in the code. Using Bookmarks are the easiest way to do it. But in Eclipse that feature is some what hidden. By default there is no shortcut for that as well. &lt;/p&gt;  &lt;p&gt;To add a Bookmark chose the code fragment you want to bookmark and from &lt;strong&gt;Edit&lt;/strong&gt; menu select &lt;strong&gt;Add Bookmark&lt;/strong&gt;. Once the bookmark is added there will be a small blue rectangle in the left hand side of the code window and a green rectangle in right had side of the code window. To view all the bookmarks that you added you have to bring in the Bookmarks view. Select Window &amp;gt; Show View &amp;gt; Other&amp;#8230; from the main menu. Type &amp;quot;bookmark&amp;quot; in the filter box of the Show View Dialog box and select Bookmarks view.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="Eclipse Show Views" src="http://lh5.google.com/sandarenu/R6VXJMgHDTI/AAAAAAAAAVE/Pjr_8mPArNo/view_thumb" width="169" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh3.google.com/sandarenu/R6VXKsgHDUI/AAAAAAAAAVM/mA-_PRFINfI/bookmark%5B5%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="127" alt="Eclipse Bookmarks Vie" src="http://lh3.google.com/sandarenu/R6VXLsgHDVI/AAAAAAAAAVU/bSMZijN505I/bookmark_thumb%5B3%5D" width="407" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To make the process of adding bookmarks easy you can create a shortcut key combination for it. To do that choose Window &amp;gt; Preferences from the main menu, which brings up the Preferences dialog. Then type in &amp;#8220;key&amp;#8221; in the filter box, which takes you to General&amp;gt;Keys. Then selects the &lt;strong&gt;Modify tab&lt;/strong&gt;. Select &amp;#8220;Edit&amp;#8221; from the Category drop-down. Then choose &amp;#8220;Add Bookmark&amp;#8221; from the Name drop-down. Then click in the Key Sequence &amp;gt; Name text box. Then hold down the keys you want to use for your keyboard shortcut. I selected Alt+B for this. You can selects any unassigned key combination for this. Finally click &lt;strong&gt;Add&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;Now you can use this shortcut to add bookmarks very easily. Cool isn't it?..............&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-5149364486645863196?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/5149364486645863196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=5149364486645863196' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5149364486645863196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5149364486645863196'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/02/using-bookmarks-in-eclipse.html' title='Using Bookmarks in Eclipse'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-2420912272280745897</id><published>2008-01-24T09:28:00.001+05:30</published><updated>2008-01-24T09:28:53.802+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><title type='text'>Food for your thoughts....</title><content type='html'>&lt;p&gt;&lt;span style="display: block; text-align: center"&gt;&lt;embed src="http://www.youtube.com/v/p86BPM1GV8M&amp;amp;rel=0" width="425" height="350" type="application/x-shockwave-flash" wmode="transparent" /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-2420912272280745897?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/2420912272280745897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=2420912272280745897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2420912272280745897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2420912272280745897'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/01/food-for-your-thoughts.html' title='Food for your thoughts....'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-8410162496024219062</id><published>2008-01-22T09:54:00.001+05:30</published><updated>2008-01-22T09:54:03.596+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><title type='text'>RMS and Philosophy of Free Software</title><content type='html'>&lt;p&gt;&lt;a href="http://lh5.google.com/sandarenu/R5Vv3bkipeI/AAAAAAAAAUs/0_WFe0fxw-I/rms%5B3%5D"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="244" alt="rms" src="http://lh6.google.com/sandarenu/R5Vv4rkipfI/AAAAAAAAAU0/pc5BYx1W0Pc/rms_thumb%5B1%5D" width="153" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Last Friday I got once in a life time opportunity to participate in a conference where &lt;a href="http://en.wikipedia.org/wiki/Richard_Stallman" target="_blank"&gt;Richard Stallman (RMS)&lt;/a&gt; did the key note speech.&amp;#160; If you do not know who is RMS, he is the father of &amp;quot;Free Software Foundation&amp;quot; and he is the one who started GNU project. He is a really interesting guy. &lt;/p&gt;  &lt;p&gt;From that key note speech I got to know about &lt;strong&gt;four freedoms related to free software.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;0.&lt;/strong&gt; The freedom to run the program as you wish. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; The freedom to study the program's source code and then change it so the program does what you wish. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; The freedom to distribute exact copies to others, when you wish. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; The freedom to distribute copies of your modified versions to others, when you wish. &lt;/p&gt;  &lt;p&gt;Other than that I learnt that it is note fair name popular open source OS &amp;quot;Linux&amp;quot; as &amp;quot;Linux&amp;quot;. It has to be corrected GNU/Linux since Linux is only the kernel where GNU project developed all other components required for the OS.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-8410162496024219062?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/8410162496024219062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=8410162496024219062' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8410162496024219062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8410162496024219062'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/01/rms-and-philosophy-of-free-software.html' title='RMS and Philosophy of Free Software'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-5212562335265541300</id><published>2008-01-22T09:39:00.001+05:30</published><updated>2008-01-22T09:39:08.985+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>ZOTERO, Ultimate Research Tool for Students</title><content type='html'>&lt;p&gt;As students we have to do lot of research on various subjects. when we go researching stuff in the Internet, sometimes it can be very difficult to keep up with the information we come across and keep them organized. Before I came across this wonderful tool &lt;strong&gt;&lt;a href="http://www.zotero.org/" target="_blank"&gt;Zotero&lt;/a&gt;&lt;/strong&gt; what I did was save all important&amp;#160; web pages, PDF documents, etc... in one folder and later open one by one and read them. When I'm writing a report on something this opening one by one and reading it can be really annoying. &lt;/p&gt;  &lt;p&gt;But with &lt;strong&gt;Zotero&lt;/strong&gt; all this can be done very easily. This Firefox extension can keep everything very organized. &lt;b&gt;Zotero&lt;/b&gt; can save files, PDFs, images, links, and snapshots of web pages along with the citation.&lt;/p&gt;  &lt;p&gt;Here are some of the other features that &lt;b&gt;Zotero&lt;/b&gt; has to offer:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Automatic capture of citation information from web pages &lt;/li&gt;    &lt;li&gt;Storage of PDFs, files, images, links, and whole web pages &lt;/li&gt;    &lt;li&gt;Flexible notetaking with autosave &lt;/li&gt;    &lt;li&gt;Fast, as-you-type search through your materials &lt;/li&gt;    &lt;li&gt;Playlist-like library organization, including saved searches (smart collections) and tags &lt;/li&gt;    &lt;li&gt;Platform for new forms of digital research that can be extended with other web tools and services &lt;/li&gt;    &lt;li&gt;Runs right in your web browser &lt;/li&gt;    &lt;li&gt;Formatted citation export (style list to grow rapidly) &lt;/li&gt;    &lt;li&gt;Free and open source &lt;/li&gt;    &lt;li&gt;Shared collections &lt;/li&gt;    &lt;li&gt;Remote library backup &lt;/li&gt;    &lt;li&gt;Integration with Microsoft Word and other word processors &lt;/li&gt;    &lt;li&gt;Access your library from anywhere via the web &lt;/li&gt;    &lt;li&gt;Advanced search and data mining tools &lt;/li&gt;    &lt;li&gt;Recommendation engine and RSS feeds &lt;/li&gt;    &lt;li&gt;Wide variety of import/export options &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh4.google.com/sandarenu/R5VsXLkipcI/AAAAAAAAAUc/oJ13-fyBqgY/zotero%5B3%5D"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="233" alt="zotero" src="http://lh3.google.com/sandarenu/R5VsY7kipdI/AAAAAAAAAUk/W5OuvBHKruU/zotero_thumb%5B1%5D" width="277" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-5212562335265541300?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/5212562335265541300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=5212562335265541300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5212562335265541300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5212562335265541300'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/01/zotero-ultimate-research-tool-for.html' title='ZOTERO, Ultimate Research Tool for Students'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6648949615566495021</id><published>2008-01-05T20:16:00.001+05:30</published><updated>2008-01-05T20:16:47.928+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Eclipse's Local History Saved Me ...</title><content type='html'>&lt;p&gt;Today while I was working on our &amp;quot;Financial Planing System&amp;quot; project I replaced one simple code fragment throughout the project. That ruined how the application works. Since I've changed nearly 20 source files correcting would have been a nightmare. &lt;/p&gt;  &lt;p&gt;But fortunately, Eclipse is keeping track of the local changes done to source file. Because of that I've been able to replace the changes I did using that. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.google.com/sandarenu/R3-YOL8s0oI/AAAAAAAAAT8/GPcHJ4YoZW0/select%5B7%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="318" alt="select" src="http://lh5.google.com/sandarenu/R3-YQb8s0pI/AAAAAAAAAUE/PDSAVAai1mc/select_thumb%5B5%5D" width="421" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can compare the changes you have done very easily. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.google.com/sandarenu/R3-YTb8s0qI/AAAAAAAAAUM/WZCL___qGd0/LocalHistory_Compair%5B8%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="322" alt="LocalHistory_Compair" src="http://lh6.google.com/sandarenu/R3-YVr8s0rI/AAAAAAAAAUU/Rq5jkD5DvxM/LocalHistory_Compair_thumb%5B6%5D" width="426" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This is a really cool feature to have, specially if you are not using source control system. Even with source control local history can be very useful.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6648949615566495021?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6648949615566495021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6648949615566495021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6648949615566495021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6648949615566495021'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2008/01/eclipse-local-history-saved-me.html' title='Eclipse&amp;#39;s Local History Saved Me ...'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-3444965753911786043</id><published>2007-12-31T20:50:00.001+05:30</published><updated>2007-12-31T20:50:13.346+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Happy New Year 2008</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.google.com/sandarenu/R3kIlr8s0mI/AAAAAAAAATs/Y6N_L5CgbA0/HappyNewYear%5B7%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="324" alt="HappyNewYear" src="http://lh5.google.com/sandarenu/R3kIq78s0nI/AAAAAAAAAT0/lK6O_AkAUCA/HappyNewYear_thumb%5B3%5D" width="504" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="5"&gt;Wish You all a Very Happy New Year.....&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-3444965753911786043?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/3444965753911786043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=3444965753911786043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3444965753911786043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3444965753911786043'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/12/happy-new-year-2008.html' title='Happy New Year 2008'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-9145817114237961294</id><published>2007-12-25T09:10:00.001+05:30</published><updated>2007-12-25T09:11:29.080+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='Time Management'/><title type='text'>2008 Sri Lankan Holiday List</title><content type='html'>&lt;p&gt;There is only few days for the dawn of the new year, 2008. It is time to get organized for the new year. &lt;a href="http://sandarenu.blogspot.com/2007/01/add-sri-lankan-holidays-to-your-outlook.html" target="_blank"&gt;As with last year&lt;/a&gt; I thought of creating a Sri Lankan holiday list. &lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Outlook Holiday List&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;&amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; Start Copy &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &lt;/p&gt;  &lt;p&gt;[Sri Lanka] 25    &lt;br /&gt;Tamil Thai Pongal Day(BPM),2008/1/15     &lt;br /&gt;Duruthu Full Moon Poya Day(BPM),2008/1/22     &lt;br /&gt;National Day(BPM),2008/2/4     &lt;br /&gt;Navam Full Moon Poya Day(BPM),2008/2/20     &lt;br /&gt;Mahasivarathri Day(BP),2008/3/6     &lt;br /&gt;Milad-Un-Nabi (Holy Prophet&amp;#8217;s Birthday)(BPM),2008/3/20     &lt;br /&gt;Medin Full Moon Poya Day(BPM),2008/3/21     &lt;br /&gt;Good Friday(BP),2008/3/21     &lt;br /&gt;Day Prior to Sinhala &amp;amp; Tamil New Year Day(BPM),2008/4/12     &lt;br /&gt;Sinhala &amp;amp; Tamil New Year Day(BPM),2008/4/13     &lt;br /&gt;Bak Full Moon Poya Day(BPM),2008/4/19     &lt;br /&gt;May Day(BPM),2008/5/1     &lt;br /&gt;Vesak Full Moon Poya Day(BPM),2008/5/19     &lt;br /&gt;Day following Vesak Full Moon Poya Day(BPM),2008/5/20     &lt;br /&gt;Poson Full Moon Poya Day(BPM),2008/6/18     &lt;br /&gt;Esala Full Moon Poya Day(BPM),2008/7/17     &lt;br /&gt;Nikini Full Moon Poya Day(BPM),2008/8/16     &lt;br /&gt;Binara Full Moon Poya Day(BPM),2008/9/14     &lt;br /&gt;Id-Ul-Fitr (Ramazan Festival Day)(BP),2008/10/1     &lt;br /&gt;Vap Full Moon Poya Day(BPM),2008/10/14     &lt;br /&gt;Deepavali Festival Day(BP),2008/10/27     &lt;br /&gt;Il Full Moon Poya Day(BPM),2008/11/12     &lt;br /&gt;Id-Ul-Alha (Hadji Festival Day)(BP),2008/12/9     &lt;br /&gt;Unduvap Full Moon Poya Day(BPM),2008/12/12     &lt;br /&gt;Christmas Day(BPM),2007/12/25 &lt;/p&gt;  &lt;p&gt;&amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; End Copy &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211; &amp;#8211;&lt;/p&gt;  &lt;p&gt;Please &lt;a href="http://sandarenu.blogspot.com/2007/01/add-sri-lankan-holidays-to-your-outlook.html" target="_blank"&gt;follow the instructions given in my last post&lt;/a&gt; to add holiday list to outlook. Note that if you have last year&amp;#8217;s list under Sri Lanka you will need to replace it with this year&amp;#8217;s ones&lt;/p&gt;  &lt;h2&gt;&lt;u&gt;Google Calendar&lt;/u&gt;&lt;/h2&gt;  &lt;p&gt;Click on the button to add the Holiday Calendar to your Google calendar.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.google.com/calendar/render?cid=j16upvk7c62q9ge3182762nvdc%40group.calendar.google.com" target="_blank"&gt;&lt;img src="http://www.google.com/calendar/images/ext/gc_button1_en.gif" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:7c11719e-d228-44af-9a0d-3ab0bb4e29d6" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/2008%20Sri%20Lankan%20Holiday%20List" rel="tag"&gt;2008 Sri Lankan Holiday List&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-9145817114237961294?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/9145817114237961294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=9145817114237961294' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/9145817114237961294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/9145817114237961294'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/12/2008-sri-lankan-holiday-list.html' title='2008 Sri Lankan Holiday List'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-7432393536538660055</id><published>2007-12-25T08:17:00.001+05:30</published><updated>2007-12-25T08:20:04.133+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><title type='text'>Defragment your Hard disk with Defraggler</title><content type='html'>&lt;p&gt;&lt;a href="http://www.defraggler.com/" target="_blank"&gt;Defraggler&lt;/a&gt; is a cool utility that lets you to defragment your hard drive. If you have used windows defragmenter, I think you know that it requires at least 15% of free disk space to perform defragmenting of the drive. Some times this can be very annoying. Specially for me this is very annoying since my C drive is only 10GB and it fills up very quickly and&amp;#160; can't even defragment since it do not have 15% free space. &lt;/p&gt;  &lt;p&gt;Defraggler is the solution for this. This little tool allows you to defragment your hard drive with out any restriction of free disk space. Unlike default windows defragmenter this nice tool facilitates you to defragment individual files as well. Another cool thing about Defraggler is that it is portable, means that you can run it on an USB. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.google.com/sandarenu/R3BvOL8s0kI/AAAAAAAAATc/_WlWIDnD6To/defrag1%5B8%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="247" alt="defrag1" src="http://lh6.google.com/sandarenu/R3BvQb8s0lI/AAAAAAAAATk/yWctlepiAwk/defrag1_thumb%5B6%5D" width="368" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-7432393536538660055?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/7432393536538660055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=7432393536538660055' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7432393536538660055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7432393536538660055'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/12/defragment-your-hard-disk-with.html' title='Defragment your Hard disk with Defraggler'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-4312174045985319762</id><published>2007-12-13T09:00:00.001+05:30</published><updated>2007-12-13T09:10:09.051+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Imagine Cup 2008 Launch at University of Moratuwa</title><content type='html'>&lt;p&gt;Yesterday 12th December we had a grand event at the university for the launch of the Imagine Cup 2008 competition. Event was organized by the Microsoft Student Champs community at the Faculty of Information Technology. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.google.com/sandarenu/R2CnR17ch6I/AAAAAAAAATM/AF5RXfZsJL4/ic2008_1%5B3%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="112" alt="ic2008_1" src="http://lh4.google.com/sandarenu/R2CnS17ch7I/AAAAAAAAATU/wt5GcGDquGs/ic2008_1_thumb%5B1%5D" width="240" border="0" /&gt;&lt;/a&gt; Event was not only about the Imagine Cup, there was the launch of the sourceFEED - which is the new online resource center developed by student champs. SourceFEED was a long requested thing by the faculty students, it provided access to lot of online learning material and Microsoft latest software products that the faculty get through MSDNAA. Launch of the sourceFEED was done by the university vice chancellor. &lt;/p&gt;  &lt;p&gt;After the launch of the sourceFEED we had the launch of the Imagine Cup 2008. This is the 4th time that IC is happening in Sri Lanka. During last 3 years the competition was won by students from FIT. This year also our students are ready to give a big challenge to other IT institutes around the county to bring the cup for the 4th consecutive time. &lt;/p&gt;  &lt;p&gt;We had a introductory presentation about the IC 2008 by Wela, who is the Microsoft Developer Evangelist. And then we had 2 brief technical sessions on building WPF applications&amp;#160;&amp;#160; and another one on Silvelight applications. I did the presentation on building WPF applications using VS2008 and Expression Blend. It was a very introductory session about WPF, XAML and Blend. You can &lt;a href="http://docs.google.com/TeamPresent?docid=dfspwjx7_14hsxvzwgw" target="_blank"&gt;view the presentation I did here in Google presentations&lt;/a&gt;. Wela did the presentation on Silverlight. &lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8cf8bc19-10b9-48e2-a187-9ac22cf223a1" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Imagine%20Cup%202008" rel="tag"&gt;Imagine Cup 2008&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-4312174045985319762?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/4312174045985319762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=4312174045985319762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4312174045985319762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4312174045985319762'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/12/imagine-cup-2008-launch-at-university.html' title='Imagine Cup 2008 Launch at University of Moratuwa'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-413180202468199491</id><published>2007-11-29T08:35:00.001+05:30</published><updated>2007-11-29T08:35:17.090+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>View passwords under the asterisks in your browser</title><content type='html'>&lt;p&gt;Have you ever used remember the password option in you browser and later forget that password. If you want to see what the password you typed there is small trick that can be used. Simply type this JavaScript in the address bar of your browser. &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier"&gt;javascript:(function(){var s,F,j,f,i; s = &amp;quot;&amp;quot;; F = document.forms; for(j=0; j&amp;lt;F.length; ++j) { f = F[j]; for (i=0; i&amp;lt;f.length; ++i) { if (f[i].type.toLowerCase() == &amp;quot;password&amp;quot;) s += f[i].value + &amp;quot;\n&amp;quot;; } } if (s) alert(&amp;quot;Passwords in forms on this page:\n\n&amp;quot; + s); else alert(&amp;quot;There are no passwords in forms on this page.&amp;quot;);})();&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;You can find a full explanation at the &lt;a href="http://www.raymond.cc/blog/archives/2007/07/13/easily-show-the-contents-of-password-fields/" target="_blank"&gt;Raymond.CC Blog&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-413180202468199491?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/413180202468199491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=413180202468199491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/413180202468199491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/413180202468199491'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/11/view-passwords-under-asterisks-in-your.html' title='View passwords under the asterisks in your browser'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6122421203949255509</id><published>2007-11-29T07:49:00.001+05:30</published><updated>2007-12-13T09:10:09.052+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Boost security by disabling 10 Windows XP services</title><content type='html'>&lt;p&gt;I came across this article at &lt;a href="http://techrepublic.com.com/" target="_blank"&gt;TechRepublic&lt;/a&gt; few days back about few windows services that we can disable and boost the security of our computers. Following are the services that you can disable without any problem.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;ISS&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;NetMeeting Remote Desktop Sharing &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Remote Desktop Help Session Manager &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Remote Registry &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Routing and Remote Access&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Simple File Sharing &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;SSDP Discovery Service&lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Telnet &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Universal Plug and Play Device Host &lt;/strong&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Windows Messenger Service&lt;/strong&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Some of these services may not even installed in your machine, specially some thing like ISS. Better check the services running in you machine and disable unnecessary ones. It can help you in two ways, one is that it will boost the security and other thing is that it will save your system resources&amp;#160; to do some thing useful. &lt;/p&gt;  &lt;p&gt;To see list of all the services running in you machine go to Control Panel &amp;gt; Administrative Tools &amp;gt; Services&lt;/p&gt;  &lt;p&gt;You can find the &lt;a href="http://downloads.techrepublic.com.com/download.aspx?docid=329170&amp;amp;tag=nl.e103" target="_blank"&gt;original article here &amp;gt;&amp;gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:91e3a704-2993-47fe-87a3-019291c6dbc7" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows%20XP" rel="tag"&gt;Windows XP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Boost%20security" rel="tag"&gt;Boost security&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6122421203949255509?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6122421203949255509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6122421203949255509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6122421203949255509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6122421203949255509'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/11/boost-security-by-disabling-10-windows.html' title='Boost security by disabling 10 Windows XP services'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6101804013619363600</id><published>2007-11-18T19:34:00.001+05:30</published><updated>2007-11-18T19:34:39.875+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Back to the University</title><content type='html'>&lt;p&gt;&lt;a href="http://lh6.google.com/sandarenu/R0BGci5nZbI/AAAAAAAAAS8/1juCY2Mcgo8/graduate3%5B7%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="graduate3" src="http://lh6.google.com/sandarenu/R0BGdi5nZcI/AAAAAAAAATE/90rTNezS_rM/graduate3_thumb%5B5%5D" width="240" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Tomorrow(19th Nov) our new academic semester begins. It will be the start of my 4th year at the university. Two months of vacation seems to be vanished. Two months of vacation was very nice one. I managed to learn lots of new things during that time, and spend lot of time with my family.&lt;/p&gt;  &lt;p&gt;Now I'm doing the IT special degree so next few months will be very busy. Road ahead will be more difficult but will be very exciting. I'm hopping to do well in this semester. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6101804013619363600?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6101804013619363600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6101804013619363600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6101804013619363600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6101804013619363600'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/11/back-to-university.html' title='Back to the University'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-3913655853673572907</id><published>2007-11-12T20:12:00.001+05:30</published><updated>2007-11-13T08:08:07.767+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Reading Excel Files from Java</title><content type='html'>&lt;p&gt;Microsoft Excel is one of the common was of storing data in business. There fore when we develop applications, most of the times we have to extract data from an Excel sheet. There are many methods to extract data from Excel file, both commercial and free libraries are developed for this purpose. One of such library is &lt;a href="http://poi.apache.org/hssf/index.html" target="_blank"&gt;Apache POI HSSF&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I came across this library few weeks back when I was researching on a methods of reading data from Excel and load it to a Java application that we are developing.&amp;#160; The project I'm working on is a development of Retirement Planning System, which our client is going to use for consultation purposes. He wanted to give his clients an Excel template where they put their current financial information such as incomes, expenses and our software should be able to read that file and load that data for projection purposes. &lt;/p&gt;  &lt;p&gt;Apache POI provides good API to access Excel files, not only reading but writing as well. Here I'm only using reading functionality only. When we are panning to use Excel as data input method first thing is to develop good template with all required field. This is the sample Excel file I used in my testing. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.google.com/sandarenu/RzhmVyhWueI/AAAAAAAAASc/NqeUC978mcQ/incomes%5B9%5D"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="118" alt="incomes" src="http://lh3.google.com/sandarenu/RzhmXChWufI/AAAAAAAAASk/0djkNstMdwk/incomes_thumb%5B7%5D" width="294" align="left" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When reading the data we are reading from cell by cell, so we have to know the exact cell that contains the data we need. I'm using a common interface to read data from Excel sheet.&amp;#160; According to our requirement we can implement that to read data in to our java objects. &lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; RowProcessor&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; Object[] process(HSSFSheet sheet) throws Exception;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here we are passing the excel sheet to our process method and get set of objects after processing it. By implementing this interface I created a class called IncomeProcessor to read the Excel sheet and get an array of Income.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; IncomeProcessor implements RowProcessor&lt;br /&gt;{    &lt;br /&gt;    &lt;span class="rem"&gt;//Row columns&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; final &lt;span class="kwrd"&gt;short&lt;/span&gt; COLUMN_NAME = 1;&lt;br /&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; final &lt;span class="kwrd"&gt;short&lt;/span&gt; COLUMN_OWNER = 2;&lt;br /&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; final &lt;span class="kwrd"&gt;short&lt;/span&gt; COLUMN_AMOUNT = 3;&lt;br /&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; final &lt;span class="kwrd"&gt;short&lt;/span&gt; COLUMN_INCREASE_RATE = 4;&lt;br /&gt;    &lt;span class="rem"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     * The singleton instance of this class.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     */&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; IncomeProcessor thisProcessor;&lt;br /&gt;    &lt;br /&gt;    &lt;span class="rem"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     * Default constructor&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     * Created on: Nov 8, 2007&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     * @Author: Sandarenu&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     */&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; IncomeProcessor()&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;//Private so no outside instantiation&lt;/span&gt;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;span class="rem"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     * Get an instance of this row processor.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     * Created on: Nov 8, 2007&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     * @Author Sandarenu&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     * @return instance of this row processor.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     */&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; RowProcessor getInstance()&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt;(thisProcessor == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            thisProcessor = &lt;span class="kwrd"&gt;new&lt;/span&gt; IncomeProcessor();&lt;br /&gt;        }&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; thisProcessor;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;span class="rem"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     * Do required processing for the Incomes.&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     */&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; Object[] process(HSSFSheet sheet) throws Exception&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt;(sheet != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;               &lt;span class="kwrd"&gt;int&lt;/span&gt; first = sheet.getFirstRowNum();&lt;br /&gt;               &lt;span class="kwrd"&gt;int&lt;/span&gt; last = sheet.getLastRowNum();&lt;br /&gt;               HSSFRow row = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;               List&amp;lt;Income&amp;gt; incomeList = &lt;span class="kwrd"&gt;new&lt;/span&gt; ArrayList&amp;lt;Income&amp;gt;(5);&lt;br /&gt;               Income income = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;               String owner;&lt;br /&gt;               first += 2; &lt;span class="rem"&gt;//Ignore first 2 rows - they are headers&lt;/span&gt;&lt;br /&gt;               &lt;span class="kwrd"&gt;for&lt;/span&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt; i= first; i&amp;lt;=last; i++)&lt;br /&gt;               {&lt;br /&gt;                   row = sheet.getRow(i);&lt;br /&gt;                   &lt;span class="kwrd"&gt;if&lt;/span&gt;(row != &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; row.getCell(COLUMN_NAME) != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;                   {&lt;br /&gt;                       income = &lt;span class="kwrd"&gt;new&lt;/span&gt; Income();&lt;br /&gt;                       income.setName(row.getCell(COLUMN_NAME).getRichStringCellValue().getString());&lt;br /&gt;                       income.setStartingValue(row.getCell(COLUMN_AMOUNT).getNumericCellValue());&lt;br /&gt;                       income.setIncreaseRate((&lt;span class="kwrd"&gt;float&lt;/span&gt;)row.getCell(COLUMN_INCREASE_RATE).getNumericCellValue());&lt;br /&gt;                       owner = row.getCell(COLUMN_OWNER).getRichStringCellValue().getString();&lt;br /&gt;                       &lt;span class="kwrd"&gt;if&lt;/span&gt;(owner.startsWith(&lt;span class="str"&gt;&amp;quot;C&amp;quot;&lt;/span&gt;)|| owner.startsWith(&lt;span class="str"&gt;&amp;quot;c&amp;quot;&lt;/span&gt;))&lt;br /&gt;                           income.setClientPercentage(100);&lt;br /&gt;                       &lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt;(owner.startsWith(&lt;span class="str"&gt;&amp;quot;S&amp;quot;&lt;/span&gt;)|| owner.startsWith(&lt;span class="str"&gt;&amp;quot;s&amp;quot;&lt;/span&gt;))&lt;br /&gt;                           income.setSpousePercentage(100);&lt;br /&gt;                       &lt;br /&gt;                       incomeList.add(income);&lt;br /&gt;                   }&lt;br /&gt;               }&lt;br /&gt;               &lt;br /&gt;               &lt;span class="kwrd"&gt;return&lt;/span&gt; incomeList.toArray(&lt;span class="kwrd"&gt;new&lt;/span&gt; Income[incomeList.size()]);&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This is the main class I used to test my data reading. Here first I read the excel file and then get relevant Sheet for processing. Using this technique we can easily populate our java objects using the data from Excel sheet.&amp;#160;&amp;#160; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Test {&lt;br /&gt;&lt;br /&gt;    &lt;span class="rem"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     * @param args&lt;/span&gt;&lt;br /&gt;&lt;span class="rem"&gt;     */&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; main(String[] args) &lt;br /&gt;    {&lt;br /&gt;        TestListner tl = &lt;span class="kwrd"&gt;new&lt;/span&gt; TestListner();&lt;br /&gt;        ImportHandler ih = &lt;span class="kwrd"&gt;new&lt;/span&gt; ImportHandler();&lt;br /&gt;        ih.addStatusListner(tl);&lt;br /&gt;        &lt;br /&gt;        &lt;span class="kwrd"&gt;try&lt;/span&gt; {&lt;br /&gt;            POIFSFileSystem fs      =&lt;br /&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; POIFSFileSystem(&lt;span class="kwrd"&gt;new&lt;/span&gt; FileInputStream(&lt;span class="str"&gt;&amp;quot;Book1.xls&amp;quot;&lt;/span&gt;));&lt;br /&gt;   HSSFWorkbook wb = &lt;span class="kwrd"&gt;new&lt;/span&gt; HSSFWorkbook(fs);&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;   HSSFSheet sheet =wb.getSheet(&lt;span class="str"&gt;&amp;quot;Income&amp;quot;&lt;/span&gt;);&lt;br /&gt;   RowProcessor ip = IncomeProcessor.getInstance();&lt;br /&gt;   Object [] incomes = ip.process(sheet);&lt;br /&gt;  &lt;span class="kwrd"&gt;for&lt;/span&gt; (Object &lt;span class="kwrd"&gt;object&lt;/span&gt; : incomes)&lt;br /&gt;{&lt;br /&gt;    Income income = (Income)&lt;span class="kwrd"&gt;object&lt;/span&gt;;&lt;br /&gt;    System.&lt;span class="kwrd"&gt;out&lt;/span&gt;.println( income.getName() + &lt;span class="str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + income.getStartingValue());&lt;br /&gt;}&lt;br /&gt;   &lt;br /&gt;        } &lt;span class="kwrd"&gt;catch&lt;/span&gt; (FileNotFoundException e) {&lt;br /&gt;            &lt;span class="rem"&gt;// TODO Auto-generated catch block&lt;/span&gt;&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        } &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception e) {&lt;br /&gt;            &lt;span class="rem"&gt;// TODO Auto-generated catch block&lt;/span&gt;&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;                    &lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Output of the code.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh4.google.com/sandarenu/RzhmYShWugI/AAAAAAAAASs/UrGJJoK4Dx0/output%5B6%5D"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="89" alt="output" src="http://lh5.google.com/sandarenu/RzhmZihWuhI/AAAAAAAAAS0/tWQlBc2Q6Sg/output_thumb%5B4%5D" width="368" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;You can &lt;a href="http://sandarenu.googlepages.com/ExcelReder.rar" target="_blank"&gt;download complete source code and sample Excel workbook here&lt;/a&gt;. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:83b39f6c-a676-4dee-9b3e-9624da9bbfea" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Reading%20Excel%20Files%20from%20Java" rel="tag"&gt;Reading Excel Files from Java&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: small;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-3913655853673572907?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/3913655853673572907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=3913655853673572907' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3913655853673572907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3913655853673572907'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/11/reading-excel-files-from-java.html' title='Reading Excel Files from Java'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-951927749315294826</id><published>2007-11-09T08:23:00.001+05:30</published><updated>2007-11-10T08:14:50.118+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Windows Live Writer for Creating blog posts</title><content type='html'>&lt;p&gt;I have downloaded &lt;a href="http://get.live.com/writer/overview" target="_blank"&gt;Windows Live Writer&lt;/a&gt; to see whether I can use it to publish blog posts in my blog. I think it is working fine, and I'm planing to continue using this for my next blog posts. WLW is having number of plug ins to support blog editing. One of the most important plug in is &lt;a href="http://blogs.msdn.com/mikeormond/archive/2006/08/24/716900.aspx" target="_blank"&gt;Source Code Format plug in&lt;/a&gt;. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-951927749315294826?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/951927749315294826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=951927749315294826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/951927749315294826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/951927749315294826'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/11/windows-live-writer-for-creating-blog.html' title='Windows Live Writer for Creating blog posts'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-8601794572152727877</id><published>2007-11-07T09:54:00.001+05:30</published><updated>2007-11-07T10:06:43.344+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Displaying Background Image in Swing Components</title><content type='html'>&lt;span style="font-size:100%;"&gt;This is a wonderful way to add background images to Java swing components. We can you this method to add background images for almost all of the swing components.  To add image we have to override &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Verdana,Arial,Helvetica;"&gt;paintComponent()&lt;/span&gt; method.&lt;br /&gt;&lt;br /&gt;Eg 1: Add background image to JTextArea&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Verdana,Arial,Helvetica;font-size:100%;"&gt;&lt;pre&gt;JTextArea textArea = new JTextArea() {&lt;br /&gt;     ImageIcon backImage = new ImageIcon("Resources/Background.jpg");&lt;br /&gt;     Image image = backImage.getImage();&lt;br /&gt;     {setOpaque(false);}&lt;br /&gt;     //Override&lt;br /&gt;     public void paintComponent (Graphics g) {&lt;br /&gt;       g.drawImage(image, 0, 0, this);&lt;br /&gt;       super.paintComponent(g);&lt;br /&gt;     }&lt;br /&gt;   };&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;br /&gt;Eg 2: Add background image to JDesktopPane&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana,Arial,Helvetica;"&gt;&lt;pre&gt;JDesktopPane textArea = new JDesktopPane() {&lt;br /&gt;     ImageIcon backImage = new ImageIcon("Resources/Background.jpg");&lt;br /&gt;     Image image = backImage.getImage();&lt;br /&gt;     {setOpaque(false);}&lt;br /&gt;     //Override&lt;br /&gt;     public void paintComponent (Graphics g) {&lt;br /&gt;       g.drawImage(image, 0, 0, this);&lt;br /&gt;       super.paintComponent(g);&lt;br /&gt;     }&lt;br /&gt;   };&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;We can use this method to add background images to any Swing component.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-8601794572152727877?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/8601794572152727877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=8601794572152727877' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8601794572152727877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8601794572152727877'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/11/displaying-background-image-in-swing.html' title='Displaying Background Image in Swing Components'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-4720817931815165147</id><published>2007-11-01T20:00:00.000+05:30</published><updated>2007-11-01T20:14:37.695+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Multi Table Delete Error in MySQL</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Today I was trying to write some SQL scripts to delete data from MYSQL database. And it uses INNER JOIN to join two tables for the delete. My query looked like follows. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);font-family:courier new;" &gt;DELETE fpsdb.future_changes.* FROM fpsdb.future_changes fc INNER JOIN fpsdb.income a ON a.Income_ID = fc.Dependancy_ID WHERE a.client_ID = 1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;When I try to execute, it gave the error &lt;span style="color: rgb(255, 102, 102);"&gt;"Unknown table 'future_changes' in MULTI DELETE"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I tried every thing to find the error without any success. Then I google for this error. Then I found out about an &lt;/span&gt;&lt;a style="font-family: arial;" href="http://bugs.mysql.com/bug.php?id=21148" target="_blank"&gt;MySQL bug&lt;/a&gt;&lt;span style="font-family:arial;"&gt; related to this issue. It states that "&lt;/span&gt;Cross-database deletes are supported for multiple-table deletes, but in this case, you &lt;/span&gt;&lt;span style="font-size:100%;"&gt;must refer to the tables without using aliases."&lt;br /&gt;&lt;br /&gt;So I changed the query removing aliases and put full qualified table names everywhere.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;DELETE fpsdb.future_changes.* FROM fpsdb.future_changes INNER JOIN fpsdb.income ON fpsdb.income.Income_ID = fpsdb.future_changes.Dependancy_ID WHERE fpsdb.income.client_ID = 1;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And Then it worked..... :)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-4720817931815165147?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/4720817931815165147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=4720817931815165147' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4720817931815165147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4720817931815165147'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/11/multi-table-delete-error-in-mysql.html' title='Multi Table Delete Error in MySQL'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-2027798043653005421</id><published>2007-10-28T19:53:00.000+05:30</published><updated>2007-10-28T20:18:12.898+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Reporting With MS Word - Part 2</title><content type='html'>Few weeks back I did a post on how to create reports using Microsoft Word and Java.  That method was based on Microsoft Office XML schema. We just have to create XML document using the tags defined in that schema. Yes it creates nice reports, but it needs lot of effort right.... You have to put lot of effort to create even very small report. When number of formatings in the report increases it becomes more and more difficult.  Other main issue is you can't insert images.&lt;br /&gt;&lt;br /&gt;I did more research on how to creates reports that can be viewed from Word with less effort. And then I just thought about Rich Text Format. We can view rtf documents from MS Word. After Googling for some time I found about &lt;a target="_blank" href="http://www.lowagie.com/iText/"&gt;iText&lt;/a&gt;. I knew it is used to create PDF documents, but until that morment I didn't knew that it can creates rtf documents as well.  So that is the solution..... Create the report using iText.&lt;br /&gt;&lt;br /&gt;We can create rtf documents with nice formating with less effort.  &lt;a target="_blank" href="http://itextdocs.lowagie.com/tutorial/rtf/index.php"&gt;You can find good tutorial on how to create rtf documents using iText here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-2027798043653005421?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/2027798043653005421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=2027798043653005421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2027798043653005421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2027798043653005421'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/10/java-reporting-with-ms-word-part-2.html' title='Java Reporting With MS Word - Part 2'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-1995209728183917747</id><published>2007-10-10T20:12:00.000+05:30</published><updated>2007-10-10T20:29:37.123+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><title type='text'>Advices from Steve Jobs to Our Lives</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/Rwzolkz2HOI/AAAAAAAAARg/9YAGPylKQE4/s1600-h/Steve_Jobs.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_tedTUODQRM0/Rwzolkz2HOI/AAAAAAAAARg/9YAGPylKQE4/s400/Steve_Jobs.jpg" alt="" id="BLOGGER_PHOTO_ID_5119722608647347426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Few days back I got an email from one of my friend which contained the Steve Jobs' Commencement address at Stanford University in year 2005. I know now it is fairly old thing, but I thought to share it with all of you because that speech has lot of advises that we can adopt in to our life.&lt;br /&gt;&lt;br /&gt;It contains how he faced the challenges in his life and overcome them successfully. It is a very nice speech that you must read.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sandarenu.googlepages.com/SteveJobs2.pdf"&gt;Download the speech &gt;&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-1995209728183917747?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/1995209728183917747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=1995209728183917747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1995209728183917747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/1995209728183917747'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/10/advices-from-steve-jobs-to-our-lives.html' title='Advices from Steve Jobs to Our Lives'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_tedTUODQRM0/Rwzolkz2HOI/AAAAAAAAARg/9YAGPylKQE4/s72-c/Steve_Jobs.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6391068030843077671</id><published>2007-09-29T17:05:00.000+05:30</published><updated>2007-09-29T18:47:41.201+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Reporting With MS Word</title><content type='html'>Isn't it wonderful if we can generate MS Word documents as reports from our Java application.... There are number of way to generate MS Word documents from Java such as using  &lt;a href="http://jakarta.apache.org/poi/"&gt;Jakarta POI&lt;/a&gt;&lt;a href="http://jakarta.apache.org/poi/"&gt; &lt;/a&gt;(Poor Obfuscation Implementation) from the Apache Jakarta Project.&lt;br /&gt;But there is a much easier way to do it, by using WordprocessingML.  It is an XML schema developed my Microsoft to create word documents and their formating. Using the XML tags in WordprocessingML we can create our word document very easily.&lt;br /&gt;Here is a small code fragment that displays "Hello World"...&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;?mso-application progid="Word.Document"?&amp;gt;&lt;br /&gt;&amp;lt;w:wordDocument&lt;br /&gt; xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"&amp;gt;&lt;br /&gt;&amp;lt;w:body&amp;gt;&lt;br /&gt; &amp;lt;w:p&amp;gt;&lt;br /&gt;     &amp;lt;w:r&amp;gt;&lt;br /&gt;         &amp;lt;w:t&amp;gt;Hello World.&amp;lt;/w:t&amp;gt;&lt;br /&gt;     &amp;lt;/w:r&amp;gt;&lt;br /&gt; &amp;lt;/w:p&amp;gt;&lt;br /&gt;&amp;lt;/w:body&amp;gt;&lt;br /&gt;&amp;lt;/w:wordDocument&amp;gt;&lt;br /&gt;&lt;br /&gt;Save this as .xml and open using MS word. You will be able to see output like in this figure.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/Rv49bEz2HNI/AAAAAAAAARY/F6VGZJVvH4I/s1600-h/1.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 358px; height: 222px;" src="http://bp2.blogger.com/_tedTUODQRM0/Rv49bEz2HNI/AAAAAAAAARY/F6VGZJVvH4I/s320/1.PNG" alt="" id="BLOGGER_PHOTO_ID_5115593762096422098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Lets analyze important tags in the code.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;?mso-application progid="Word.Document"?&amp;gt;&lt;/span&gt; is a processing instruction that tells Windows to treat this XML file as a Word document. You must put it in the document for it to be recognized by Word and Windows. The text-related elements for WordprocessingML have the prefix w.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;wordDocument/&amp;gt; &lt;/span&gt;defines a Word document. You can see that w's namespace is defined here.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;  is a container for text in the document.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;p&amp;gt;&lt;/span&gt; defines a paragraph.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;r&amp;gt; &lt;/span&gt;defines a run of other elements. Inside this tag, you should place tags like &lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;t&amp;gt;&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;, and so on. All elements inside a &lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;r&amp;gt;&lt;/span&gt; element can have a common set of properties.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;t&amp;gt; &lt;/span&gt;is the element that encloses actual text.&lt;/li&gt;&lt;/ul&gt;You can find the complete Office 2003 XML Reference Schemas from the Microsoft web site.&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=fe118952-3547-420a-a412-00a2662442d9&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=fe118952-3547-420a-a412-00a2662442d9&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now you know the basics of WordprocessingML. Next thing to do is to use some king of XML library and generate the XML document according to WordprocessingML Reference Schema. Here I'm using &lt;a href="http://www.dom4j.org/"&gt;dom4j XML library&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.io.File;&lt;br /&gt;import java.io.FileWriter;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;&lt;br /&gt;import org.dom4j.Document;&lt;br /&gt;import org.dom4j.DocumentHelper;&lt;br /&gt;import org.dom4j.Element;&lt;br /&gt;import org.dom4j.Namespace;&lt;br /&gt;import org.dom4j.QName;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @author sandarenu&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;public class WordMLTest&lt;br /&gt;{&lt;br /&gt;   /**&lt;br /&gt;    * Create the xml for head part of the word  xml&lt;br /&gt;    * Add processing and schema info.&lt;br /&gt;    * Created on: Jun 23, 2007&lt;br /&gt;    * @Author sandarenu&lt;br /&gt;    * @return&lt;br /&gt;    */&lt;br /&gt;   public static Document createDocument()&lt;br /&gt;   {&lt;br /&gt;          Document doc = DocumentHelper.createDocument();&lt;br /&gt;          HashMap pmap = new HashMap();&lt;br /&gt;          pmap.put("progid","Word.Document");&lt;br /&gt;          doc.addProcessingInstruction("mso-application",pmap);&lt;br /&gt;&lt;br /&gt;          Element root =  DocumentHelper.createElement("w:wordDocument");&lt;br /&gt;          //Set up the necesary namespaces&lt;br /&gt;          root.setQName(new QName("wordDocument",new Namespace("w","http://schemas.microsoft.com/office/word/2003/wordml")));&lt;br /&gt;        &lt;br /&gt;          Element e2 = DocumentHelper.createElement("w:body");&lt;br /&gt;          Element e = DocumentHelper.createElement("w:p");&lt;br /&gt;          Element e1 = DocumentHelper.createElement("w:r");&lt;br /&gt;          Element e3 = DocumentHelper.createElement("w:t");&lt;br /&gt;     &lt;br /&gt;          root.add(e2);&lt;br /&gt;          doc.add(root);&lt;br /&gt;          e3.setText("Hello World");&lt;br /&gt;          e1.add(e3);&lt;br /&gt;          e.add(e1);&lt;br /&gt;          e2.add(e);&lt;br /&gt;        &lt;br /&gt;          return doc;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * Created on: Sep 29, 2007&lt;br /&gt;    * @Author sandarenu&lt;br /&gt;    * @param args&lt;br /&gt;    */&lt;br /&gt;   public static void main(String[] args)&lt;br /&gt;   {&lt;br /&gt;       try&lt;br /&gt;       {&lt;br /&gt;           Document doc = createDocument();&lt;br /&gt;           File outputFile = new File("c:\\hello.xml");&lt;br /&gt;           FileWriter out = new FileWriter(outputFile);&lt;br /&gt;           doc.write(out);&lt;br /&gt;           out.flush();&lt;br /&gt;           out.close();&lt;br /&gt;       }&lt;br /&gt;       catch (IOException e)&lt;br /&gt;       {&lt;br /&gt;           e.printStackTrace();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Using this simple logic you can generate very complex word reports using Java. Have fun....&lt;br /&gt;&lt;br /&gt;You can &lt;a href="http://sandarenu.googlepages.com/JavaReportingSrc.rar"&gt;download the source code&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="tag_list"&gt;Tags: &lt;span class="tags"&gt;&lt;a href="http://technorati.com/tag/Java+Reporting" rel="tag"&gt;Java Reporting&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6391068030843077671?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6391068030843077671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6391068030843077671' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6391068030843077671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6391068030843077671'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/09/java-reporting-with-ms-word.html' title='Java Reporting With MS Word'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_tedTUODQRM0/Rv49bEz2HNI/AAAAAAAAARY/F6VGZJVvH4I/s72-c/1.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-7085306988759555644</id><published>2007-09-17T18:47:00.000+05:30</published><updated>2007-09-17T18:55:44.769+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>One Stop for Keyboard Shortcuts........</title><content type='html'>Are you using keyboard shortcuts when using applications? If not you better start using them because they can save lot of time and make the work much easy.&lt;br /&gt;In one of my &lt;a href="http://sandarenu.blogspot.com/2007/05/how-to-use-windows-key.html"&gt;previous posts&lt;/a&gt; I've put some shortcuts that you can use with Windows key. Today I found a wonderful website that contains huge list of shortcuts for various applications. It's called &lt;a href="http://www.keyxl.com/"&gt;KeyXL&lt;/a&gt;. Hope you'll find it very useful.&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-7085306988759555644?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/7085306988759555644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=7085306988759555644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7085306988759555644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7085306988759555644'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/09/one-stop-for-keyboard-shortcuts.html' title='One Stop for Keyboard Shortcuts........'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-7760775648416629318</id><published>2007-09-14T16:58:00.000+05:30</published><updated>2007-09-14T17:08:11.751+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>I'm Back...</title><content type='html'>&lt;p class="MsoNormal"&gt;It has been more than 1 1/2 months since I've done my previous post. It has been very tough time for me with all of the academic activities in the university. Last semester was the toughest semester yet. Had to complete back to back assignments without break ant then had to prepare for the exam. Now it’s all finished. &lt;span style="font-family: Wingdings;"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;With this exam our general degree finishes. But I’m planning to do the special as well, so I’ve another year to go before finishing. There is going to be two months break before start of 4&lt;sup&gt;th&lt;/sup&gt; year. So I can have little bit of break and do few more blog posts :)&lt;span style=""&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-7760775648416629318?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/7760775648416629318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=7760775648416629318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7760775648416629318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7760775648416629318'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/09/im-back.html' title='I&apos;m Back...'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-2534982605774265560</id><published>2007-07-21T19:43:00.000+05:30</published><updated>2007-07-21T20:15:33.415+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Other'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Got the Last one...</title><content type='html'>Guess what..... I got the last book, Harry Potter and Deathly Hallows.&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.cctv.com/program/cultureexpress/20070329/images/103647_d2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: left; cursor: pointer; width: 248px; height: 357px;" src="http://www.cctv.com/program/cultureexpress/20070329/images/103647_d2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;It took me around 6 hours to read through 607 pages of true magic. I have to admit that I skip through some pages (got to read the book again). I was so anxious to find out what will happen at the endJ.K had stated that 2 main charters would die at the end; I always feared that one would be from the trio, Harry, Ron or Hermione. But I was wrong. It had a much better ending that expected. Snape proved to be a good guy; Harry defeats the dark Load.Finally Harry-Ginny and Ron-Hermione got married and J.K. finished the great magical story with “All was well”.&lt;br /&gt;&lt;br /&gt; &lt;div class="tag_list"&gt;Tags: &lt;span class="tags"&gt;&lt;a href="http://technorati.com/tag/Harry+Potter+and+Deathly+Hallows" rel="tag"&gt;Harry Potter and Deathly Hallows&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-2534982605774265560?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/2534982605774265560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=2534982605774265560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2534982605774265560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2534982605774265560'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/07/got-last-one.html' title='Got the Last one...'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-8353058879384148763</id><published>2007-06-27T20:42:00.001+05:30</published><updated>2007-06-27T20:55:01.373+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>The Two F-Words You Should Love</title><content type='html'>This is a very nice article I saw at &lt;a href="http://www.lifehack.org/" class="f"&gt;lifehack.org&lt;/a&gt;. Hope it will be useful to you.....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.lifehack.org/wp-content/files/2007/06/abe-lincoln.jpg" alt="Lincoln" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Make Failure and Frustration Your Friends: A History Lesson&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;We all experience failure and the subsequent frustration. But how you handle those tormentors makes all the difference in your final outcomes. Oftentimes the peak of frustration comes right before a major breakthrough. That's if you don't quit. So don't quit! Instead use the energy behind that frustration to break through to a new level of strategy. Make failure the friend that brought you to breakthrough's doorstep! Let frustration be the energy that propels your leap across the chasm!&lt;/p&gt; &lt;p&gt;What follows are several success stories from history where failure was a frequent companion throughout these great people's lives. Let's all take some inspiration from their stories.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.lifehack.org/articles/management/the-two-f-words-you-should-love.html" target="_blank"&gt;Read the complete article &gt;&gt;&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tag_list"&gt;Tags: &lt;span class="tags"&gt;&lt;a href="http://technorati.com/tag/Productivity" rel="tag"&gt;Productivity&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Tips+and+Tricks" rel="tag"&gt;Tips and Tricks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-8353058879384148763?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/8353058879384148763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=8353058879384148763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8353058879384148763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8353058879384148763'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/06/two-f-words-you-should-love.html' title='The Two F-Words You Should Love'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-464495963385998866</id><published>2007-06-19T19:38:00.000+05:30</published><updated>2007-12-13T09:10:09.052+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>FIT wins Imagine Cup again.....</title><content type='html'>It was an unbelievable atmosphere yesterday at Galadari Colombo as FIT guys and gals won the Imagine Cup Sri Lanka Competition for the &lt;a href="http://www.imaginecupsrilanka.com/history.aspx" target="_blank"&gt;&lt;span style="font-weight: bold;"&gt;3rd Consecrative time&lt;/span&gt;&lt;/a&gt;. Yeh!.. that's right it was for the 3rd Consecrative time that FIT won this most prestiges software competition in Sri Lanka.&lt;br /&gt;This time it was team &lt;span style="font-weight: bold;"&gt;"SARA"&lt;/span&gt; presenting the &lt;span id="_ctl0_datalistPosts__ctl0_labelBlogEntry" class="BodyText"&gt;Application &lt;span style="font-weight: bold;"&gt;"ISECED&lt;/span&gt;&lt;/span&gt;", who did the magic for our faculty.  And again it was the same wining combination as last 2 yeas, one girl and 3 guys;&lt;span style="font-weight: bold;"&gt;"Ruwindi", "Sanju","Amila", and "Anurudha".&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_tedTUODQRM0/Rnfk7TJWsII/AAAAAAAAAQg/WQK7XsP1v8U/s1600-h/icup2007-winners.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_tedTUODQRM0/Rnfk7TJWsII/AAAAAAAAAQg/WQK7XsP1v8U/s320/icup2007-winners.jpg" alt="" id="BLOGGER_PHOTO_ID_5077778812286447746" border="0" /&gt;&lt;/a&gt;They will fly to S.Korea to participate for the Imagine Cup 2007 global competition soon.&lt;br /&gt;Good luck team and congratulations.&lt;br /&gt;&lt;br /&gt;There is more good news, in addition to the championship FIT won the 2nd runners up as well. That was team &lt;span id="_ctl0_datalistPosts__ctl0_labelBlogEntry" class="BodyText"&gt;Team "Sanhitha"&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span&gt;presenting the application &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;"Irrdhipada"&lt;/span&gt; who did that.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/RnfmYzJWsJI/AAAAAAAAAQo/p9WcTEN1OPc/s1600-h/team_sanhitha.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_tedTUODQRM0/RnfmYzJWsJI/AAAAAAAAAQo/p9WcTEN1OPc/s320/team_sanhitha.jpg" alt="" id="BLOGGER_PHOTO_ID_5077780418604216466" border="0" /&gt;&lt;/a&gt;Congratulations to them as well.&lt;br /&gt;And also there was one more team team from Faculty of Information Technology who participated for this year finals, team &lt;span style="font-weight: bold;"&gt;"Rawana"&lt;/span&gt; presenting the application &lt;span style="font-weight: bold;"&gt;"Virtual Desk". &lt;/span&gt;Even though they couldn't make it to the top 3 teams they also gave a good fight and there application was wonderful.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/RnfnwzJWsKI/AAAAAAAAAQw/DjTcGpGb2nA/s1600-h/team_ravana.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_tedTUODQRM0/RnfnwzJWsKI/AAAAAAAAAQw/DjTcGpGb2nA/s320/team_ravana.jpg" alt="" id="BLOGGER_PHOTO_ID_5077781930432704674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Congregational to Rawana as well.&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-464495963385998866?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/464495963385998866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=464495963385998866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/464495963385998866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/464495963385998866'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/06/fit-wins-imagine-cup-again.html' title='FIT wins Imagine Cup again.....'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_tedTUODQRM0/Rnfk7TJWsII/AAAAAAAAAQg/WQK7XsP1v8U/s72-c/icup2007-winners.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-8406937757943229749</id><published>2007-06-16T10:14:00.000+05:30</published><updated>2007-06-16T10:20:28.335+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Good Bye Navantis.....</title><content type='html'>&lt;p class="MsoNormal"&gt;Last week I said good bye to Navantis.&lt;br /&gt;It was a very difficult decision to be made, but I had to do that since I have to put my full effort for my academics.  My nine month experience at Navantis was great. I learn a lot during my internship and part time period.&lt;br /&gt;I'd like to thank all my colleagues at Navantis who helped me a lot during last nine months. Especially CEO Indaka, Duneel and Irzana. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-8406937757943229749?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/8406937757943229749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=8406937757943229749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8406937757943229749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/8406937757943229749'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/06/good-bye-navantis.html' title='Good Bye Navantis.....'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-3294051328882939383</id><published>2007-05-30T10:29:00.000+05:30</published><updated>2007-05-30T11:02:12.850+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>How to use the Windows key....</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_tedTUODQRM0/Rl0FHjHvmwI/AAAAAAAAAP8/7CX2ZqkwQEA/s1600-h/keyboard-12.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_tedTUODQRM0/Rl0FHjHvmwI/AAAAAAAAAP8/7CX2ZqkwQEA/s320/keyboard-12.jpg" alt="" id="BLOGGER_PHOTO_ID_5070214382733990658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Are you using the Windows Key in your keyboard? It comes very handy  on occasions.&lt;span style="font-size:100%;"&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt; &lt;/span&gt;Followings are some few useful short cuts that can be used with Windows key. &lt;h2&gt;&lt;span style="font-size:100%;"&gt;W = Windows Key&lt;/span&gt;&lt;/h2&gt;                            &lt;p&gt;W: Opens Start Menu&lt;br /&gt;W+ E: Opens up Windows Explorer&lt;br /&gt;W+ R: Opens the &lt;em&gt;Run &lt;/em&gt;command.&lt;br /&gt;W+ U: Opens &lt;em&gt;Utility Manager&lt;/em&gt;&lt;br /&gt;W+ L: &lt;em&gt;Log Off&lt;/em&gt;&lt;br /&gt;W+ F: &lt;em&gt;Search &lt;/em&gt;files on your computer&lt;br /&gt;W+ D: &lt;em&gt;Show&lt;/em&gt; Desktop [will switch back and forth from all minimized and back again]&lt;br /&gt;W+ F1: &lt;em&gt;Help Menu&lt;/em&gt;&lt;br /&gt;W+ Pause/Break: &lt;em&gt;System Properties&lt;/em&gt;&lt;br /&gt;W + Ctrl + Tab: Cycles through Tabs in your current app [eg. Firefox’s last focused tabs]&lt;br /&gt;W+ Tab: Cycles Through &lt;em&gt;Buttons &lt;/em&gt;in Taskbar&lt;br /&gt;W+ M: &lt;em&gt;Minimize &lt;/em&gt;all open windows.&lt;br /&gt;W+ Shift+M: &lt;em&gt;Maximize &lt;/em&gt;the windows you had open before minimizing&lt;br /&gt;W+B: Set focus to the first &lt;em&gt;System Tray Icon&lt;/em&gt; [which is the arrow if you enable the Hide Inactive Icons option]&lt;br /&gt;CTRL+W +F: &lt;em&gt;Search &lt;/em&gt;for computers&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-3294051328882939383?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/3294051328882939383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=3294051328882939383' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3294051328882939383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3294051328882939383'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/05/how-to-use-windows-key.html' title='How to use the Windows key....'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_tedTUODQRM0/Rl0FHjHvmwI/AAAAAAAAAP8/7CX2ZqkwQEA/s72-c/keyboard-12.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-124253044197931863</id><published>2007-05-24T09:07:00.000+05:30</published><updated>2007-05-24T09:32:01.447+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Debugging SQL Server Stored Procedures</title><content type='html'>Did you know that we can debug SQL Server Stored Procedures....&lt;br /&gt;Yes we can debug SPs from Visual Studio. We can put break points, can execute statement by statement and much more...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_tedTUODQRM0/RlUNuzHvmvI/AAAAAAAAAP0/kOa9vQD8SAg/s1600-h/DebugSPs.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_tedTUODQRM0/RlUNuzHvmvI/AAAAAAAAAP0/kOa9vQD8SAg/s320/DebugSPs.JPG" alt="" id="BLOGGER_PHOTO_ID_5067972053323193074" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Read this article for &lt;a href="http://aspnet.4guysfromrolla.com/articles/051607-1.aspx" target="_blank"&gt;more &gt;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tag_list"&gt;Technorati Tags: &lt;span class="tags"&gt;&lt;a href="http://technorati.com/tag/Debugging+SQL+Server+Stored+Procedures+" rel="tag"&gt;Debugging SQL Server Stored Procedures &lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-124253044197931863?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/124253044197931863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=124253044197931863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/124253044197931863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/124253044197931863'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/05/debugging-sql-server-stored-procedures.html' title='Debugging SQL Server Stored Procedures'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_tedTUODQRM0/RlUNuzHvmvI/AAAAAAAAAP0/kOa9vQD8SAg/s72-c/DebugSPs.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-972093023801695058</id><published>2007-05-08T11:25:00.000+05:30</published><updated>2007-12-13T09:10:09.053+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>How to create easy-to-use Outlook e-mail templates?</title><content type='html'>Do you usually send same type of outlook email message over and over again with just small changes to the content? So how do you do that? Type same thing all the time or copy and paste content from old message? I think most of the times you are using the copy and paste method. I also did the same thing till I found out how to create email templates in Outlook.&lt;br /&gt;With few simple steps we can create a menu of email templates in outlook. So you never have to find old message, copy-paste-edit. Just select from the mail templates menu edit and send.&lt;br /&gt;&lt;br /&gt;If you have configured outlook to use Word as default email editor you have to change that temporally. You have to use outlook email editor to create the templates. To do that;&lt;br /&gt; 1. Go to Tools | Options and click the Mail Format tab.&lt;br /&gt; 2. De select the Use Microsoft Word To Edit E-mail Messages check box (Figure A) and click OK.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/RkATs3G9jLI/AAAAAAAAAOs/O0EBD3qpB0o/s1600-h/fig1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_tedTUODQRM0/RkATs3G9jLI/AAAAAAAAAOs/O0EBD3qpB0o/s320/fig1.JPG" alt="" id="BLOGGER_PHOTO_ID_5062067642592758962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To switch back to using Word as your editor, just go back to the Mail Format tab and reselect that option.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Creating Email Templates&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Create a new email message as normally we do. Enter the text into the body of the message. If the message template will contain the same words in the subject line, fill in the Subject field as well. You can also fill in the To, Cc, and Bcc fields with addresses if you will always be sending the&lt;br /&gt;message to some of the same people. After finishing it, go to File | Save As to open the Save As dialog box and choose Outlook Template (*.oft) from the Save As Type drop-down list.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_tedTUODQRM0/RkATtHG9jMI/AAAAAAAAAO0/kEN7OHDevew/s1600-h/fig2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_tedTUODQRM0/RkATtHG9jMI/AAAAAAAAAO0/kEN7OHDevew/s320/fig2.JPG" alt="" id="BLOGGER_PHOTO_ID_5062067646887726274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Close new message window.(Click no when asked to save changes)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Creating the Menu&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;To create the menu, right-click on an Outlook tool bar and choose Customize from the shortcut menu to open the dialog box.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_tedTUODQRM0/RkATtHG9jNI/AAAAAAAAAO8/yivjiNzaV0I/s1600-h/fig3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_tedTUODQRM0/RkATtHG9jNI/AAAAAAAAAO8/yivjiNzaV0I/s320/fig3.JPG" alt="" id="BLOGGER_PHOTO_ID_5062067646887726290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now, click on the Commands tab, scroll to the bottom of the Categories list box, and choose New Menu. The New Menu item will appear in the Commands list box.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_tedTUODQRM0/RkATtXG9jOI/AAAAAAAAAPE/oKoAy0U4yZU/s1600-h/fig4.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_tedTUODQRM0/RkATtXG9jOI/AAAAAAAAAPE/oKoAy0U4yZU/s320/fig4.JPG" alt="" id="BLOGGER_PHOTO_ID_5062067651182693602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Drag the New Menu item to the Menu bar where you want menu to appear. Once the New Menu item appears on the Menu bar, right-click on the item and Replace the default name in the Name field with E-mail Templates and press [Enter].&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_tedTUODQRM0/RkATtnG9jPI/AAAAAAAAAPM/rbJMCwEfc5E/s1600-h/fig5.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_tedTUODQRM0/RkATtnG9jPI/AAAAAAAAAPM/rbJMCwEfc5E/s320/fig5.JPG" alt="" id="BLOGGER_PHOTO_ID_5062067655477660914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;Adding Templates to the Menu&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;To add your template as menu item to the newly created menu, from Customize dialog box, choose File from the Categories list box. Then, select Mail Message from the Commands list box and drag it to the E-mail Templates menu. When the menu opens, drop the Mail Message item on it.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/RkAVK3G9jQI/AAAAAAAAAPU/4dzTuk3MfCA/s1600-h/fig6.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_tedTUODQRM0/RkAVK3G9jQI/AAAAAAAAAPU/4dzTuk3MfCA/s320/fig6.JPG" alt="" id="BLOGGER_PHOTO_ID_5062069257500462338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Right-click on the item and replace the default Name field entry with the name of one of your templates. Then, click Assign Hyper link at the bottom of the menu and select the Open command. In the Assign Hyper link: Open dialog box, locate and select your template file and click OK.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_tedTUODQRM0/RkAVLHG9jSI/AAAAAAAAAPk/35kkaE3AujU/s1600-h/fig8.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_tedTUODQRM0/RkAVLHG9jSI/AAAAAAAAAPk/35kkaE3AujU/s320/fig8.JPG" alt="" id="BLOGGER_PHOTO_ID_5062069261795429666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_tedTUODQRM0/RkAVLHG9jRI/AAAAAAAAAPc/kAhb1fnkbbM/s1600-h/fig7.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_tedTUODQRM0/RkAVLHG9jRI/AAAAAAAAAPc/kAhb1fnkbbM/s320/fig7.JPG" alt="" id="BLOGGER_PHOTO_ID_5062069261795429650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Just repeat these steps to add any other templates you want on the menu. When you're finished, close the Customize dialog box. Now, anytime you need to compose an e-mail message that will include a specific version of email text, pull down the E-mail Templates menu and select the appropriate template.&lt;div class="tag_list"&gt;&lt;br /&gt;Technorati Tags: &lt;span class="tags"&gt;&lt;a href="http://technorati.com/tag/Outlook+email+templates" rel="tag"&gt;Outlook email templates&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-972093023801695058?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/972093023801695058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=972093023801695058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/972093023801695058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/972093023801695058'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/05/how-to-create-easy-to-use-outlook-e.html' title='How to create easy-to-use Outlook e-mail templates?'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_tedTUODQRM0/RkATs3G9jLI/AAAAAAAAAOs/O0EBD3qpB0o/s72-c/fig1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6789677624252968996</id><published>2007-05-03T09:57:00.000+05:30</published><updated>2007-05-03T10:09:00.470+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Time Management'/><title type='text'>How to Say NO....</title><content type='html'>How hard it is to say no to someone?... For me it is a very difficult thing. How about you? I think most of you also have the same problem.&lt;br /&gt;Today I came across a nice article on Lifehack.org on "The Gentle Art of Saying No".  It explains 10 tips on how to say no.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Value your time&lt;/strong&gt;. Know your commitments, and how valuable your precious time is. Then, when someone asks you to dedicate some of your time to a new commitment, you’ll know that you simply cannot do it. And tell them that: “I just can’t right now … my plate is overloaded as it is.”&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Know your priorities&lt;/strong&gt;. Even if you do have some extra time (which for many of us is rare), is this new commitment really the way you want to spend that time? For myself, I know that more commitments means less time with my wife and kids, who are more important to me than anything.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Practice saying no&lt;/strong&gt;. Practice makes perfect. Saying “no” as often as you can is a great way to get better at it and more comfortable with saying the word. And sometimes, repeating the word is the only way to get a message through to extremely persistent people. When they keep insisting, just keep saying no. Eventually, they’ll get the message.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Don’t apologize&lt;/strong&gt;. A common way to start out is “I’m sorry but …” as people think that it sounds more polite. While politeness is important, apologizing just makes it sound weaker. You need to be firm, and unapologetic about guarding your time.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Stop being nice&lt;/strong&gt;. Again, it’s important to be polite, but being nice by saying yes all the time only hurts you. When you make it easy for people to grab your time (or money), they will continue to do it. But if you erect a wall, they will look for easier targets. Show them that your time is well guarded by being firm and turning down as many requests (that are not on your top priority list) as possible.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Say no to your boss&lt;/strong&gt;. Sometimes we feel that we have to say yes to our boss — they’re our boss, right? And if we say “no” then we look like we can’t handle the work — at least, that’s the common reasoning. But in fact, it’s the opposite — explain to your boss that by taking on too many commitments, you are weakening your productivity and jeopardizing your existing commitments. If your boss insists that you take on the project, go over your project or task list and ask him/her to re-prioritize, explaining that there’s only so much you can take on at one time.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Pre-empting&lt;/strong&gt;. It’s often much easier to pre-empt requests than to say “no” to them after the request has been made. If you know that requests are likely to be made, perhaps in a meeting, just say to everyone as soon as you come into the meeting, “Look guys, just to let you know, my week is booked full with some urgent projects and I won’t be able to take on any new requests.”&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Get back to you&lt;/strong&gt;. Instead of providing an answer then and there, it’s often better to tell the person you’ll give their request some thought and get back to them. This will allow you to give it some consideration, and check your commitments and priorities. Then, if you can’t take on the request, simply tell them: “After giving this some thought, and checking my commitments, I won’t be able to accommodate the request at this time.” At least you gave it some consideration.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Maybe later&lt;/strong&gt;. If this is an option that you’d like to keep open, instead of just shutting the door on the person, it’s often better to just say, “This sounds like an interesting opportunity, but I just don’t have the time at the moment. Perhaps you could check back with me in [give a time frame].” Next time, when they check back with you, you might have some free time on your hands.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;It’s not you, it’s me&lt;/strong&gt;. This classic dating rejection can work in other situations. Don’t be insincere about it, though. Often the person or project is a good one, but it’s just not right for you, at least not at this time. Simply say so — you can compliment the idea, the project, the person, the organization … but say that it’s not the right fit, or it’s not what you’re looking for at this time. Only say this if it’s true — people can sense insincerity.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6789677624252968996?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6789677624252968996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6789677624252968996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6789677624252968996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6789677624252968996'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/05/how-to-say-no.html' title='How to Say NO....'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-4309866441269466693</id><published>2007-05-03T08:47:00.000+05:30</published><updated>2007-05-07T11:39:53.613+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Famous Quotes from Steve Jobs</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.lifehack.org/wp-content/files/2007/05/20070501-stevejobs.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 220px; height: 317px;" src="http://www.lifehack.org/wp-content/files/2007/05/20070501-stevejobs.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;From the recent challenge on &lt;a href="http://www.apple.com/hotnews/thoughtsonmusic/"&gt;DRM&lt;/a&gt;, to the iPhone hype from his presentation, and the popular iPod madness, we know Steve Jobs is a marketing genius. But that’s not the only it, he has his own view of what’s successful and the view of leadership and career. Ririan Project selected 10 quotes from Steve Jobs and describe them in details how you can learn Jobs’ way to be successful: &lt;ul&gt;&lt;li&gt;“Innovation distinguishes between a leader and a follower.”&lt;/li&gt;&lt;li&gt;“Be a yardstick of quality. Some people aren’t used to an environment where excellence is expected.&lt;/li&gt;&lt;li&gt;“The only way to do great work is to love what you do. If you haven’t found it yet, keep looking. Don’t settle. As with all matters of the heart, you’ll know when you find it.”&lt;/li&gt;&lt;li&gt;“You know, we don’t grow most of the food we eat. We wear clothes other people make. We speak a language that other people developed. We use a mathematics that other people evolved… I mean, we’re constantly taking things. It’s a wonderful, ecstatic feeling to create something that puts it back in the pool of human experience and knowledge.”&lt;/li&gt;&lt;li&gt;“There’s a phrase in Buddhism, ‘Beginner’s mind.’ It’s wonderful to have a beginner’s mind.”&lt;/li&gt;&lt;li&gt;“We think basically you watch television to turn your brain off, and you work on your computer when you want to turn your brain on.”&lt;/li&gt;&lt;li&gt;“I’m the only person I know that’s lost a quarter of a billion dollars in one year…. It’s very character-building.”&lt;/li&gt;&lt;li&gt;“I would trade all of my technology for an afternoon with Socrates.”&lt;/li&gt;&lt;li&gt;“We’re here to put a dent in the universe. Otherwise why else even be here?”&lt;/li&gt;&lt;li&gt;“Your time is limited, so don’t waste it living someone else’s life. Don’t be trapped by dogma - which is living with the results of other people’s thinking. Don’t let the noise of other’s opinions drown out your own inner voice. And most important, have the courage to follow your heart and intuition. They somehow already know what you truly want to become. Everything else is secondary.”&lt;/li&gt;&lt;/ul&gt;&lt;div class="tag_list"&gt;Technorati Tags: &lt;span class="tags"&gt;&lt;a href="http://technorati.com/tag/Productivity" rel="tag"&gt;Productivity&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-4309866441269466693?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/4309866441269466693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=4309866441269466693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4309866441269466693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4309866441269466693'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/05/from-recent-challenge-on-drm-to-iphone.html' title='Famous Quotes from Steve Jobs'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-5143241590895491162</id><published>2007-04-27T16:06:00.000+05:30</published><updated>2007-04-27T17:16:40.740+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><title type='text'>How to Debug Javascripts - Part2 (Firefox)</title><content type='html'>This is the part of the my How to debug Javascripts artical. This one will explain how to debug on Firefox using Firebug. See my previous artical on &lt;a href="http://sandarenu.blogspot.com/2007/03/how-to-debug-javascripts-part1-internet.html"&gt;how to debug in Internet Explorer.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.getfirebug.com/header.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.getfirebug.com/header.png" alt="" border="0" /&gt;&lt;/a&gt;Firebug is not only a javascript debugger, it is a complete web debugging tool where you can explore the html DOM and much much more. And it is very easy to use. Once you install Firebug you will get a menu item in under the Tools menu. Using that you can enable and disable firebug for selected sites.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/RjHWgnG9jII/AAAAAAAAAOI/EJ_B-ehyODU/s1600-h/firebugmenu.JPG"&gt;&lt;img style="cursor: pointer; width: 384px; height: 272px;" src="http://bp2.blogger.com/_tedTUODQRM0/RjHWgnG9jII/AAAAAAAAAOI/EJ_B-ehyODU/s400/firebugmenu.JPG" alt="" id="BLOGGER_PHOTO_ID_5058059712256117890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once you open the Firebug you can inspect the javascripts under the Script tab and do the debugging. You can put breakpoints just by clicking the near the line number.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_tedTUODQRM0/RjHWgXG9jFI/AAAAAAAAANw/fZ7qotCZHpU/s1600-h/breakpoint.JPG"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_tedTUODQRM0/RjHWgXG9jFI/AAAAAAAAANw/fZ7qotCZHpU/s400/breakpoint.JPG" alt="" id="BLOGGER_PHOTO_ID_5058059707961150546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One special thing with Firebug is that you can put conditional break points.  To add conditional break points just right click near the line number you want to put the break point and type your condition.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/RjHWgnG9jGI/AAAAAAAAAN4/BOYM6_yjG9o/s1600-h/conditionalbreakpoints.JPG"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_tedTUODQRM0/RjHWgnG9jGI/AAAAAAAAAN4/BOYM6_yjG9o/s400/conditionalbreakpoints.JPG" alt="" id="BLOGGER_PHOTO_ID_5058059712256117858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When there are Javascript errors in the page it is shown in the Firefox status bar. Once you click on that it will open all the errors in the console with possible reasons for that error. This will be very useful for you to find bugs in your application.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/RjHWgnG9jHI/AAAAAAAAAOA/lZtMVjD57uM/s1600-h/showerrors.JPG"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_tedTUODQRM0/RjHWgnG9jHI/AAAAAAAAAOA/lZtMVjD57uM/s400/showerrors.JPG" alt="" id="BLOGGER_PHOTO_ID_5058059712256117874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can get more information on Firebug for &lt;a href="http://www.getfirebug.com/js.html"&gt;Firebug site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.getfirebug.com/releases/firebug1.0-current.xpi"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_tedTUODQRM0/RjHWg3G9jJI/AAAAAAAAAOQ/Ef3zmCqfPW8/s400/install.gif" alt="" id="BLOGGER_PHOTO_ID_5058059716551085202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="tag_list"&gt;Technorati Tags: &lt;span class="tags"&gt;&lt;a href="http://technorati.com/tag/Javascript" rel="tag"&gt;Javascript&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Utilities" rel="tag"&gt;Utilities&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Programming" rel="tag"&gt;Programming&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-5143241590895491162?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/5143241590895491162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=5143241590895491162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5143241590895491162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/5143241590895491162'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/04/how-to-debug-javascripts-part2-firefox.html' title='How to Debug Javascripts - Part2 (Firefox)'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_tedTUODQRM0/RjHWgnG9jII/AAAAAAAAAOI/EJ_B-ehyODU/s72-c/firebugmenu.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6752023994101438027</id><published>2007-04-11T17:10:00.000+05:30</published><updated>2007-04-11T17:16:12.075+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Happy Sinhala and Tamil New Year</title><content type='html'>&lt;a href="http://picasaweb.google.com/sandarenu/Extra/photo#5052126744033617442"&gt;&lt;img src="http://lh5.google.com/image/sandarenu/RhzCgaJf5iI/AAAAAAAAANc/N6g9KI_ejjQ/s400/Happy_new_year.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6752023994101438027?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6752023994101438027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6752023994101438027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6752023994101438027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6752023994101438027'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/04/happy-sinhala-and-tamil-new-year.html' title='Happy Sinhala and Tamil New Year'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-3487877153540013915</id><published>2007-04-11T08:33:00.000+05:30</published><updated>2007-04-11T08:50:35.293+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>Navantis Avurudu Festival</title><content type='html'>It's Sinhala and Tamil New Year time.....&lt;br /&gt;Navantis had organized a wonderful New Year festival last Sunday (8th April) at Brows Beach Hotel Negambo. It was wonderful event. Almost all of the employees and their family members participated for this event.&lt;br /&gt;Festival started with a traditional breakfast which included Kevum(Oil Cakes) and Kiribath(Milk Rice). We had lots of game on that day. I participated for Goni Race(Sack Race) and Kaba Adeema(Tag-o-War). It was very enjoyable day.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_tedTUODQRM0/RhxTE6Jf5gI/AAAAAAAAANM/RvyXtQOq3i8/s1600-h/HPIM0679.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_tedTUODQRM0/RhxTE6Jf5gI/AAAAAAAAANM/RvyXtQOq3i8/s400/HPIM0679.JPG" alt="" id="BLOGGER_PHOTO_ID_5052004225796531714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/RhxTFaJf5hI/AAAAAAAAANU/_lgTd_4gVNg/s1600-h/HPIM0681.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_tedTUODQRM0/RhxTFaJf5hI/AAAAAAAAANU/_lgTd_4gVNg/s400/HPIM0681.JPG" alt="" id="BLOGGER_PHOTO_ID_5052004234386466322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/sandarenu/NavantisAvurudu2007"&gt;See more photos in my Paccasa albem &gt;&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-3487877153540013915?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/3487877153540013915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=3487877153540013915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3487877153540013915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/3487877153540013915'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/04/navantis-avurudu-festival.html' title='Navantis Avurudu Festival'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_tedTUODQRM0/RhxTE6Jf5gI/AAAAAAAAANM/RvyXtQOq3i8/s72-c/HPIM0679.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-7164860907722580328</id><published>2007-04-05T11:21:00.001+05:30</published><updated>2007-04-05T11:23:39.007+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>How to get over the fear of public speaking</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;If you have problems in public speaking (like me), this is a good artical to read. It gives some simple methods to get rid of the fear of public speaking. Techniques described in the artical are;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Practice your speech in front of a mirror&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Practice your speech facing a wall&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Practice with a friend&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Practice with a peer (non-friend)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Record yourself&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Do a dry run&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Don’t only practice in front of your family&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a target="_blank" href="http://www.lifehack.org/articles/lifehack/how-to-get-over-your-fear-of-public-speaking.html#more-2866"&gt;How to get over your fear of public speaking - lifehack.org&gt;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-7164860907722580328?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/7164860907722580328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=7164860907722580328' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7164860907722580328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/7164860907722580328'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/04/how-to-get-over-fear-of-public-speaking.html' title='How to get over the fear of public speaking'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-2124220473090415043</id><published>2007-04-04T15:19:00.000+05:30</published><updated>2007-12-13T09:10:09.053+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Internet Explorer 7 Keyboard shortcuts</title><content type='html'>&lt;span style="font-size:100%;"&gt;If you are using Internet Explorer 7, here are some useful keyboard shortcuts that will make your life easy.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="3" style="border-style: solid none; border-color: rgb(255, 255, 255); border-width: 3px 1px; background-color: rgb(13, 115, 186);"&gt;&lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="color: rgb(255, 255, 255);font-size:100%;" &gt;&lt;span style="font-weight: bold;"&gt;Basic tasks&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[F11] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Toggle full screen mode &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Toggle display of menu bar (if it's not set to display) &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]= &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Zoom in &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]- &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Zoom out &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]0 &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;100 percent zoom &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl][F] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Search for selected text on page &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]N &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open current page in new window &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]A &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Select everything on page &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[F5] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Refresh current page &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl][F5] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Refresh cache and current page &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Esc] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Halt downloading page &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]D &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Select text in Address bar &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[F4] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Display addresses you've typed &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl][Enter] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Add &lt;/span&gt;&lt;span style="font-style: italic; font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;www&lt;/span&gt;&lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt; and &lt;/span&gt;&lt;span style="font-style: italic; font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;.com&lt;/span&gt;&lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt; to the beginning and end of text entered in Address bar &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl][Shift][Enter] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td colspan="2" style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Add &lt;/span&gt;&lt;span style="font-style: italic; font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;http://www&lt;/span&gt;&lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt; to the beginning of text entered in Address bar &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="3" style="border-style: none none solid; border-color: rgb(255, 255, 255); border-width: 1px 1px 3px; background-color: rgb(13, 115, 186);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="color: rgb(255, 255, 255);font-size:100%;" &gt;&lt;span style="font-weight: bold;"&gt;Navigation&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]Home &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Go to your home page &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt] Left arrow (or [Backspace]) &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Go to previous page &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt] Right arrow &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Go to next page &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Tab] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Move forward through items on page &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Shift][Tab] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Move backward through items on page &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="3" style="border-style: solid none; border-color: rgb(255, 255, 255); border-width: 3px 1px; background-color: rgb(13, 115, 186);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="color: rgb(255, 255, 255);font-size:100%;" &gt;&lt;span style="font-weight: bold;"&gt;Tabs&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl] Click &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open a link in its own tab in background &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl][Shift] Click &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open a link in its own tab in foreground &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]T &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open new tab in foreground &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl][Tab] (or [Ctrl][Shift][Tab] to &lt;/span&gt;&lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;reverse) &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Cycle between tabs &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]W (or [Alt][F4] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Close current tab &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl] &lt;/span&gt;&lt;span style="font-style: italic; font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;number&lt;/span&gt;&lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt; &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Jump to specific tab by number (1 through 8) &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]9 &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Jump to last tab &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl][Alt][F4] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Close all but current tab &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl][Shift]Q &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Display Tabs list &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]Q &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Toggle Quick Tabs view &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="3" style="border-style: solid none; border-color: rgb(255, 255, 255); border-width: 3px 1px; background-color: rgb(13, 115, 186);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="color: rgb(255, 255, 255);font-size:100%;" &gt;&lt;span style="font-weight: bold;"&gt;Searching&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt][Enter] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open search results in new tab after typing search text in Search box or &lt;/span&gt;&lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Address bar &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]E &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Jump to Search box &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl] Down arrow &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Search Provider menu (when you're in Search box) &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="3" style="border-style: solid none; border-color: rgb(255, 255, 255); border-width: 3px 1px; background-color: rgb(13, 115, 186);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="color: rgb(255, 255, 255);font-size:100%;" &gt;&lt;span style="font-weight: bold;"&gt;Printing&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]P &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Print dialog box&lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="3" style="border-style: solid none; border-color: rgb(255, 255, 255); border-width: 3px 1px; background-color: rgb(13, 117, 186);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px; margin-left: 24px;"&gt; &lt;span style="color: rgb(255, 255, 255);font-size:100%;" &gt;&lt;span style="font-weight: bold;"&gt;In print preview…&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt][P] &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Print dialog box &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]U &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Page Setup dialog box &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]O &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Set to portrait orientation &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]L &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Set to landscape orientation &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]E &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Toggle headers and footers on and off &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]S &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Change print size &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]N &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Show multiple pages &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]1 &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;View full page &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]W &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;View page width &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]C &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Close Print Preview &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="3" style="border-style: solid none; border-color: rgb(255, 255, 255); border-width: 3px 1px; background-color: rgb(13, 115, 186);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="color: rgb(255, 255, 255);font-size:100%;" &gt;&lt;span style="font-weight: bold;"&gt;Menu access&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]M &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Home menu &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]R &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Print menu &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]J &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Tools menu &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]O &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open RSS menu &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]L &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Help menu &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="3" style="border-style: solid none; border-color: rgb(255, 255, 255); border-width: 3px 1px; background-color: rgb(13, 115, 186);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="color: rgb(255, 255, 255);font-size:100%;" &gt;&lt;span style="font-weight: bold;"&gt;Favorites, history, feeds&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt;  &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]D &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Add current page to Favorites &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]B &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Organize Favorites dialog box &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt] Up arrow or Down arrow &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Move selected item up or down list in Organize Favorites dialog box &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]C &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Favorites Center &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]I &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Favorites Center with favorites displayed (Add [Shift] to pin the list &lt;/span&gt;&lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;open) &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]H &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Favorites Center with history displayed (Add [Shift] to pin the list open) &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Ctrl]J &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Open Favorites Center with feeds displayed (Add [Shift] to pin the list open) &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]Z &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Display Add To Favorites menu  &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]I &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Display all feeds in feed view &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid solid none; border-color: rgb(255, 255, 255); border-width: 3px 3px 3px 1px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]M &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none solid solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 3px 3px; background-color: rgb(243, 243, 243);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Mark feed as read in feed view &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="border-style: solid solid none none; border-color: rgb(255, 255, 255); border-width: 3px 3px 1px 1px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;[Alt]S &lt;/span&gt;&lt;/p&gt; &lt;/td&gt; &lt;td style="border-style: solid none none solid; border-color: rgb(255, 255, 255); border-width: 3px 1px 1px 3px; background-color: rgb(230, 230, 230);"&gt; &lt;p style="margin-bottom: 8px; margin-top: 8px;"&gt; &lt;span style="font-weight: normal; color: rgb(0, 0, 0);font-size:100%;" &gt;Jump to Search box in feed view &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-2124220473090415043?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/2124220473090415043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=2124220473090415043' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2124220473090415043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/2124220473090415043'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/04/internet-explorer-7-keyboard-shortcuts.html' title='Internet Explorer 7 Keyboard shortcuts'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-728749717259751358</id><published>2007-03-21T16:04:00.001+05:30</published><updated>2007-12-13T09:10:09.053+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>How to Debug Javascripts - Part1 (Internet Explorer)</title><content type='html'>If you are involved with web development then at some point you may wanted to debug Javascripts that you put in to your web pages. The problem is how to debug them. When I first started using Javascripts few month back I didn't knew a debugger to use with Javascripts. So what I did was to put alerts every where to find out the problem. But that was not a good method. So I did a research on Javascript debuggers. After few minutes of Google search I found few good tool that can be used to debug Javascripts. With this post I'll show you how debug in Internet Explorer, and later with another post I'll explain how to debug with Firefox.&lt;br /&gt;&lt;br /&gt;With IE you can use &lt;span style="font-weight: bold;"&gt;Microsoft Script debugger&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;Visual Studio&lt;/span&gt; as debuggers.&lt;br /&gt;&lt;br /&gt;You can download it form &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=2F465BE0-94FD-4569-B3C4-DFFDF19CCD99&amp;displaylang=en"&gt;Microsoft website&lt;/a&gt;.&lt;br /&gt;To use the debugger, first you have to enable script debugging. Go to tools- options- tab. Make sure that “Disable Script Debugging (other)” and “Disable Script Debugging (Internet Explorer) are NOT checked.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/RgEMHR8GHiI/AAAAAAAAALM/77kzIOn6Nw4/s1600-h/options.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_tedTUODQRM0/RgEMHR8GHiI/AAAAAAAAALM/77kzIOn6Nw4/s320/options.JPG" alt="" id="BLOGGER_PHOTO_ID_5044326376845745698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now you are ready to debug. Use View- View- Debugger- at next statement to run Debugger. This will break the execution on the next Javascript call and will open the debugger.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_tedTUODQRM0/RgEM8x8GHlI/AAAAAAAAALk/6UO8MJLImpc/s1600-h/view.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_tedTUODQRM0/RgEM8x8GHlI/AAAAAAAAALk/6UO8MJLImpc/s320/view.JPG" alt="" id="BLOGGER_PHOTO_ID_5044327295968747090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alternately, you can put a line like this in your Javascript code.&lt;br /&gt;&lt;em style="color: rgb(51, 51, 255); font-weight: bold;"&gt;debugger;&lt;/em&gt;&lt;br /&gt;It will create a breakpoint automatically.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_tedTUODQRM0/RgEMHB8GHgI/AAAAAAAAAK8/1MiWNEd-IMc/s1600-h/debug1.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_tedTUODQRM0/RgEMHB8GHgI/AAAAAAAAAK8/1MiWNEd-IMc/s320/debug1.JPG" alt="" id="BLOGGER_PHOTO_ID_5044326372550778370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If any exceptions occurred in javascript execution IE will show a message asking whether to debug or not.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/RgEMHR8GHhI/AAAAAAAAALE/2aFvExBdMR8/s1600-h/error.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_tedTUODQRM0/RgEMHR8GHhI/AAAAAAAAALE/2aFvExBdMR8/s320/error.JPG" alt="" id="BLOGGER_PHOTO_ID_5044326376845745682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Select yes. Then it will display possible set of debuggers.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/RgEMHR8GHjI/AAAAAAAAALU/eUry52FTR3U/s1600-h/selectDebuger.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_tedTUODQRM0/RgEMHR8GHjI/AAAAAAAAALU/eUry52FTR3U/s320/selectDebuger.JPG" alt="" id="BLOGGER_PHOTO_ID_5044326376845745714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now you are debugging.  Just step into as you do in any 0ther debugger.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_tedTUODQRM0/RgEMHh8GHkI/AAAAAAAAALc/zrmBis5UUao/s1600-h/tools.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_tedTUODQRM0/RgEMHh8GHkI/AAAAAAAAALc/zrmBis5UUao/s320/tools.JPG" alt="" id="BLOGGER_PHOTO_ID_5044326381140713026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can use command window to to execute codes. From this little window you can easily check and re-assign values (at "run-time") to any of the variables that have been defined. Launch it from the View menu of the debugger or by clicking the button on the very right-hand-side of the toolbar.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_tedTUODQRM0/RgEaEh8GHmI/AAAAAAAAALs/AP1inq00K1I/s1600-h/command.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_tedTUODQRM0/RgEaEh8GHmI/AAAAAAAAALs/AP1inq00K1I/s320/command.JPG" alt="" id="BLOGGER_PHOTO_ID_5044341722763894370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I created a webpage which contains buggy Javascript. If you wish you can use that to test the debugging.&lt;br /&gt;&lt;a href="http://sandarenu.googlepages.com/javascriptdebugg"&gt;http://sandarenu.googlepages.com/javascriptdebugg&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-728749717259751358?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/728749717259751358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=728749717259751358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/728749717259751358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/728749717259751358'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/03/how-to-debug-javascripts-part1-internet.html' title='How to Debug Javascripts - Part1 (Internet Explorer)'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_tedTUODQRM0/RgEMHR8GHiI/AAAAAAAAALM/77kzIOn6Nw4/s72-c/options.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-21984073127986466</id><published>2007-03-20T12:29:00.001+05:30</published><updated>2007-03-20T12:35:14.446+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips and Tricks'/><title type='text'>Yahoo Mail Tips and Tricks</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;a href="http://mail.yahoo.com/" set="yes"&gt;&lt;img src="http://www.blogsmithmedia.com/www.downloadsquad.com/media/2007/03/yahoomailbeta.gif" alt="Yahoo Mail Beta" align="right" border="0" height="28" hspace="4" vspace="4" width="170" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;While I was browsing the web today I came acrose an interesting blog post on Yahoo mail beta tricks. I'm not using my yahoo mail regularly since internet connection slowness. It is a headaches to use  new beta UI with a slow internet connection. It takes lots of time to load a email. But it a nice UI, with very nice use of AJAX.&lt;br /&gt;&lt;br /&gt;If you are using Yahoo mail beta this will be a good help to improve your efficiency.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.downloadsquad.com/2007/03/16/top-11-yahoo-mail-tips-and-tricks/" target="_blank"&gt;Top 11 Yahoo Mail Tips and Tricks  /&amp;gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="tag_list"&gt;Technorati Tags: &lt;span class="tags"&gt;&lt;a href="http://technorati.com/tag/Yahoo+Mail+Beta" rel="tag"&gt;Yahoo Mail Beta&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-21984073127986466?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/21984073127986466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=21984073127986466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/21984073127986466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/21984073127986466'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/03/yahoo-mail-tips-and-tricks.html' title='Yahoo Mail Tips and Tricks'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-4708279657258352866</id><published>2007-03-19T10:29:00.000+05:30</published><updated>2007-03-19T11:16:09.592+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogger Hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>New Features to My Blog</title><content type='html'>I  added  few new features to my blog. I changed my label section in to Tag Cloud.  This was a feature I wanted to add to my blog for some time. I finally managed to find a method to do that. I had to modify my template for that. I found the code and the instruction to do it in &lt;a href="http://phydeaux3.blogspot.com/2006/09/code-for-beta-blogger-label-cloud.html" target="_blank"&gt;phydeaux3&lt;/a&gt; blog.  He has given all the instructions on how to do it. I just copied and pasted the code.....&lt;br /&gt;Here's the result, Nice ha...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_tedTUODQRM0/Rf4fLyPqbMI/AAAAAAAAAKo/PpK2hvuR6E8/s1600-h/Label.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_tedTUODQRM0/Rf4fLyPqbMI/AAAAAAAAAKo/PpK2hvuR6E8/s320/Label.JPG" alt="" id="BLOGGER_PHOTO_ID_5043502920028024002" border="0" /&gt;&lt;/a&gt;Other new feature I added was showing related post user go to a specific post in my blog. Related items are taken according to the tags given to that post. You can find the method to do it from &lt;a href="http://hoctro.blogspot.com/2007/01/killer-hack-related-articles-by-labels.html" target="_blank"&gt;Hoctro's blog.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_tedTUODQRM0/Rf4fMCPqbNI/AAAAAAAAAKw/hHvUxCX3TmY/s1600-h/related.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_tedTUODQRM0/Rf4fMCPqbNI/AAAAAAAAAKw/hHvUxCX3TmY/s320/related.JPG" alt="" id="BLOGGER_PHOTO_ID_5043502924322991314" border="0" /&gt;&lt;/a&gt;Try these hacks and enjoy......&lt;br /&gt;&lt;br /&gt;&lt;div class="tag_list"&gt;Technorati Tags: &lt;span class="tags"&gt;&lt;a href="http://technorati.com/tag/Blogger+Hacks" rel="tag"&gt;Blogger Hacks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-4708279657258352866?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/4708279657258352866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=4708279657258352866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4708279657258352866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/4708279657258352866'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/03/new-features-to-my-blog.html' title='New Features to My Blog'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_tedTUODQRM0/Rf4fLyPqbMI/AAAAAAAAAKo/PpK2hvuR6E8/s72-c/Label.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6247569372820953475</id><published>2007-02-28T12:28:00.000+05:30</published><updated>2007-02-28T12:36:20.174+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal'/><title type='text'>End of the Internship period</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_tedTUODQRM0/ReUomJDoQfI/AAAAAAAAAKU/gvC24nvOZ8g/s1600-h/hurdles.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_tedTUODQRM0/ReUomJDoQfI/AAAAAAAAAKU/gvC24nvOZ8g/s320/hurdles.gif" alt="" id="BLOGGER_PHOTO_ID_5036476394015048178" border="0" /&gt;&lt;/a&gt;&lt;br /&gt; For last 6 months I was working as an intern at Navantis IT (Pvt.) &lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;Rajagiriya&lt;/st1:city&gt;, &lt;st1:country-region st="on"&gt;Sri Lanka&lt;/st1:country-region&gt;&lt;/st1:place&gt;. My internship ended last Thursday (22nd Feb). It was very exciting and challenging time period. It is at Navantis that I learned what is actually being a software developer means. At the university we learn lot of theory; in last 6 month I learned how those theories are actually used in the industry. I learned a lot about .Net, ASP web application development and MSSQL 2005 during my internship.&lt;br /&gt;When I first came here I had considerable knowledge about .Net and ASP, but I was mainly using the nice GUI of VS2005 to do all the designs. But the project I was put in to at Navantis required to all the web controls as Custom server controls. We have to cut code for every thing, No drag and drops... At the beginning it was difficult but after creating few custom controls it became much easier. Because of that I learned a lot about C# and .Net controls.&lt;br /&gt;We had a excellent team at Navantis. Everybody was very friendly and helpful. I have to thank everyone at Navantis for all support given. Our next semester (Level3 Semester2) is gong to be staring in mid April, that’s two more months. Till then I'm doing part time at Navantis, 3 days per week. I'm planning to spend other time on Patrick’s Project. And I have to prepare a report about our internship as well.&lt;br /&gt;So I guess there won't be any spare time to relax.&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6247569372820953475?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6247569372820953475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6247569372820953475' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6247569372820953475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6247569372820953475'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/02/end-of-internship-period.html' title='End of the Internship period'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_tedTUODQRM0/ReUomJDoQfI/AAAAAAAAAKU/gvC24nvOZ8g/s72-c/hurdles.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-23257774.post-6536993256279845709</id><published>2007-02-20T11:11:00.000+05:30</published><updated>2007-03-14T13:41:36.980+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Determining the ViewState Size</title><content type='html'>&lt;p class="MsoNormal"&gt;ViewState is one of the 3 way that used by ASP2.0 to retain state information about the web page. ViewState allows the state of objects (serializable) to be stored in a hidden field on the page.  It is transported to the client and back to the server, and is not stored on the server or any other external source. I’m not going to go deep in to what is ViewState or how to use it. You can find more about &lt;a href="http://aspalliance.com/articleViewer.aspx?aId=135&amp;pId=" target="_blank"&gt;ViewState here&gt;&gt;&lt;/a&gt;.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Since ViewState is kept in the webpage itself, it can become a performance bottleneck. &lt;span style=""&gt; &lt;/span&gt;If the ViewState is too large then the roundtrip delay for postback can increase significantly, especially if the user is having slow internet link. &lt;span style=""&gt; &lt;/span&gt;So it would be wonderful if we can find out the size of the ViewState during the testing phase of the application. So we can get relevant actions to improve the performance. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;To do that create a class (I named it as MainPageBase) class that all the other pages in the application need to inherit.  The code for the class is as shown below.&lt;br /&gt;&lt;/p&gt;&lt;span style="font-family:Courier New;"&gt;     &lt;span class="c2"&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;public&lt;/b&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;class&lt;/b&gt;&lt;span&gt; EmsBasePage : System.Web.UI.Page&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;br /&gt;&lt;span class="style=" 000000=""&gt;{&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;i style="color: rgb(128, 128, 128);"&gt;/// &amp;lt;summary&amp;gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;i style="color: rgb(128, 128, 128);"&gt;/// Get the page name of the current page.&lt;/i&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;i style="color: rgb(128, 128, 128);"&gt;/// &amp;lt;/summary&amp;gt;&lt;/i&gt;&lt;br /&gt;&lt;i style="color: rgb(128, 128, 128);"&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/i&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;private&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;string&lt;/b&gt;&lt;span&gt; GetCurrentPageName()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;string&lt;/b&gt;&lt;span&gt; path = System.Web.HttpContext.Current.Request.Url.AbsolutePath;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;if&lt;/b&gt;&lt;span&gt; (!String.IsNullOrEmpty(path))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            System.IO.FileInfo oInfo = &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;new&lt;/b&gt;&lt;span&gt; System.IO.FileInfo(path);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;string&lt;/b&gt;&lt;span&gt; name = oInfo.Name;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;return&lt;/b&gt;&lt;span&gt; name;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;else&lt;/b&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;return&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;span class="c6"&gt;""&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;protected&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;override&lt;/b&gt;&lt;span&gt; &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;void&lt;/b&gt;&lt;span&gt; SavePageStateToPersistenceMedium(&lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;object&lt;/b&gt;&lt;span&gt; state)&lt;/span&gt;&lt;br /&gt;   &lt;span&gt;        {&lt;br /&gt;       &lt;strong&gt;              int &lt;/strong&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;viewStateSize = 0;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;base&lt;/b&gt;&lt;span&gt;.SavePageStateToPersistenceMedium(state);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        LosFormatter format = &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;new&lt;/b&gt;&lt;span&gt; LosFormatter();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        StringWriter writer = &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;new&lt;/b&gt;&lt;span&gt; StringWriter();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        format.Serialize(writer, state);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        viewStateSize = writer.ToString().Length;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;b style="color: rgb(0, 0, 255);"&gt;string&lt;/b&gt;&lt;span&gt; pageName = GetCurrentPageName();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        HttpContext.Current.Trace.Warn(pageName + &lt;/span&gt;&lt;span class="c6"&gt;": The ViewState Size is:"&lt;/span&gt;&lt;span&gt;, viewStateSize.ToString());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;It writes the size of the ViewState to the Trace.&lt;span style=""&gt;  &lt;/span&gt;To view the Trace you have to enable it first. &lt;span style=""&gt;&lt;/span&gt;To do that adds following line of code within the &lt;system.web&gt; section in the web.config file.&lt;/system.web&gt;&lt;/p&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;trace enabled=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"true"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; pageOutput=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"false"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; requestLimit=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"40"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt; localOnly=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"false"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;That’s all. Compile the code and do the testing of your application. Finally to view the results of what we did open the Trace viewer(Trace.axd page). For example http://yourApplicationroot/Trace.axd.&lt;/p&gt;&lt;div class="tag_list"&gt;Technorati Tags: &lt;span class="tags"&gt;&lt;a href="http://technorati.com/tag/ASP" rel="tag"&gt;ASP&lt;/a&gt;, &lt;a href="http://technorati.com/tag/C#" rel="tag"&gt;C#&lt;/a&gt;, &lt;a href="http://technorati.com/tag/Programming" rel="tag"&gt;Programming&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;hr /&gt;  &lt;a href="http://sandarenu.blogspot.com"&gt;Sandarenu's Blog&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/23257774-6536993256279845709?l=sandarenu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sandarenu.blogspot.com/feeds/6536993256279845709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=23257774&amp;postID=6536993256279845709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6536993256279845709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/23257774/posts/default/6536993256279845709'/><link rel='alternate' type='text/html' href='http://sandarenu.blogspot.com/2007/02/determining-viewstate-size.html' title='Determining the ViewState Size'/><author><name>Chathurika Sandarenu</name><uri>https://profiles.google.com/101209916173307104239</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-_GuibgE_8eA/AAAAAAAAAAI/AAAAAAAAAAA/NpAoJPoA120/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
