<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>Vinay Srini</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/" />
   <link rel="self" type="application/atom+xml" href="http://developer.spikesource.com/blogs/vsrini/atom.xml" />
   <id>tag:developer.spikesource.com,2009:/blogs/vsrini//1</id>
   <updated>2009-05-20T16:44:00Z</updated>
   
   <generator uri="http://www.sixapart.com/movabletype/">Movable Type Enterprise 1.5</generator>

<entry>
   <title>vim and end-of-line on the last line</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2009/05/vim_and_endofline_on_the_last.html" />
   <id>tag:developer.spikesource.com,2009:/blogs/vsrini//1.84</id>
   
   <published>2009-05-20T16:42:36Z</published>
   <updated>2009-05-20T16:44:00Z</updated>
   
   <summary>VIM (the best editor on earth. ahem!) believes that lines in a text file should always end with a end of line character, and last line is no exception. But, sometimes during coding JSPs I have encountered problems with end...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
   
   <category term="25" label="vim eol" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[VIM (the best editor on earth. ahem!) believes that lines in a <strong>text</strong> file should always end with a end of line character, and last line is no exception.

But, sometimes during coding JSPs I have encountered problems with end of lines in the last lines. &lt;jsp:include file=""/&gt; constructs in jsps add undesired line breaks in your including jsps. After trying to work around it for a long time now, I decided to see what option is it in vim that can skip the end-of-line character on the last line (Vim has got to have an option for everything, definitely not the kind of <em>ctrl-alt-shift-and-stretch-your-finger-to-key-you-cannot-reach-emacs-option</em> - ahem!)

Now, to the point, the basic idea is to set the specific file as 'binary' and ask vim not to include eol

:set binary
:set noeol

as simple as that. Now, there won't be any new lines at end of files. These settings are local to the buffer and won't affect your other files in the same window.

Say you want to set those options permanently for that file, you can automatically direct vim to set those options for the buffer by adding them in the comment.

In case of jsp, the following line either at the beginning or the end of file will do:

&lt;!-- vim: noeol binary --%&gt;&lt;%
// rest of your code goes here
%&gt;

Thanks for flying Vim!]]>
      
   </content>
</entry>
<entry>
   <title>Count your search queries !!</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2009/01/count_your_search_queries.html" />
   <id>tag:developer.spikesource.com,2009:/blogs/vsrini//1.80</id>
   
   <published>2009-01-13T02:44:18Z</published>
   <updated>2009-01-13T02:56:12Z</updated>
   
   <summary>Carbon dioxide emission for each search query on google amounts to your car driven for a meter ! In terms of greenhouse gases, one Google search is equivalent to about 0.2 grams of CO2. The current EU standard for tailpipe...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
   
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[Carbon dioxide emission for each search query on google amounts to your car driven for a meter !

<blockquote>In terms of greenhouse gases, one Google search is equivalent to about 0.2 grams of CO2. The current EU standard for tailpipe emissions calls for 140 grams of CO2 per kilometer driven, but most cars don't reach that level yet. Thus, <strong>the average car driven for one kilometer (0.6 miles for those in the U.S.) produces as many greenhouse gases as a thousand Google</strong> searches.</blockquote>

Read more..
<a href="http://googleblog.blogspot.com/2009/01/powering-google-search.html">http://googleblog.blogspot.com/2009/01/powering-google-search.html</a>]]>
      
   </content>
</entry>
<entry>
   <title>[ref] opensource build and test workshop</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2008/09/ref_opensource_build_and_test.html" />
   <id>tag:developer.spikesource.com,2008:/blogs/vsrini//1.79</id>
   
   <published>2008-09-26T01:08:52Z</published>
   <updated>2008-09-26T01:12:57Z</updated>
   
   <summary>Free Open Source Build and Test Workshop - coming to a city near you Learn how you can leverage open-source RIA application server technology from Appcelerator to rapidly build Ajax applications. Learn how you can leverage open-source testing tools (Selenium,...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
         <category term="TestGen4Web" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[<a href="http://www.pushtotest.com/Docs/training/workshop">Free Open Source Build and Test Workshop</a> - coming to a city near you

<blockquote>Learn how you can leverage open-source RIA application server technology from Appcelerator to rapidly build Ajax applications. Learn how you can leverage open-source testing tools (Selenium, soapUI, PushToTest, <strong>TestGen4Web</strong>, HTMLUnit) for functional testing, load and performance testing, and business service monitoring, with more flexibility than traditional solutions provide.
</blockquote>]]>
      
   </content>
</entry>
<entry>
   <title>Introduction to htmlunit-interpreter</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2008/09/introduction_to_htmlunitinterp.html" />
   <id>tag:developer.spikesource.com,2008:/blogs/vsrini//1.78</id>
   
   <published>2008-09-20T01:03:13Z</published>
   <updated>2008-09-20T01:33:44Z</updated>
   
   <summary> Using htmlunit-interpreter HtmlUnit interpreter is a translator for testgen4web recordings. It is a wrapper around htmlunit library which does an excellent job in emulating the browser. The tool isn&apos;t new, it has been around for a while. TestMaker from...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
         <category term="TestGen4Web" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[<div style="text-align:center;border:1px solid green;">
<strong>Using htmlunit-interpreter</strong><br/>
<a href="http://developer.spikesource.com/docman/view.php/14/2307/htmlunit-interpreter-usage.htm">
<img alt="video.jpg" src="http://developer.spikesource.com/blogs/vsrini/video.jpg" width="36" height="28" />
</a>
</div>

HtmlUnit interpreter is a translator for testgen4web recordings. It is a wrapper around <a href="http://htmlunit.sourceforge.net/">htmlunit</a> library which does an excellent job in emulating the browser.

The tool isn't new, it has been around for a while. <a href="http://docs.pushtotest.com/docs/index.html">TestMaker</a> from <a href="http://www.pushtotest.com/">pushtotest</a> ships with both testgen4web and htmlunit-interpreter.

More documentation at:
<a href="http://developer.spikesource.com/wiki/index.php?title=Projects:TestGen4WebDocs#Installation_and_running_translators">http://developer.spikesource.com/wiki/index.php?title=Projects:TestGen4WebDocs#Installation_and_running_translators</a>

Download latest copy from:
<a href="http://developer.spikesource.com/frs/?group_id=14">http://developer.spikesource.com/frs/?group_id=14</a>

I recorded a video demonstration for using htmlunit-interpreter. A less well known tool compared to its firefox 

<div style="text-align:center;border:1px solid green;">
<strong>Using htmlunit-interpreter</strong><br/>
<a href="http://developer.spikesource.com/docman/view.php/14/2307/htmlunit-interpreter-usage.htm">
<img alt="video.jpg" src="http://developer.spikesource.com/blogs/vsrini/video.jpg" width="36" height="28" />
</a>
</div>

You can find other video tutorials here:
<a href="http://developer.spikesource.com/wiki/index.php?title=Projects:TestGen4WebDocs#Tutorials">http://developer.spikesource.com/wiki/index.php?title=Projects:TestGen4WebDocs#Tutorials</a>]]>
      
   </content>
</entry>
<entry>
   <title>Video Tutorial Series - Looping over steps based on a variables value</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2008/09/new_video_tutorial_series_loop.html" />
   <id>tag:developer.spikesource.com,2008:/blogs/vsrini//1.77</id>
   
   <published>2008-09-17T19:05:45Z</published>
   <updated>2008-09-17T19:11:14Z</updated>
   
   <summary>I put together a video tutorial today to explain looping based on a variable. Here it goes: &quot;Looping steps based on a variable&apos;s value&quot; You can find other video tutorials here: http://developer.spikesource.com/wiki/index.php?title=Projects:TestGen4WebDocs#Tutorials...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
         <category term="TestGen4Web" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[I put together a video tutorial today to explain looping based on a variable. Here it goes:

<div style="text-align:center;border:1px solid green;">
<strong>"Looping steps based on a variable's value"</strong><br/>
<a href="http://developer.spikesource.com/docman/view.php/14/2299/tg4w-loop-condition.htm">
<img alt="video.jpg" src="http://developer.spikesource.com/blogs/vsrini/video.jpg" width="36" height="28" />
</a>
</div>

You can find other video tutorials here:
<a href="http://developer.spikesource.com/wiki/index.php?title=Projects:TestGen4WebDocs#Tutorials">http://developer.spikesource.com/wiki/index.php?title=Projects:TestGen4WebDocs#Tutorials</a>]]>
      
   </content>
</entry>
<entry>
   <title>TestGen4Web update 1.0.0</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2008/06/testgen4web_update_10_1.html" />
   <id>tag:developer.spikesource.com,2008:/blogs/vsrini//1.76</id>
   
   <published>2008-06-27T19:41:49Z</published>
   <updated>2008-08-06T13:51:59Z</updated>
   
   <summary>I am excited to announce testgen4web 1.0.0 This is a great release with lots of new features. Download here: http://developer.spikesource.com/frs/?group_id=14&amp;release_id=107 Note: I have tested this on only firefox 3 - Please let me know if you need a firefox 2...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
         <category term="TestGen4Web" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[I am excited to announce testgen4web 1.0.0
This is a great release with lots of new features.

Download here: <a href="http://developer.spikesource.com/frs/?group_id=14&release_id=107">http://developer.spikesource.com/frs/?group_id=14&release_id=107</a>

Note: I have tested this on only firefox 3 - Please let me know if you need a firefox 2 version, and it can be tested there too!

Here are the list of features:

New features added:
<ol>
    <li><strong>brand new shiny editor</strong>: All new editor with easy to use interface. Much more simplified from the previous versions of the editor. See screenshot!.<br/>
<img alt="tg4w-screenshot2.png" src="http://developer.spikesource.com/blogs/vsrini/tg4w-screenshot2.png" width="518" height="279" />

    New features include:
    <ul>
        <li>Nicer editing featues</li>
        <li>Shows status of the current step when running the recording by adding a <font color='red'>&gt;&gt;</font> at the begining of the step in the editor</li>
        <li>"Run Status" tab on the right pane of the editor shows the status of the player/recorder, status of the datasets and variables<br/>
<img alt="runstatus.png" src="http://developer.spikesource.com/blogs/vsrini/runstatus.png" width="467" height="228" />
</li>
        <li>"Debug" tab provides easy way to run javascript on the page, build a xpath and try it out before running the actual command<br/>
<img alt="debug.png" src="http://developer.spikesource.com/blogs/vsrini/debug.png" width="459" height="366" />
</li>
    </ul>
    </li>
    <li><strong>execute-js action</strong>: execute random javascript during execution of the script. This would help developers work around some quirks of firefox and testgen4web. eg: http://developer.spikesource.com/forums/viewtopic.php?t=865</li>
    <li><strong>assert-text with xpath</strong>: this action until now was pretty much ignored. Now the user has an option to select where to assert the text. There are 2 ways
    <ul>
        <li>* as xpath will search the entire page</li>
        <li>specify an actual xpath will search in that area</li>
    </ul></li>
    <li><strong>detachable bar</strong>: you don't have to be thethered to the main window anymore. detach the testgen4web toolbar and keep it on the side for editing long recordings easily. <img alt="detach.gif" src="http://developer.spikesource.com/blogs/vsrini/detach.gif" width="16" height="16" />
</li>
    <li><strong>Simple xpath support</strong>: Now you can record with simple xpath. This xpath generating script will be complete xpath (NOTE: that your recording might break if simple things on your webpagee changes. I would still recommend that you use the 'smart xpath' option.
<img alt="simple-xpath.png" src="http://developer.spikesource.com/blogs/vsrini/simple-xpath.png" width="425" height="420" /></li>
</ol>]]>
      
   </content>
</entry>
<entry>
   <title>TestGen4Web Tutorial Series - Using simple conditions</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2007/12/testgen4web_tutorial_series_us.html" />
   <id>tag:developer.spikesource.com,2007:/blogs/vsrini//1.72</id>
   
   <published>2007-12-20T17:16:49Z</published>
   <updated>2008-08-01T15:25:30Z</updated>
   
   <summary> &quot;Using Simple Conditions with TestGen4Web&quot; Prompted by a post on the forums, here comes the 2nd video tutorial demonstrating creating a &quot;simple condition&quot; with testen4web. There was one other video tutorial before this. Find all the links here: http://developer.spikesource.com/wiki/index.php/Projects:TestGen4WebDocs#Tutorials...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
         <category term="TestGen4Web" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[<div style="text-align:center;border:1px solid green;">
<strong>"Using Simple Conditions with TestGen4Web"</strong><br/>
<a href="http://developer.spikesource.com/docman/view.php/14/853/tg4w-condition.htm">
<img alt="video.jpg" src="http://developer.spikesource.com/blogs/vsrini/video.jpg" width="36" height="28" />
</a>
</div>

Prompted by a <a href="http://developer.spikesource.com/forums/viewtopic.php?t=814">post</a> on the forums, here comes the 2nd video tutorial demonstrating creating a "simple condition" with testen4web.

There was one other video tutorial before this. Find all the links here:
<a href="http://developer.spikesource.com/wiki/index.php/Projects:TestGen4WebDocs#Tutorials">http://developer.spikesource.com/wiki/index.php/Projects:TestGen4WebDocs#Tutorials</a>]]>
      
   </content>
</entry>
<entry>
   <title>New Video Tutorial Series - Using csv files to load data with TestGen4Web</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2007/12/new_video_tutorial_series_usin.html" />
   <id>tag:developer.spikesource.com,2007:/blogs/vsrini//1.71</id>
   
   <published>2007-12-20T17:16:49Z</published>
   <updated>2007-12-20T17:25:46Z</updated>
   
   <summary>First a little introduction for those who don&apos;t know what TestGen4Web is: TestGen4Web is a 2 part tool. 1. A firefox extension where you can capture your navigation on the webpage and play it back. 2. A Unit Test generator...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
         <category term="TestGen4Web" scheme="http://www.sixapart.com/ns/types#category" />
   
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[First a little introduction for those who don't know what TestGen4Web is:

<blockquote>TestGen4Web is a 2 part tool. 

1. A firefox extension where you can capture your navigation on the webpage and play it back.
2. A Unit Test generator to run tests on the command line without using firefox.
</blockquote>
More details at <a href="http://developer.spikesource.com/wiki/index.php/Projects:TestGen4Web">http://developer.spikesource.com/wiki/index.php/Projects:TestGen4Web</a>

There was a <a href="http://developer.spikesource.com/forums/viewtopic.php?t=802">comment</a> on our forum about lack of documentation about features - I decided to take action - thanks for rholder.

I have introduced a video tutorial series - which I will hopefully keep up and add more videos in the future.

<a href="http://developer.spikesource.com/wiki/index.php/Projects:TestGen4WebDocs#Tutorials">http://developer.spikesource.com/wiki/index.php/Projects:TestGen4WebDocs#Tutorials</a>

And finally ... the first tutorial ... drum roll ... introducing ....

<strong>"Using CSV Files with TestGen4Web"</strong>
<a href="http://developer.spikesource.com/docman/view.php/14/850/tg4w-dataset.htm">http://developer.spikesource.com/docman/view.php/14/850/tg4w-dataset.htm</a>]]>
      
   </content>
</entry>
<entry>
   <title>[citation] Linus Torvalds on Open Source: &apos;A Much Better Way to Do Things&apos;</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2007/11/citation_linus_torvalds_on_ope.html" />
   <id>tag:developer.spikesource.com,2007:/blogs/vsrini//1.62</id>
   
   <published>2007-11-05T17:40:54Z</published>
   <updated>2007-12-19T22:44:23Z</updated>
   
   <summary>&quot;Linux really wouldn&apos;t have gone anywhere interesting at all if it hadn&apos;t been released as an open source product. I also think that the change to the GPLv2 from my original &apos;no money&apos; license was important, because the commercial interests...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
   
   <category term="16" label="linux" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="14" label="open-source" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA["<em>Linux really wouldn't have gone anywhere interesting at all if it hadn't been released as an open source product. I also think that the change to the GPLv2 from my original 'no money' license was important, because the commercial interests were actually very important from the beginning. The commercial distributions were what drove a lot of the nice installers and pushed people to improve usability,</em>" said Linux creator Linus

Complete story here:
<a href="http://www.technewsworld.com/story/60052.html">http://www.technewsworld.com/story/60052.html</a>


While this blog talks about the creator of Linux, I have heard many different ways people pronounce <strong>'linux'</strong>. Here is how Linus Torvalds - the creator pronounces it himself.

<a href="http://www.paul.sladen.org/pronunciation/">http://www.paul.sladen.org/pronunciation/</a>]]>
      
   </content>
</entry>
<entry>
   <title>[link] delete old mail in thunderbird</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2007/09/link_delete_old_mail_setting_i_1.html" />
   <id>tag:developer.spikesource.com,2007:/blogs/vsrini//1.55</id>
   
   <published>2007-09-24T18:52:22Z</published>
   <updated>2007-09-24T19:04:30Z</updated>
   
   <summary>There are some folders on your mail which keep accumulating junk, and the only messages that matter are the latest ones. You can set &quot;Message Retention Policy&quot; in thunderbird for each folder. http://kb.mozillazine.org/Message_aging Steps: 1. Right click on the desired...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
   
   <category term="9" label="preferences" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="8" label="thunderbird" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[There are some folders on your mail which keep accumulating junk, and the only messages that matter are the latest ones.
You can set "Message Retention Policy" in thunderbird for each folder.

<a href="http://kb.mozillazine.org/Message_aging">http://kb.mozillazine.org/Message_aging</a>

Steps:
1. Right click on the desired folder - click on "Properties"
2. Click on "Retention Policy" tab
3. Set your desired preferences


Sample screenshot:
<img alt="tb_retention_policy.png" src="http://developer.spikesource.com/blogs/vsrini/tb_retention_policy.png" height="200" />]]>
      
   </content>
</entry>
<entry>
   <title>[link] Autolinkification in bugzilla</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2007/09/link_autolinkification_in_bugz.html" />
   <id>tag:developer.spikesource.com,2007:/blogs/vsrini//1.54</id>
   
   <published>2007-09-14T17:18:20Z</published>
   <updated>2007-09-14T17:24:15Z</updated>
   
   <summary>Type &quot;Bug 1234&quot; in bugzilla comment text and when viewing bug details, it is automagically linked to the bug. If the bug is closed, there is a strike through! It is not limited to just &quot;Bug #&quot;. The feature extends...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
   
   <category term="5" label="bugzilla" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="7" label="text-convert" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[Type "Bug 1234" in bugzilla comment text and when viewing bug details, it is automagically linked to the bug. If the bug is closed, there is a <strike>strike through</strike>!

It is not limited to just "Bug #". The feature extends to attachments, comments, urls etc. More details in the link to bugzilla documentation.

<a href="http://www.bugzilla.org/docs/tip/html/hintsandtips.html">http://www.bugzilla.org/docs/tip/html/hintsandtips.html</a>

A very handy feature some bugzilla users may not know about!]]>
      
   </content>
</entry>
<entry>
   <title>tomcat jdbc connection pool configuration</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2007/09/tomcat_jdbc_connection_pool_co.html" />
   <id>tag:developer.spikesource.com,2007:/blogs/vsrini//1.53</id>
   
   <published>2007-09-14T01:20:44Z</published>
   <updated>2007-09-13T17:34:38Z</updated>
   
   <summary><![CDATA[Over time, I have tried many combinations to keep jdbc connections from tomcat's connection pool fresh. I frequently got stale connections until after many tweaks, I found the winning combination. &lt;Resource name="jdbc/myresource" scope="Shareable" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/db" driverClassName="com.mysql.jdbc.Driver" username="myuser" password="xxxxx" maxIdle="3" maxActive="10"...]]></summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
   
   <category term="4" label="configuration" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="3" label="connection-pool" scheme="http://www.sixapart.com/ns/types#tag" />
   <category term="1" label="tomcat" scheme="http://www.sixapart.com/ns/types#tag" />
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[Over time, I have tried many combinations to keep jdbc connections from tomcat's connection pool fresh. I frequently got stale connections until after many tweaks, I found the winning combination.

<pre>    &lt;Resource name="jdbc/myresource" scope="Shareable"
        type="javax.sql.DataSource"
        url="jdbc:mysql://localhost:3306/db"
        driverClassName="com.mysql.jdbc.Driver"
        username="myuser"
        password="xxxxx"
        maxIdle="3"
        maxActive="10"
        removeAbandoned="true"
        removeAbandonedTimeout="60"
        testOnBorrow="true"
        validationQuery="select count(*) from sometablename"
        logAbandoned="true"
      /&gt;
</pre>]]>
      
   </content>
</entry>
<entry>
   <title>revelation: embedded images in html</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2007/08/revelation_embedded_images_in.html" />
   <id>tag:developer.spikesource.com,2007:/blogs/vsrini//1.52</id>
   
   <published>2007-08-31T07:38:09Z</published>
   <updated>2007-08-31T07:46:04Z</updated>
   
   <summary>Did not know I could ship the entire image embedded in html - encoded in base 64. View source on this page and see how Powerd by apache image is shown! eg: BINARY DATA HERE&quot; /&gt; Ref: http://www.unixreview.com/documents/s=8217/ur0305h/...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
   
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[Did not know I could ship the entire image embedded in html - encoded in base 64.<br/>
<em>View source</em> on this page and see how <b>Powerd by apache</b> image is shown!<br/>
<br/>
eg:<br/>
< img src="data:image/gif;base64,<br/>
BINARY DATA HERE" />

<br/>
<br/>

<img
   src="data:image/gif;base64,
    R0lGODlhAwEgAPcAAP///87OzqWlpYSEhHNzc2tra1paWiEYGP9CGP8xAL1SEN6thO+cQv+E
    AP/OGP/OAM7Oxr29xjEA/2MA/5wA/+8A/+dK79573talzv8AnO9KjP8AY+eEnO9SY/8AGAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAEALAAAAAADASAARwj/AAMIHEiwoMGD
    CBMqXMiwocOHECNKnEixokWGEQ4cGDCwwIABAgJsMLAhwwYPKFEmWNnAQYSBB/79MxDzXwSZ
    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
    BAQAOw==
   " >

<br/><br/>
Ref: http://www.unixreview.com/documents/s=8217/ur0305h/]]>
      
   </content>
</entry>
<entry>
   <title>Javascript array sort with custom comparators</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2007/08/javascript_array_sort_with_cus.html" />
   <id>tag:developer.spikesource.com,2007:/blogs/vsrini//1.22</id>
   
   <published>2007-08-18T05:47:42Z</published>
   <updated>2007-08-25T06:09:31Z</updated>
   
   <summary>Did you know that you can write custom comparator to sort an array in javascript? By default, it is a string sort var arr1 = [10,1,5,4,3,2]; arr1.sort(); // 1,10,2,3,5 Say we want a numeric sort, we could write a custom...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
   
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[Did you know that you can write custom comparator to sort an array in javascript?<br/><br/>

By default, it is a string sort<br/>
 <pre>var arr1 = [10,1,5,4,3,2];
arr1.sort(); // 1,10,2,3,5</pre>

Say we want a numeric sort, we could write a custom comparator
<pre>function numAscending(a, b) 
{ 
    return a - b; 
}
var arr1 = [10,1,5,4,3,2];
arr1.sort(numAscending); // 1, 2, 3, 4, 5 10</pre>]]>
      
   </content>
</entry>
<entry>
   <title>custom keywords in firefox</title>
   <link rel="alternate" type="text/html" href="http://developer.spikesource.com/blogs/vsrini/2007/08/custom_keywords_in_firefox.html" />
   <id>tag:developer.spikesource.com,2007:/blogs/vsrini//1.16</id>
   
   <published>2007-08-11T06:10:41Z</published>
   <updated>2007-08-11T06:23:55Z</updated>
   
   <summary>How do you get work done faster? By typing less - My requirement was to jump to a specific url in bugzilla given a bug number, and it would be nice - if you can just type &quot;bug 1122&quot; in...</summary>
   <author>
      <name>Vinay Srini</name>
      
   </author>
   
   
   <content type="html" xml:lang="en" xml:base="http://developer.spikesource.com/blogs/vsrini/">
      <![CDATA[How do you get work done faster? By typing less -

My requirement was to jump to a specific url in bugzilla given a bug number, and it would be nice - if you can just type "bug 1122" in the address bar and it jumps to the url http://bugzilla.domain.com/show_bug.cgi?id=1122

I realized today, that, it is a feature in firefox which I had not noticed until now. It is called "<strong>Keyword Searches</strong>"

<em><strong>The feature enables you to define a "keyword" for a bookmark which has a "%s" in it for substitution.</strong></em>

Now, my bookmark will look like http://bugzilla.domain.com/show_bug.cgi?id=%s, and the bookmark itself has the keyword "bug"

More information at the <a href="http://kb.mozillazine.org/Using_keyword_searches">mozilla knowledge base</a>]]>
      
   </content>
</entry>

</feed>
