<?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; IIS</title>
	<atom:link href="http://www.bin-co.com/blog/tag/iis/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>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Nexty Updates</title>
		<link>http://www.bin-co.com/blog/2007/08/nexty-updates/</link>
		<comments>http://www.bin-co.com/blog/2007/08/nexty-updates/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 18:29:11 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/08/nexty-updates/</guid>
		<description><![CDATA[I made some more updates to nexty. Still not packaged &#8211; give me a little more time. In the meantime, try out the demo&#8230; There is one really cool feature in this release &#8211; but it is for Linux Users only. I made a command line script that integrates with Nexty &#8211; you can add [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.bin-co.com/blog/2007/04/nexty-10-released/nexty-logo/' rel='attachment wp-att-7' title='Nexty Logo'><img class="intro" align="right" src='http://www.bin-co.com/blog/wp-content/uploads/2007/04/nexty_logo.png' alt='Nexty Logo' /></a>
<p class="intro">I made some more updates to nexty. Still not packaged &#8211; give me a little more time. In the meantime, try out the <a href="http://www.bin-co.com/php/programs/apps/nexty/demo/">demo</a>&#8230;</p>
<p>There is one really cool feature in this release &#8211; but it is for Linux Users only. I made a command line script that integrates with Nexty &#8211; you can add tasks directly from the console. It needs the curl command &#8211; so not available in windows.</p>
<p>But then again, who uses the terminal in windows?</p>
<p>Anyway this uses the concept I introduced in <a href="http://binnyva.blogspot.com/2007/03/using-twitter-part-1-command-line.html">CLI Twitter</a>. If you want to try it, login to Nexty and go to the settings page. If you are on a linux system, you will see a Download Nexty Shell Script section. Just follow the instructions there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/08/nexty-updates/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Demo for Nexty 1.01.A Uploaded</title>
		<link>http://www.bin-co.com/blog/2007/08/demo-for-nexty-101a-uploaded/</link>
		<comments>http://www.bin-co.com/blog/2007/08/demo-for-nexty-101a-uploaded/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 18:06:30 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[IIS]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/08/demo-for-nexty-101a-uploaded/</guid>
		<description><![CDATA[I uploaded the demo for the new beta version of Nexty today. The code is too &#8216;beta&#8217; to be packaged and released &#8211; so I am just uploaded the demo. If the bugs are found and fixed soon, I will release the code into the wild. If you cannot wait for the code, it is [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://www.bin-co.com/blog/2007/04/nexty-10-released/nexty-logo/' rel='attachment wp-att-7' title='Nexty Logo'><img align="right" class="intro" src='http://www.bin-co.com/blog/wp-content/uploads/2007/04/nexty_logo.png' alt='Nexty Logo' /></a>
<p class="intro">I uploaded the <a href="http://www.bin-co.com/php/programs/apps/nexty/demo/">demo for the new beta version of Nexty</a> today. The code is too &#8216;beta&#8217; to be packaged and released &#8211; so I am just uploaded the demo. If the bugs are found and fixed soon, I will release the code into the wild. If you cannot wait for the code, it is available at the <a href="http://nexty.svn.sourceforge.net/viewvc/nexty/">SVN repository</a>.</p>
<h2>Whats New&#8230;</h2>
<p>A few new features are&#8230;</p>
<ul>
<li>Search</li>
<li>Next Action</li>
<li>Inbox Feature</li>
<li>Code uses <a href="http://www.bin-co.com/php/scripts/iframe/">IFrame</a></li>
<li>And more&#8230;</li>
</ul>
<p>Please try out the demo and let me know if you spot any errors. That is the whole point of uploaded the demo.</p>
<p><a href="http://www.bin-co.com/php/programs/apps/nexty/demo/">Nexty 1.01.A Demo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/08/demo-for-nexty-101a-uploaded/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Choosing a License</title>
		<link>http://www.bin-co.com/blog/2007/08/choosing-a-license/</link>
		<comments>http://www.bin-co.com/blog/2007/08/choosing-a-license/#comments</comments>
		<pubDate>Thu, 09 Aug 2007 18:31:57 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[gpl]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[license]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/08/choosing-a-license/</guid>
		<description><![CDATA[As you may know, I publish a lot of code for others to use. Often I forget to specify a license for the code &#8211; and I get a few comment asking me what license it is under. So I have created a license page for both Bin-Co and OpenJS. I hate restricting use of [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/08/license.png' alt='License' class="intro" align="right" /></p>
<p class="intro">As you may know, I <a href="http://www.openjs.com/scripts/events/keyboard_shortcuts/" title="Keyboard Shortcuts JavaScript Library">publish</a> a <a href="http://www.bin-co.com/php/scripts/load/">lot</a> of <a href="http://www.bin-co.com/php/scripts/iframe/">code</a> for others to use. Often I forget to specify a license for the code &#8211; and I get a few comment asking me what license it is under. So I have created a license page for both <a href="http://www.bin-co.com/license.php">Bin-Co</a> and <a href="http://www.openjs.com/license.php">OpenJS</a>. I hate restricting use of my code &#8211; so I choose the most permissive one around &#8211; the BSD License.</p>
<p>I know that many people feel strongly about software license. I still get a lot of flank from my <a href="http://www.ilug-cochin.org/" title="ILug Cochin">LUG</a> because I prefer using BSD License over their favorite <abbr title="GNU Public License">GPL</abbr>.</p>
<p>GPL was not an option as most of my code are snippets that are meant to be used with other code. GPL will not allow my code to be used within proprietary projects. Another option is <a href="http://www.gnu.org/copyleft/lesser.html">LGPL</a> &#8211; but I still prefer BSD.</p>
<p>Basically, all scripts, codes and programs from any of my sites are in the BSD License. That means that you can do anything with the scripts &#8211; except claim that you wrote it. You can use, copy, sell, modify or whatever you want with it &#8211; but you cannot claim authorship.</p>
<h2>Importance of Choosing a License</h2>
<p>If you are planning to release your code publicly, it is very important that you <a href="http://www.codinghorror.com/blog/archives/000833.html">say what license you are using</a>. If you fail to specify a license, many people will not use your code. It was a big mistake waiting this long before putting up a license on my sites.</p>
<p>If you want help in deciding the license, these links should be of help&#8230;</p>
<ul>
<li><a href="http://www.opensource.org/licenses/category">A list of the most popular licenses</a></li>
<li><a href="http://simonwillison.net/2004/Nov/5/licensing/">Simon Willison&#8217;s Licensing Issue</a> &#8211; read the comments</li>
<li><a href="http://www.codinghorror.com/blog/archives/000833.html">Pick a License, Any License</a></li>
<li><a href="http://www.quirksmode.org/about/copyright.html">QuirksMode Copyright</a> &#8211; an example of a license page</li>
</ul>
<h3>More Links</h3>
<ul>
<li><a href="http://sam.zoy.org/wtfpl/">The WTFPL License <img src='http://www.bin-co.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </a></li>
<li><a href="http://www.gnu.org/philosophy/x.html">The problem with BSD Style License</a> according to Richard M. Stallman</li>
<li><a href="http://www.smashingmagazine.com/2007/07/07/copyright-explained-i-may-copy-it-right/">Copyright Explained</a> &#8211; not about code licenses &#8211; but a must read if you are new to all this.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/08/choosing-a-license/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Nexty 2 will use PHP 5</title>
		<link>http://www.bin-co.com/blog/2007/08/nexty-2-will-use-php-5/</link>
		<comments>http://www.bin-co.com/blog/2007/08/nexty-2-will-use-php-5/#comments</comments>
		<pubDate>Sat, 04 Aug 2007 17:58:34 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[gophp5]]></category>
		<category><![CDATA[iframe]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[nexty]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/08/nexty-2-will-use-php-5/</guid>
		<description><![CDATA[The next version of nexty is coming out very soon &#8211; and unlike the last version, Nexty 2 will require PHP 5. The main reason behind this change is GoPHP5. Go PHP 5 is a movement to promote the use of PHP5 in hosting servers and for projects. Another reason for this decision is that [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/08/gophp5_logo.png' alt='GoPHP5' align="right" class="intro" /></p>
<p class="intro">The next version of nexty is coming out very soon &#8211; and unlike the last version, Nexty 2 will require PHP 5.</p>
<p>The main reason behind this change is <a href="http://gophp5.org/">GoPHP5</a>. Go PHP 5 is a movement to promote the use of PHP5 in hosting servers and for projects.</p>
<p>Another reason for this decision is that <a href="http://www.bin-co.com/php/scripts/iframe/">iFrame</a>, the framework I used in Nexty, uses PHP 5.</p>
<p>If you are stuck with PHP 4, I cannot help it. You can still use the first version. But if you have a choice, <a href="http://www.php.net/index.php#2007-07-13-1">PHP 4 is dead</a> &#8211; move on.</p>
<h2>More on GoPHP5</h2>
<ul>
<li><a href="http://ifacethoughts.net/2007/07/18/the-php-rift/">The PHP Rift</a></li>
<li><a href="http://www.php-mag.net/magphpde/magphpde_news/psecom,id,27335,nodeid,5.html">Drupal Joins &#8216;Go PHP 5&#8242; Movement</a></li>
<li><a href="http://buzz.typo3.org/people/stucki/article/leaving-php4-behind/">Leaving PHP4 behind&#8230;</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/08/nexty-2-will-use-php-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Keyboard Shortcuts JavaScript Library</title>
		<link>http://www.bin-co.com/blog/2007/07/keyboard-shortcuts-javascript-library/</link>
		<comments>http://www.bin-co.com/blog/2007/07/keyboard-shortcuts-javascript-library/#comments</comments>
		<pubDate>Sat, 21 Jul 2007 18:29:26 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[openjs]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[shortcut]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/07/keyboard-shortcuts-javascript-library/</guid>
		<description><![CDATA[I have created the second version of the JavaScript Shortcut Library. It is one of my more popular scripts. This script eases the work involved in making shortcuts in JavaScript. Despite the many JavaScript libraries that are available today, I cannot find one that makes it easy to add keyboard shortcuts(or accelerators) to your javascript [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">I have created the second version of the <a href="http://www.openjs.com/scripts/events/keyboard_shortcuts/">JavaScript Shortcut Library</a>. It is one of my more <a href="http://www.dzone.com/links/handling_keyboard_shortcuts_in_javascript.html">popular</a> <a href="http://ajaxian.com/archives/handling-keyboard-shortcuts-in-javascript">scripts</a>. This script eases the work involved in making shortcuts in JavaScript.</p>
<blockquote><p>Despite the many JavaScript libraries that are available today, I cannot find one that makes it easy to add keyboard shortcuts(or accelerators) to your javascript app. This is because keyboard shortcuts where only used in JavaScript games &#8211; no serious web application used keyboard shortcuts to navigate around its interface. But Google apps like Google Reader and Gmail changed that. So, I have created a function to make adding shortcuts to your application much easier.</p></blockquote>
<h2>Changelog</h2>
<ul>
<li>The single function method was abandoned for an object with two functions</li>
<li>Shortcut Remove function added</li>
<li>New option to disable shortcuts in textarea, input fields.</li>
</ul>
<p>If you are using this script in any of your projects, please switch to the latest version.</p>
<p><a href="http://www.openjs.com/scripts/events/keyboard_shortcuts/v1.php">Previous Version Documentation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/07/keyboard-shortcuts-javascript-library/feed/</wfw:commentRss>
		<slash:comments>0</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 [...]]]></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>
		<item>
		<title>Web Application Installer</title>
		<link>http://www.bin-co.com/blog/2007/07/web-application-installer/</link>
		<comments>http://www.bin-co.com/blog/2007/07/web-application-installer/#comments</comments>
		<pubDate>Sun, 01 Jul 2007 18:07:17 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[nexty]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/07/web-application-installer/</guid>
		<description><![CDATA[Almost all distributed web applications has an installer &#8211; it makes installation process easier for the end user. I will try to outline some of the most important things to look out for when creating an installer. Examples of Web Installers WordPress Joomla Nexty I have created an installer for Nexty &#8211; I used the [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">Almost all distributed web applications has an installer &#8211; it makes installation process easier for the end user. I will try to outline some of the most important things to look out for when creating an installer.</p>
<h2>Examples of Web Installers</h2>
<h3><a href="http://wordpress.org/">WordPress</a></h3>
<p><a href='http://www.bin-co.com/blog/wp-content/uploads/2007/07/wordpress.png' title='WordPress Installer Screenshot'><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/07/wordpress.thumbnail.png' alt='WordPress Installer Screenshot' /></a></p>
<h3><a href="http://www.joomla.com/">Joomla</a></h3>
<p><a href='http://www.bin-co.com/blog/wp-content/uploads/2007/07/joomla.png' title='Joomla Installer Screenshot'><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/07/joomla.thumbnail.png' alt='Joomla Installer Screenshot' /></a></p>
<h3>Nexty</h3>
<p>I have created an installer for Nexty &#8211; I used the same installer for <a href="http://www.bin-co.com/blog/2007/05/jus5-light-weight-cms/">Jus5</a> as well. Here&#8217;s a screenshot&#8230;</p>
<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>
<h2>Functions of an Installer</h2>
<h3>Check Requirements</h3>
<p>If you software needs the GD PHP extension, check for it &#8211; it it is not present, show an error. If any folder must be writable, check for that. Make sure that the user cannot go to the next page without solving all the problems.</p>
<p>Make sure you have provided clear instructions on how to solve the problems &#8211; changing the permission might be easy for you and me &#8211; but the average user will find it very hard.</p>
<h3>Database Connection Details</h3>
<p>The user have to provide this data if our system uses a database.</p>
<ul>
<li>Host</li>
<li>User</li>
<li>Password</li>
<li>Database</li>
</ul>
<p>In some applications, the user must manually enter these data into the config file(for eg. WordPress). In other software, the user have to enter it at the time of installation. For example, Joomla uses this method &#8211; as does my application, <a href="http://nexty.sourceforge.net/">Nexty</a>.</p>
<h3>Create tables and insert initial data</h3>
<p>Check for existing data first &#8211; you don&#8217;t want to delete the existing data when reinstalling the software. This step is necessary only if you are using a Database in your application.</p>
<h3>Save the inputted data</h3>
<p>The user inputted data must be saved &#8211; in my application I just write it to the config file. But for that to work, the config file must have write permission. I also give the user an option to copy the code and place it in the config file themself.</p>
<p>Joomla also writes the values to a config file. However, WordPress inserts the data into the database. The only thing in the config file in wordpress is the database connection details &#8211; which the user must enter manually.</p>
<h3>Disable the Installer</h3>
<p>Make sure that the installer cannot be run after the installation is successfully compleated. This is important for the security of the application. You really don&#8217;t want any Yahoos opening up the install URL of your application and resetting all the data!</p>
<p>The easiest way of doing this is just deleting the installation script/folder. Joomla insists that you remove the installation folder before letting you use the application. In Nexty, removing the installation directory is recommended &#8211; but not enforced.</p>
<p>More on Web Installers in the next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/07/web-application-installer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Success/Error Design Pattern For Ajax</title>
		<link>http://www.bin-co.com/blog/2007/06/successerror-design-pattern-for-ajax/</link>
		<comments>http://www.bin-co.com/blog/2007/06/successerror-design-pattern-for-ajax/#comments</comments>
		<pubDate>Fri, 22 Jun 2007 14:41:13 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[pattern]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/06/successerror-design-pattern-for-ajax/</guid>
		<description><![CDATA[&#8216;Success/Error&#8217; design pattern for Ajax requests is a JSON encoded string in a specific format &#8211; each response has a minimum of two elements in it &#8211; ie &#8216;success&#8217; and &#8216;error&#8217; &#8211; like this&#8230; { "success":"Task done successfully", "error":false } OR { "success":false, "error":"Database Connection Error!" } This method is used extensivly in Nexty. Almost [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">&#8216;Success/Error&#8217; design pattern for Ajax requests is a <abbr title="JavaScript Object Notation">JSON</abbr> encoded string in a specific format &#8211; each response has a minimum of two elements in it &#8211; ie &#8216;success&#8217; and &#8216;error&#8217; &#8211; like this&#8230;</p>
<pre><code class="javascript">{
"success":"Task done successfully",
"error":false
}</code></pre>
<p>OR</p>
<pre><code class="javascript">{
"success":false,
"error":"Database Connection Error!"
}</code></pre>
<p>This method is used extensivly in <a href="http://www.bin-co.com/blog/2007/05/what-i-learned-from-nexty/">Nexty</a>. Almost all Ajax response in Nexty ares in this format.</p>
<p>Since this is in the JavaScript domain, I thougt it might be better to pubish the details in my <a href="http://www.openjs.com/">OpenJS site</a>. Read more about <a href="http://www.openjs.com/articles/ajax/success_error_design_pattern.php">Success/Error Design Pattern For Ajax</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/06/successerror-design-pattern-for-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Templating System</title>
		<link>http://www.bin-co.com/blog/2007/06/css-templating-system/</link>
		<comments>http://www.bin-co.com/blog/2007/06/css-templating-system/#comments</comments>
		<pubDate>Mon, 11 Jun 2007 09:18:21 +0000</pubDate>
		<dc:creator>Binny V A</dc:creator>
				<category><![CDATA[(X)HTML]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Sites]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[nexty]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://www.bin-co.com/blog/2007/06/css-templating-system/</guid>
		<description><![CDATA[In Nexty I used CSS to create a inexpensive templating system. You can see it in action in the settings page of Nexty. Currently I use it only for changing the icon sets. But you can change the colors and the layout using this system. Before starting, I must say that CSS is not the [...]]]></description>
			<content:encoded><![CDATA[<p class="intro">In <a href="http://nexty.sourceforge.net/">Nexty</a> I used CSS to create a inexpensive templating system. You can see it in action in the settings page of Nexty. Currently I use it only for changing the icon sets. But you can change the colors and the layout using this system.</p>
<p><img src='http://www.bin-co.com/blog/wp-content/uploads/2007/06/icons1.png' alt='CSS Templating for Icons' /></p>
<p>Before starting, I must say that CSS is not the most powerful solution for templating. Using a server side solution is much more recommended. But for my purposes, CSS was good enough.</p>
<h2>(X)HTML Code</h2>
<p>If you want to use CSS templating, your app must be semantically valid. In other words, there is no way you can theme a tag soup.</p>
<p>Make sure that the stylesheet used for templating appears at the last. This will make sure that all the rules in the above stylesheets can be overwritten easily. In Nexty, I have a base stylesheet, then the theme stylesheet and at the end the hacks stylesheet&#8230;</p>
<pre><code class="css">&lt;link href="<a href="http://www.bin-co.com/php/programs/apps/nexty/demo/css/style.css">css/style.css</a>" rel="stylesheet" type="text/css" /&gt;
&lt;link href="<a href="http://www.bin-co.com/php/programs/apps/nexty/demo/images/themes/crystal/theme.css">images/themes/crystal/theme.css</a>" rel="stylesheet" type="text/css" /&gt;
&lt;!--[if IE]&gt;
&lt;link rel="stylesheet" href="css/style_ie.css" type="text/css" media="all" /&gt;
&lt;![endif]--&gt;</code></pre>
<h2>PHP Code</h2>
<p>Very little PHP is involved to creating this system &#8211; I depend on it just to change the path of the CSS Stylesheet. The code used is&#8230;</p>
<pre><code class="php">&lt;link href="images/themes/&lt;?=$theme?&gt;/theme.css" rel="stylesheet" type="text/css" /&gt;</code></pre>
<p>The <code>$theme</code> variable will change if the user changes the theme.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bin-co.com/blog/2007/06/css-templating-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

