<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bin-Blog &#187; web</title>
	<atom:link href="http://www.bin-co.com/blog/tag/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bin-co.com/blog</link>
	<description>Learn about the latest in Web Development - as soon as I do.</description>
	<lastBuildDate>Tue, 13 Oct 2009 18:55:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GIMP Plugin &#8211; Web 2.0 Shadows</title>
		<link>http://www.bin-co.com/blog/2009/07/gimp-plugin-web-2-0-shadows/</link>
		<comments>http://www.bin-co.com/blog/2009/07/gimp-plugin-web-2-0-shadows/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 18:27:02 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[gimp]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[script-fu]]></category>
		<category><![CDATA[shadow]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=319</guid>
		<description><![CDATA[Time to take a break from the WordPress Plugins. This time, its a Gimp Plugin. <a href="http://www.gimp.org/">Gimp, or GNU Image Manipulation Program</a>, is a software for such tasks as photo retouching, image composition and image authoring. Its what we Linux guys use instead of Photoshop. Web 2.0 Shadows is a Gimp Plugin - or as Gimpers call it, a Script-fu.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/07/web20_shadow.png" alt="Web 2.0 Shadow" title="Web 2.0 Shadow" width="300" height="150" class="aligncenter size-full wp-image-320 intro" align="right" /></p>
<p class="intro">Time to take a break from the WordPress Plugins. This time, its a Gimp Plugin. <a href="http://www.gimp.org/">Gimp, or GNU Image Manipulation Program</a>, is a software for such tasks as photo retouching, image composition and image authoring. Its what we Linux guys use instead of Photoshop. Web 2.0 Shadows is a Gimp Plugin &#8211; or as Gimpers call it, a Script-fu.</p>
<h3><a href='http://www.bin-co.com/blog/wp-content/uploads/2009/07/web20-shadow.scm'>Download Web 2.0 Shadows Script-fu</a></h3>
<p>This plugin will add a shadow to your image and give the full thing a background color of your choice. Why the background? for two reasons&#8230;</p>
<dl>
<dt>JPEG Images</dt>
<dd>they don&#8217;t support transparency &#8211; they need some background.</dd>
<dt>IE6</dt>
<dd>I created this plugin years ago &#8211; just never got around to realeasing it. When I created it, IE6 was still used &#8211; and it did not support Alpha Transparency in PNG images. So a background was needed.</dd>
</dl>
<h2>Samples/Screenshots</h2>
<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/07/interface.png" alt="interface" title="interface" width="459" height="489" class="aligncenter size-full wp-image-321" /></p>
<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2009/07/Serenityship.jpg" alt="Serenity Ship With Shadow" title="Serenity Ship With Shadow" width="430" height="276" class="aligncenter size-full wp-image-322" /></p>
<p>Almost all the pictures that appear in any of my blogs has been treated with Web 2.0 Shadow plugin. If you don&#8217;t believe me, take a <a href="http://blog.binnyva.com/2009/05/useless-skills-ability-to-spell-part-1-english/" title="Useless Skills Part 3: Ability to Spell, English">look</a> at <a href="http://blog.binnyva.com/2008/07/18-days-to-darkness/" title="18 Days to Darkness">few</a> of my <a href="http://lindesk.com/2009/06/top-4-terminal-gui-applications/" title="Top 4 Terminal GUI Applications">old</a> <a href="http://twitterkerala.com/tweetup/cochin-tweetup-5-report/" title="Cochin Tweetup #5 Report">posts</a>.</p>
<h2>Installation</h2>
<p>To install the script, download the .scm file and follow the <a href="http://docs.gimp.org/en/install-script-fu.html">installation procedures</a> specified in the Gimp documentation. This should work on both Windows and Linux.</p>
<h2>Gimp</h2>
<p>I have written a series on creating <a href="http://binnyva.blogspot.com/2007/01/creating-web-20-graphics-in-gimp.html">Web 2.0 style graphics in Gimp</a>. If you are interested in Gimp, take a look at that too.</p>
<p>One thing that might interest you &#8211; this plugin is my only program in Scheme. This is the closest I have been to doing any work in Lisp(Scheme is a dialect of Lisp). I hope to change this someday.</p>
<h2>Plugin Week 2</h2>
<p>This plugin is part of the Plugin Week 2 series. <strong class="highlight">Plugin Week is a week when I publish a new plugin each day for an entire week</strong>. I have already one this <a href="http://www.bin-co.com/blog/2008/12/wordpress-plugin-week/">one time</a> &#8211; so this is Plugin Week 2. The plugins released so far&#8230;</p>
<ul>
<li><a href="http://www.bin-co.com/blog/2009/07/plugin-week-2-wordpress-plugin-weather-man/">Weather Man</a></li>
<li><a href="http://www.bin-co.com/blog/2009/07/minicart-wordpress-plugin-shopping-cart-for-wordpress/">MiniCart WordPress Plugin</a></li>
<li><a href="http://www.bin-co.com/blog/2009/07/gallifrey-image-gallery-wordpress-plugin/">Gallifrey WordPress Plugin</a></li>
</ul>
<p>If you want to get news about the upcoming plugin releases(remember, 1 per day), please <strong class="highlight"><a href="http://feeds2.feedburner.com/bin-blog">subscribe to this site</a>.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2009/07/gimp-plugin-web-2-0-shadows/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Installing lighttpd Web Server in Linux with PHP and MySQL</title>
		<link>http://www.bin-co.com/blog/2008/11/installing-lighttpd-web-server-in-linux-with-php-and-mysql/</link>
		<comments>http://www.bin-co.com/blog/2008/11/installing-lighttpd-web-server-in-linux-with-php-and-mysql/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 17:48:21 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=161</guid>
		<description><![CDATA[After <a href="http://www.bin-co.com/blog/2008/09/installing-lampapache-web-serverphpmysql-in-debian/" title="Installing LAMP(Apache Web Server/PHP/MySQL) in Debian">two articles</a> on <a href="http://www.bin-co.com/blog/2008/09/compile-install-lamp-linux-apache-mysql-php-server-from-source/" title="Compile and Install a LAMP(Linux/Apache/MySQL/PHP) Server from Source">installing Apache</a>, lets take a look at <strong class="highlight">installing and configuring lighttpd web server on a linux system</strong>. <a href="http://www.lighttpd.net/">lighttpd</a> (pronounced "lighty") is a web server designed to be secure, fast, standards-compliant and flexible while having a low memory footprint.]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2008/11/lighttpd_logo.png" alt="lighttpd Web Server" title="Lighttpd Logo" width="200" height="197" class="alignnone size-full wp-image-160 intro" align="right" /></p>
<p class="intro">After <a href="http://www.bin-co.com/blog/2008/09/installing-lampapache-web-serverphpmysql-in-debian/" title="Installing LAMP(Apache Web Server/PHP/MySQL) in Debian">two articles</a> on <a href="http://www.bin-co.com/blog/2008/09/compile-install-lamp-linux-apache-mysql-php-server-from-source/" title="Compile and Install a LAMP(Linux/Apache/MySQL/PHP) Server from Source">installing Apache</a>, lets take a look at <strong class="highlight">installing and configuring lighttpd web server on a linux system</strong>. <a href="http://www.lighttpd.net/">lighttpd</a> (pronounced &#8220;lighty&#8221;) is a web server designed to be secure, fast, standards-compliant and flexible while having a low memory footprint.</p>
<p>Before installation, a few points to remember. These <strong class="highlight">instruction are not for a production environment &#8211; this is for a development environment</strong>. To install the software, <strong class="highlight">you need root access</strong>. You can get that using this command&#8230;</p>
<pre><code class="cli">su -
[Enter root password]</code></pre>
<p>or by prefixing &#8216;<code>sudo</code>&#8216; before each command.</p>
<h2>Installing the Server</h2>
<p>First install lighttpd and PHP &#8211; use your distro&#8217;s package management(yum, apt-get) system to do this.</p>
<h3>Install lighttpd</h3>
<p>You can use this command in Red Hat based systems(Fedora, Cent OS, etc.) to install lighttpd. Debian/Ubuntu systems might the same package name &#8211; could someone post the package name of lighttpd in the comments?</p>
<pre><code class="cli">yum install lighttpd lighttpd-fastcgi</code></pre>
<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2008/09/php-logo.png" alt="PHP Logo" title="PHP Logo" width="179" height="98" class="alignnone size-full wp-image-123" align="right" /></p>
<h3>Install PHP</h3>
<p>If you don&#8217;t have PHP, you can install it using the command&#8230;</p>
<pre><code class="cli">yum install php php-cli php-common</code></pre>
<p>In Debian/Ubuntu systems, the command is&#8230;</p>
<pre><code class="cli">apt-get install php5-cli php5-common php5-cgi</code></pre>
<p>You can make sure you have php-cgi(needed for working with lighttpd) by running this command&#8230;</p>
<pre><code class="cli">php-cgi -v</code></pre>
<h3>Installing MySQL</h3>
<p><img src="http://www.bin-co.com/blog/wp-content/uploads/2008/09/mysql_logo.gif" alt="" title="MySQL Logo" width="150" height="98" class="alignnone size-full wp-image-127" align="right" /></p>
<p>If MySQL is not yet installed, use this command to install it&#8230;</p>
<pre><code class="cli">yum install mysql-server php-mysql mysql mysql-libs</code></pre>
<p>Debian/Ubuntu Command&#8230;</p>
<pre><code class="cli">apt-get install mysql-client mysql-common mysql-server php5-mysql</code></pre>
<h2>Configuring lighttpd</h2>
<p>lighttpd configuration is done by <strong class="highlight">editing the text file &#8216;/etc/lighttpd/lighttpd.conf&#8217;.</strong></p>
<p><strong class="highlight">Enable some lighttpd modules</strong> by removing the comment character(#) from the beginning of the line. I have enabled the following modules&#8230;</p>
<pre><code class="conf">server.modules              = (
                                "mod_rewrite",
                                "mod_redirect",
                                "mod_access",
                                "mod_fastcgi",
                                "mod_accesslog" )
</code></pre>
<p><strong class="highlight">Configure lighttpd&#8217;s document root</strong> &#8211; if you already have Apache, I would recommend using the same document root as Apache(applicable for development servers only). </p>
<pre><code class="conf">server.document-root        = "/var/www/"</code></pre>
<p>I find it helpful to <strong class="highlight">enable folder listing</strong> in my server.</p>
<pre><code class="conf">## virtual directory listings
dir-listing.activate       = "enable"</code></pre>
<h3>Turn On FastCGI PHP Support</h3>
<p>Now, make sure lighttpd works with PHP &#8211; first get the path of php-cgi using the command..</p>
<pre><code class="cli">$ whereis php-cgi
php-cgi: /usr/bin/php-cgi #Might be different on your system.</code></pre>
<p>Then <strong class="highlight">add the path to the configuration file</strong> of lighttpd&#8230;</p>
<pre><code class="conf">#### fastcgi module
## read fastcgi.txt for more info
## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
fastcgi.server             = ( ".php" =>
                               ( "localhost" =>
                                 (
                                   "socket" => "/tmp/php.socket",
                                   <strong class="highlight">"bin-path" => "/usr/bin/php-cgi"</strong>
                                 )
                               )
                            )</code></pre>
<p>Make sure you <strong class="highlight">uncomment the above lines</strong> by removing the &#8216;#&#8217; characters.</p>
<p>After you are done, <strong class="highlight">save the file</strong>. Time to try out the server.</p>
<h2>Starting the lighttpd Server</h2>
<p>First stop Apache if it is running&#8230;</p>
<pre><code class="cli">/etc/init.d/httpd stop</code></pre>
<p>Now start lighttpd using the command</p>
<pre><code class="cli">/etc/init.d/lighttpd start</code></pre>
<p>Go to your document root(<code>/var/www</code>) and <strong class="highlight">create a php files called &#8216;info.php&#8217; and put this code</strong> inside it&#8230;</p>
<pre><code class="php">&lt;?php
php<!-- wordpress bug workaround -->Info();</code></pre>
<p>Now fire up a browser and <strong class="highlight">go to <a href="http://localhost/" title="Might not work if the preceding instructions where not followed">localhost</a></strong> &#8211; you should see a file listing page with a ‘info.php’ in the list. Click on that link &#8211; if you see a PHP information page, your web server is setup correctly.</p>
<p>To make sure MySQL-PHP connection is working, <a href="http://www.bin-co.com/database/clients/phpmyadmin/installing_phpmyadmin.php" title="Installing phpMyAdmin 2.8">install phpMyAdmin</a> &#8211; or write a database connection script &#8211; whatever is easier for you.</p>
<h2>Related Links</h2>
<ul>
<li><a href="http://www.lighttpd.net/">lighttpd fly light</a></li>
<li><a href="http://en.wikipedia.org/wiki/Lighttpd">lighttpd &#8211; Wikipedia</a></li>
<li><a href="http://cssgallery.info/lighttpd-install-perl-mysql-support-in-chrooted-jail/">Lighttpd install perl, mysql support in chrooted jail</a></li>
<li><a href="http://www.cyberciti.biz/tips/lighttpd-php-fastcgi-configuration.html">Lighttpd PHP fastcgi configuration</a></li>
<li><a href="http://www.cyberciti.biz/tips/howto-install-lighttpd-on-freebsd.html">FreeBSD Install Lighttpd Web Server</a></li>
<li><a href="http://fandar-it.com/content/view/35/32/">Install lighttpd with php</a></li>
<li><a href="http://wiki.vpslink.com/Install_and_Configure_lighttpd">Install and Configure lighttpd</a></li>
<li><a href="http://www.howtoforge.com/lighttpd_php5_mysql_fedora7">Installing Lighttpd With PHP5 And MySQL Support On Fedora 7</a></li>
</ul>
<p><strong class="highlight">Shameless Plug</strong>: If you are a Linux user, you may want to check out my <a href="http://lindesk.com/" title="Lindesk - Linux on the Desktop">Linux Blog &#8211; LinDesk</a> &#8211; its about Linux on the Desktop &#8211; Articles, Application Reviews and Tutorials about many aspects of Linux included configuration and scripting.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2008/11/installing-lighttpd-web-server-in-linux-with-php-and-mysql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Rules for Creating an RSS Feed</title>
		<link>http://www.bin-co.com/blog/2008/07/rules-for-creating-an-rss-feed/</link>
		<comments>http://www.bin-co.com/blog/2008/07/rules-for-creating-an-rss-feed/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 17:51:29 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[format]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[rule]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/?p=117</guid>
		<description><![CDATA[Some rules for creating an RSS feed.]]></description>
			<content:encoded><![CDATA[<p><a href='http://feeds.feedburner.com/bin-blog'><img src="http://www.bin-co.com/blog/wp-content/uploads/2008/07/rss_feed.png" alt="" title="RSS Feed" width="158" height="158" class="alignnone size-full wp-image-118 intro" align="right" /></a></p>
<p class="intro">Most of us don&#8217;t have to worry about creating an RSS feed for our sites &#8211; the <abbr title="Content Management System">CMS</abbr> tool will do that automatically. But there are times when you are creating a custom application &#8211; when you have to create an RSS feed yourself. Creating it is easy &#8211; they don&#8217;t call it <strong>Really Simple</strong> Syndication for nothing. But there are a few rules(or rather, guidelines) that are ignored by most &#8211; make sure you follow them.</p>
<p>I am by no means an expert on this format &#8211; but I have created <a href="http://www.openjs.com/rss.php?no_redirect=1">RSS feeds</a> and have <a href="http://www.bin-co.com/blog/2008/02/alertle-launched/">worked</a> on  <a href="http://www.alertle.com/">applications</a> to <a href="http://www.bin-co.com/php/scripts/xml2array/">parse</a> it. So I have seen my share of bad implementations.</p>
<h2>Use RSS rather than Atom</h2>
<p>I prefer using <a href="http://en.wikipedia.org/wiki/RSS_(file_format)">RSS</a> as opposed to the <a href="http://en.wikipedia.org/wiki/Atom_(standard)">Atom format</a>. But Atom is now supported on almost all feed readers &#8211; so this preference may change. But for now, I like RSS better than Atom.</p>
<h2>Last-Modified</h2>
<p>Make sure your feed has the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.29">last modified header</a>. This will prevent unnecessary downloading of the feed if there are no new articles. It <a href="http://feedparser.org/docs/http-etag.html">saves both the site&#8217;s and the user&#8217;s bandwidth</a>.</p>
<p>This is extremely easy in PHP&#8230;</p>
<pre><code class="php">$last_edited = '2008-07-17 01:02:03'; // This should be the time of the latest post.
header("Last-Modified: " . date('r',strtotime($last_edited)));</code></pre>
<h2>10 Posts</h2>
<p>Make sure you provide a limited number of posts in the feed &#8211; the perfect number, in my opinion, is 10. It can increase or decrease a bit &#8211; its no big deal. If your posting frequency is high, the number should increase. And if the frequency is low, the number of items in the feed can go down.</p>
<p>But make sure that you are not including all the posts from the beginning of time until now. This is a big waste of bandwidth. Unfortunately, many have adopted this method. For example, take this feed &#8211; <a href="http://www.catandgirl.com/rss.php">Cat and Girl Comic feed</a>.</p>
<p>The other extream is just as bad &#8211; providing just the latest item in the feed. If the author writes two posts in quick succession, the viewers may not get an article. An example for this in the <a href="http://www.viruscomix.com/rss.xml">subnormality comic</a>.</p>
<h2>Validate it</h2>
<p>XML is not as forgiving as HTML &#8211; so make sure you <a href="http://www.feedvalidator.org/">validate your feed</a> before releasing it upon the world.</p>
<h2>Use FeedBurner</h2>
<p>When it comes to deployment, using <a href="http://www.feedburner.com/fb/a/home">FeedBurner</a> is a better option that using your own server. In addition to its statistics, it will also act as a <abbr title="Content Distribution Network">CDN</abbr> lowering the load on your server.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2008/07/rules-for-creating-an-rss-feed/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Alertle Launched</title>
		<link>http://www.bin-co.com/blog/2008/02/alertle-launched/</link>
		<comments>http://www.bin-co.com/blog/2008/02/alertle-launched/#comments</comments>
		<pubDate>Sun, 10 Feb 2008 18:22:43 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Sites]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[alertle]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[reader]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2008/02/alertle-launched/</guid>
		<description><![CDATA[
I am one of the geeks behind Alertle. Its a web based RSS Reader. I am responsible for a good amount of the JavaScript areas of this app  
Features

Single Page Application
The entire application is contained in a single page &#8211; everything is done through Ajax. I will not advice that you make something like [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.alertle.com/' title='Alertle Screenshot'><img src='http://www.bin-co.com/blog/wp-content/uploads/2008/02/alertle_screenshot.jpg' alt='Alertle Screenshot' class="intro" align="right" /></a></p>
<p class="intro">I am one of the geeks behind <a href="http://www.alertle.com/">Alertle</a>. Its a web based RSS Reader. I am responsible for a good amount of the JavaScript areas of this app <img src='http://www.bin-co.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h2>Features</h2>
<dl>
<dt>Single Page Application</dt>
<dd>The entire application is contained in a single page &#8211; everything is done through Ajax. I will not advice that you make something like this(its a maintenance nightmare) but I can say one thing about it &#8211; its Cool. With a capital &#8216;C&#8217;.</dd>
<dt>Keyboard Shortcuts</dt>
<dd>I got the idea of creating a <a href="http://www.openjs.com/scripts/events/keyboard_shortcuts/">Keyboard Shortcut Library for JavaScript</a> when I was working on this feature.</dd>
<dt>Autoplay</dt>
<dd>You can view articles as you are viewing a slideshow if you enable this.</dd>
<dt>Feedpacks</dt>
<dd>You can bunch a group of feeds together into a feedpack &#8211; and see all the posts from such a group together.</dd>
<dt>Sharing</dt>
<dd>You can share your feedpacks with other users</dd>
</dl>
<h3>Perfect for High Volume Feeds</h3>
<p>There is one major feature that sets Alertle appart from other RSS readers &#8211; it does not tell you if a post is read or not. Yeah, first you will think its a missing feature &#8211; but its not. I have used a lot of feed readers &#8211; once you subscribe to a couple of high volume feed &#8211; like say, BoingBoing or Slashdot or something, you can say goodbye to your sanity. It creates so many new items that the only way of staying away the mess is to click on the &#8216;Mark all as read&#8217; button once every four seconds. You know what I mean &#8211; I am sure <a href="http://www.problogger.net/archives/2007/03/01/34-reasons-why-readers-unsubscribe-from-your-blog/">you have unsubscribed from many feeds for this reason.</a></p>
<p>With alertle, you can subscribe all these high volume feeds. And there is no pressure to view all the posts.</p>
<p>If you are an info junkie, I can guaranty that your will get lost for hours in Alertle.</p>
<h2>Problems</h2>
<h3>IE is not Supported</h3>
<p>We are still working on this &#8211; and due to deadline constraints, we decided to release Alertle without IE support. So if you are an IE user, I am sorry &#8211; but What in the World are you Doing? Ditch that terrible browser and get a <a href="http://www.mozilla.com/en-US/firefox/">real browser</a> right now!</p>
<p>If we can get a few people to switch to firefox before we add support for IE, I will say that Alertle gone beyond and above the call of duty to make the web a better place! <img src='http://www.bin-co.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<h3>Posts don&#8217;t have a Read Flag (pun unintended)</h3>
<p>Um., yeah, I know &#8211; this is both an advantage and a disadvantage. This will prevent me from using Alertle for all my feeds. For my must-read feeds, I will still be using Google Reader. For the high volume stuff, I will use Alertle.</p>
<h2>Getting to Know Alertle</h2>
<p>So, what are you waiting for? Head over to Alertle and sign up for an account. Its FREE!</p>
<p>But if you are still unconvinced, here is a demo&#8230;</p>
<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/ztQJ4ec1aWs&amp;rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/ztQJ4ec1aWs&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>
<h2>Links</h2>
<ul>
<li><a href="http://www.alertle.com/">Alertle</a></li>
<li><a href="http://mashable.com/2008/02/07/alertle/">Masable&#8217;s take on Alertle</a></li>
<li><a href="http://blog.alertle.com/">Alertle Blog</a></li>
<li><a href="http://wiki.alertle.com/">Alertle Docs</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2008/02/alertle-launched/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Defining Web 2.0 &#8211; At 3 Levels</title>
		<link>http://www.bin-co.com/blog/2008/01/defining-web-20-at-3-levels/</link>
		<comments>http://www.bin-co.com/blog/2008/01/defining-web-20-at-3-levels/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 19:08:11 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[hype]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2008/01/defining-web-20-at-3-levels/</guid>
		<description><![CDATA[
Web 2.0 &#8211; almost everyone have heard the term &#8211; but few are sure about its meaning. Unfortunately, it cannot be defined easily. People in different fields have their own unique definitions for the term. In this article, I will attempt to define the term at three different level &#8211; the Philosophy, the Technology and [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.bin-co.com/blog/wp-content/uploads/2008/01/web20.png' alt='Web 2.0' class="intro" align="right" /></p>
<p class="intro">Web 2.0 &#8211; almost everyone have heard the term &#8211; but few are sure about its meaning. Unfortunately, it cannot be defined easily. People in different fields have their own unique definitions for the term. In this article, I will attempt to define the term at three different level &#8211; the Philosophy, the Technology and the Design.</p>
<p><strong>Disclaimer</strong>: Before anyone reacts violently to the term Web 2.0, let me make myself very clear&#8230;<br />
<strong class="highlight">Web 2.0 is an <a href="http://blog.binnyva.com/2007/07/what-is-web-20/">ambiguous buzz word</a></strong>. It has been used and abused so many times that it <strong class="highlight">does not have a consistent meaning</strong> &#8211; so people are free to interpret it as they see fit. And this is how I interpret it.</p>
<h2>Philosophy</h2>
<p>The design philosophy of a web site can make it a Web 2.0 site. This is perhaps the key difference between a Web 1.0 site and a Web 2.0 site&#8230;</p>
<p>Web 1.0 is a web site where there is a <strong class="highlight">one way communication between the web master to the visitor</strong>. A Web 2.0 site is a site where the <strong class="highlight">visitors can communicate with each other</strong>.</p>
<p>For example, compare the Encyclopedia Britannica to Wikipedia. In Encyclopedia Britannica, the web master creates the content and gives it to the visitor &#8211; the visitor has no way of talking back. But in Wikipedia, the visitor create the content for other visitors.</p>
<h2>Technology</h2>
<p>The keyword here is &#8220;Internet as a platform&#8221;. In Web 2.0, the <strong class="highlight">net became the platform rather than just a data transfer mechanism</strong>. For a simple example, when you visit a site, the videos in it come from YouTube, the images from Flickr, the search is done using Google API and you can bookmark pages using the API from del.icio.us.</p>
<p>Some technologies that are described as Web 2.0&#8230;</p>
<ul>
<li>Ajax</li>
<li>Valid Markup</li>
<li><a href="http://microformats.org/">Microformats</a></li>
<li>Tagging, Tag Clouds</li>
<li>APIs</li>
<li>Feeds</li>
<li>Mashups</li>
</ul>
<p>Some features that makes a technology Web 2.0&#8230;</p>
<dl>
<dt>Speed</dt>
<dd>For example, <a href="http://www.openjs.com/ajax/tutorial/">Ajax</a> makes simple tasks much faster.</dd>
<dt>Ease of Use</dt>
<dd>A good example of this is Tagging. It is a much easier approach when compared to hierarchies.</dd>
<dt>Enabling Mashups</dt>
<dd>APIs, Feeds, etc. makes this possible.</dd>
<dt>Bringing Web Apps closer to the Desktop</dt>
<dd>Ajax, AIR, etc.</dd>
</dl>
<h2>Design</h2>
<p>This is perhaps the only area where the term Web 2.0 can be defined with a reasonable level of accuracy. A site with a Web 2.0 design is one that has at least some of these elements&#8230;</p>
<h3>Simple Design</h3>
<p><a href="http://www.stonewall.co.za/"><img src='http://www.bin-co.com/blog/wp-content/uploads/2008/01/stonewall.jpg' alt='Stonewall' /></a></p>
<h3>Lots of white space</h3>
<p><a href="http://browsehappy.com/"><img src='http://www.bin-co.com/blog/wp-content/uploads/2008/01/browsehappy.jpg' alt='Browse Happy' /></a></p>
<h3><a href="http://www.bin-co.com/blog/2007/12/a-secret-source-for-great-free-icons-for-your-desktop-and-web-apps/">Nice Icons</a></h3>
<p><a href="http://www.37signals.com/"><img src='http://www.bin-co.com/blog/wp-content/uploads/2008/01/37signal_icons.jpg' alt='37Signal Icons' /></a></p>
<h3>Violators/Badges/Star Flashes</h3>
<p><a href="http://www.alistapart.com/"><img src='http://www.bin-co.com/blog/wp-content/uploads/2008/01/alistapart.jpg' alt='A List Apart Violator' /></a></p>
<h3>Big Fonts</h3>
<p><a href="http://www.37signals.com/"><img src='http://www.bin-co.com/blog/wp-content/uploads/2008/01/37signals.jpg' alt='37Signal Font' /></a></p>
<h3>Gradients</h3>
<p><a href="http://www.stonewall.co.za/"><img src='http://www.bin-co.com/blog/wp-content/uploads/2008/01/stonewall.jpg' alt='Stonewall' /></a></p>
<h3>Reflections</h3>
<p><a href="http://www.curve2.com/"><img src='http://www.bin-co.com/blog/wp-content/uploads/2008/01/curve2.jpg' alt='Curve 2 Reflections' /></a></p>
<h3>Shadows</h3>
<p><a href="http://www.bin-co.com/blog/"><img src='http://www.bin-co.com/blog/wp-content/uploads/2008/01/shadows.png' alt='Shadows' /></a></p>
<h3>And More&#8230;</h3>
<p><a href="http://www.webdesignfromscratch.com/web-2.0-design-style-guide.cfm">Web 2.0 Design Style Guide</a></p>
<h2>For More Information</h2>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Web_2.0">Web 2.0 Wikipedia</a></li>
<li><a href="http://www.paulgraham.com/web20.html">Web 2.0</a></li>
<li><a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html">What Is Web 2.0</a></li>
<li><a href="http://radar.oreilly.com/archives/2005/08/not_20.html">Not 2.0?</a></li>
<li><a href="http://www.webdesignfromscratch.com/web-2.0-design-style-guide.cfm">Web 2.0 Design Style Guide</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2008/01/defining-web-20-at-3-levels/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Installing the acts_as_taggable Rails Plugin</title>
		<link>http://www.bin-co.com/blog/2007/12/installing-the-acts_as_taggable-rails-plugin/</link>
		<comments>http://www.bin-co.com/blog/2007/12/installing-the-acts_as_taggable-rails-plugin/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 17:04:58 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[acts_as_taggable]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[tags]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/12/installing-the-acts_as_taggable-rails-plugin/</guid>
		<description><![CDATA[You don&#8217;t have to write a lot of code to get tagging support in your Ruby on Rails application &#8211; you just have to install a plugin. This is how you install the &#8216;acts_as_taggable&#8217; plugin&#8230;
First go to the Ruby on Rails application folder and open a terminal at that location. Now run this commad&#8230;
ruby script/plugin [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">You don&#8217;t have to write a lot of code to get tagging support in your Ruby on Rails application &#8211; you just have to install a plugin. This is how you install the &#8216;acts_as_taggable&#8217; plugin&#8230;</p>
<p>First go to the Ruby on Rails application folder and open a terminal at that location. Now run this commad&#8230;</p>
<p><code class="cli">ruby script/plugin install acts_as_taggable</code></p>
<p>If your have previously installed some plugins from the same repository, that command will work. If not, you will get this error&#8230;</p>
<p><code>Plugin not found: ["acts_as_taggable"]</code></p>
<p>This is because the &#8216;acts_as_taggable&#8217; plugin is not in any of the repositories you check. To see the all the repositories on your check list, run this command&#8230;</p>
<p><code>ruby script/plugin list  	#Shows the list of all the repositories you check.</code></p>
<p>To add new repositories to your list, you have to run this command&#8230;</p>
<p><code>ruby script/plugin discover</code></p>
<p>This will shows a list of repositories &#8211; just press &#8216;y&#8217; to select all the repositories you need. I added every repository in the list.</p>
<p>Now run the first command again&#8230;</p>
<p><code>ruby script/plugin install acts_as_taggable</code></p>
<h2>Installing the Gem</h2>
<p>The above instructions are for installing the acts_as_taggable plugin &#8211; not the acts_as_taggable gem. To install the gem run the command&#8230;</p>
<p><code>gem install acts_as_taggable</code></p>
<h2>Related Links</h2>
<ul>
<li><a href="http://wiki.rubyonrails.com/rails/pages/ActsAsTaggablePluginHowto">Acts As Taggable Plugin Howto</a></li>
<li><a href="http://nubyonrails.com/articles/the-complete-guide-to-rails-plugins-part-i">The Complete Guide to Rails Plugins</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/12/installing-the-acts_as_taggable-rails-plugin/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A Secret Source for Great Free Icons for your Desktop and Web Apps</title>
		<link>http://www.bin-co.com/blog/2007/12/a-secret-source-for-great-free-icons-for-your-desktop-and-web-apps/</link>
		<comments>http://www.bin-co.com/blog/2007/12/a-secret-source-for-great-free-icons-for-your-desktop-and-web-apps/#comments</comments>
		<pubDate>Tue, 04 Dec 2007 19:31:37 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Sites]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[icon]]></category>
		<category><![CDATA[icons]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/12/a-secret-source-for-great-free-icons-for-your-desktop-and-web-apps/</guid>
		<description><![CDATA[Desktop and Web application needs icons. Icons make the app more usable than an all-text application. If you are building a desktop application, your framework may provide some stock icons. But if you are making a web application, you will need external icons.
I have seen a lot of pages that lists many icon sets&#8230;

Icons For [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">Desktop and Web application needs icons. <a href="http://www.oreillynet.com/mac/blog/2006/01/icons_usability_and_computers.html">Icons make the app more usable</a> than an all-text application. If you are building a desktop application, your framework may provide some stock icons. But if you are making a web application, you will need external icons.</p>
<p>I have seen a lot of pages that lists many icon sets&#8230;</p>
<ul>
<li><a href="http://www.smashingmagazine.com/2007/11/29/icons-for-your-desktop-and-icons-for-your-web-designs/">Icons For Your Desktop and Icons For Your Web Designs</a></li>
<li><a href="http://www.dapino-webdesign.nl/blog/?p=148">Quality mini icons</a></li>
<li><a href="http://garcya.us/blog/90-free-vector-icons-set/">90 Free Vector Icons Set</a></li>
<li><a href="http://www.designvitality.com/blog/2007/11/free-icons/">The Top 50 Sources for Free Designer Icons</a></li>
<li><a href="http://www.dezinerfolio.com/2007/09/25/top-50-supercool-free-icon-sets/">Top 50 Supercool Free Icon Sets</a></li>
<li><a href="http://www.smashingmagazine.com/2006/09/03/symbols-buttons-and-icons-for-free/">Symbols, Buttons and Icons For Free</a></li>
<li><a href="http://www.smashingmagazine.com/2006/12/03/more-symbols-buttons-and-icons-for-free/">More Symbols, Buttons and Icons For Free</a></li>
<li><a href="http://icons.primail.ch/">Free Tiny Small Mini Icons Bullets</a></li>
<li><a href="http://www.iconfinder.net/">Icon Finder &#8211; a search engine for icons</a></li>
</ul>
<p>But when I want some icons I have a better place to look.</p>
<p><a href="http://www.kde-look.org/index.php?xsortmode=high&amp;page=0&amp;xcontentmode=22x27">KDE</a> and <a href="http://www.gnome-look.org/index.php?xsortmode=high&amp;page=0&amp;xcontentmode=120">Gnome</a> Icon themes.</p>
<p>I prefer using these icons because of the following reasons&#8230;</p>
<h3>Multiple Size Icons</h3>
<p>Most themes provide the same icon in various sizes. The available sizes are 128&#215;128, 64&#215;64, 48&#215;48, 32&#215;32, 24&#215;24, 22&#215;22, 16&#215;16 and sometimes even a <strong>scalable SVG set</strong>. Not all themes have all the sizes &#8211; but most have. I don&#8217;t have to tell you how useful this is.</p>
<p><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/12/different_sizes.png' alt='Multiple Size Icons' /></p>
<h3>Lots of Choice</h3>
<p><a href="http://www.kde-look.org/index.php?xsortmode=high&amp;xcontentmode=22x27">KDE Look Icons page</a> have 86 pages with 15 icon themes per page. That makes a total of <strong>1290 icon sets</strong>. And I am not counting the Gnome Look Icons.</p>
<p>That&#8217;s a lot of choice. Granted, not all will be good. Not all will have the icon I am searching for. Not all have the size I way want. There will be some duplication. But its still a lot.</p>
<h3>Free &#8211; in both sense of the word</h3>
<p>Most of these icons uses <strong>GPL and LGPL licenses</strong>. So you can use if for your application without paying for them. You can modify them. You can share it with others. You can&#8230; you get the idea. The point is there are no restrictions.</p>
<p>Even if you are building a proprietary application, I think you can use the icons because you are not compiling it into the application. But <strong>I am not sure about that</strong> &#8211; if anyone reading this knows, please leave a comment.</p>
<p>I have to warn you that not all icons sets use these licenses &#8211; so make sure you <strong>look at the license of an icon set before using it</strong>.</p>
<h3>Great Icons</h3>
<p>Most of the icons are created by <a href="http://www.oxygen-icons.org/">professional designers</a>. Sure there are some duds among the collection &#8211; but the majority of them are good.</p>
<h2>Some Recommended Icon Sets</h2>
<h2><a href="http://www.kde-look.org/content/show.php/Crystal+Project?content=60475">Crystal Project</a></h2>
<p><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/12/crystal_project.png' alt='Crystal Project' /></p>
<h2><a href="http://www.kde-look.org/content/show.php/Nuvola?content=5358">Nuvola</a></h2>
<p><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/12/nuvola.png' alt='Nuvola' /></p>
<h2><a href="http://www.kde-look.org/content/show.php/Crystal+Diamond+Icons?content=45576">Crystal Diamond</a></h2>
<p><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/12/crystal_diamond.png' alt='Crystal Diamond' /></p>
<h2><a href="http://www.kde-look.org/content/show.php/black+%2B+white+icons?content=24645">black + white icons</a></h2>
<p><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/12/black_white.jpg' alt='Black White' /></p>
<h2><a href="http://www.kde-look.org/content/show.php/Crystal+Clear?content=25668">Crystal Clear</a></h2>
<p><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/12/crystal_clear.png' alt='Crystal Clear' /></p>
<p>And there are hundreds more for you to find out&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/12/a-secret-source-for-great-free-icons-for-your-desktop-and-web-apps/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Between Web Application and Desktop Applications</title>
		<link>http://www.bin-co.com/blog/2007/08/between-web-application-and-desktop-applications/</link>
		<comments>http://www.bin-co.com/blog/2007/08/between-web-application-and-desktop-applications/#comments</comments>
		<pubDate>Sun, 26 Aug 2007 17:39:10 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[local]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/08/between-web-application-and-desktop-applications/</guid>
		<description><![CDATA[There is a distinct line between web application and desktop applications. But over the last few years, this line is becoming thinner. Due to faster internet connection and technologies like ajax, web applications are becoming much faster and more responsive. And, if you have a local web server installed, a &#8216;web&#8217; application can become desktop [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">There is a distinct line between web application and desktop applications. But over the last few years, this line is becoming thinner. Due to faster internet connection and technologies like ajax, web applications are becoming much faster and more responsive. And, if you have a local web server installed, a &#8216;web&#8217; application can become desktop application.</p>
<p>I have a web server(Apache), and a database server(MySQL) running at all times on my local system. Since <abbr title="Linux/Apache/MySQL/PHP">LAMP</abbr> is my preferred platform of development, if I need a new software, I will create it on LAMP. A good example of this is <a href="http://www.bin-co.com/php/programs/apps/nexty/">Nexty</a>. Over time, I have discovered that web application can be used as desktop applications. All you need is a web server, a database server and a browser.</p>
<p>There must be some changes to the current model to make this system work. These are a few I could think of&#8230;</p>
<ul>
<li>Web Server must run as the current user. That way, you can read/write to any file using PHP(or equivalent).</li>
<li>The application must not be available over the network. Or, the web server must only accept connections from 127.0.0.1</li>
<li>An installer for these kind of applications must be made.</li>
</ul>
<h2>Advantages</h2>
<ul>
<li><strong>Familiarity</strong>: People are already used to web applications &#8211; so it will be easy to switch.</li>
<li><strong>User Customizable</strong>: Users can change the appearance of the application(user stylesheets), and to a limited extent, the functionality(GreaseMonkey).</li>
<li><strong>Open Source</strong>: If the code is in PHP or Ruby on Rails, or anything similar, the code will be available for study or even modification.</li>
<li><strong>Cross Platform</strong>: The same program can be installed in Windows or Linux or whatever &#8211; as long as it has a Web server.</li>
</ul>
<h2>Disadvantages</h2>
<ul>
<li><strong>Imaginary</strong>: As of yet no such system exists.</li>
<li><strong>High Level</strong>: The system will not be able to do low level system operations.</li>
<li><strong>Limited</strong>: There will be some very serious limitation to the application unless the current systems are modified. For example, the browser cannot read or write to the filesystem.</li>
</ul>
<p>I have been using some web applications as desktop applications for a while now &#8211; these include <a href="http://wordpress.org/">WordPress</a>(for keeping notes), <a href="http://www.activecollab.com/">activeCollab</a>(project management), Nexty(to do list), and Tiker(time tracker).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/08/between-web-application-and-desktop-applications/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Web Installer: The Code</title>
		<link>http://www.bin-co.com/blog/2007/07/web-installer-the-code/</link>
		<comments>http://www.bin-co.com/blog/2007/07/web-installer-the-code/#comments</comments>
		<pubDate>Tue, 10 Jul 2007 20:50:21 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[(X)HTML]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/07/web-installer-the-code/</guid>
		<description><![CDATA[The last two posts on web installer did not include any code. I wanted to dump all code into one post &#8211; this is it. Please note that this is what I did &#8211; you don&#8217;t have to copy my code as it is. Just look at the code and modify it according to your [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">The <a href="http://www.bin-co.com/blog/2007/07/web-application-installer/">last two posts</a> on <a href="http://www.bin-co.com/blog/2007/07/3-simple-steps-to-create-a-web-installer/">web installer</a> did not include any code. I wanted to dump all code into one post &#8211; this is it. Please note that this is what I did &#8211; you don&#8217;t have to copy my code as it is. Just look at the code and modify it according to your needs.</p>
<h2>Getting Database Details</h2>
<h3>The Form/Frontend</h3>
<pre><code class="html">&lt;form action="" method="post"&gt;
&lt;h1&gt;Installation : Step 1&lt;/h1&gt;
Please provide the database connection details...
&lt;fieldset&gt;
&lt;legend&gt;Database Details&lt;/legend&gt;

&lt;label for='host'&gt;Database Host&lt;/label&gt;&lt;input type='text' name='host' value='localhost' /&gt;&lt;br /&gt;
&lt;label for='db_user'&gt;Database User&lt;/label&gt;&lt;input type='text' name='db_user' value='root' /&gt;&lt;br /&gt;
&lt;label for='password'&gt;Database Password&lt;/label&gt;&lt;input type='text' name='password' /&gt;&lt;br /&gt;
&lt;label for='database'&gt;Database&lt;/label&gt;&lt;input type='text' name='database' value='nexty' /&gt;&lt;br /&gt;
&lt;/fieldset&gt;

&lt;input type="hidden" name="step" value="2" /&gt;&lt;br /&gt;
&lt;input type="submit" name="action" value="Continue &gt;&gt;" /&gt;&lt;br /&gt;
&lt;/form&gt;</code></pre>
<h3>Backend</h3>
<p>Make sure that the given database details are correct.</p>
<pre><code class="php">// The First step is Setting up Database connection
//					   (the '2' is NOT a typo)
if($_REQUEST['step'] == 2) {
	//Save the data to the Session
	if(isset($_REQUEST['host'])) $_SESSION['host'] = $_REQUEST['host'];
	if(isset($_REQUEST['db_user'])) $_SESSION['db_user'] = $_REQUEST['db_user'];
	if(isset($_REQUEST['password'])) $_SESSION['password'] = $_REQUEST['password'];
	if(isset($_REQUEST['database'])) $_SESSION['database'] = $_REQUEST['database'];
	if(isset($_REQUEST['url'])) $_SESSION['url'] = $_REQUEST['url'];

	if(mysql_connect($_SESSION['host'],$_SESSION['db_user'],$_SESSION['password'])) { //Try to connect to the DB.
		$QUERY['success'][] = 'Connection to Database server successful';

		if(mysql_select_db($_SESSION['database'])) {//Select the provided database.
			$QUERY['success'][] = "Database '$_SESSION[database]' selected";

		} else {
			$QUERY['error'][] = 'The given database('.$_SESSION['database'].') does not exist. Please povide a valid database.';
			$_REQUEST['step'] = 1;
		}
	} else {
		$QUERY['error'][] = 'Unable to connect to the database. Make sure that the entered details are correct';
		$_REQUEST['step'] = 1;
	}
}</code></pre>
<p>Notice the over use of $_SESSION? That will come in use if I decide to add a Back button that enables the users to modify the data entered previously.</p>
<h2>Database Creation</h2>
<pre><code class="php">//Create the database only if it does not exist
//See if the database exists
$tables_sql = mysql_query("SHOW TABLES") or die(mysql_error());
$necessary_tables = array('Context','Project','Reminder','Setting','Task','TaskContext','User');
while($table = mysql_fetch_row($tables_sql)) {
	$necessary_tables = array_diff($necessary_tables,array($table[0])); //Remove the table from the array if it exists
}

//If there are no tables in the array that means that the all the necessary tables are present in the Database
//If some tables are missing, that means we have to create those tables...
if($necessary_tables) {
	$quries = &lt;&lt;&lt;END
-- Insert all the SQL to create the necessary tables here...
END;

	//Execute all the queries
	$all_quires = explode(";",$quries);
	$query_count = 0;
	foreach($all_quires as $query) {
		$query = trim($query);
		if($query) {
			@mysql_query($query);
			$query_count++;
		}
	}
	$QUERY['success'][] = "Database Populated.";
} else {
	$QUERY['error'][] = "Tables already in Database - I did not overwrite it. If you want to remove the old data, please delete the tables and run the installer script agian.";
}
</code></pre>
<h2>Saving the Database connection details</h2>
<pre><code class="php">
//I don't know how to escape the $ charector in heredocs - so I did this...
$config = '$config';//Heh, Heh <img src='http://www.bin-co.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />
$system_installed = '$system_installed';
$configuration = &lt;&lt;&lt;END
&lt;?php
//Configuration file for Nexty
$system_installed = true;
$config = array(
	'db_host'		=&gt;	'$_SESSION[host]',
	'db_user'		=&gt;	'$_SESSION[db_user]',
	'db_password'	=&gt;	'$_SESSION[password]',
	'db_database'	=&gt;	'$_SESSION[database]',
	'url'			=&gt;	'$_SESSION[url]',
	'absolute_path'	=&gt;	'$abs'
);

END;
if(is_writable('../configuration.php')) {
        // ...Write the $config text into the configuration.php file...

	$QUERY['success'][] = 'Saved the configuration file. &lt;a href="'.$_REQUEST['url'].'"&gt;Go to Nexty&lt;/a&gt;';
} else {
	$QUERY['error'][] = 'Configuration file (configuration.php) is not writable. Please copy the configuration code and enter it into the "configuration.php" file. Then press continue.';
}
</code></pre>
<p>See the <a href="https://nexty.svn.sourceforge.net/svnroot/nexty/install/">install folder for Nexty</a> in the Subversion server.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/07/web-installer-the-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>3 Simple Steps to create a Web Installer</title>
		<link>http://www.bin-co.com/blog/2007/07/3-simple-steps-to-create-a-web-installer/</link>
		<comments>http://www.bin-co.com/blog/2007/07/3-simple-steps-to-create-a-web-installer/#comments</comments>
		<pubDate>Fri, 06 Jul 2007 16:00:48 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/07/3-simple-steps-to-create-a-web-installer/</guid>
		<description><![CDATA[Creating a web installer is not hard &#8211; as a matter of fact &#8211; it is downright easy. You just have to know a few things. Get the database details, create the database, save the details. That&#8217;s it!
Getting Database Details

A simple four field form will suffice. The important thing to remember is that the data [...]]]></description>
			<content:encoded><![CDATA[<p class="intro"><a href="http://www.bin-co.com/blog/2007/07/web-application-installer/">Creating a web installer</a> is not hard &#8211; as a matter of fact &#8211; it is downright easy. You just have to know a few things. <strong class="highlight">Get the database details, create the database, save the details</strong>. That&#8217;s it!</p>
<h2>Getting Database Details</h2>
<p><a href='http://www.bin-co.com/blog/wp-content/uploads/2007/07/nexty.png' title='Nexty Installer Screenshot'><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/07/nexty.thumbnail.png' alt='Nexty Installer Screenshot' /></a></p>
<p>A simple four field form will suffice. The important thing to remember is that the <strong class="highlight">data must be saved as session variables</strong> &#8211; as we are using a multi-page form.</p>
<p>As soon as you get the DB details, try to <strong class="highlight">connect to the database and confirm that the DB details is correct</strong>. If the connection attempt fails, take the user back to the DB details form. Else go to step two.</p>
<h2>Insert Initial Data</h2>
<p>This part is easy &#8211; just <strong class="highlight">run a bunch of SQL statements to create the necessary table structure and insert the initial data</strong>.</p>
<h2>Save the Details</h2>
<p>This should be the last step of the installation. Just take all the data from the session variables and <strong class="highlight">write it to a file, say &#8216;configuration.php&#8217;</strong>. Write the data as PHP code &#8211; so all you have to do to retrieve the data is include the file.</p>
<p>The code for the installer in the next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/07/3-simple-steps-to-create-a-web-installer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
