<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Renganathan's Weblog</title>
	<atom:link href="http://renganathan.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://renganathan.wordpress.com</link>
	<description>Open Source Tech Blog</description>
	<lastBuildDate>Mon, 18 Aug 2008 09:19:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='renganathan.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Renganathan's Weblog</title>
		<link>http://renganathan.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://renganathan.wordpress.com/osd.xml" title="Renganathan&#039;s Weblog" />
	<atom:link rel='hub' href='http://renganathan.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Database Normalization</title>
		<link>http://renganathan.wordpress.com/2008/06/16/database-normalization/</link>
		<comments>http://renganathan.wordpress.com/2008/06/16/database-normalization/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 07:12:33 +0000</pubDate>
		<dc:creator>renganathan</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[normalization]]></category>

		<guid isPermaLink="false">http://renganathan.wordpress.com/?p=11</guid>
		<description><![CDATA[Normalisation is the term used to describe how you break a file down into tables to create a database. There are 3 or 4 major steps involved known as 1NF (First Normal Form), 2NF (Second Normal Form), 3NF (Third Normal Form) and BCNF (Boyce-Codd Normal Form). There are others but they are rarely if ever [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=renganathan.wordpress.com&amp;blog=3449145&amp;post=11&amp;subd=renganathan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Normalisation is the term used to describe how you break a file down into tables to create a database. There are 3 or 4 major steps involved known as 1NF (First Normal Form), 2NF (Second Normal Form), 3NF (Third Normal Form) and BCNF (Boyce-Codd Normal Form). There are others but they are rarely if ever used. A database is said to be Normalised if it is in 3NF (or ideally in BCNF). These steps are descibed as follows:</p>
<p><strong><em>Note: </em><em>When attribute is used we are speaking of a field in the table</em></strong></p>
<p><strong>1NF</strong></p>
<p>To put a database in 1N</p>
<ul>
<li>ensure that all attributes (columns) are atomic (which means that any single field should only have a value for ONE thing).</li>
</ul>
<p><span style="text-decoration:underline;">Examples:</span></p>
<div><img src="http://bytes.com/images/howtos/normalization_table2.gif" border="0" alt="" /></div>
<p>In a database a table on Customers would have an address attribute. The address is made up of Company Name, Address Line1, Address Line2, Address Line3, City, Postcode. There are 6 values to this address and as such each should have it&#8217;s own field (column).</p>
<div><img src="http://bytes.com/images/howtos/normalization_table1.gif" border="0" alt="" /></div>
<p>If your company sold furniture a table on products could have a description attribute. If for example that attribute was &#8216;Beech Desk 120w x 75h x 50d&#8217;. Ideally this would be broken down into a number attributes like &#8216;Colour&#8217;, &#8216;Type&#8217;, &#8216;Width&#8217;, &#8216;Height&#8217; and &#8216;Depth&#8217;. The reason for this is it would allow you to seach the database for all Desks, for all pieces of Beech furniture, for all desks with a width of 120 etc.</p>
<ul>
<li>Create a separate table for each set of related data and Identify each set of related data with a primary key</li>
</ul>
<p><span style="text-decoration:underline;">Example:</span></p>
<div><img src="http://bytes.com/images/howtos/normalization_tblDiagram1.gif" border="0" alt="" /></div>
<p>In a general Invoicing table you would have a separate table for Customers, Orders, Products, Invoices and you would probably need tables for OrderDetails and InvoiceDetails as well. Each of these tables must have their own primary key. Each of these tables except for customers would have a foreign key reference to the primary key of another table. (<em>See Relationships below</em>)</p>
<ul>
<li>Do not use multiple fields in a single table to store similar data</li>
</ul>
<p><span style="text-decoration:underline;">Example:</span><br />
(<em>Underlined fields are Primary Keys and Italicised fields are Foreign Keys</em>)</p>
<p>In a customer order you could have more than one product. That is the customer has ordered more than one item. If you tried to put all of this in one table as {<span style="text-decoration:underline;">OrderID</span>, <em>CustomerID</em>, OrderDate, Product1, Product2, Product3} what would happen if the customer ordered more than 3 products. There would also be implications for querying the kind or quantiy of products ordered by a customer. Therefore these product fields don&#8217;t belong in the order table which is why we would have an OrderDetails table which would have a foreign key refernce to the Orders table {<span style="text-decoration:underline;">OrderDetailsID</span>, <em>OrderID</em>, <em>ProductID</em>, Quantity}. Using productID as a foreign key to the product table means you don&#8217;t have to identify the product attributes here. This also allows you to enter a quantity figure for the product ordered.</p>
<p><strong><span style="text-decoration:underline;"><em>Relationships:</em></span></strong></p>
<p>All tables should have a 1 to 1 or 1 to many relationship. This means for example that 1 customer can have 1 or many orders and 1 order can have 1 or many details.</p>
<div><img src="http://bytes.com/images/howtos/normalization_tblDiagram2.gif" border="0" alt="" /></div>
<p>Therefore Orders table would have a foreign key reference to the Customer table primary key {<span style="text-decoration:underline;">OrderID</span>, <em>CustomerID</em>, OrderDate} and the OrderDetails table would have a foreign key reference to the Order table primary key {<span style="text-decoration:underline;">OrderDetailsID</span>, <em>OrderID</em>, <em>ProductID</em>, Quantity}. This table also contains a foreign key reference to the Products table. As a product is likely to be ordered more than once there is a many to 1 relationship between the OrderDetails and the Products table.</p>
<div><img src="http://bytes.com/images/howtos/normalization_tblDiagram3.gif" border="0" alt="" /></div>
<p>If any tables have a many to many relationship this must be broken out using a JOIN table. For example, Customers can have many Suppliers and Suppliers can supply to many Customers. This is known as a many to many relationship. You would need to create a JOIN table that would have a primary key made up of a foreign key reference to the Customers table and a foreign key reference to the suppliers table. Therefore the SuppliersPerCustomer table would be {<span style="text-decoration:underline;"><em>SupplierID</em></span>, <span style="text-decoration:underline;"><em>CustomerID</em></span>}. Now the Suppliers table will have a 1 to many relationship with the SuppliersPerCustomer table and the Customers table will also have a 1 to many relationship with the SuppliersPerCustomer table.</p>
<p><strong>2NF</strong></p>
<p>The database must meet all the requirements of the 1NF.</p>
<p>In addition, records should not depend on anything other than a table&#8217;s primary key (a primary key can be made up of more than one field, only if absolutely necessary like in a JOIN table).</p>
<p><span style="text-decoration:underline;">Example:</span></p>
<p>A customers address is needed by the Customers table, but also by the Orders, and Invoices tables. Instead of storing the customer&#8217;s address as a separate entry in each of these tables, store it in one place, either in the Customers table or in a separate Addresses table.</p>
<p><strong>3NF</strong></p>
<p>The database must meet all the requirements of the 1NF and 2NF.</p>
<p>The third normal form requires that all columns in a relational table are dependent only upon the primary key. A more formal definition is:</p>
<ul>
<li>A relational table is in third normal form (3NF) if it is already in 2NF and every non-key column is non transitively dependent upon its primary key.</li>
</ul>
<p>In other words, all nonkey attributes are functionally dependent only upon the primary key. All 3NF really means is that all fields (attributes) should be dependent on the tables primary key. If they are not they should be put in their own table. This means that every attribute unless it is a primary or foreign key must be DIRECTLY dependent on the Primary Key of this table and not on some other column.</p>
<p><span style="text-decoration:underline;">Example:</span></p>
<p>The Customer table contains information such as address, city, postcode imagine it also contained a column called shipping cost. The value of shipping cost changes in relation to which city the products are being delivered to, and therefore is not directly dependent on the customer even though the cost might not change per customer, but it is dependent on the city that the customer is in. Therefore we would need to create another separate table to hold the information about cities and shipping costs.</p>
<p><strong>BCNF</strong></p>
<p>A relation is in Boyce-Codd Normal Form (BCNF) if every determinant is a candidate key. BCNF is very similar to 3NF but deals with dependencies within the primary keys. BCNF in it&#8217;s simplist terms just says don&#8217;t have a primary key made up of more than one field unless it is a join table to disperse a many to many relationship and only contains the two primary keys of the tables it is joining.</p>
<p>Most relations that are in 3NF are also in BCNF. It only happens that a relation which is in 3NF is not in BCNF when the primary key in a table is made up of more than one field and the other columns are not dependent on both fields but only on one or the other.</p>
<p><strong>A database is said to be normalised if it is in 3NF and/or BCNF</strong></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/renganathan.wordpress.com/11/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/renganathan.wordpress.com/11/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/renganathan.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/renganathan.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/renganathan.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/renganathan.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/renganathan.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/renganathan.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/renganathan.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/renganathan.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/renganathan.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/renganathan.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/renganathan.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/renganathan.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/renganathan.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/renganathan.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=renganathan.wordpress.com&amp;blog=3449145&amp;post=11&amp;subd=renganathan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://renganathan.wordpress.com/2008/06/16/database-normalization/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6274c384e1f8aba64a1e51a418bd7abd?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">renga</media:title>
		</media:content>

		<media:content url="http://bytes.com/images/howtos/normalization_table2.gif" medium="image" />

		<media:content url="http://bytes.com/images/howtos/normalization_table1.gif" medium="image" />

		<media:content url="http://bytes.com/images/howtos/normalization_tblDiagram1.gif" medium="image" />

		<media:content url="http://bytes.com/images/howtos/normalization_tblDiagram2.gif" medium="image" />

		<media:content url="http://bytes.com/images/howtos/normalization_tblDiagram3.gif" medium="image" />
	</item>
		<item>
		<title>Edit In-Place Ajax Scripts</title>
		<link>http://renganathan.wordpress.com/2008/05/11/edit-in-place-ajax-scripts/</link>
		<comments>http://renganathan.wordpress.com/2008/05/11/edit-in-place-ajax-scripts/#comments</comments>
		<pubDate>Sun, 11 May 2008 10:47:55 +0000</pubDate>
		<dc:creator>renganathan</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[edit]]></category>

		<guid isPermaLink="false">http://renganathan.wordpress.com/?p=10</guid>
		<description><![CDATA[tEditable &#8211; In place editing for tables using the jQuery Framework. It works by allowing you to that edit cells in a table and posted to a server using Ajax. Ajax.InPlaceSelect &#8211; This script allows you to change the certain text with a drop down list. It is written with the scriptaculous framework and is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=renganathan.wordpress.com&amp;blog=3449145&amp;post=10&amp;subd=renganathan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class="entry" style="text-align:left;">
<div class="snap_preview">
<ul>
<li><a title="tEditable" href="http://joshhundley.com/teditable-in-place-editing-for-tables/" target="_blank"><strong>tEditable</strong></a> &#8211; In place editing for tables using the jQuery Framework. It works by allowing you to that edit cells in a table and posted to a server using Ajax.</li>
</ul>
<ul>
<li><a title="Ajax.InPlaceSelect" href="http://www.subzane.com/projects/ajaxinplaceselect/"><strong>Ajax.InPlaceSelect</strong></a> &#8211; This script allows you to change the certain text with a drop down list.  It is written with the <a href="http://script.aculo.us/">scriptaculous</a> framework and is very similar to Ajax.In Place Editor.</li>
</ul>
<ul>
<li><a title="Ajax.In Place Editor" href="http://wiki.script.aculo.us/scriptaculous/show/Ajax.InPlaceEditor" target="_blank"><strong>Ajax.In Place Editor</strong></a> &#8211; Allows you to edit text either in a single line or multi line format.  It is written with the <a href="http://script.aculo.us/">scriptaculous</a> framework.</li>
</ul>
<ul>
<li><a title="Flicker-Like edit in place" href="http://dbachrach.com/blog/2007/01/07/create-flickr-like-editing-fields-using-ajax-css/" target="_blank"><strong>Flicker-Like edit in place</strong></a> &#8211; This script removes the use of outdated form interfaces. It will allow you to edit the date in place in real time. It is written with no framework just Ajax. Since its name is Flicker-like you can image that it is very similar to flicker.</li>
</ul>
<ul>
<li><a title="Jeditable" href="http://www.appelsiini.net/projects/jeditable"><strong> Jeditable</strong></a> &#8211; Edit In Place Plugin For jQuery.  This is different from tEditable because it works by allowing you to edit a block of text.</li>
</ul>
<ul>
<li><strong><a href="http://dev.justinmaier.com/inlineedit2/">inlineEdit2</a></strong> &#8211; Is a lightweight, easy solution at 2KB uncompressed. It is written with mooTools. It allows you to edit the text very easily just by clicking on the text and hit enter when done. This Script doesn’t show a text box when editing.</li>
</ul>
<ul>
<li><a title="Seamless inline text editing with ASP.NET AJAX" href="http://encosia.com/2007/08/23/seamless-inline-text-editing-with-aspnet-ajax/"><strong>Seamless inline text editing</strong></a> -Written for ASP.Net.  It works like the rest of them by clicking on the text and it will become editable.</li>
</ul>
<ul>
<li><strong><a rel="bookmark" href="http://elliottback.com/wp/archives/2007/02/09/ajax-edit-in-place-with-yahoo-ui-api/">Yahoo UI  Edit in Place</a></strong> &#8211; This edit in place uses the Yahoo UI Library.   The effect is very similar to Flicker.  But also allows you to edit lists.</li>
</ul>
<ul>
<li> <a title="Edit in Place" href="http://tool-man.org/examples/edit-in-place.html" target="_blank"><strong>Edit in place</strong></a> &#8211; Is written without any framework and written by Tool-Man.org.  This script allows you to edit HTML on the page.  This script also allows you to sort, edit lists, and has a slide show sorter.</li>
</ul>
<ul>
<li><strong><a title="EditInPlace.org" href="http://editinplace.org/" target="_blank">EditInPlace.org</a></strong> &#8211; Is written with the Prototype Framework and allows you to edit text and even have an empty text field that you can edit and save.  It also has edit in place drop down list.</li>
</ul>
</div>
</div>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/renganathan.wordpress.com/10/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/renganathan.wordpress.com/10/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/renganathan.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/renganathan.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/renganathan.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/renganathan.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/renganathan.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/renganathan.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/renganathan.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/renganathan.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/renganathan.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/renganathan.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/renganathan.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/renganathan.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/renganathan.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/renganathan.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=renganathan.wordpress.com&amp;blog=3449145&amp;post=10&amp;subd=renganathan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://renganathan.wordpress.com/2008/05/11/edit-in-place-ajax-scripts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6274c384e1f8aba64a1e51a418bd7abd?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">renga</media:title>
		</media:content>
	</item>
		<item>
		<title>Limitations of AJAX</title>
		<link>http://renganathan.wordpress.com/2008/05/05/limitations-of-ajax/</link>
		<comments>http://renganathan.wordpress.com/2008/05/05/limitations-of-ajax/#comments</comments>
		<pubDate>Mon, 05 May 2008 15:10:23 +0000</pubDate>
		<dc:creator>renganathan</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[limitations]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://renganathan.wordpress.com/?p=7</guid>
		<description><![CDATA[Ajax enhances the user experience of a web browser but does have limitations. Ajax is primarily a client/server technology. Client nodes in the web do not typically run web servers that can respond to HTTP GET and POST requests. Since clients cannot directly communicate with each other, any distributed application developed using Ajax would require [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=renganathan.wordpress.com&amp;blog=3449145&amp;post=7&amp;subd=renganathan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class="snap_preview">
<ul>
<li> Ajax enhances the user experience of a web browser but does have limitations. Ajax is primarily a client/server technology. Client nodes in the web do not typically run web servers that can respond to HTTP GET and POST requests. Since clients cannot directly communicate with each other, any distributed application developed using Ajax would require a central web server system to negotiate requests between clients. Client A could generate events/data for and respond to events/data from Client B however both would need to connect to a common web server to facilitate the communication.</li>
</ul>
<ul>
<li> Another limitation of Ajax is slow or unreliable network connections. Traditional web applications that require a full round-trip to the server<br />
may behave slowly for end users but they would be predictable. End users would generally intuitively know they have performed an action, such as submitting a form or clicking a link, and must wait for a server to respond. With Ajax, users have less intuition about which type of events within a page may result in a need to wait for a server response. Instead of enhancing the end user experience, Ajax over slow or unreliable network connections may reduce usability if not carefully designed to accommodate both fast and slow network characteristics.</li>
</ul>
<ul>
<li> Another consequence of slow and unreliable networks is the need to restrict Ajax payloads to small, efficient data transfers. Even on fast networks, returning large XML datasets or HTML fragments may create a noticeable delay within the end users web browser.</li>
</ul>
</div>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/renganathan.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/renganathan.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/renganathan.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/renganathan.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/renganathan.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/renganathan.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/renganathan.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/renganathan.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/renganathan.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/renganathan.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/renganathan.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/renganathan.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/renganathan.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/renganathan.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/renganathan.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/renganathan.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=renganathan.wordpress.com&amp;blog=3449145&amp;post=7&amp;subd=renganathan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://renganathan.wordpress.com/2008/05/05/limitations-of-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6274c384e1f8aba64a1e51a418bd7abd?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">renga</media:title>
		</media:content>
	</item>
		<item>
		<title>10 projects every php developer should use</title>
		<link>http://renganathan.wordpress.com/2008/04/28/10-projects-every-php-developer-should-use/</link>
		<comments>http://renganathan.wordpress.com/2008/04/28/10-projects-every-php-developer-should-use/#comments</comments>
		<pubDate>Mon, 28 Apr 2008 12:16:57 +0000</pubDate>
		<dc:creator>renganathan</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://renganathan.wordpress.com/?p=5</guid>
		<description><![CDATA[As a php web developer, you should know that php is probably the language that has the biggest code repository. So no matter what module you want to include in your project there should be an open source solution. This can help in various ways, but just in case you can&#8217;t think of one Open [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=renganathan.wordpress.com&amp;blog=3449145&amp;post=5&amp;subd=renganathan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="float:left;padding:10px;"></p>
<p></span>As a php web developer, you should know that php is probably the language that has the biggest code repository. So no matter what module you want to include in your project there should be an open source solution.</p>
<p>This can help in various ways, but just in case you can&#8217;t think of one</p>
<ul style="margin-top:0;margin-bottom:0;">
<li>Open source is worked by many people, so the result is for sure better than one man&#8217;s work</li>
</ul>
<ul style="margin-top:0;margin-bottom:0;">
<li>You can have free updates to your code, while otherwise you should code the updates each time something new comes up</li>
</ul>
<ul style="margin-top:0;margin-bottom:0;">
<li>You save development time while your project is getting better</li>
</ul>
<p>Anyway, after many years as a web developer, I&#8217;ve compiled a list of php classes that can be easily integrated in any project and I am regularly use.</p>
<p><strong>Sending Emails</strong></p>
<p>Sending emails is something very common for every web site. Php&#8217;s <a href="http://www.webdigity.com/php-manual/function.mail.html">mail()</a> function is good for this, but what if you want to attach a file, or send through an SMTP server, etc? Well in that case you should use <a href="http://phpmailer.sourceforge.net/">phpmailer</a></p>
<p><strong>User Manipulation</strong></p>
<p>Another common module is the user module. With that you can manipulate users (login, logout, register, etc.) Personally I&#8217;ve never found a project that is good enough, so I created my own</p>
<p><a href="http://phpuserclass.com/">Php user class</a> is a module that can be used even in established projects, as it uses variable data for database tables, fields, session variables, etc.</p>
<p><strong>Fetching RSS Feeds</strong></p>
<p>Ever wanted to fetch an rss feed from your project? Well there is always an <a href="http://www.webdigity.com/index.php?action=tutorial;code=20">easy way to fetch a feed</a> but in most cases you need more than that. When that is the case you should definitely use <a href="http://magpierss.sourceforge.net/">Magpie RSS</a></p>
<p><strong>Geotargeting</strong></p>
<p>There are many times that you need to know where are your visitors coming from. <a href="http://www.maxmind.com/app/php">Maxmind</a> gives a solution to this. For a complete tutorial check <a href="http://www.webdigity.com/index.php?action=tutorial;code=58">this article</a></p>
<p><strong>Grabbing Remote Content</strong></p>
<p>Some times RSS is not enough so you need to grab the content of a web page and parse it. If you are a huge fun of preg you should not continue reading, but if you are not you definitely need the <a href="http://www.jonasjohn.de/lab/htmlsql.htm">htmlSQL class</a> The htmlSQL class allow you to access html values with SQL code.</p>
<p><strong>Trackback</strong></p>
<p>Sending and receiving trackbacks is vital for a web site in our age. And in fact it is very easy if you are using a class like <a href="http://phptrackback.sourceforge.net/">php trackback</a></p>
<p><strong>Template System</strong></p>
<p>Another thing that all sites use is a template. A template engine can save you lots of time, while it can make display changes very easy. A complete template engine that most projects use is <a href="http://smarty.php.net/">Smarty</a></p>
<p><strong>BBcode</strong></p>
<p>BBcode used to be a functionality for forums, but as more and more sites use it in order to be more friendly to their users, you might want to use BBcode to your site. The problem is that BBcode requires a lot of coding and I am not sure if you have the time for this. If you don&#8217;t you&#8217;ll find <a href="http://christian-seiler.de/projekte/php/bbcode/index_en.html">StringParser_BBcode class</a> very useful</p>
<p><strong>Paypal Payment Integration</strong></p>
<p>As you may know paypal has a nice API for developers who want to integrate paypal payments in their sites. The <a href="http://www.micahcarrick.com/04-19-2005/php-paypal-ipn-integration-class.html">paypal IPN integration class</a> helps you make use of it and start accepting payments in 20 minutes.</p>
<p><strong>Editor Controls</strong></p>
<p>I don&#8217;t have a problem to make changes to a site using phpMyAdmin or a simple text area, but when it comes to my clients I have to give them more than that. A javascript WYSIWYG editor is a perfect solution but as it requires countless hours to get it done I would suggest you to use the <a href="http://tinymce.moxiecode.com/">tinyMCE control</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/renganathan.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/renganathan.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/renganathan.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/renganathan.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/renganathan.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/renganathan.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/renganathan.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/renganathan.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/renganathan.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/renganathan.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/renganathan.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/renganathan.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/renganathan.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/renganathan.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/renganathan.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/renganathan.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=renganathan.wordpress.com&amp;blog=3449145&amp;post=5&amp;subd=renganathan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://renganathan.wordpress.com/2008/04/28/10-projects-every-php-developer-should-use/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6274c384e1f8aba64a1e51a418bd7abd?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">renga</media:title>
		</media:content>
	</item>
		<item>
		<title>What Javascript Can Not Do</title>
		<link>http://renganathan.wordpress.com/2008/04/14/what-javascript-can-not-do/</link>
		<comments>http://renganathan.wordpress.com/2008/04/14/what-javascript-can-not-do/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 12:25:05 +0000</pubDate>
		<dc:creator>renganathan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://renganathan.wordpress.com/?p=3</guid>
		<description><![CDATA[Javascript cannot read from or write to files on the server. Because Javascript is running in the web browser after the web page has been copied from the server, it therefore cannot interact with the server (the computer that the web page was copied from) in any way.   Javascript cannot interact with server side [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=renganathan.wordpress.com&amp;blog=3449145&amp;post=3&amp;subd=renganathan&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul>
<li><strong>Javascript cannot read from or write to files on the server</strong>. Because Javascript is running in the web browser after the web page has been copied from the server, it therefore cannot interact with the server (the computer that the web page was copied from) in any way.</li>
</ul>
<p> </p>
<ul>
<li><strong>Javascript cannot interact with server side scripts</strong>. Any server side scripts are run before the web page is downloaded to the browser. This means that a server side scripting language such as PHP or ASP can update the content of your Javascript code before it is downloaded. Since the Javascript itself isn&#8217;t run until after the page has been downloaded the Javascript is not able to affect the server side script because that has already finished running. The only way that Javascript can pass information back to a server side script would be to reload the page passing the required information from Javascript as a query string on the end of the page address.</li>
</ul>
<p> </p>
<ul>
<li><strong>Javascript cannot read from or write to files in the client</strong>. Even though Javascript is running on the client computer the one where the web page is being viewed) it is not allowed to access anything outside of the web page itself. This is done for reasons of security since otherwise a web page would be able to update your computer to install who knows what. The only exception to this are files called <strong>cookies</strong> which are small text files that Javascript can write to and read from. The browser restricts access to cookies so that a given web page can only access cookies created by the same site.</li>
</ul>
<p> </p>
<ul>
<li><strong>Javascript cannot close a window if it didn&#8217;t open it</strong>. Again this is for security reasons.</li>
</ul>
<p> </p>
<ul>
<li><strong>Javascript cannot access web pages hosted on another domain</strong>. Even though web pages from different domains can be displayed at the same time, either in separate browser windows or in separate frames within the same browser window, the Javascript running on a web page belonging to one domain cannot access any information about a web page from a different domain. This helps to ensure that private information about you that may be known to the owners of one domain is not shared with other domains whose web pages you may have open concurrently.</li>
</ul>
<p> </p>
<ul>
<li><strong>Javascript cannot protect your page source or images</strong>. Any images on your web page are downloaded separately to the computer displaying the web page so the person viewing the page already has a copy of all of the images by the time they view the page. The same is true of the actual HTML source of the web page. The web page needs to be able to decrypt any web page that is encrypted in order to be able to display it. While an encrypted web page may require Javascript to be enabled in order for the page to be able to be decrypted in order for it to be able to be displayed by the web browser, once the page has been decrypted anyone who knows how can easily save the decrypted copy of the page source.</li>
</ul>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/renganathan.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/renganathan.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/renganathan.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/renganathan.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/renganathan.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/renganathan.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/renganathan.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/renganathan.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/renganathan.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/renganathan.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/renganathan.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/renganathan.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/renganathan.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/renganathan.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/renganathan.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/renganathan.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=renganathan.wordpress.com&amp;blog=3449145&amp;post=3&amp;subd=renganathan&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://renganathan.wordpress.com/2008/04/14/what-javascript-can-not-do/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6274c384e1f8aba64a1e51a418bd7abd?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">renga</media:title>
		</media:content>
	</item>
	</channel>
</rss>
