<?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-8569806</id><updated>2012-01-30T14:27:17.651+05:30</updated><category term='rubyconf mahaswami ruby'/><category term='jruby openssl technology programming'/><category term='jruby gems technology programming'/><category term='iphone tarabalam technology ruby rhodes'/><category term='glassfish mina'/><title type='text'>Karthik - Blogging my thoughts</title><subtitle type='html'>My two cents worth of thoughts and experience</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.karthiks.in/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8569806.post-7750369132078603065</id><published>2011-01-19T21:54:00.001+05:30</published><updated>2011-01-19T21:58:39.642+05:30</updated><title type='text'>Ubuntu 10.10 Upgrade - Logs out instead of Shutdown</title><content type='html'>I am like most of the Ubuntu favorites...awaiting for half-yearly upgrades from Canonical and making sure all my systems are up-to-date.&lt;br /&gt;&lt;br /&gt; However my happiness was short lived after upgrading to Maverick(Ubuntu 10.10).  Whenever I tried to shutdown or restart using the button in the bottom right corner, all that happens is a log out and back to login screen!!!  However, when I call shutdown from terminal or from login screen, it behaves as expected!&lt;br /&gt;&lt;br /&gt;Tried all sorts of suggestions after googling for over 3 months now...and YES! I managed to find a solution for my problem TODAY...feeling so relieved...When I executed "ck-list-sessions" in terminal, it showed 2 active sessions, one is mine and the other one is "hsqldb-server".&lt;br /&gt;&lt;br /&gt; I wondered why is HQLDB Server creating a session???  And even if so, why should that prevent the shutdown from happening...that too only when I click the shutdown button.&lt;br /&gt;&lt;br /&gt; No idea.So what did I do....obviously, in my case, I did not require "hsqldb server", so I simply uninstalled the same...and viola! my problem vanished!Hope this will help someone who also is going thru what I did in the last 3 months or so :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-7750369132078603065?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/7750369132078603065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=7750369132078603065' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/7750369132078603065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/7750369132078603065'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2011/01/ubuntu-1010-upgrade-logs-out-instead-of.html' title='Ubuntu 10.10 Upgrade - Logs out instead of Shutdown'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-1868365852299660816</id><published>2010-10-08T10:03:00.005+05:30</published><updated>2010-10-08T21:32:48.480+05:30</updated><title type='text'>Ruby Regexp Unescape</title><content type='html'>May not be a big deal to write it yourself...but I wrote this and was quite useful, where I had to do un-escaping of a Regex Pattern for some reasons...&lt;div class="syntax"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Regexp&lt;/span&gt;&lt;br /&gt;  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;unescape&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;source&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;escape_on&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;br /&gt;    &lt;span class="n"&gt;unescaped_string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;inject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;char&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;br /&gt;      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;char&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="se"&gt;\\&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;escape_on&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;escape_on&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;escape_on&lt;/span&gt;&lt;br /&gt;      &lt;span class="k"&gt;else&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;char&lt;/span&gt;&lt;br /&gt;        &lt;span class="n"&gt;escape_on&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;&lt;br /&gt;      &lt;span class="k"&gt;end&lt;/span&gt;&lt;br /&gt;      &lt;span class="n"&gt;r&lt;/span&gt;&lt;br /&gt;    &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;br /&gt;  &lt;span class="k"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="k"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-1868365852299660816?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/1868365852299660816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=1868365852299660816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/1868365852299660816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/1868365852299660816'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2010/10/ruby-regexp-unescape.html' title='Ruby Regexp Unescape'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-6544983013833963842</id><published>2010-09-28T19:05:00.001+05:30</published><updated>2010-10-13T07:27:16.903+05:30</updated><title type='text'>Enable Disable Touchpad in Ubuntu with a Hot key</title><content type='html'>I have got this new Dell Vostro n3500 Laptop, which is really a solid machine.  I am very happy to have made this choice.&lt;br /&gt;&lt;br /&gt;As a hardcore UBUNTU User, I always liked to have any feature available in Windows to be made available in Ubuntu as well :)...&lt;br /&gt;&lt;br /&gt;Recently, I realized that the "Fn+F6" shortcut to disable the Touchpad does not work... I am sure many of you would have encountered the annoying behavior of touchpad moving your cursor to some place while you are typing something...&lt;br /&gt;&lt;br /&gt;The most ideal solution I would have liked is that, when I connect an external mouse, the touchpad should automatically be disabled.  Apparently, I did not find any solution for this in the current version of Ubuntu 10.04(Lucid Lynx).  Google did not help me either.&lt;br /&gt;&lt;br /&gt;So, the next thing is, is there any way I can tell Ubuntu to disable touchpad when I start typing.  Yes, there is such an option in the "Mouse Preferences".  But that is not working consistently atleast for me.&lt;br /&gt;&lt;br /&gt;So, now this is what I did.  I wrote a small Ruby script(I am a big big fan of Ruby) that can toggle the Touchpad ON and OFF.&lt;br /&gt;&lt;br /&gt;Now, the next thing is to make it hooked to a keyboard shortcut like the one in Windows...Fn+F6.  Apparently, I also found that I cannot assign the combination of "Fn" Key and "F6" to the Keyboard shortcut in Ubuntu.  So for now, I have simply assigned "F6" key for this toggle switch tool.&lt;br /&gt;&lt;br /&gt;The script is not a big deal, but in any case, its here...&lt;br /&gt;&lt;br /&gt;&lt;div class=syntax&gt;&lt;div class="highlight"&gt;&lt;pre&gt;touch_pad_setting = `synclient -l | grep TouchpadOff`&lt;br /&gt;new_touch_pad_setting = touch_pad_setting =~ /1/ ? &amp;quot;0&amp;quot; : &amp;quot;1&amp;quot;&lt;br /&gt;`synclient TouchpadOff=#{new_touch_pad_setting}`&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-6544983013833963842?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/6544983013833963842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=6544983013833963842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/6544983013833963842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/6544983013833963842'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2010/09/enable-disable-touchpad-in-ubuntu-with.html' title='Enable Disable Touchpad in Ubuntu with a Hot key'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-7188795243389223196</id><published>2010-04-30T10:46:00.002+05:30</published><updated>2010-04-30T10:47:32.740+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='jruby gems technology programming'/><title type='text'>Enforce JRuby to use gems inside the JRuby complete and ignore the local gem repository</title><content type='html'>Most of us are aware that Gems can be bundled as part of JRuby Complete, and Jruby will automatically load these gems from the jruby-complete.jar happily.&lt;br /&gt;&lt;br /&gt;But do you know that, if you had a local gem repository set, jruby will ALWAYS attempt load the gems ONLY from your local gem repository?  And ignore the gems bundled inside the jruby-complete.jar?  &lt;br /&gt;&lt;br /&gt;Well, we are aware of that, but it was quite annoying when we find that some code that worked happily in our development environment does not work in production, bcos the codes were referring to some gems that were available only in our development environment.&lt;br /&gt;&lt;br /&gt;To ensure JRuby completes ignores our local gem repository, we used to add the following line in our deployment scripts before launching JRuby.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;unset GEM_HOME&lt;/blockquote&gt;&lt;br /&gt;We are trying to understand the principle behind using the local gem repository even though certain gems are bundled inside the Jruby Complete.&lt;br /&gt;&lt;br /&gt;Some thoughts on how Jruby should choose the gem repository&lt;br /&gt;1. Whenever jruby is launched from the jar file with embedded ruby home, then always assume to use the embedded gem home and ignore the local gem repository?&lt;br /&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;br /&gt;2. If atleast one gem is bundled in jruby-complete, then can jruby assume the developer wants to use the particular gem in his application and hence ignore the local gem repo and set the gem repo as the embedded gems location inside jar?&lt;br /&gt;&lt;br /&gt;We are unable to come to a conclusion on what is the sane approach to handle the situation.&lt;br /&gt;&lt;br /&gt;For now, we have patched jruby to go thru first approach.  This way, I am completely sure that when jruby is launched from jar, my local gem repository is not coming in the way. And I dont have to remember to "unset GEM_HOME" in all my deployment scripts to tell Jruby to look for gems embedded in the jar file.&lt;br /&gt;&lt;br /&gt;Hope this may be of some help for people who have had faced this issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-7188795243389223196?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/7188795243389223196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=7188795243389223196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/7188795243389223196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/7188795243389223196'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2010/04/enforce-jruby-to-use-gems-inside-jruby.html' title='Enforce JRuby to use gems inside the JRuby complete and ignore the local gem repository'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-4469898758152773283</id><published>2010-04-30T10:30:00.001+05:30</published><updated>2010-04-30T10:32:13.095+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='jruby openssl technology programming'/><title type='text'>JOpenSSL gem inside JRuby Complete</title><content type='html'>We had faced quite a lot of issues trying to embed JOpenSSL inside jruby-complete.jar.&lt;br /&gt;&lt;br /&gt;We used to get an error "Uninitialized constant OpenSSL::Digest::OPENSSL_VERSION_NUMBER" with the following stack trace :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;NameError: uninitialized constant OpenSSL::Digest::OPENSSL_VERSION_NUMBER&lt;br /&gt;from file:/home/msuser1/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/gems/1.8/gems/jruby-openssl-0.6/lib/openssl/cipher.rb:28:in `const_missing'&lt;br /&gt;from file:/home/msuser1/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/gems/1.8/gems/jruby-openssl-0.6/lib/openssl/digest.rb:23&lt;br /&gt;from file:/home/msuser1/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/gems/1.8/gems/jruby-openssl-0.6/lib/openssl/digest.rb:31:in `require'&lt;br /&gt;from file:/home/msuser1/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'&lt;br /&gt;from file:/home/msuser1/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/gems/1.8/gems/jruby-openssl-0.6/lib/openssl.rb:24&lt;br /&gt;from file:/home/msuser1/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/gems/1.8/gems/jruby-openssl-0.6/lib/openssl.rb:31:in `require'&lt;br /&gt;from file:/home/msuser1/jruby-complete-1.3.1.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;You can find &lt;a href="http://blog.headius.com"&gt;Charles'&lt;/a&gt; explanation &lt;a href="http://old.nabble.com/jruby-openssl-gem-within-a-java-web-start-deployment-td27417066.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What we did is the following :&lt;br /&gt;&lt;br /&gt;1. Add the Jruby-openssl gem inside the jruby-complete.jar bundle like adding any other gems(rspec, rake etc.)&lt;br /&gt;2. Extract the JRuby Complete Jar in a fresh folder&lt;br /&gt;3. In addition to this, extract the contents of jopenssl.jar directly under the root folder. (jopenssl.jar is located inside the lib folder of the jruby-openssl gem).&lt;br /&gt;4. Re-create the jruby-complete.jar from this exploded folder.&lt;br /&gt;&lt;br /&gt;Thats about it, you are all set to use openssl inside jruby without any issue.&lt;br /&gt;&lt;br /&gt;Please note, at the time of writing this post, I was using JRuby 1.3.1 and Jopenssl 0.6.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-4469898758152773283?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/4469898758152773283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=4469898758152773283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/4469898758152773283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/4469898758152773283'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2010/04/jopenssl-gem-inside-jruby-complete.html' title='JOpenSSL gem inside JRuby Complete'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-8225795579661368556</id><published>2010-04-03T10:34:00.006+05:30</published><updated>2010-04-05T11:21:25.648+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone tarabalam technology ruby rhodes'/><title type='text'>Another iPhone App on the pipeline - Tarabalam</title><content type='html'>After developing an iPhone app called Panchangam Lite and seeing its success rate in terms of increasing number of downloads day after day and receiving positive feedback for the app, we were motivated quite a lot and it made us realize that there are lots of people around the world looking for such cool and useful tools in their iPhone...And we thought lets develop another app for such people in the similar lines...hence an app named "Perfect Day (Tarabalam)" is born.&amp;nbsp; The app should be available in AppStore very soon :)&lt;br /&gt;&lt;br /&gt;Ok, then here goes some notes about "What is Tarabalam ?" and why and how should it be used?&lt;br /&gt;&lt;br /&gt;&lt;embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&amp;captions=1&amp;hl=en_US&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fkarthikvkrishnan%2Falbumid%2F5456507257174314129%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Importance of Muhurtha&lt;/b&gt; (Quoted from the well known astrologer BV Raman)&lt;br /&gt;&lt;br /&gt;The value of Time is inestimable. All objects in nature are produced in Time, developed in Time and destroyed in Time. The truth of these statements requires no further proof. It stands unchallenged.&lt;br /&gt;&lt;br /&gt;Each moment has got its own potency and as Carl Jung says "whatever is born or done this moment of time has the qualities of this moment of time". Hence the moment of birth or the moment at which we elect to do an important act is not certainly an insignificant epoch. Cosmic radiations pouring at the moment on the earth from outer space and coming from various stars and planets act on our brain cells which take up these cosmic radiations which are transformed into vital electricity. It must be noted that in all undertakings invisible energies are set in motion by our words, deeds, thoughts and of course by our actions. You may call these invisible forces as electric, ethereal or electro-magnetic or cosmic radiations. As man himself is an electrical body discharging different kinds of electrical energies, his success and failure are simply matters of attraction and repulsion between himself and the objects with which he has to deal in his day-to-day activities.&lt;br /&gt;&lt;br /&gt;Muhurtha could therefore be defined as that precious moment when the vibrations radiated by man are altered to a specific wavelength capable of entering resonance with the radiations of the same vibratory rate coming from other planets and stars.&lt;b&gt;&lt;br /&gt;&lt;br /&gt;What is Tarabalam?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Various strengths are checked for muhurtham. Tarabalam, Chandrabalam, Gurubalam, Suryabalam, Lagnam shuddhi, etc... As outlined in following mantra. When we worship lakshmipati sri narayana, he will make everything right. He is tithi, vaara, nakshatra, yoga, karana. Hence, worshipping him will make everything right, remove all dosha.&lt;br /&gt;&lt;br /&gt;तदेव लग्नं सुदिनं तदेव ताराबलं चंद्रबलं तदेव। विद्या बलं दैवबलं तदेव लक्ष्मीपतेः तेंघ्रिऽयुगं स्मरामि॥&lt;br /&gt;&lt;br /&gt;tadeva lagnaṁ sudinaṁ tadeva tārābalaṁ caṁdrabalaṁ tadeva | vidyā balaṁ daivabalaṁ tadeva lakṣmīpateḥ teṁghri'yugaṁ smarāmi&lt;br /&gt;&lt;br /&gt;Tarabalam is a strength provided by stars to your Janma / Birth star. Nakshatra/Star of moon at the time of your birth is known as Birth star. Moon's daily star / Nakshatra position needs to be favourable for casting any muhurtha. Moon takes roughly 27 days to circle around earth and passes through 27 nakshatras. Daily motion of moon from your janma nakshatra decides this strength. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;What does this mobile app do?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In order to increase the chances of success in any endeavor, this mobile app helps the user to pick days / times to perform the endeavor when Tarabalam is very strong. It calculates Tarabalam for 400 cities around the world for the year 2010. The timings are daylight adjusted where-ever applicable. You can also keep a list of your family / friends with their birth star and easily select Tarabalam for the person with just a click of the button.&lt;br /&gt;&lt;br /&gt;Tarabalam is available for year 2010.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-8225795579661368556?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/8225795579661368556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=8225795579661368556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/8225795579661368556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/8225795579661368556'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2010/04/another-iphone-app-on-pipeline.html' title='Another iPhone App on the pipeline - Tarabalam'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-3344283049125399618</id><published>2010-03-23T14:59:00.007+05:30</published><updated>2010-03-25T16:51:39.907+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='rubyconf mahaswami ruby'/><title type='text'>Ruby Conference 2010 - Bangalore</title><content type='html'>Feels good to be part of the first Ruby Conference of India, which was held in Bangalore on 20th &amp;amp; 21st March, 2010.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And it feels all the more glad to see our company being one of the sponsors to this event.  Having got so much from Ruby and the Open source world, this was a fantastic opportunity for us to give back something to the community.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Got to meet and spend time with some special people whom I was looking forward to meet for quite some time now.  Got a chance to meet some of the top developers of the JRuby world -  &lt;a href="http://olabini.com/blog/"&gt;Ola Bini&lt;/a&gt;, &lt;a href="http://blog.nicksieger.com/"&gt;Nick Sieger&lt;/a&gt; and not to mention &lt;a href="http://blog.arungupta.me/"&gt;Arun Gupta&lt;/a&gt; - lead developer of Glassfish.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Being one of the developers who have used the combination of Glassfish, JRuby and Rails in our enterprise applications, Arun Gupta captured a short little video about our experiences on working on this platform combination.  Check out the video &lt;a href="http://blog.arungupta.me/2010/03/mahaswami-software-enjoys-the-perfect-marriage-of-jruby-rails-glassfish/"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The highlight of this event was the talk from the father of the Ruby Language Matz, who gave a wonderful talk via video conference from Japan.  It was very special for Ruby developers like me.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_HlWLKVL9NGU/S6tGXcxw89I/AAAAAAAAEK8/CV5jKTf0tD4/s1600/IMG_7511.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_HlWLKVL9NGU/S6tGXcxw89I/AAAAAAAAEK8/CV5jKTf0tD4/s400/IMG_7511.JPG" style="cursor: move;" width="400" /&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_HlWLKVL9NGU/S6tF_qAD58I/AAAAAAAAEKs/uDZPiXMSIwc/s1600/IMG_7516.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_HlWLKVL9NGU/S6tF_qAD58I/AAAAAAAAEKs/uDZPiXMSIwc/s400/IMG_7516.JPG" style="cursor: move;" width="400" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_HlWLKVL9NGU/S6tGwkBl97I/AAAAAAAAELE/MESgkWr6dHc/s1600/IMG_7518.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_HlWLKVL9NGU/S6tGwkBl97I/AAAAAAAAELE/MESgkWr6dHc/s400/IMG_7518.JPG" style="cursor: move;" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-3344283049125399618?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/3344283049125399618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=3344283049125399618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/3344283049125399618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/3344283049125399618'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2010/03/ruby-conference-2010-bangalore.html' title='Ruby Conference 2010 - Bangalore'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HlWLKVL9NGU/S6tGXcxw89I/AAAAAAAAEK8/CV5jKTf0tD4/s72-c/IMG_7511.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-9210927300076862338</id><published>2010-02-27T23:31:00.004+05:30</published><updated>2010-02-27T23:44:00.354+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='glassfish mina'/><title type='text'>Getting MINA 2.0 to work peacefully in Glassfish</title><content type='html'>This weekend, I had some good opportunities to work on some cool things, one of which is build a Socket Server using Apache Mina 2.0(Release Candidate Version)...&lt;br /&gt;Apparently, my project requires running two Socket Servers inside Glassfish v2, one to receive incoming client requests and the other as a simulator to receive what my application churns out.&lt;br /&gt;&lt;br /&gt;I was happy to simply write a ServletContextListener which starts the Incoming Requests Socket Server in a separate Thread :).  No Problems, I could connect to the Socket Server and communicate happily.&lt;br /&gt;&lt;br /&gt;However, when I repeated the above steps to start the Simulator Socket Server(obviously listening in different port not conflicting with the previous Socket Server), server starts up fine.  However, the minute I try to start communicating from a Socket Client to this Socket Server, the socket server started throwing a whole bunch of NullPointerException in NioSocketAcceptor.accept() method.&lt;br /&gt;&lt;br /&gt;Why did this behavior not happen when I was running my first Socket Server but only happens with my second Socket Server.  As usual Google came to my rescue at the wee hours too ;-)&lt;br /&gt;&lt;br /&gt;I was told to add the following property to my Glassfish JVM&lt;br /&gt;&lt;blockquote&gt;-Dcom.sun.enterprise.server.ss.ASQuickStartup=false&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;Check this &lt;a href="http://old.nabble.com/MINA-and-Glassfish-td18767392.html"&gt;forum&lt;/a&gt; thread that helped me.  Apparently this seems to be a bug in Glassfish v2 and has been fixed in V3.  For Glassfish v2, the above property should help.&lt;br /&gt;&lt;br /&gt;Glassfish Bug Database links related to this issue&lt;br /&gt;Bug Id &lt;a href="http://https//glassfish.dev.java.net/issues/show_bug.cgi?id=3027"&gt;3027&lt;/a&gt;&lt;br /&gt;Bug Id &lt;a href="http://https://glassfish.dev.java.net/issues/show_bug.cgi?id=5321"&gt;5321&lt;/a&gt;&lt;br /&gt;I am still unable to understand why I did not have this problem when running first Socket Server inside Glassfish!!!  One of those questions that still remains unanswered !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-9210927300076862338?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/9210927300076862338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=9210927300076862338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/9210927300076862338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/9210927300076862338'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2010/02/getting-mina-20-to-work-peacefully-in.html' title='Getting MINA 2.0 to work peacefully in Glassfish'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-4195016739289563349</id><published>2010-02-23T17:57:00.003+05:30</published><updated>2010-04-09T14:34:42.068+05:30</updated><title type='text'>Glassfish Clustering - NullPointerException while creating JMS RA</title><content type='html'>Didn't I tell you that we had an exciting experience enabling cluster support for our applications using Glassfish.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even though the entire setup worked fine in our local environment, life was not the same when trying to deploy our application on Amazon EC2 Cloud.  We were greedy enough to pick a large machine with 8GB RAM and quad-core processors...and attempted to deploy our applications on the Glassfish Cluster there...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Our Server Instances would never start, failing with a whole bunch of NullPointerExceptions while creating JMS RA.  I gave up after googling for couple of hours.  And as usual, Venkat came to my rescue.  He took over from me and spent some midnight oil and figured out the trick...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We had to add an unsupported property to the JVM... &lt;blockquote&gt;com.sun.enterprise.connectors.system.enableAutoClustering=false&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Check out this &lt;a href="http://weblogs.java.net/blog/2008/06/24/debugging-jms-open-mq-issues-glassfish"&gt;link&lt;/a&gt; from Ramesh Parthasarathy for more useful information related to this issue&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-4195016739289563349?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/4195016739289563349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=4195016739289563349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/4195016739289563349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/4195016739289563349'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2010/02/glassfish-clustering.html' title='Glassfish Clustering - NullPointerException while creating JMS RA'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-2262444800010595379</id><published>2010-02-23T17:40:00.003+05:30</published><updated>2010-02-23T17:55:31.391+05:30</updated><title type='text'>Glassfish v2.1.1 Cluster Session Replication inconsistent behavior</title><content type='html'>Everytime I take up a task on adding Cluster Support to my j2ee application, the whole experience gets quite exciting with new kinds of challenges :)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the past, it was with Weblogic, Websphere etc...and this time it was Glassfish :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ok, like many of you, I managed to setup the cluster environment in glassfish and deployed "ClusterJsp" application to check out Session Failover, Load balancing etc...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What I found was that, if I keep refreshing the ClusterJsp page 5 to 10 times, my Session Id keeps changing...going to say that Glassfish lost my session somewhere in between these requests.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After googling and bing'ing a lots, I managed to find this &lt;a href="http://blogs.sun.com/memrep/entry/memory_replication_multi_threaded_concurrent"&gt;link&lt;/a&gt;, which explained the issue in detail.&lt;/div&gt;&lt;div&gt;Basically, we should add the following snippet in sun-web.xml&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&amp;lt;sun-web-app/&amp;gt;&lt;/div&gt;&lt;div&gt;  &amp;lt;session-config/&amp;gt;&lt;/div&gt;&lt;div&gt;    &amp;lt;session-manager persistence-type="replicated"/&amp;gt;&lt;/div&gt;&lt;div&gt;      &amp;lt;manager-properties/&amp;gt;&lt;/div&gt;&lt;div&gt;        &amp;lt;property name="relaxCacheVersionSemantics" value="true"//&amp;gt;&lt;/div&gt;&lt;div&gt;      &amp;lt;/manager-properties/&amp;gt;&lt;/div&gt;&lt;div&gt;    &amp;lt;/session-manager/&amp;gt;&lt;/div&gt;&lt;div&gt;    &amp;lt;session-properties//&amp;gt;&lt;/div&gt;&lt;div&gt;    &amp;lt;cookie-properties//&amp;gt;&lt;/div&gt;&lt;div&gt;  &amp;lt;/session-config/&amp;gt;&lt;/div&gt;&lt;div&gt;&amp;lt;/sun-web-app/&amp;gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;After adding the above entry, Glassfish started behaving as expected.&lt;/div&gt;&lt;div&gt;Now what I donot quite understand is, why was this behavior not made a default behavior !!!&lt;/div&gt;&lt;div&gt;I am sure there is a good reason for it, will update If I get to know.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-2262444800010595379?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/2262444800010595379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=2262444800010595379' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/2262444800010595379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/2262444800010595379'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2010/02/glassfish-v211-cluster-session.html' title='Glassfish v2.1.1 Cluster Session Replication inconsistent behavior'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-1928959181692992252</id><published>2010-01-11T15:32:00.002+05:30</published><updated>2010-01-11T15:39:36.515+05:30</updated><title type='text'>Our First iPhone App</title><content type='html'>After being an user of iPhone for past one year, we got inspired to write an app for iPhone :)&lt;br /&gt;&lt;br /&gt;We were thinking if we should write a simple Game or Puzzle Application, and then came this idea of publishing a Panchangam data for 2010.  Venkat came up with the data for all the days for year 2010 and we put together an application called "Panchangam Lite 2010".  The reason for this "Lite" is the fact that this Panchangam provides data (timings) specific to Bangalore.  We have plans to make a Panchangam Pro (?!) which allows you to choose the city and lookup the panchangam data...and even further, automatically figure out the location of the iPhone using the "Location service" of iPhone.&lt;br /&gt;&lt;br /&gt;And guess what, within 5 days of our launch of this app, we have found more than 300 downloads of this application.  We are all the more motivated to come out with more such useful apps in the near future :)&lt;br /&gt;&lt;br /&gt;Want to check out countries from where our app was downloaded till date...go to Venkat's blog post &lt;a href="http://blog.venkat.in/2010/01/interest-in-our-panchangam-lite-2010.html#links"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-1928959181692992252?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/1928959181692992252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=1928959181692992252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/1928959181692992252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/1928959181692992252'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2010/01/our-first-iphone-app.html' title='Our First iPhone App'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-2885733773715199627</id><published>2009-11-19T08:26:00.003+05:30</published><updated>2009-11-19T08:39:00.803+05:30</updated><title type='text'>Glassfish v2 Create Domain - Keytool Error:java.io.EOFException</title><content type='html'>Yesterday night, I had to work on some interesting stuff with my application's deployment tool.   We have a Ruby RakeFile to automatically create glassfish domain and deploy apps.  As I was running the tool creating domains atleast 10 times or so, suddenly at one stage I got an error while creating glassfish domain...the error was "keytool error: java.io.EOFException".   I thought some evil spirits has got into my laptop at the wee hours...hence gave up and went off to sleep.&lt;br /&gt;&lt;br /&gt;Today morning, I thought let me give this a fresh look...&lt;br /&gt;And I learnt that you can turn on debug logging by adding -DDebug in the asadmin script.  This helped me to say that there is something wrong with a keystore that Glassfish was looking for while creating the domain.&lt;br /&gt;&lt;br /&gt;After couple of rounds of googling, I realized that the keystore is stored in my home folder with the name .asadmintruststore.  Apparently the file size was just 1 byte.  I just deleted the file and now the creation of domain went thru fine :)&lt;br /&gt;&lt;br /&gt;On thinking what could have corrupted the keystore, I realized once when the creation of domain was going thru, I had abruptly killed the operation by Ctrl+C, which could possibly have corrupted the keystore!&lt;br /&gt;&lt;br /&gt;Hope this helps someone who bumps on this issue :)&lt;br /&gt;&lt;br /&gt;Moral of the story : Dont try to stay late and work...sleep early :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-2885733773715199627?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/2885733773715199627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=2885733773715199627' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/2885733773715199627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/2885733773715199627'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2009/11/glassfish-v2-create-domain-keytool.html' title='Glassfish v2 Create Domain - Keytool Error:java.io.EOFException'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-23157750567772803</id><published>2009-11-15T22:05:00.003+05:30</published><updated>2009-11-15T22:13:03.348+05:30</updated><title type='text'>Ubuntu : On Hibernate , machine restarts</title><content type='html'>Uff! I have been trying to get Hibernate (Suspend-to-disk) option work properly with Ubuntu in my home PC, versions after versions, starting from Dapper Drake (v6.04) to the recent Karmic Koala(v9.10).&lt;br /&gt;&lt;br /&gt;Even though the actual hibernation(meaning, dumping the memory content into the Swap partition of my disk) happens fine, my machine suddenly restarts within 3 seconds after a complete halt.  I have been going crazy to even figure out the sentence to help google find what I am looking for from the net.&lt;br /&gt;&lt;br /&gt;Finally, at 9:45pm with half sleepy eyes, I managed to find some help after going thru lines and lines of posts from various forums...that I had to add a file to my /etc/pm/conf.d and add the following line to the file&lt;br /&gt;&lt;blockquote&gt;HIBERNATE_MODE=shutdown&lt;/blockquote&gt;&lt;br /&gt;the hibernation happens properly and my machine goes to sleep happily thereafter :)&lt;br /&gt;Thanks to &lt;a href="https://bugs.launchpad.net/debian/+source/uswsusp/+bug/226069"&gt;this post&lt;/a&gt;&lt;br /&gt;PS:  Folks, also please ensure that you specify where your hibernate file is present to Grub to ensure it wakes up instead of booting afresh.   You have to add resume=/dev/sda5(swap partition).  But I also noticed recently in my dad's netbook, without this resume option, GRUB properly wakes up from Hibernation.  God knows how!...Something to research on sometime later....Will post my findings if any :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-23157750567772803?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/23157750567772803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=23157750567772803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/23157750567772803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/23157750567772803'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2009/11/ubuntu-on-hibernate-machine-restarts.html' title='Ubuntu : On Hibernate , machine restarts'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-5078251337746213420</id><published>2008-04-07T08:46:00.003+05:30</published><updated>2008-04-07T08:56:37.888+05:30</updated><title type='text'>Unexpected behavior in Mysql JDBC Driver 3.x</title><content type='html'>Till very recently, we have been using v3.x of Mysql JDBC Driver in our application.  Our application stores serialized objects as bytes in a blob field in Mysql.  When we tried to read the data from the field using resultset.getObject(), Mysql Driver threw a ClassNotFoundException as at that particular instance, the class of the serialized object was not present in the classpath.&lt;br /&gt;&lt;br /&gt;On investigating further, we learnt that Mysql reads the first 2 bytes of the data in the field and if it finds that it is a byte array representation of a serialized object, it AUTOMATICALLY attempts to deserialize the object, which is quite unexpected of Mysql to do because there is no guarantee that the serialized object's class would be present in the classpath.&lt;br /&gt;&lt;br /&gt;Thankfully, what we found is that the latest version of Mysql JDBC Driver v5.1.6 does not have this problem.  And the behaviour is controlled by a property that is available in the mysql connection object called "autoDeserialize".  Thankfully, the default value of the property is "false".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-5078251337746213420?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/5078251337746213420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=5078251337746213420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/5078251337746213420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/5078251337746213420'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2008/04/mysql-jdbc-driver-deserializes-on.html' title='Unexpected behavior in Mysql JDBC Driver 3.x'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-5018498984270258283</id><published>2007-05-28T17:13:00.000+05:30</published><updated>2007-05-28T17:22:40.806+05:30</updated><title type='text'>A sample Presenter Implementation for Rails</title><content type='html'>Recently, my friend &lt;a href="http://venkat.in/"&gt;Venkat&lt;/a&gt; introduced me to the &lt;a href="http://martinfowler.com/eaaDev/PresentationModel.html"&gt;Presenter Pattern&lt;/a&gt; and we were discussing on its advantages and the situations where using a Presenter would be useful.&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://blog.jayfields.com/search/label/presenter"&gt;Jay Fields&lt;/a&gt; for elaborating on the Presenter and also providing a sample Presenter implementation in one of his blogs.&lt;br /&gt;&lt;br /&gt;I have modified the sample Presenter class provided by Jay, fixed a few minor issues and have made it available &lt;a href="http://pastie.caboo.se/65288"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-5018498984270258283?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/5018498984270258283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=5018498984270258283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/5018498984270258283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/5018498984270258283'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2007/05/sample-presenter-implementation-for.html' title='A sample Presenter Implementation for Rails'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-5938283454662807122</id><published>2007-04-10T09:40:00.000+05:30</published><updated>2007-04-10T11:44:17.566+05:30</updated><title type='text'>Adding JNDI DataSource support for Rails-Integration</title><content type='html'>In the past few weeks, we have been working on getting our rails application to run on JRuby.  Ofcourse, we were successful in packaging our application as a J2EE .WAR archive, thanks to &lt;a href="http://rubyforge.org/frs/shownotes.php?release_id=10317"&gt;Rails-Integration&lt;/a&gt; and &lt;a href="http://rubyforge.org/forum/forum.php?forum_id=12669"&gt;ARJDBC,&lt;/a&gt; without which this would not have been possible.&lt;br /&gt;&lt;br /&gt;While we were at it, we also wanted to check out the jndi data source support of ARJDBC as well as Rails-Integration projects.&lt;br /&gt;&lt;br /&gt;After spending some time, we discovered that the ARJDBC v0.2.3 had a bug in jndi_adapter.rb. The method "&lt;span style="font-style: italic;"&gt;Jndi_Connection&lt;/span&gt;" was not present and instead there was a method called "&lt;span style="font-style: italic;"&gt;Jdbc_Connection&lt;/span&gt;".  I had to correct the same before getting the ARJDBC to support JNDI Data source.  Apparently, I also found that this issue does not exist in the trunk version of ARJDBC.&lt;br /&gt;&lt;br /&gt;Rails-Integration comes with rake tasks to create a war file for the rails app and configure &lt;a href="http://jetty.mortbay.org/"&gt;jetty &lt;/a&gt;&lt;br /&gt;web server.  To configure JNDI support, the following changes are required to be done...&lt;br /&gt;&lt;br /&gt;1. Add the data source configuration to the jetty.xml file.  However, Please note that everytime you run the rake task - war:standalone:run, the jetty.xml is recreated.   Therefore, I suggest that you modify the rails-integration war plugin library, called &lt;span style="font-style: italic;"&gt;run.rb  &lt;/span&gt;and add the below entries in the appropriate place.&lt;br /&gt;&lt;br /&gt;For instance, for oracle data source,&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;&amp;lt;new id="MyApp1" class="org.mortbay.jetty.plus.naming.Resource"&amp;gt;&lt;br /&gt;   &amp;lt;arg&amp;gt;jdbc/MyApp&amp;lt;/arg&amp;gt;&lt;br /&gt;   &amp;lt;arg&amp;gt;&lt;br /&gt;    &amp;lt;new class="oracle.jdbc.pool.OracleConnectionPoolDataSource"&amp;gt;&lt;br /&gt;                &amp;lt;set name="URL"&amp;gt;jdbc:oracle:thin:@192.168.2.23:1521:swami&amp;lt;/set&amp;gt;&lt;br /&gt;                &amp;lt;set name="User"&amp;gt;myapp&amp;lt;/set&amp;gt;&lt;br /&gt;                &amp;lt;set name="Password"&amp;gt;myapp&amp;lt;/set&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;/new&amp;gt;&lt;br /&gt;   &amp;lt;/arg&amp;gt;&lt;br /&gt;&amp;lt;/new&amp;gt;&lt;/blockquote&gt;&lt;pre&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;For the full list of configuration details for various databases, please go &lt;a href="http://docs.codehaus.org/display/JETTY/DataSource+Examples"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please note that, as per jetty documentation, the above entries can be updated in jetty-env.xml or jetty-web.xml as well.  The scope of this configuration depends on where you put this configuration information.&lt;br /&gt;&lt;br /&gt;2.  Now, search for the section&lt;br /&gt;&lt;blockquote&gt;&amp;lt;New class="org.mortbay.jetty.webapp.WebAppContext"&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;in your jetty.xml(or the &lt;span style="font-style: italic;"&gt;run.rb&lt;/span&gt; file) and add the following entries after the two &amp;lt;Arg&amp;gt; entries...&lt;br /&gt;&lt;blockquote&gt;&amp;lt;Set name="ConfigurationClasses"&amp;gt;&lt;br /&gt;   &amp;lt;Array id="plusConfig" type="java.lang.String"&amp;gt;&lt;br /&gt;     &amp;lt;Item&amp;gt;org.mortbay.jetty.webapp.WebInfConfiguration&amp;lt;/Item&amp;gt;&lt;br /&gt;     &amp;lt;Item&amp;gt;org.mortbay.jetty.plus.webapp.EnvConfiguration&amp;lt;/Item&amp;gt;&lt;br /&gt;     &amp;lt;Item&amp;gt;org.mortbay.jetty.plus.webapp.Configuration&amp;lt;/Item&amp;gt;&lt;br /&gt;     &amp;lt;Item&amp;gt;org.mortbay.jetty.webapp.JettyWebXmlConfiguration&amp;lt;/Item&amp;gt;&lt;br /&gt;     &amp;lt;Item&amp;gt;org.mortbay.jetty.webapp.TagLibConfiguration&amp;lt;/Item&amp;gt;&lt;br /&gt;   &amp;lt;/Array&amp;gt;&lt;br /&gt;&amp;lt;/Set&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Now, we need to specify the JNDI Logical Name for our web application, add the following entries in your web.xml under WEB-INF folder of your war file.  However, Please note that every time you run the rake task - war:standalone:run, web.xml is recreated.  Therefore, I suggest that you modify the rails-integration war plugin library, called &lt;span style="font-style: italic;"&gt;create_war.rb  &lt;/span&gt;and add the below entries in the appropriate place.&lt;br /&gt;&lt;blockquote&gt; &amp;lt;resource-ref&amp;gt;&lt;br /&gt;   &amp;lt;description&amp;gt;My DataSource Reference&amp;lt;/description&amp;gt;&lt;br /&gt;   &amp;lt;res-ref-name&amp;gt;jdbc/MyApp&amp;lt;/res-ref-name&amp;gt;&lt;br /&gt;   &amp;lt;res-type&amp;gt;javax.sql.DataSource&amp;lt;/res-type&amp;gt;&lt;br /&gt;   &amp;lt;res-auth&amp;gt;Container&amp;lt;/res-auth&amp;gt;&lt;br /&gt;&amp;lt;/resource-ref&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;resource-ref&gt;&lt;/resource-ref&gt;&lt;blockquote&gt;&lt;/blockquote&gt;4. Lastly, to add JNDI support, jetty requires two more libraries &lt;span style="font-style: italic;"&gt;Jetty-Naming&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;Jetty-Plus.&lt;br /&gt;&lt;/span&gt;The best way to do this is to modify the rails-integration war plugin library, called &lt;span style="font-style: italic;"&gt;war_config.rb.  &lt;/span&gt;Search for the word &lt;span style="font-weight: bold; font-style: italic;"&gt;add_jetty_library &lt;/span&gt;and append the following lines telling the war_config to download the two libraries as well.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;      add_jetty_library(maven_library('org.mortbay.jetty', 'jetty-plus', '6.1.1'))&lt;br /&gt;add_jetty_library(maven_library('org.mortbay.jetty', 'jetty-naming', '6.1.1'))&lt;br /&gt;&lt;/blockquote&gt;5. Now for the final step, modify your database.yml to use jndi...&lt;br /&gt;&lt;blockquote&gt;production:&lt;br /&gt;  adapter: jndi&lt;br /&gt;  jndi: java:comp/env/jdbc/MyApp&lt;br /&gt;  driver: oracle&lt;br /&gt;&lt;/blockquote&gt;Thats it!  Your rails web application is ready to run with JNDI Data source.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-5938283454662807122?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/5938283454662807122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=5938283454662807122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/5938283454662807122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/5938283454662807122'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2007/04/adding-jndi-datasource-support-for.html' title='Adding JNDI DataSource support for Rails-Integration'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-4952263599717094253</id><published>2007-03-29T09:22:00.000+05:30</published><updated>2007-03-29T09:34:54.496+05:30</updated><title type='text'>Rails Integration - Session Restore restores symbols as Strings</title><content type='html'>In the last one week, our focus was to deploy our rails app as a war file and run on jetty, with the help of Rails Integration plugin.&lt;br /&gt;&lt;br /&gt;We noticed that we had problems with respect to accessing our session variables across pages.  We narrowed down the problem to &lt;span style="font-style: italic; font-weight: bold;"&gt;"JavaServletStore"&lt;/span&gt; class bundled as part of the Rails Integration plugin.&lt;br /&gt;&lt;br /&gt;Since Java is not aware of Ruby Symbol objects, these symbols are converted to string and updated  into the Session Object.  And now, when the session is restored, the data stored as symbols originally in rails would be available as Strings.  Hence if we look for the symbols we would not find them in the session.&lt;br /&gt;&lt;br /&gt;As a temporary work around, we modified the restore method to convert the keys as symbols.  This would just work for us as we use symbols all thru when writing and reading from Session. &lt;br /&gt;&lt;br /&gt;Our temporary fix is given below :&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;     # Restore session state from the Java session&lt;br /&gt;      def restore&lt;br /&gt;        @session_data = {}&lt;br /&gt;        java_session = @java_request.getSession(false)&lt;br /&gt;        if java_session&lt;br /&gt;          names = java_session.getAttributeNames&lt;br /&gt;          while names.hasMoreElements&lt;br /&gt;            name = names.nextElement&lt;br /&gt;            @session_data[name.&lt;span style="font-weight: bold; font-style: italic;"&gt;to_sym&lt;/span&gt;] = java_session.getAttribute(name)&lt;br /&gt;          end&lt;br /&gt;        end&lt;br /&gt;        @session_data&lt;br /&gt;      end&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;The proper fix should ensure that "update-session" method stores some info about the type of the object and appropriately convert them during the "restore-session".  May be there is a better solution.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-4952263599717094253?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/4952263599717094253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=4952263599717094253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/4952263599717094253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/4952263599717094253'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2007/03/rails-integration-session-restore.html' title='Rails Integration - Session Restore restores symbols as Strings'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-5318689538215700780</id><published>2007-03-29T09:08:00.000+05:30</published><updated>2007-03-29T09:22:11.735+05:30</updated><title type='text'>JRuby and Rails-Integration</title><content type='html'>I must acknowledge that am one of the fortunate folks to have got bitten by the Ruby bug lately...and we have been developing applications with Ruby on Rails in our organization.  Though we are excited about Ruby and Ruby On Rails, we always had that concern as to how do we convince the IT Team in the Banks(this is where our applications are deployed) to deploy Ruby application in Production.&lt;br /&gt;&lt;br /&gt;We were quite excited about the JRuby momentum and were following the progress in the Rails-Integration Project recently.  Now, we certainly have an opportunity to develop in Rails and deploy in the well established J2EE platform.  Kudos to JRuby team and the Rails-Integration team to make this a reality :)&lt;br /&gt;&lt;br /&gt;Last week, we took our Rails application and played around with Rails-Integration to create a .war archive of our app and deployed successfully in Jetty with some minor hiccups, which I would further describe in my future posts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-5318689538215700780?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/5318689538215700780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=5318689538215700780' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/5318689538215700780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/5318689538215700780'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2007/03/jruby-and-rails-integration.html' title='JRuby and Rails-Integration'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-115856147817657888</id><published>2006-09-18T11:55:00.000+05:30</published><updated>2006-09-18T12:07:58.186+05:30</updated><title type='text'>Keytool and foreign locale problems</title><content type='html'>Recently, we hit upon an very interesting(!?!) problem using Keytool inside our application.&lt;br /&gt;&lt;br /&gt;We have a customer in Thailand who complained that the self-signed certificates generated in our application(which in turns uses Keytool) have got the Certificate "Valid From" Date and "Valid To" dates completely wrong.&lt;br /&gt;&lt;br /&gt;The catch here is that Thai Calendar Year is 543 years ahead of the Julian Calendar. In other words, year 2006 in English Calendar is equivalent to year 2549 in Thailand Calendar.&lt;br /&gt;&lt;br /&gt;Lets say I generate a self-signed certificate using Keytool with my machine running on Thai Locale, the Year portion of "Valid From" should be stamped as 2549(2006 is the current year + 543).&lt;br /&gt;&lt;br /&gt;And if the validity of the certificate is 3 years, then the Year of Expiry is 2552.&lt;br /&gt;&lt;br /&gt;But, Keytool just ignores this whole difference in the Calendars and lives with the all famous Y2K Bug!!!&lt;br /&gt;&lt;br /&gt;The Certificate would show as Valid from 2049 to 1952!!!  Howzzat???&lt;br /&gt;&lt;br /&gt;Any amount of googling thru the java sun forums and other newsgroups, I could not find anything that talks about this problem/behavior.&lt;br /&gt;&lt;br /&gt;Am I missing something big here???  Hope some one some day will help me resolve this mystery!&lt;br /&gt;&lt;br /&gt;I am giving the exact keytool syntax I used for easy reference for anyone who would like to try this out :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Generate Self Signed Certificate&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;keytool -genkey -keyalg rsa -sigalg sha1withrsa -keysize 1024 -storetype jceks -validity 1095 -storepass storepass -keypass keypass -dname CN=MyName,O=MyOrganization,OU=MyDepartment ST=Karnataka,L=Bangalore,C=IN -keystore test.jceks&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;2. Export the Certificate in .der format&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;keytool -export -file cert.der -keystore test.jceks -storetype jceks -storepass storepass&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-115856147817657888?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/115856147817657888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=115856147817657888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/115856147817657888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/115856147817657888'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/09/keytool-and-foreign-locale-problems.html' title='Keytool and foreign locale problems'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-114624122654402757</id><published>2006-04-28T21:27:00.001+05:30</published><updated>2006-04-28T21:54:47.490+05:30</updated><title type='text'>Issue with Gzipped Content over SSL</title><content type='html'>After we upgraded our web application in our customer's place,  lots of users started complaining that the webpage is not getting downloaded to their browser...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Observation&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;This issue happens only in Windows 98 and some machines with WindowsXP without any service packs. And that too only when accessing the server with HTTP 1.1 compression ENABLED. We confirmed this by requesting the customer to turn off HTTP 1.1 compression and he confirmed that the application worked fine.&lt;/li&gt;&lt;li&gt;Fortunately, we were able to reproduce this issue locally in one of our Test Machines running Win98. We found that this issue happens only when we go thru Web Server. When we accessed the application via Application Server, the issue was NOT reproduced.&lt;/li&gt;&lt;li&gt;The above observation led us to another important clue, that this issue could be something to do with SSL, as that is one major difference between Web Server and App Server.&lt;/li&gt;&lt;/ul&gt;Based on all the above observation, we concluded that this issue happens only with HTTP 1.1 enabled Browser accessing the Bali Server via SSL. And the machine is running Win98 or plain Winxp(without any service packs) operating Systems.&lt;br /&gt;&lt;br /&gt;With the above information at hand, we started monitoring the HTTP Traffic between Browser and Server using some Network Sniffing tools and found that a particular javascript file called "FMProduct.js" seems to be the culprit. Even though the file was downloaded to the Browser, the file never got written to the &lt;em&gt;Temporary Internet Files&lt;/em&gt; cache.&lt;br /&gt;&lt;br /&gt;Concluding that this file is the one that could be causing all the problems we tried to take the file separately and tried to access it via Weblogic Web Server and we were successfully able to reproduce the problamatic behavior.&lt;br /&gt;&lt;br /&gt;To eliminate the possibility of Weblogic Server in playing a role in the above erratic behavior, we hosted the FMProduct.js on Apache Web Server. And now, we were able to download the file without any problems from any browser.&lt;br /&gt;&lt;br /&gt;Now, we concluded that apart from the combinations of SSL, HTTP1.1, Win98/xp, there is yet another variant, Weblogic Server playing a role in the erratic behavior.&lt;br /&gt;&lt;br /&gt;We monitored the network traffic when accessing Apache Web Server as against Weblogic Web Server. We found something very interesting. That is, Weblogic serves the files in a CHUNKED manner with chunk size of 4072 bytes(we are not sure what is the significance of this number). Apache serves the whole content of the file in one chunk.&lt;br /&gt;&lt;br /&gt;The problem occurs ONLY when the last chunk is of size between 1 to 9 bytes. In other words, if the size of the file is 4074 or 4081 or 8119 etc...&lt;br /&gt;The size of compressed version of FMProduct.js is 20362 - which means 5 chunks of 4072 and the last chunk contains 2 bytes.&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Resolution&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It certainly seems that Microsoft has fixed this erratic behavior with SSL + HTTP 1.1 combination, and hence the latest version of Windows XP (SP2) does not have this erratic behavior.&lt;br /&gt;&lt;br /&gt;Additionally, we shall also review our build process to see if we can add a check to see if the file size falls into this magic number and if so, try and add some more insignificant characters to increase the file size.&lt;br /&gt;&lt;br /&gt;Please note that the above erratic behavior is NOT reproduced in Mozilla FireFox&lt;a href="http://100.2.1.151/wiki/jsp/Wiki?topic=FireFox&amp;action=action_edit"&gt;?&lt;/a&gt; browser.&lt;br /&gt;&lt;br /&gt;The attached Ruby Script helps print out all the files that fall into this wierd pattern.&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;require "find"&lt;br /&gt;if ARGV[0].nil?&lt;br /&gt;   puts "Usage: ruby FileChunkSizeFinder.rb [path_of_baliweb]"&lt;br /&gt;   exit&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;Find.find(ARGV[0]) do |file|&lt;br /&gt;      if File.file?(file) &amp;&amp;amp; File.basename(file) =~ /\.gz$/ &amp;&amp;amp; (1..9) === File.size(file)%4072&lt;br /&gt;       puts file + " ==&gt; " + File.size(file).to_s&lt;br /&gt;      end&lt;br /&gt;end&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-114624122654402757?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/114624122654402757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=114624122654402757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/114624122654402757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/114624122654402757'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/04/issue-with-gzipped-content-over-ssl_28.html' title='Issue with Gzipped Content over SSL'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-114429770839128772</id><published>2006-04-06T09:58:00.000+05:30</published><updated>2006-04-06T10:00:07.996+05:30</updated><title type='text'>Exporting Private Key from iPlanet Web Server</title><content type='html'>In quite a few occassions, we would have to sniff SSL Traffic between the browser and a iPlanet Web Server.  To sniff SSL using &lt;a href="http://karthikvkrishnan.blogspot.com/2006/03/yet-another-ssl-sniffing-tool.html"&gt;ClearWatch &lt;/a&gt;Tool, we require the Private Key file in PEM format.&lt;br /&gt;&lt;br /&gt;IPlanet stores keys internally. Hence we need to go thru a few steps to achieve the above...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1 :&lt;/span&gt;&lt;br /&gt;Firstly, the Key will have to be exported to a PKCS#12 file.&lt;br /&gt;&lt;br /&gt;To export to a PKCS#12 file, Use the pk12util command that ships with iplanet.  This file is generally available under Servers\bin\https\admin\bin folder&lt;br /&gt;&lt;br /&gt;Syntax :&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pk12util -o exportfile -n certname [-d certdir] [-P dbprefix]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Example  :&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pk12util -o c:\temp\pkey.txt -n Server-Cert -d c:\iplanet\servers\alias -P dbprefix&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the above dbprefix is nothing but the prefix for the Key file available under Servers\alias folder.  If the key file is xyz-key3.db, then dbprefix is 'xyz'&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2  :&lt;/span&gt;&lt;br /&gt;Once you have a pkcs12 file containing a private key, you can convert it to a PEM file by using the freely available OpenSSL tool,&lt;br /&gt;&lt;br /&gt;Syntax :&lt;br /&gt;&lt;span style="font-style: italic;"&gt;openssl pkcs12 -in server.p12 -out server.pem -nocerts -passin pass:yourpassword -passout pass:dummy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;where "server.p12" is the original PKCS#12 file you are converting and "yourpassword" is the password that is associated with the PKCS#12 file.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3 :&lt;/span&gt;&lt;br /&gt;Now, we can remove the Password Protection on the Key by running the following command.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;openssl rsa -in server.pem -out server.key -passin pass:dummy&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-114429770839128772?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/114429770839128772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=114429770839128772' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/114429770839128772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/114429770839128772'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/04/exporting-private-key-from-iplanet-web.html' title='Exporting Private Key from iPlanet Web Server'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-114208583926550775</id><published>2006-03-11T19:33:00.000+05:30</published><updated>2006-09-15T12:05:09.010+05:30</updated><title type='text'>Compiling Ruby on IBM AIX</title><content type='html'>Continuing my adventure on IBM AIX v5.3 ML2 with Core Dumps, this time it was Ruby!!!  My simple Ruby program would give a core dump when I tried to include '&lt;span style="font-style: italic;"&gt;drb'&lt;/span&gt; module in my ruby script.  I was running Ruby v1.8.2.&lt;br /&gt;&lt;br /&gt;I got some clues from some news groups that there was some problem in Ruby on AIX in the sockets area and its something to do with IPV6.  I was told that if I compile Ruby by disabling ipv6, I should be ok!&lt;br /&gt;&lt;br /&gt;Guess what! I ventured into my first experience of compiling Ruby from the Source.  And wow! my problem went away and no Core Dumps :)&lt;br /&gt;&lt;br /&gt;I thought I should put down the steps I went thru in compiling Ruby on AIX.&lt;br /&gt;1. Download latest Ruby Source from ruby-lang.org.   The latest version at this point is v1.8.4.&lt;br /&gt;2. Unzip the source tar file into a specific directory.&lt;br /&gt;3. Invoke &lt;span style="font-weight: bold; font-style: italic;"&gt;configure &lt;/span&gt;with a parameter &lt;span style="font-style: italic; font-weight: bold;"&gt;--disable-ipv6&lt;br /&gt;&lt;/span&gt;&lt;font&gt;4. Invoke&lt;span style="font-style: italic; font-weight: bold;"&gt; make ruby.imp&lt;br /&gt;&lt;/span&gt;5. Invoke &lt;span style="font-weight: bold; font-style: italic;"&gt;make&lt;br /&gt;&lt;/span&gt;6. Invoke &lt;span style="font-weight: bold; font-style: italic;"&gt;make install&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;That's it! You have done it!&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-114208583926550775?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/114208583926550775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=114208583926550775' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/114208583926550775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/114208583926550775'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/03/compiling-ruby-on-ibm-aix.html' title='Compiling Ruby on IBM AIX'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-114208509550288316</id><published>2006-03-11T19:21:00.000+05:30</published><updated>2006-03-11T19:38:02.036+05:30</updated><title type='text'>Core Dump running Weblogic on IBM AIX? - Dont Panic!!!</title><content type='html'>I must say, I am quite fortunate to have got some good opportunity to try and run our j2ee application on IBM AIX OS.&lt;br /&gt;&lt;br /&gt;I deployed the application and started the application.  All went well until I hit upon the very famous "Core Dump - Dump Handler is Processing Signal 11".   I had to spend almost 2 to 3 hours weaving thru lots of newsgroups on the internet and figured out that the FileDescriptor Upper Limit was not set(which means its set to &lt;span style="font-style: italic;"&gt;unlimited&lt;/span&gt;) there is a problem in AIX in performing a malloc() to obtain a memory segment.&lt;br /&gt;&lt;br /&gt;This is what I learnt&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:Verdana,Geneva,Arial,Helvetica,Sans-serif;font-size:80;"  &gt;This is due to an AIX issue when WLS attempts to perform a malloc() to obtain a memory segment. The WLS Posix Socket Muxer code (NativeIO and stuff) does a malloc based on the FDLimit. If it's unlimited, AIX 4 and 5 tend to throw a malloc exception. WebLogic Server WLS made it 1025, which the user can set higher if desired.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.bea.com/application?namespace=askbea&amp;origin=ask_bea_answer.jsp&amp;amp;event=link.view_answer_page_solution&amp;answerpage=solution&amp;amp;page=wls/S-21264.htm"&gt;Check out this URL for more details...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-114208509550288316?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/114208509550288316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=114208509550288316' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/114208509550288316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/114208509550288316'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/03/core-dump-running-weblogic-on-ibm-aix.html' title='Core Dump running Weblogic on IBM AIX? - Dont Panic!!!'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-114147692955369048</id><published>2006-03-04T18:17:00.000+05:30</published><updated>2006-03-06T10:14:52.043+05:30</updated><title type='text'>Yet another SSL Sniffing Tool</title><content type='html'>Sometime back I had blogged about &lt;a href="http://karthikvkrishnan.blogspot.com/2006/01/very-useful-https-sniffer-tool.html"&gt;ClearWatch&lt;/a&gt; which is a very handy SSL sniffing tool.  Here, you require the Private Key of the Server for decrypting the HTTPS packets.&lt;br /&gt;&lt;br /&gt;However often, I end up in situations having to sniff the SSL traffic of Production Systems, where I donot have access to the Private Key.&lt;br /&gt;&lt;br /&gt;Now, I have come across another excellent tool called &lt;a href="http://www.portswigger.net/suite/"&gt;BurpSuite&lt;/a&gt;.  This tool can do more in the sense that, it can sniff SSL Packets without having to provide the Private Key of the Server.  Also, it allows to intercept requests/responses with specific header information and allows us to change the header data whenever required.  This tool basically is a special proxy server.  One has to configure the browser to go thru this proxy server for sniffing purposes.&lt;br /&gt;&lt;br /&gt;Check it out!&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-114147692955369048?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/114147692955369048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=114147692955369048' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/114147692955369048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/114147692955369048'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/03/yet-another-ssl-sniffing-tool.html' title='Yet another SSL Sniffing Tool'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-113875673973591474</id><published>2006-02-01T06:43:00.000+05:30</published><updated>2006-03-06T10:15:09.546+05:30</updated><title type='text'>Am going to attend Waterfall2006 Conference at Niagara Falls, US</title><content type='html'>Boy! Thanks a ton to &lt;a href="http://venkat.in"&gt;Venkat&lt;/a&gt;, for letting me know of such a conference with my favorite speakers - &lt;a href="http://blogs.pragprog.com/cgi-bin/pragdave.cgi"&gt;Dave Thomas&lt;/a&gt;, Kent Beck etc.  Since am anyway going to the US in March 2006, am planning to extend my stay in US and make sure I attend &lt;a href="http://waterfall2006.com"&gt;waterfall2006&lt;/a&gt; conference.&lt;br /&gt;&lt;br /&gt;I shall certainly share my experiences from the conference in my forthcoming blogs :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-113875673973591474?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/113875673973591474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=113875673973591474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113875673973591474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113875673973591474'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/02/am-going-to-attend-waterfall2006.html' title='Am going to attend Waterfall2006 Conference at Niagara Falls, US'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-113842350932700547</id><published>2006-01-28T10:04:00.000+05:30</published><updated>2006-01-28T10:23:39.213+05:30</updated><title type='text'>Firefox 1.5 Upgrade - Watch out!</title><content type='html'>I have a great respect for Mozilla applications after having successfully making our company's product "&lt;span style="font-style: italic;"&gt;Firefox compliant&lt;/span&gt;".  Our experience revealed that, IE is very leniant and hence does not scream if we write non standard html/javascript codes.  However, all we had to ensure is to make the codes standard compliant, then it automatically worked both in Firefox as well as IE.&lt;br /&gt;&lt;br /&gt;With the same confidence, I upgraded my Firefox to the latest and great v1.5.  Guess what, lots of application's functions started to misbehave.  One main issue is that we often get "&lt;span style="font-style: italic; font-weight: bold;"&gt;Script is taking long time to complete and is not responding.  Do you want to stop or continue the script?&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;After lots of trial and error, I tried a hack which worked for me...&lt;br /&gt;&lt;br /&gt;Basically, in the script function, I am setting the &lt;span style="font-style: italic; font-weight: bold;"&gt;window.status &lt;/span&gt;to some value with the assumption that the browser should not scream as long as there is some update happening in the screen.  Guess what?  this hack worked!!!&lt;br /&gt;&lt;br /&gt;Well, the happiness was very shortlived when I found that there is an option in Firefox called "&lt;span style="font-style: italic; font-weight: bold;"&gt;change the status bar text&lt;/span&gt;" under "&lt;span style="font-weight: bold; font-style: italic;"&gt;Advanced Javascript settings&lt;/span&gt;" and to add to my depression, the option is by default &lt;span style="font-style: italic;"&gt;UNCHECKED.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Therefore, though I have a hack, the user has to change this setting for my application to work fine in Firefox 1.5.&lt;br /&gt;&lt;br /&gt;Hope someone finds a permanent solution to this issue, or is it a Firefox issue, that one day Firefox will fix it!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-113842350932700547?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/113842350932700547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=113842350932700547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113842350932700547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113842350932700547'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/01/firefox-15-upgrade-watch-out.html' title='Firefox 1.5 Upgrade - Watch out!'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-113816406565777647</id><published>2006-01-25T10:08:00.000+05:30</published><updated>2006-01-25T10:11:05.656+05:30</updated><title type='text'>Load Test Conductor open sourced today!</title><content type='html'>After long follow up from &lt;a href="http://venkat.in"&gt;Venkat&lt;/a&gt;, I finally managed to open source our famous inhouse &lt;a href="http://loadtesttool.sourceforge.net"&gt;Load Test Conductor&lt;/a&gt; tool to sourceforge.  Hope to add more features and fixes soon!&lt;a href="http://venkat.in"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-113816406565777647?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/113816406565777647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=113816406565777647' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113816406565777647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113816406565777647'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/01/load-test-conductor-open-sourced-today.html' title='Load Test Conductor open sourced today!'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-113801629552226574</id><published>2006-01-23T16:15:00.000+05:30</published><updated>2006-01-27T17:26:43.466+05:30</updated><title type='text'>JDBC Transaction Control behavior varies when using Pooled and Non Pooled Connections</title><content type='html'>Before going into details let us observe the below code &lt;pre style="font-style: italic;"&gt;&lt;blockquote&gt;try {&lt;br /&gt;conn = getDBConnection();&lt;br /&gt;conn.setAutoCommit(false);&lt;br /&gt;PreparedStatement ps =&lt;br /&gt;conn.prepareStatement(Some Update Sql 1);&lt;br /&gt;ps.executeUpdate(Some Update Sql 1);&lt;br /&gt;conn.commit();&lt;br /&gt;ps.executeUpdate(Some Update Sql 2);&lt;br /&gt;} finally {&lt;br /&gt;try {&lt;br /&gt;if (conn != null) conn.close();          &lt;br /&gt;} catch (SQLException ex) {&lt;br /&gt;Debug.logError(ex, "&lt;err&gt;Some Error Message");       &lt;br /&gt;}&lt;br /&gt;}&lt;/err&gt;&lt;/blockquote&gt;&lt;/pre&gt; What will happen to the second sql updation ...? Will it get committed or rolled back? There are two flavours of answer to this...&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;When connections are not pooled&lt;/strong&gt;&lt;br /&gt;In this case, Connection.close() method commits all the uncommitted statements (As per 9i Oracle JDBC Driver).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;When connections are pooled&lt;/strong&gt;&lt;br /&gt;In this case, Connection.close() really does not close the connection but releases it to the connection pool for reuse by somebody else. In this case, situation is bit undeterministic. The outcome purely depends on how the Pool manager manages. We found in Weblogic pool management, &lt;span style="font-style: italic;"&gt;Connection.close()&lt;/span&gt; results in all open cursor closure and resetting of &lt;span style="font-style: italic;"&gt;AutoCommit &lt;/span&gt;flag. But the uncommitted transactions are neither committed nor rolledback.  All the exlusive locks obtained for the previous updation will remain alive. This behavior continues until the same connection from the pool is assigned for somebody else and he either commits or rolled back.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Now, Consider the below piece of code,&lt;br /&gt;&lt;pre&gt;&lt;blockquote style="font-style: italic;"&gt; PreparedSQLRunner ps = null;&lt;br /&gt;try {&lt;br /&gt;conn = getDBConnection();&lt;br /&gt;conn.setAutoCommit(false);&lt;br /&gt;PreparedSQLRunner.executeUpdate(Some Update Sql 1);&lt;br /&gt;conn.setAutoCommit(true);&lt;br /&gt;   ps = new PreparedSQLRunner();&lt;br /&gt;ResultSet rs = ps.executeQuery(Some Select Sql);&lt;br /&gt;   ....&lt;br /&gt;} finally {&lt;br /&gt;try {&lt;br /&gt;if (ps != null) ps.close();            &lt;br /&gt;} catch (SQLException ex) {&lt;br /&gt;Debug.logError(ex, " &lt;err&gt; ");         &lt;br /&gt;}&lt;br /&gt;try {&lt;br /&gt;if (conn != null) conn.close();            &lt;br /&gt;} catch (SQLException ex) {&lt;br /&gt;Debug.logError(ex, " &lt;err&gt; ");         &lt;br /&gt;}&lt;br /&gt;}&lt;/err&gt;&lt;/err&gt;&lt;/blockquote&gt;&lt;err&gt;&lt;err&gt;&lt;/err&gt;&lt;/err&gt;&lt;/pre&gt; In the above context, what would happen to the uncommitted update sql ?&lt;br /&gt;&lt;br /&gt;As per JDBC API specification, when we change the Auto Commit flag of a Connection object from false to true, the next immediate statement on that connection, will commits all its previous uncommitted operations (that were happened with Auto Commit Flag set false). So, the call to &lt;span style="font-style: italic;"&gt;executeQuery&lt;/span&gt; method, results in the committing of the previous uncommitted updation in addition to its expected service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-113801629552226574?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/113801629552226574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=113801629552226574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113801629552226574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113801629552226574'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/01/jdbc-transaction-control-behavior.html' title='JDBC Transaction Control behavior varies when using Pooled and Non Pooled Connections'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-113789403420938977</id><published>2006-01-22T07:02:00.000+05:30</published><updated>2006-01-23T09:03:56.856+05:30</updated><title type='text'>Wondering where does Windows Service pick the Locale Settings from?</title><content type='html'>Boy!  couple of months back I had encountered an issue where my application which is running as Windows NT Service,  always used the Locale settings thats entirely different from what is set in the control panel by the logged in user.&lt;br /&gt;&lt;br /&gt;I thought if I had provided an User Account to be used as the credentials for the service, then the windows service might use that particular user's locale settings.  But Hard Luck!&lt;br /&gt;&lt;br /&gt;Later on further weaving thru the Windows Registry, realized that windows captures the Locale Settings that I had provided during the initial Installation of the WinXP Operating System.&lt;br /&gt;&lt;br /&gt;This basically means Windows maintains TWO Locale information, one about the logged in user and the other which is the default that was provided during Windows Installation.&lt;br /&gt;&lt;br /&gt;The following Registry Key stores Current Users Locale Configuration&lt;br /&gt;&lt;em style="font-weight: bold;"&gt;HKEY_CURRENT_USER\Control Panel\International&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The following Registry Key stores the Default Users Locale Configuration&lt;br /&gt;&lt;em style="font-weight: bold;"&gt;HKEY_USERS\.DEFAULT\Control Panel\International&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tough Find !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-113789403420938977?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/113789403420938977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=113789403420938977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113789403420938977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113789403420938977'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/01/wondering-where-does-windows-service.html' title='Wondering where does Windows Service pick the Locale Settings from?'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-113786479772403386</id><published>2006-01-21T22:41:00.000+05:30</published><updated>2006-01-22T06:44:11.300+05:30</updated><title type='text'>Oracle 10g Thin Driver setFetchSize() can corrupt Data</title><content type='html'>Recently, we had our application database upgraded from Oracle 9i to Oracle 10g.  And therefore we also upgraded oracle jdbc thin driver accordingly.&lt;br /&gt;&lt;br /&gt;We were surprised by a nice "ArrayIndexOutOfBoundsException" when reading data from the ResultSet.&lt;br /&gt;&lt;br /&gt;After lots of research, I learnt about an inherent bug in Oracle 10g thin driver where if we set the &lt;span style="font-style: italic;"&gt;fetchSize &lt;/span&gt;on the &lt;span style="font-weight: bold;"&gt;PreparedStatement &lt;/span&gt;we have to set the same &lt;span style="font-style: italic;"&gt;fetchSize &lt;/span&gt;on the &lt;span style="font-weight: bold;"&gt;ResultSet &lt;/span&gt;as well.  This certainly was not the case with previous versions of Oracle.&lt;br /&gt;&lt;br /&gt;To my knowledge this bug is not fixed yet.  The workaround until then is to set the FetchSize on the ResultSet object whenever you set the FetchSize on the PreparedStatement.&lt;br /&gt;&lt;br /&gt;Code snippet:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;PreparedStatement ps = conn.prepareStatement("Select * from some_table");&lt;br /&gt;ps.setFetchSize(20);&lt;br /&gt;ResultSet rs = rs.executeQuery();&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//rs.setFetchSize(20);  //Uncomment this line to reproduce the issue.&lt;/span&gt;&lt;br /&gt;while (rs.next()) {&lt;br /&gt; //  ... process the row&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-113786479772403386?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/113786479772403386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=113786479772403386' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113786479772403386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113786479772403386'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/01/oracle-10g-thin-driver-setfetchsize.html' title='Oracle 10g Thin Driver setFetchSize() can corrupt Data'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-113781449882210902</id><published>2006-01-21T09:04:00.000+05:30</published><updated>2006-01-21T09:05:21.340+05:30</updated><title type='text'>A very useful HTTP(S) Sniffer Tool</title><content type='html'>Recently, I was stuck with an issue that I badly wanted to sniff the SSL Packets received from my web application.  Thanks to the ClearWatch tool.&lt;br /&gt;&lt;br /&gt;The tool from Covelight allows you to sniff HTTP packets encrypted with SSL as well.  All you need is to have the Private Key of the Server.&lt;br /&gt;&lt;br /&gt;The tool is available for download from &lt;a href="http://www.covelight.com/downloads.php"&gt;http://www.covelight.com/downloads.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-113781449882210902?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/113781449882210902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=113781449882210902' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113781449882210902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113781449882210902'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/01/very-useful-https-sniffer-tool.html' title='A very useful HTTP(S) Sniffer Tool'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8569806.post-113780926689975912</id><published>2006-01-21T07:36:00.000+05:30</published><updated>2006-01-21T07:37:46.900+05:30</updated><title type='text'>Flagging off</title><content type='html'>Finally, I have got to flag off my blog...I hope to share more information soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8569806-113780926689975912?l=blog.karthiks.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.karthiks.in/feeds/113780926689975912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8569806&amp;postID=113780926689975912' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113780926689975912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8569806/posts/default/113780926689975912'/><link rel='alternate' type='text/html' href='http://blog.karthiks.in/2006/01/flagging-off.html' title='Flagging off'/><author><name>Karthik Krishnan</name><uri>http://www.blogger.com/profile/04657645225876112329</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='30' src='http://3.bp.blogspot.com/-CkRr6v_uytw/TavblqgD36I/AAAAAAAAFIM/qD3gbMjBOCg/s220/me.png'/></author><thr:total>2</thr:total></entry></feed>
