<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3281895583339810405</id><updated>2012-01-28T04:02:39.154-08:00</updated><category term='E-Commerce'/><category term='rss builder'/><category term='MySQL 5.1'/><category term='Microsoft'/><category term='tools'/><category term='news'/><category term='linux user'/><category term='Copywriting'/><category term='gadgets'/><category term='Chrome Experiments'/><category term='Mysql'/><category term='development'/><category term='password recovery'/><category term='SQL Server'/><category term='web developers'/><category term='open source'/><category term='application'/><category term='development tool'/><category term='outsourcing'/><category term='Internet Marketing'/><category term='server side coding'/><category term='iphone'/><category term='css'/><category term='frameworks'/><category term='opensource'/><category term='Chrome'/><category term='Framework'/><category term='Content management system'/><category term='PHP training'/><category term='programming language'/><category term='Ruby on Rails'/><category term='website design'/><category term='website development tutorials'/><category term='Indus  Net'/><category term='php tools'/><category term='theme'/><category term='tutorial'/><category term='sesconference'/><category term='web design company'/><category term='custom web developmentm'/><category term='ms outlook'/><category term='Design'/><category term='XML'/><category term='web  marketing'/><category term='Download Google Chrome'/><category term='Zend'/><category term='Google'/><category term='wordpress'/><category term='php tutorial'/><category term='PHP 5'/><category term='Security Enhancements'/><category term='PHP'/><category term='Drupal'/><category term='Personality Development'/><category term='Google Chrome'/><category term='website development'/><category term='Microsoft Silver Light'/><category term='SEO'/><category term='sql'/><category term='website layout'/><category term='software'/><category term='design resources'/><category term='CMS'/><category term='TIMESTAMP'/><category term='client side coding'/><category term='popularity'/><category term='Technologies'/><category term='PHP techniques'/><category term='JavaScript'/><category term='jewelry website design'/><category term='web design'/><title type='text'>Web Development company</title><subtitle type='html'>Find the best web site development and internet marketing, news, tips, tricks, tutorials and providers to help you create and manage your website.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>83</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-210290272437664954</id><published>2010-11-22T18:16:00.000-08:00</published><updated>2010-11-22T18:18:44.952-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>XDebug for developing, debugging and profiling PHP</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial,Helvetica,sans-serif; font-size: 13px; line-height: 20px;"&gt;&lt;br /&gt;XDebug is one of the essential PHP extensions for PHP developers. The name is a bit misleading, as it implies that it is just a debugging tool. This can put people off, since getting the debugger to work with your personal editor requires an understanding of networking, and can often be confusing. Even if you can't immediately get XDebug to work as a debugger, it is still valuable as a stack trace tool, or as a color coded replacement for PHP's var_dump, or as a code coverage analysis tool, and most importantly as a profiler. In this tutorial I'll attempt to cover installation, and most of XDebug's standard features.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5 style="margin: 0px; padding: 0px; font-size: 1.2em; font-weight: bold; color: rgb(252, 102, 2);"&gt;Install XDebug&lt;/h5&gt;&lt;br /&gt;Anyone who spends any time doing PHP development soon finds that PHP is not a one size fits all world. Thanks to its efforts to be a portable and extensible platform, PHP offers developers a wide array of platforms, installation methods, and configurations. Since XDebug needs to play within the ecosystem of PHP, there are a variety of different ways you can install it including compiling it from source.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The important thing to keep in mind is that XDebug is something you want installed on your development server, not on your production server! For that reason, I'm not going to cover compiling from source. All the installation options are covered in the&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://www.xdebug.org/docs/" style="text-decoration: none; color: rgb(197, 81, 0);"&gt;XDebug manual.&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For most people, the easiest way to install XDebug is to use PEAR/PECL. On a unix system that involves running pecl install.&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;&lt;br /&gt;# pecl install xdebug&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;Upon completion, you can check that everything has installed correctly.&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;&lt;br /&gt;debian:~# pecl list&lt;br /&gt;Installed packages, channel pecl.php.net:&lt;br /&gt;=========================================&lt;br /&gt;Package Version State&lt;br /&gt;xdebug 2.0.5 stable&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;On a Debian system, the build process included adding an ini file in an include directory that php utilizes to configure its modules, and I did not need to make further adjustments -- just restarted apache. On a 64bit Centos 5.5 install, the php.ini needed to be manually updated. In order to find the location of the xdebug.so, you can run pecl list-files.&lt;br /&gt;&lt;code style="font-style: normal; font-weight: normal; text-decoration: none; font-size: 1.2em;"&gt;&lt;br /&gt;[root@localhost ~]# pecl list-files xdebug&lt;br /&gt;Installed Files For xdebug&lt;br /&gt;==========================&lt;br /&gt;Type Install Path&lt;br /&gt;doc /usr/share/pear/doc/xdebug/contrib/tracefile-analyser.php&lt;br /&gt;doc /usr/share/pear/doc/xdebug/contrib/xt.vim&lt;br /&gt;doc /usr/share/pear/doc/xdebug/Changelog&lt;br /&gt;doc /usr/share/pear/doc/xdebug/CREDITS&lt;br /&gt;doc /usr/share/pear/doc/xdebug/LICENSE&lt;br /&gt;doc /usr/share/pear/doc/xdebug/NEWS&lt;br /&gt;doc /usr/share/pear/doc/xdebug/README&lt;br /&gt;src /usr/lib64/php/modules/xdebug.so&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;When you run the pecl install you'll see an erroneous message indicating that you should add an extension=xdebug.so to your php.ini.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;strong style="font-style: normal; font-weight: bold; text-decoration: none;"&gt;IGNORE THIS!!!&lt;/strong&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;You actually need to load XDebug using either:&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;&lt;br /&gt;; Enable xdebug&lt;br /&gt;zend_extension="/usr/lib64/php/modules/xdebug.so"&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;--or if you're setup with the threaded environment that has enabled "thread safety" then:&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;&lt;br /&gt;; Enable xdebug&lt;br /&gt;zend_extension_ts="/usr/lib64/php/modules/xdebug.so"&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;The cleanest way to set this up under Centos is to create a file in the /etc/php.d directory named xdebug.ini. You can also just manually add the lines above to your php.ini file. The comment&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;em style="font-style: italic; font-weight: normal; text-decoration: none;"&gt;"; Enable xdebug"&lt;/em&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;isn't necesssary but it's helpful for documentation purposes to have it, so why not?&lt;br /&gt;&lt;blockquote style="border-style: solid; border-color: rgb(68, 34, 102); border-width: 1px 1px 1px 4px; margin: 10px; padding: 5px; display: block; background-color: rgb(240, 233, 248);"&gt;If you've followed these instructions and you still don't see xdebug in your phpinfo() page, make sure you have permanently disabled selinux, as it can interfere with the ability for php to load the XDebug module.&lt;/blockquote&gt;&lt;br /&gt;Once you've installed XDebug, an XDebug section will be visible in the phpinfo() page, along with a list of default settings.&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin: 0px; padding: 0px; font-size: 1.6em; font-weight: bold; color: rgb(252, 102, 2);"&gt;var_dump()&lt;/h3&gt;&lt;br /&gt;One of the first things that XDebug will do by default is replace php's var_dump() with a nicer version that is also configurable in a variety of ways.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;In this example, I've inserted:&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;&lt;br /&gt;var_dump($mainframe); die();&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;--into the index.php file for the CMS joomla. The $mainframe object is the main application/controller object for Joomla, so inspecting it might be useful for understanding more about how Joomla works. Without XDebug, this is what the output looks like:&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;&lt;br /&gt;object(JSite)#2 (7) { ["_clientId"]=&gt; int(0) ["_messageQueue"]=&gt; array(0) { } ["_name"]=&gt; string(4) "site" ["scope"]=&gt; NULL ["_errors"]=&gt; array(0) { } ["requestTime"]=&gt; string(16) "2010-10-09 23:56" ["setTemplate"]=&gt; string(13) "rhuk_milkyway" }&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;With it turned on we get this:&lt;br /&gt;&lt;img src="http://www.flingbits.com/userspace/gizmola/xdebug_vardump.png" alt="xdebug_vardump" style="border-width: 0px;" /&gt;&lt;br /&gt;&lt;br /&gt;XDebug adds nesting, color coding and scope identification to the output.&lt;br /&gt;Consider a more complicated object:&lt;br /&gt;&lt;img src="http://www.flingbits.com/userspace/gizmola/xdebug_novardump2.png" alt="xdebug_novardump2" style="border-width: 0px;" /&gt;&lt;br /&gt;Trying to make sense out of all this jumbled output isn't easy. With XDebug you can see the forest through the trees.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.flingbits.com/userspace/gizmola/xdebug_vardump2.png" alt="xdebug_vardump2" style="border-width: 0px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin: 0px; padding: 0px; font-size: 1.6em; font-weight: bold; color: rgb(252, 102, 2);"&gt;Stack Trace dump&lt;/h3&gt;&lt;br /&gt;A stack dump is what PHP spits out when you have a runtime error in your script. During development you want to have&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;em style="font-style: italic; font-weight: normal; text-decoration: none;"&gt;display_errors&lt;/em&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;turned on, so you can easily see these when they occur. Vanilla PHP might show you something like:&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;&lt;br /&gt;Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (tutorials)' in /var/sites/flingbits.com/library/Zend/Controller/Dispatcher/Standard.php:248 Stack trace: #0 /var/sites/flingbits.com/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard-&gt;dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 /var/sites/flingbits.com/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front-&gt;dispatch() #2 /var/sites/flingbits.com/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap-&gt;run() #3 /var/sites/flingbits.com/public/index.php(10): Zend_Application-&gt;run() #4 {main} thrown in /var/sites/flingbits.com/library/Zend/Controller/Dispatcher/Standard.php on line 248&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;With XDebug, your Stack dump looks like this:&lt;br /&gt;&lt;img src="http://www.flingbits.com/userspace/gizmola/xdebug_stack1.png" alt="xdebug_stack1" style="border-width: 0px;" /&gt;&lt;br /&gt;The XDebug version is not only a lot easier to read, but it also adds profiling and memory usage information to the trace. However, there are a number of additional options you can turn on to make this even more useful.&lt;br /&gt;&lt;br /&gt;&lt;h5 style="margin: 0px; padding: 0px; font-size: 1.2em; font-weight: bold; color: rgb(252, 102, 2);"&gt;xdebug.collect_params&lt;/h5&gt;&lt;br /&gt;This setting will provide you a variable level of information about parameters being passed. Setting this to "4" gives you the maximum amount of parameter information available.&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;&lt;br /&gt;xdebug.collect_params=4&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5 style="margin: 0px; padding: 0px; font-size: 1.2em; font-weight: bold; color: rgb(252, 102, 2);"&gt;xdebug.show_local_vars=1&lt;/h5&gt;&lt;br /&gt;This is a kitchen sink setting that will dump out every variable in the local scope. In a smaller application or when confronted with a particularly confusing problem, this might be useful, but in most cases where you have a script of any sophistication, it simply produces too much output.&lt;br /&gt;&lt;br /&gt;&lt;h5 style="margin: 0px; padding: 0px; font-size: 1.2em; font-weight: bold; color: rgb(252, 102, 2);"&gt;Dumping superglobals&lt;/h5&gt;&lt;br /&gt;You can add some or all of the various superglobals to your stack trace, by setting the xdebug.dump.SUPERGLOBALNAME=*.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;&lt;br /&gt;xdebug.dump.SESSION=*&lt;br /&gt;xdebug.dump.COOKIE=*&lt;br /&gt;xdebug.dump.GET=*&lt;br /&gt;xdebug.dump.POST=*&lt;br /&gt;xdebug.dump.FILES=*&lt;br /&gt;xdebug.dump.REQUEST=*&lt;br /&gt;xdebug.dump.ENV=*&lt;br /&gt;xdebug.dump.SERVER=*&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;Most of the time, you will probably want to limit the output to a handful of commonly useful variables, so instead of setting the variable to the wildcard '*', you can instead pass a list of the specific variables you are interested in.&lt;br /&gt;For example:&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;&lt;br /&gt;xdebug.dump.SERVER=SCRIPT_FILENAME,REQUEST_METHOD,QUERY_STRING,HTTP_COOKIE,REMOTE_ADDR&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin: 0px; padding: 0px; font-size: 1.6em; font-weight: bold; color: rgb(252, 102, 2);"&gt;Profiling&lt;/h3&gt;&lt;br /&gt;The XDebug profiler outputs "cachegrind compatible files" that can be analyzed with a variety of tools, depending on your platform. If you're developing on a linux workstation use kcachegrind, or on windows wincachegrind.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The best way to enable profiling is to set XDebug so that you can pass a parameter to the script via a GET, POST or COOKIE that will enable it. There's also a setting that defines the name of the cachegrind file(s) generated. I recommend these settings, and by default your files will be deposited in the /tmp directory of the server.&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;&lt;br /&gt;;profiling&lt;br /&gt;xdebug.profiler_enable_trigger=1&lt;br /&gt;xdebug.profiler_output_name=cachegrind.out.%s.%t&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;Now you can selectively trigger profiling by passing a GET param in the URL:&lt;br /&gt;&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;http://www.gizlocal.com/?XDEBUG_PROFILE&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;Once the script has run, you should find the profile output file in your temp directory. The file will be named&lt;em style="font-style: italic; font-weight: normal; text-decoration: none;"&gt;cachegrind.out.&lt;/em&gt;{path_and_filename}.{timestamp}&lt;br /&gt;&lt;br /&gt;Using these settings will allow you to generate multiple profilings for the same script, as well as allowing you to easily identify the script that actually generated the profiling data.&lt;br /&gt;&lt;pre style="margin: 0px; padding: 0px; font-size: 1.2em;"&gt;&lt;br /&gt;&lt;br /&gt;debian:/tmp# ls -lath | grep cachegrind*&lt;br /&gt;&lt;br /&gt;... 4.5M 2010-11-16 13:04 cachegrind.out._var_sites_flingbits.com_public_index_php.1289941492&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Once you have a profiling data file, you will need to load it into an analysis tool. There are analysis tools available for most common operating systems, although the features of the various tools differs. For an Xwindows Linux workstation, KCachegrind provides the timing and call data as well as graphical visualizations like the "Call Graph" screen. WinCacheGrind is a native windows application which doesn't provide graphs, but does show the calls and timings, and allows you to sort the profile data in a variety of ways. Here's a screenshot showing the functions which take the most time.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.flingbits.com/userspace/gizmola/xdebug_profile.png" alt="xdebug_profile" style="border-width: 0px;" /&gt;&lt;br /&gt;&lt;br /&gt;Regardless of the tool, your primary goal is to determine which blocks of code are taking the most time. The analysis tool will show you how many times each function was called, along with aggregate and average execution times. Often you will have functions or methods that call other functions. The local time is totalled seperately from the cumulative time so you can determine where the majority of the time is being spent.&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin: 0px; padding: 0px; font-size: 1.6em; font-weight: bold; color: rgb(252, 102, 2);"&gt;Debugging&lt;/h3&gt;&lt;br /&gt;Getting the XDebug remote debugger to work with your favorite IDE will probably require looking up configuration instructions for your IDE. These settings are typical, and reflect the process of setting things up to work with Eclipse PDT.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;blockquote style="border-style: solid; border-color: rgb(68, 34, 102); border-width: 1px 1px 1px 4px; margin: 10px; padding: 5px; display: block; background-color: rgb(240, 233, 248);"&gt;Remember that whenever you make changes to any of these serverside settings, in the php.ini or an included .ini, you must restart Apache!&lt;/blockquote&gt;&lt;br /&gt;The first thing you need to do is configure XDebug on your server to turn on remote debugging support. While a number of these settings are also the default it doesn't hurt to include them, in case you need to make tweaks.&lt;br /&gt;&lt;tt style="font-size: 1.2em;"&gt;&lt;br /&gt;;Debugger&lt;br /&gt;xdebug.remote_enable=1&lt;br /&gt;xdebug.remote_mode=req&lt;br /&gt;xdebug.remote_port=9000&lt;br /&gt;xdebug.idekey=ECLIPSE_DBGP&lt;br /&gt;xdebug.remote_handler=dbgp&lt;br /&gt;xdebug.remote_host=10.1.0.2&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;Reviewing these settings:&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;-- you need to enable the debugger using xdebug.remote_enable=1.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;-- The xdebug.remote_port is the port the debugger will use to connect back to your IDE once the debugging session is started. It defaults to port 9000.&lt;br /&gt;-- xdebug.idekey needs to be set to whatever your IDE will use to instantiate the session. This gets passed as a url parameter by the eclipse debugger as&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;em style="font-style: italic; font-weight: normal; text-decoration: none;"&gt;?XDEBUG_SESSION_START=&lt;/em&gt;. For Eclipse with PDT, the session id will be ECLIPSE_DBGP. For other IDE's or editors that support XDebug this could very well be something different. Ultimately it is an identification mechanism, which simply has to be agreed upon for the editor to connect to XDebug. When everything is setup correctly, you can expect to see something like this in the browser URL when your eclipse debug sessions starts.&lt;br /&gt;&lt;br /&gt;&lt;pre style="margin: 0px; padding: 0px; font-size: 1.2em;"&gt;http://www.gizlocal.com/?XDEBUG_SESSION_START=ECLIPSE_DBGP&amp;amp;KEY=12900687508406&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;-- xdebug.remote_handler specifies the debug protocol, which in this case should be&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://www.xdebug.org/docs-dbgp.php" style="text-decoration: none; color: rgb(197, 81, 0);"&gt;dbgp.&lt;/a&gt;&lt;br /&gt;-- Last but not least, the xdebug.remote_host needs to be an IP address for your workstation that can be reached by the server. If for example, your workstation is behind a NAT firewall, you'd have to setup a port forward rule for your workstation that forwards port 9000 traffic back to your workstation. If you're using a WAMP or virtual server environment using VMware or Sun Virtualbox, then chances are this is going to be an internal IP address like the one I included in my example. I highly recommend using a virtual server for your development environment.&lt;blockquote style="border-style: solid; border-color: rgb(68, 34, 102); border-width: 1px 1px 1px 4px; margin: 10px; padding: 5px; display: block; background-color: rgb(240, 233, 248);"&gt;If you're not sure how to do this, I have a detailed 2 part article on setting up your own virtual Centos Lamp server running inside Sun Virtualbox on a PC running Windows&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://gizmola.com/blog/blog/archives/95-Run-a-Centos-Lamp-development-server-on-XP-using-VirtualBox.html" style="text-decoration: none; color: rgb(197, 81, 0);"&gt;here&lt;/a&gt;.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin: 0px; padding: 0px; font-size: 1.6em; font-weight: bold; color: rgb(252, 102, 2);"&gt;Configuring Eclipse PDT for XDebug&lt;/h3&gt;&lt;br /&gt;There are many things that can go wrong with the debugging configuration. Keep in mind that Eclipse PDT's debugger is generic and setup to support different debuggers. This section is not meant to be exhaustive, but should give you an idea of how to get started.&lt;br /&gt;&lt;blockquote style="border-style: solid; border-color: rgb(68, 34, 102); border-width: 1px 1px 1px 4px; margin: 10px; padding: 5px; display: block; background-color: rgb(240, 233, 248);"&gt;When the debug session starts and your workstation browser is opened, you should see a valid URL (see above) and the page should be blank. If the full page is displayed this is a good indication that you need to check your settings, and that Eclipse didn't connect to XDebug!&lt;/blockquote&gt;&lt;br /&gt;When configuration is complete you will open the&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;strong style="font-style: normal; font-weight: bold; text-decoration: none;"&gt;PHP Debug&lt;/strong&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;perspective, and choose a debug configuration. For any specific script you want to debug, you'll need to create a Debug configuration for it. In other words, if you reach a script via a particular URL, you'll need a debug configuration unless it can be reached via another script that you have already setup. For a framework style application, you can set skip to the points you're interested in via breakpoints, but you'll need to have the files you want to set breakpoints in, open in the IDE, and then once you start the debugger, you switch to the file you want to set the breakpoint in, and choose "Run to line". It's not pretty but it works.&lt;br /&gt;&lt;br /&gt;From the Menu choose the&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;strong style="font-style: normal; font-weight: bold; text-decoration: none;"&gt;Run | Debug Configurations&lt;/strong&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;panel.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.flingbits.com/userspace/gizmola/xdebug_eclipse_config1.png" alt="xdebug_eclipse_config1" style="border-width: 0px;" /&gt;&lt;br /&gt;&lt;br /&gt;-- When you get into this panel, give the Debug configuration a name representing the script. This will make it easy for you to choose the right config to debug. In this example, I called it "Index" because I'm debugging the index.php of this framework application.&lt;br /&gt;-- Set the server debugger to XDebug.&lt;br /&gt;-- Browse your project and find the script you want to debug. The script has to actually be executable.&lt;br /&gt;-- Uncheck URL - Auto Generate. This is bugged in my version of Eclipse PDT, and it also seems to add slashes in the neighboring path box that you want to clear out whenever you see them.&lt;br /&gt;-- Save&lt;br /&gt;-- Reopen your freshly created debug configuration, and now "Add" a new PHP Server.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.flingbits.com/userspace/gizmola/xdebug_eclipse_config2.png" alt="xdebug_eclipse_config2" style="border-width: 0px;" /&gt;&lt;br /&gt;&lt;br /&gt;-- Give this a name representing your development server that is running XDebug.&lt;br /&gt;-- Enter the domain name, and provide a path if you've got an application running in a subdirectory off the site root. Leave off the closing '/'!&lt;br /&gt;-- The configuration wizard will take you to the next step, which is adding at least one "Path Mapping".&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.flingbits.com/userspace/gizmola/xdebug_eclipse_config3.png" alt="xdebug_eclipse_config3" style="border-width: 0px;" /&gt;&lt;br /&gt;&lt;br /&gt;-- This maps the base location for your workspace files to the path on the server.&lt;br /&gt;&lt;br /&gt;&lt;h5 style="margin: 0px; padding: 0px; font-size: 1.2em; font-weight: bold; color: rgb(252, 102, 2);"&gt;Ready to debug?&lt;/h5&gt;&lt;br /&gt;If everything has gone as planned you should now have a working configuration. Change to the "PHP Debug" perspective. Click on the Debug button, and choose your Debug configuration based on the name you gave it when you set the configuration up in eclipse. You can switch to the browser and should see it loaded with the proper url and the added XDebug parameters discussed previously. The screen should be blank and Eclipse should load up the debugged file into the editor, fill the variable window and set things so that you can step through the code using the "step into", "step over", and "step and return" buttons on the debug button bar.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.flingbits.com/userspace/gizmola/xdebug_eclipse.png" alt="xdebug_eclipse" style="border-width: 0px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 style="margin: 0px; padding: 0px; font-size: 1.6em; font-weight: bold; color: rgb(252, 102, 2);"&gt;Summary&lt;/h3&gt;&lt;br /&gt;XDebug is more than a debugger, even though for PHP it can be used as one. It's an invaluable development tool that will help you during the development process. Hopefully you learned more about how to set it up and start to make use of it. If you have questions or comments, reply here or make a thread in the forum.&lt;br /&gt;&lt;br /&gt;Original Article Source: &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.flingbits.com/tutorial/view/xdebug-for-developing-debugging-and-profiling-php"&gt;http://www.flingbits.com/tutorial/view/xdebug-for-developing-debugging-and-profiling-php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-210290272437664954?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/210290272437664954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=210290272437664954' title='62 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/210290272437664954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/210290272437664954'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2010/11/xdebug-for-developing-debugging-and.html' title='XDebug for developing, debugging and profiling PHP'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>62</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-2412486774789902262</id><published>2010-07-21T22:53:00.000-07:00</published><updated>2010-07-21T22:56:05.105-07:00</updated><title type='text'>Making SEO Friendly Websites</title><content type='html'>Website designing does not only involve giving it an attractive and professional look. It must bring in more business output. For this the website has to have a good page rank with all search engines.&lt;br /&gt;&lt;br /&gt;The basic idea of creating a successful website is to make it SEO friendly. This means to say that before building a website you must conduct an extensive and in depth research about the keywords for the content and name of the website, the competition it faces from the other websites that provides same service and information.&lt;br /&gt;&lt;br /&gt;But this doesn’t mean that creating a &lt;a href="http://www.getwebdesignhelp.com/"&gt;SEO friendly site&lt;/a&gt; is hard. All you need is a proper conception and in-depth knowledge about &lt;a href="http://www.onlinewebdesigninginfo.com/"&gt;search engine optimization&lt;/a&gt; and how to plan your strategies to give the website a healthy page rank on the search engine results.&lt;br /&gt;&lt;br /&gt;Here are a few tips for making a SEO friendly site:&lt;br /&gt;Make sure that the website doesn’t take much time to load as this would make the visitors to drift away to other websites and you shall be losing customers and hence revenue.&lt;br /&gt;&lt;br /&gt;The HTML codes must not have error. This shall show broken and ineligible elements in the website and thus greater chances of miscommunication and you shall loose repeat visitors to your website.&lt;br /&gt;&lt;br /&gt;The keywords that are to be used must be well researched and placed with proper density that can bring about proper page rank in search engine listing.&lt;br /&gt;&lt;br /&gt;Do not use too much designer font style that would make the content ineligible. The main purpose is to communicate with the visitor and achieve the goal. Miscommunication would destruct the whole purpose.&lt;br /&gt;&lt;br /&gt;Give emphasis on pictures. As the saying goes a picture says thousand words. Not only would it make the website attractive, at the same time it would help to communicate with the visitor with much less chances of miscommunication.&lt;br /&gt;&lt;br /&gt;The sole purpose of search engine optimization is to achieve a good page rank in the search engine results and bring in more visitors. Whatever you do make sure that the website is user friendly and that it attracts more and more visitors and helps in enhancing business output.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-2412486774789902262?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/2412486774789902262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=2412486774789902262' title='37 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2412486774789902262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2412486774789902262'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2010/07/making-seo-friendly-websites.html' title='Making SEO Friendly Websites'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>37</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-846807500022743300</id><published>2010-04-12T09:38:00.000-07:00</published><updated>2010-04-12T09:43:56.027-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='website layout'/><category scheme='http://www.blogger.com/atom/ns#' term='jewelry website design'/><title type='text'>Guidelines to design a Jewelry Website</title><content type='html'>&lt;div style="text-align: justify;"&gt;Jewelry Design web pages generally come under online shopping and promotional sites. The top rated jewelry designing site is constructed in an elegant way with a classy appeal that creates a nice impression in the minds of fashion conscious surfers. Jewelry sites are particularly chosen amongst women of particularly high class. Therefore, it is to be noted that the jewelry design web page should be designed to grab the attention of fashionable women or else by the people of luxury.&lt;br /&gt;&lt;br /&gt;Before designing a jewelry site, it should be kept in mind that the home page is to be formatted to highlight the &lt;a href="http://www.templatekingdom.com/"&gt;exclusive designs&lt;/a&gt; that are available in the Jewelry shop. Also, the layout of the page should display decent style without making it jumbled. Now, regarding the content of the site, it should be given care that the text is written in a simple yet ornate way. Hence &lt;a href="http://www.quality-web-solutions.com/web-content-writing-india.php"&gt;content writing&lt;/a&gt; should me done by keeping the objective of the website in mind.&lt;br /&gt;&lt;br /&gt;There are some of the basic things that should be taken into care while designing a jewelry site:&lt;br /&gt;&lt;br /&gt;•    Domain Name: As these sites are classified as marketing site, so proper care should be taken in mentioning the Domain name. Otherwise, there can be problem in searching issues.&lt;br /&gt;&lt;br /&gt;•    Security Check: As these sites are visited by the surfers who make a heavy amount of online financial dealings, so it is to be noted that the online transactions should be kept in high security mode. Any of the personal details of any of the customers should not be hacked by any means. While designing a page, member and customer database should be kept in total privacy in server side.&lt;br /&gt;&lt;br /&gt;• Layout: The layout of a good jewelry-designing page should not be over cluttered. It should display an exquisite taste of style and modernity. Also, the layout should not be designed in such brilliance that it crosses the budget. So, while designing a jewelry site, it should be kept in mind to create a tasteful site that comes under budget.&lt;br /&gt;&lt;br /&gt;• Maintenance of the site: A web developer should design a jewelry site such that it provides easy option of appending, deleting or modifying from server side. This type of sites claim constant updates and changes in products, prices, member lists and many other parts that should be taken care of.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-846807500022743300?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/846807500022743300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=846807500022743300' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/846807500022743300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/846807500022743300'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2010/04/guidelines-to-design-jewelry-website.html' title='Guidelines to design a Jewelry Website'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-4876386278749907332</id><published>2010-03-22T21:15:00.000-07:00</published><updated>2010-03-22T21:17:29.739-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web design company'/><title type='text'>Image Selection solutions for a Web Design Company</title><content type='html'>&lt;div style="text-align: justify;"&gt;A web page is constructed for attracting a viewer and the more a viewer stays in a particular page, the more profitable a website becomes, particularly for the business websites.&lt;br /&gt;&lt;br /&gt;Visitor retention is the ultimate objective of &lt;a href="http://www.webguru-india.com/webdesign.php"&gt;website design&lt;/a&gt;. A number of methods are being employed for enhancing the overall look and feel of a website and among them image insertion plays a pivotal role. Graphical elements, like images and animations play a vital role in making a web page attractive and alluring. Therefore, the web design company that includes elegant and useful images to convey vital messages for the website is considered to be a good website design company. Also, images should not be more that 2-3 for a particular page. There are certain aspects that are to be followed before inserting an image while doing a website design.&lt;br /&gt;&lt;br /&gt;A website design company should look after certain things before choosing images for a particular website. It is totally depending on the requirement of the client that an image is chosen. Also, the image is chosen as per the budget that is allotted for a web page. Sometimes clients themselves provide images that are mandatory to be used in a particular page. In other cases, website design company chooses images for their own client. This is done as per the money estimate that is provided by the client.&lt;br /&gt;&lt;br /&gt;Some of the things that a website design company should remember while making use of images:&lt;br /&gt;&lt;br /&gt;• Image resolution and size: Depending on the budget estimate and also the size of the web page, a particular image is selected. This image is to be placed in such a way to fit in the page properly and in a place that never blocks or disturbs any other part of the page. A good website design company always chooses an image that has the same of nearly the same dimension of the image placeholder.&lt;br /&gt;&lt;br /&gt;• Meaningful Images: The images that convey the ideas of the web page are to be selected. Also, minimal number of images is to be placed in a page that matches with the content of the page.&lt;br /&gt;&lt;br /&gt;• Images in header: Header images are to be chosen in a particular way to focus the purpose and objective of the site.&lt;br /&gt;&lt;br /&gt;• Use of genuine images: The images that are to be placed in a web page should be cleared from any type of copyright problems.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-4876386278749907332?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/4876386278749907332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=4876386278749907332' title='35 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/4876386278749907332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/4876386278749907332'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2010/03/image-selection-solutions-for-web.html' title='Image Selection solutions for a Web Design Company'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>35</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-4786190354043825278</id><published>2010-03-22T21:12:00.000-07:00</published><updated>2010-03-22T21:15:19.241-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><title type='text'>Web Design and the Use of SEO</title><content type='html'>&lt;div style="text-align: justify;"&gt;For a successful web design it is essential to build a web page that is very much visible over the net. For that it is necessary to optimize the page in a way to get it easily through search engine tools. &lt;a href="http://www.quality-web-programming.com/web-application-development.php"&gt;Web development&lt;/a&gt; is not at all simple and it requires a lot of technical planning before a web page is built. The first and foremost thing that a &lt;b&gt;web development company&lt;/b&gt; should take care of is the search engine optimality issue and accordingly the site should be built. The basic purpose of web design is to build an effective web site that can be easily obtained through any of the standard search engine.&lt;br /&gt;&lt;br /&gt;The basic thing that should be taken care while building a particular web page is that the requisite keywords are chosen properly and in accordance to the utility of the site. The content should be written in a way to make use of as much keywords as possible so that the search engine crawlers can hunt it easily. A web page is consisted of several other components. These can be images, down-loadable links, video files, music files or some other external links. For any types of media files a particular ID is allotted so that it can be found easily when given a search.&lt;br /&gt;&lt;br /&gt;The purpose of SEO is to make the entire component of a web page visible and search-able with a standard search engine. The Content should be the prime focus for any of the web site and web content writing involves maximized use of the relevant keywords. The keywords are to be chosen keeping in mind the simplicity of the phrases. Mostly commonly used phrases are allotted as keywords and these are included in the content to make a meaningful content.&lt;br /&gt;&lt;br /&gt;Also, a website design company plans to keep the layout simple and easy for the search engine crawlers to retrieve the required keywords. In all, the effectiveness of a good web design fully depends on the strong SEO planning and development.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-4786190354043825278?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/4786190354043825278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=4786190354043825278' title='33 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/4786190354043825278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/4786190354043825278'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2010/03/web-design-and-use-of-seo.html' title='Web Design and the Use of SEO'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>33</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-1151577643469892129</id><published>2010-02-08T19:25:00.000-08:00</published><updated>2010-10-18T23:18:52.923-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wordpress'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Microsoft Q&amp;A: Microsoft and Open Source</title><content type='html'>&lt;span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: medium 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2"&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(51,51,51);font-size:12;" &gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;&lt;span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: medium 'Times New Roman'; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2"&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(51,51,51);font-size:11;" &gt;by&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a class="author" style="COLOR: rgb(36,91,139)" href="http://www.blogger.com/profile/subtalk"&gt;Tomas Gonsorcik&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;on&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;span class="date"&gt;Feb 8, 2010 5:59:06 PM&lt;/span&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;- 90 views&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;Microsoft has continued to engage with the open source community over the last year. Following up on the Q&amp;amp;A from last May, they would like to share their progress as well as hear your thoughts on how you see PHP working on Windows Server and Microsoft stack in general.&lt;/p&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;The improvements include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;SQL Server driver for PHP&lt;/li&gt;&lt;li&gt;Windows Cache Extension 1.0 for PHP&lt;/li&gt;&lt;li&gt;Integration into open source Content Management System (CMS) with platforms such as Wordpress and Drupal&lt;/li&gt;&lt;/ul&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;There is a good deal of work being done on making PHP run on Azure as well.&lt;/p&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;Now they would like to hear about the impact of these improvements on your work and what could be done in future to help your apps interoperate with Microsoft stack better.&lt;/p&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;We decided to restart a dedicated board for the Microsoft Q&amp;amp;A to run a Q&amp;amp;A session with Tom Hanrahan, Director of Microsoft’s Open Source Technology Center, where we ask you to post questions and comments for Tom.&lt;/p&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;On February 22 at 4.30 GMT, Tom will join the forum and answer all your questions. He will also stay on the forum for the day with his technical team to answer that arise during the live session.&lt;/p&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;We invite you post your questions freely and with intention to improve your experience with PHP interop. This is an exclusive opportunity to shape the future release of PHP for Windows Server as well as exciting new technologies like PHP on Azure.&lt;/p&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;We look forward to hearing from you.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a style="COLOR: rgb(36,91,139)" href="http://www.phpfreaks.com/forums/index.php/board,112.0.html"&gt;Ask your questions in the forum now.&lt;/a&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;&lt;a style="COLOR: rgb(36,91,139)" href="http://www.phpfreaks.com/forums/index.php/board,112.0.html"&gt;Source: &lt;/a&gt;&lt;a href="http://www.phpfreaks.com/blog/microsoft-qa-microsoft-and-open-source"&gt;http://www.phpfreaks.com/blog/microsoft-qa-microsoft-and-open-source&lt;/a&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;&lt;a href="http://www.spaceandtime.eu.com/media-buying"&gt;Media Buying&lt;/a&gt; - Media buying &amp;amp; planning, including digital from Space &amp;amp; Time Media&lt;/p&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px"&gt;&lt;a href="http://www.rm.com/Generic.asp?cref=GP1547323"&gt;Creativity in Education&lt;/a&gt; - Creativity is not unique to the arts. Creativity in education is equally important in mathematics, science, technology, in business - indeed in all areas of life. Neither is creativity simply about letting go, after all creative achievement relies on knowledge, control of materials and command of ideas.&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nomedexamlifeinsurance.com/" alt=19.10.10"&gt;no exam life insurance&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-1151577643469892129?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/1151577643469892129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=1151577643469892129' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/1151577643469892129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/1151577643469892129'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2010/02/microsoft-q-microsoft-and-open-source.html' title='Microsoft Q&amp;A: Microsoft and Open Source'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-6731962374218320973</id><published>2009-12-03T21:17:00.000-08:00</published><updated>2010-01-06T02:17:23.958-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='php tools'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP techniques'/><title type='text'>50 Extremely Useful PHP Tools</title><content type='html'>&lt;span class="Apple-style-span"   style="  color: rgb(30, 30, 30); line-height: 20px; font-family:Verdana, Arial, Geneva, Helvetica, sans-serif;font-size:12px;"&gt;&lt;p style="margin-bottom: 1.15em; "&gt;&lt;em&gt;By Jacob Gube&lt;/em&gt;&lt;/p&gt;&lt;p style="margin-bottom: 1.15em; "&gt;&lt;strong&gt;PHP&lt;/strong&gt; is one of the most widely used open-source server-side scripting languages that exist today. With over 20 million indexed domains using PHP, including major websites like Facebook, Digg and WordPress, there are good reasons why many Web developers prefer it to other server-side scripting languages, such as Python and Ruby.&lt;/p&gt;&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&amp;amp;lang=php&amp;amp;lang2=ruby" style="color: rgb(49, 81, 162); "&gt;PHP is faster&lt;/a&gt; (&lt;em&gt;updated&lt;/em&gt;), and it is &lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" style="color: rgb(49, 81, 162); "&gt;the most used scripting language&lt;/a&gt; in practice; it has detailed documentation, a huge community, numerous ready-to-use scripts and well-supported frameworks; and most importantly, it’s much easier to get started with PHP than with other scripting languages (Python, for example). That’s why it makes perfect sense to provide the huge community of PHP developers with an overview of useful tools and resources that can make their development process easier and more effective.&lt;/p&gt;&lt;p style="margin-bottom: 1.15em; "&gt;This post presents &lt;strong&gt;50 useful PHP tools that can significantly improve your programming workflow&lt;/strong&gt;. Among other things, you’ll find a plethora of libraries and classes that aid in debugging, testing, profiling and code-authoring in PHP.&lt;/p&gt;&lt;p style="margin-bottom: 1.15em; "&gt;&lt;/p&gt;&lt;h3 style="padding-top: 10px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin-bottom: 18px; font: normal normal normal 2.5em/normal Helvetica, Arial, Helvetica, sans-serif; color: rgb(47, 47, 47); border-bottom-width: 3px; border-bottom-style: solid; border-bottom-color: rgb(47, 47, 47); "&gt;Debugging Tools&lt;/h3&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://code.google.com/p/webgrind/" style="color: rgb(49, 81, 162); "&gt;Webgrind&lt;/a&gt;&lt;br /&gt;Webgrind is an &lt;a href="http://www.xdebug.org/" style="color: rgb(49, 81, 162); "&gt;Xdebug&lt;/a&gt; profiling Web front end in PHP 5. It implements a subset of the features of &lt;a href="http://kcachegrind.sourceforge.net/cgi-bin/show.cgi" style="color: rgb(49, 81, 162); "&gt;kcachegrind&lt;/a&gt;, installs in seconds and works on all platforms. For quick ‘n’ dirty optimizations, it does the job.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://code.google.com/p/webgrind/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/webgrind.jpg" alt="Webgrind in 50 Extremely Useful PHP Tools" width="500" height="413" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/webgrind.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://xdebug.org/index.php" style="color: rgb(49, 81, 162); "&gt;Xdebug&lt;/a&gt;&lt;br /&gt;Xdebug is one of the most popular debugging PHP extensions. It provides a ton of useful data to help you quickly find bugs in your source code. Xdebug plugs right into many of the most popular PHP applications, such as PHPEclipse and phpDesigner.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://gubed.mccabe.nu/" style="color: rgb(49, 81, 162); "&gt;Gubed PHP Debugger&lt;/a&gt;&lt;br /&gt;As the name implies, Gubed PHP Debugger is a PHP debugging tool for hunting down logic errors.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.php-debugger.com/dbg/" style="color: rgb(49, 81, 162); "&gt;DBG&lt;/a&gt;&lt;br /&gt;DBG is a robust and popular PHP debugger for use in local and remote PHP debugging. It plugs into numerous PHP IDE’s and can easily be used with the command line.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.php-debug.com/www/" style="color: rgb(49, 81, 162); "&gt;PHP_Debug&lt;/a&gt;&lt;br /&gt;PHP_Debug is an open-source project that gives you useful information about your PHP code that can be used for debugging. It can output processing times of your PHP and SQL, check the performance of particular code blocks and get variable dumps in graphical form, which is great if you need a more visual output than the one given to you by print_r() or var_dump().&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://sourceforge.net/projects/php-dyn/" style="color: rgb(49, 81, 162); "&gt;PHP_Dyn&lt;/a&gt;&lt;br /&gt;PHP_Dyn is another excellent PHP debugging tool that’s open-source. You can trace execution and get an output of the argument and return values of your functions.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.bluestatic.org/software/macgdbp/" style="color: rgb(49, 81, 162); "&gt;MacGDBp&lt;/a&gt;&lt;br /&gt;MacGDBp is a live PHP debugger application for the Mac OS. It has all the features you’d expect from a fully featured debugger, such as the ability to step through your code and set breakpoints.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="padding-top: 10px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin-bottom: 18px; font: normal normal normal 2.5em/normal Helvetica, Arial, Helvetica, sans-serif; color: rgb(47, 47, 47); border-bottom-width: 3px; border-bottom-style: solid; border-bottom-color: rgb(47, 47, 47); "&gt;Testing and Optimization Tools&lt;/h3&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.phpunit.de/" style="color: rgb(49, 81, 162); "&gt;PHPUnit&lt;/a&gt;&lt;br /&gt;PHPUnit is a complete port of the popular &lt;a href="http://www.junit.org/" style="color: rgb(49, 81, 162); "&gt;JUnit&lt;/a&gt; unit testing suite to PHP 5. It’s a tool that helps you test your Web application’s stability and scalability. Writing test cases within the PHPUnit framework is easy; here’s &lt;a href="http://www.phpunit.de/manual/current/en/writing-tests-for-phpunit.html" style="color: rgb(49, 81, 162); "&gt;how to do it&lt;/a&gt;.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.simpletest.org/" style="color: rgb(49, 81, 162); "&gt;SimpleTest&lt;/a&gt;&lt;br /&gt;SimpleTest is a straightforward unit-testing platform for PHP applications. To get up and running with SimpleTest quickly, read through this pragmatic&lt;a href="http://www.simpletest.org/en/first_test_tutorial.html" style="color: rgb(49, 81, 162); "&gt;tutorial&lt;/a&gt; that shows you how to create a new test case.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://www.simpletest.org/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/simpletest.gif" alt="Simpletest in 50 Extremely Useful PHP Tools" width="349" height="152" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/simpletest.gif" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://selenium-rc.openqa.org/" style="color: rgb(49, 81, 162); "&gt;Selenium&lt;/a&gt;&lt;br /&gt;Selenium Remote Control (RC) is a test tool that allows you to write automated Web application UI tests in any programming language against any HTTP website using any mainstream JavaScript-enabled browser. It can be used in conjunction with PHPUnit to create and run automated tests within a Web browser.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://matrix.squiz.net/developer/tools/php_cs" style="color: rgb(49, 81, 162); "&gt;PHP_CodeSniffer&lt;/a&gt;&lt;br /&gt;PHP_CodeSniffer is a PHP 5 script for detecting conformance to a predefined PHP coding standard. It’s a helpful tool for maintaining uniform coding styles for large projects and teams.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://dbug.ospinto.com/" style="color: rgb(49, 81, 162); "&gt;dBug&lt;/a&gt;&lt;br /&gt;dBug is ColdFusion’s &lt;a href="http://livedocs.adobe.com/coldfusion/6.1/htmldocs/tags-p21.htm" style="color: rgb(49, 81, 162); "&gt;cfDump&lt;/a&gt; for PHP. It’s a simple tool for outputting data tables that contain information about arrays, classes and objects, database resources and XML resources, making it very useful for debugging purposes.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://dbug.ospinto.com/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/11_dbug.jpg" alt="11 Dbug in 50 Extremely Useful PHP Tools" width="306" height="363" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/11_dbug.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.coderholic.com/php-profile-class/" style="color: rgb(49, 81, 162); "&gt;PHP Profile Class&lt;/a&gt;&lt;br /&gt;PHP Profile Class is an excellent PHP profiling tool for your Web applications. Using this class will help you quickly and easily gain insight into which parts of your app could use some refactoring and optimization.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="padding-top: 10px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin-bottom: 18px; font: normal normal normal 2.5em/normal Helvetica, Arial, Helvetica, sans-serif; color: rgb(47, 47, 47); border-bottom-width: 3px; border-bottom-style: solid; border-bottom-color: rgb(47, 47, 47); "&gt;Documentation Tools&lt;/h3&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://phpdoc.org/" style="color: rgb(49, 81, 162); "&gt;phpDocumentor&lt;/a&gt;&lt;br /&gt;phpDocumentor (also known as phpdoc and phpdocu) is a documentation tool for your PHP source code. It has an innumerable amount of features, including the ability to output in HTML, PDF, CHM and XML DocBook formats, and has both a Web-based and command-line interface as well as source-code highlighting. To learn more about phpDocumentor, check out the &lt;a href="http://www.phpdoc.org/manual.php" style="color: rgb(49, 81, 162); "&gt;online manual&lt;/a&gt;.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://phpdox.net/" style="color: rgb(49, 81, 162); "&gt;PHP DOX&lt;/a&gt;&lt;br /&gt;An AJAX-powered PHP documentation search engine that enables you to search titles from all PHP documentation pages.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="padding-top: 10px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin-bottom: 18px; font: normal normal normal 2.5em/normal Helvetica, Arial, Helvetica, sans-serif; color: rgb(47, 47, 47); border-bottom-width: 3px; border-bottom-style: solid; border-bottom-color: rgb(47, 47, 47); "&gt;Security Tools&lt;/h3&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.phpcaptcha.org/" style="color: rgb(49, 81, 162); "&gt;Securimage&lt;/a&gt;&lt;br /&gt;Securimage is a free, open-source PHP CAPTCHA script for generating complex images and CAPTCHA codes to protect forms from spam and abuse.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="https://trac.anl.gov/scavenger/wiki/WikiStart" style="color: rgb(49, 81, 162); "&gt;Scavenger&lt;/a&gt;&lt;br /&gt;Scavenger is an open-source, real-time vulnerability management tool. It helps system administrators respond to vulnerability findings, track vulnerability findings and review accepted and false-positive answered vulnerabilities, without “nagging” them with old vulnerabilities.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://php-ids.org/" style="color: rgb(49, 81, 162); "&gt;PHP-IDS&lt;/a&gt;&lt;br /&gt;PHP-IDS (PHP-Intrusion Detection System) is a simple-to-use, well-structured, fast and state-of-the-art security layer for your PHP-based Web application.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://blog.evaria.com/2007/pixy-the-php-security-scanner/" style="color: rgb(49, 81, 162); "&gt;Pixy: PHP Security Scanner&lt;/a&gt;&lt;br /&gt;Pixy is a Java program that performs automatic scans of PHP 4 source code, aimed to detect XSS and SQL injection vulnerabilities. Pixy takes a PHP program as input and creates a report that lists possible vulnerable points in the program, along with additional information for understanding the vulnerability.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="padding-top: 10px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin-bottom: 18px; font: normal normal normal 2.5em/normal Helvetica, Arial, Helvetica, sans-serif; color: rgb(47, 47, 47); border-bottom-width: 3px; border-bottom-style: solid; border-bottom-color: rgb(47, 47, 47); "&gt;Image Manipulation and Graphs&lt;/h3&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.maani.us/charts4/" style="color: rgb(49, 81, 162); "&gt;PHP/SWF Charts&lt;/a&gt;&lt;br /&gt;PHP/SWF Charts is a powerful PHP tool that enables you to create attractive Web charts and graphs from dynamic data. You can use PHP scripts to generate and gather data from databases, then pass it to this tool to generate Flash (SWF) charts and graphs.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://pchart.sourceforge.net/index.php" style="color: rgb(49, 81, 162); "&gt;pChart – a chart-drawing PHP library&lt;/a&gt;&lt;br /&gt;pChart is a PHP class-oriented framework designed to create aliased charts. Most of today’s chart libraries have a cost; this one is free. Data can be retrieved from SQL queries or CSV files or can be manually provided.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://simplepie.org/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/chart.gif" alt="Chart in 50 Extremely Useful PHP Tools" width="496" height="234" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/chart.gif" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://wideimage.sourceforge.net/wiki/MainPage" style="color: rgb(49, 81, 162); "&gt;WideImage&lt;/a&gt;&lt;br /&gt;WideImage is a PHP library for dynamic image manipulation and processing for PHP 5. To be able to use the library, you should have the &lt;a href="http://us2.php.net/gd" style="color: rgb(49, 81, 162); "&gt;GD PHP extension&lt;/a&gt;installed on your Web server.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.magickwand.org/" style="color: rgb(49, 81, 162); "&gt;MagickWand For PHP&lt;/a&gt;&lt;br /&gt;MagickWand For PHP is a PHP module suite for working with the &lt;a href="http://www.imagemagick.org/script/index.php" style="color: rgb(49, 81, 162); "&gt;ImageMagick&lt;/a&gt;API, which lets you create, compose and edit bitmap images. It’s a useful tool for quickly incorporating image-editing features in your PHP applications.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="padding-top: 10px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin-bottom: 18px; font: normal normal normal 2.5em/normal Helvetica, Arial, Helvetica, sans-serif; color: rgb(47, 47, 47); border-bottom-width: 3px; border-bottom-style: solid; border-bottom-color: rgb(47, 47, 47); "&gt;PHP Code Beautifier&lt;/h3&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://pear.php.net/package/PHP_Beautifier" style="color: rgb(49, 81, 162); "&gt;PHP_Beautifier&lt;/a&gt;&lt;br /&gt;PHP Beautifier is a PEAR package for automatically formatting and “beautifying” PHP 4 and PHP 5 source code.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.waterproof.fr/products/phpCodeBeautifier/" style="color: rgb(49, 81, 162); "&gt;PHPCodeBeautifier&lt;/a&gt;&lt;br /&gt;PHPCodeBeautifier is a tool that saves you from hours of reformatting code to suit your own way of presenting it. A GUI version allows you to process files visually; a command-line version can be batched or integrated with other tools (like CVS, SubVersion, IDE, etc.); and there is also an integrated tool of PHPEdit.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://qbnz.com/highlighter/" style="color: rgb(49, 81, 162); "&gt;GeSHi – Generic Syntax Highlighter&lt;/a&gt;&lt;br /&gt;GeSHi is designed to be a simple but powerful highlighting class, with the goal of supporting a wide range of popular languages. Developers can easily add new languages for highlighting and define easily customizable output formats.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="padding-top: 10px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin-bottom: 18px; font: normal normal normal 2.5em/normal Helvetica, Arial, Helvetica, sans-serif; color: rgb(47, 47, 47); border-bottom-width: 3px; border-bottom-style: solid; border-bottom-color: rgb(47, 47, 47); "&gt;Version-Control Systems&lt;/h3&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://phing.info/trac/" style="color: rgb(49, 81, 162); "&gt;Phing&lt;/a&gt;&lt;br /&gt;Phing is a popular project version-control system for PHP. It is a useful tool for organizing and maintaining different builds of your project.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://code.google.com/p/xinc/" style="color: rgb(49, 81, 162); "&gt;xinc&lt;/a&gt;&lt;br /&gt;xinc is a &lt;a href="http://www.martinfowler.com/articles/continuousIntegration.html#EveryCommitShouldBuildTheMainlineOnAnIntegrationMachine" style="color: rgb(49, 81, 162); "&gt;continuous integration server&lt;/a&gt; version-control system written in PHP 5 (i.e. continuous builds instead of nightly builds). It works great with other systems such as &lt;a href="http://subversion.tigris.org/" style="color: rgb(49, 81, 162); "&gt;Subversion&lt;/a&gt; and &lt;a href="http://phing.info/" style="color: rgb(49, 81, 162); "&gt;Phing&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="padding-top: 10px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin-bottom: 18px; font: normal normal normal 2.5em/normal Helvetica, Arial, Helvetica, sans-serif; color: rgb(47, 47, 47); border-bottom-width: 3px; border-bottom-style: solid; border-bottom-color: rgb(47, 47, 47); "&gt;Useful Extensions, Utilities and Classes&lt;/h3&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://simplepie.org/" style="color: rgb(49, 81, 162); "&gt;SimplePie&lt;/a&gt;&lt;br /&gt;SimplePie is a PHP class that helps you work with RSS feeds. Check out the online &lt;a href="http://simplepie.org/demo/" style="color: rgb(49, 81, 162); "&gt;RSS and Atom feed reader&lt;/a&gt;, which demonstrates a simple Web application that uses SimplePie.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://simplepie.org/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/spie.jpg" alt="Spie in 50 Extremely Useful PHP Tools" width="480" height="392" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/spie.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://htmlpurifier.org/" style="color: rgb(49, 81, 162); "&gt;HTML Purifier&lt;/a&gt;&lt;br /&gt;HTML Purifier is a standards-compliant HTML filter library written in PHP. HTML Purifier not only removes all malicious code (better known as XSS) with a thoroughly audited, secure yet permissive white list, it also makes sure your documents are standards-compliant. Open source and highly customizable.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf" style="color: rgb(49, 81, 162); "&gt;TCPDF&lt;/a&gt;&lt;br /&gt;TCPDF is an open-source PHP class for generating PDF documents.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.jonasjohn.de/lab/htmlsql.htm" style="color: rgb(49, 81, 162); "&gt;htmlSQL&lt;/a&gt;&lt;br /&gt;htmlSQL is a unique tool. It is a PHP class for querying HTML values in an SQL-like syntax. Check out the &lt;a href="http://www.jonasjohn.de/lab/htmlsql/" style="color: rgb(49, 81, 162); "&gt;live demonstration of how htmlSQL works&lt;/a&gt;.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://searchlightdigital.com/the-greatest-php-snippet-file-ever-using-quicktext-for-notepad" style="color: rgb(49, 81, 162); "&gt;The Greatest PHP Snippet File Ever (Using Quicktext for Notepad++)&lt;/a&gt;&lt;br /&gt;“A little something for all coders: a snippets file that I use for PHP coding. This is designed to be used with Quicktext for Notepad++, but feel free to adapt it to whatever text editor you prefer.”&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://creole.phpdb.org/trac/" style="color: rgb(49, 81, 162); "&gt;Creole&lt;/a&gt;&lt;br /&gt;Creole is a database abstraction layer for PHP5. It abstracts PHP’s native database-specific API to create more portable code while also providing developers with a clean, fully object-oriented interface based loosely on the API for Java’s JDBC.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.codeplex.com/PHPLinq" style="color: rgb(49, 81, 162); "&gt;PHPLinq&lt;/a&gt;&lt;br /&gt;LINQ is a component that adds native data querying capabilities to PHP using a syntax reminiscent of SQL. It defines a set of query operators that can be used to query, project and filter data in arrays, enumerable classes, XML, relational databases and third-party data sources. [&lt;a href="http://phpimpact.wordpress.com/2008/05/29/30-useful-php-classes-and-components/" style="color: rgb(49, 81, 162); "&gt;via&lt;/a&gt;]&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.xm1math.net/phpmathpublisher/" style="color: rgb(49, 81, 162); "&gt;PHPMathPublisher&lt;/a&gt;&lt;br /&gt;With PhpMathPublisher, you can publish mathematical documents on the Web using only a PHP script (no LaTeX programs on the server and no MathML).&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://www.xm1math.net/phpmathpublisher/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/math.gif" alt="Math in 50 Extremely Useful PHP Tools" width="302" height="81" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/math.gif" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.phpmyadmin.net/home_page/index.php" style="color: rgb(49, 81, 162); "&gt;phpMyAdmin&lt;/a&gt;&lt;br /&gt;If you’re working with PHP, there’s a big chance you’re set up in a LAMP configuration. phpMyAdmin is Web-based tool for managing, building, importing, exporting and exploring MySQL databases.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.codeplex.com/PHPExcel" style="color: rgb(49, 81, 162); "&gt;PHPExcel&lt;/a&gt;&lt;br /&gt;PHPExcel is a set of useful PHP classes for working with Microsoft Excel files. PHPExcel allows you to read Excel files and write to them. This is useful for dynamically generating Excel spreadsheets for downloading.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://p.horm.org/er/" style="color: rgb(49, 81, 162); "&gt;Phormer&lt;/a&gt;&lt;br /&gt;Phormer is a PHP-based photo gallery management application that helps you to store, categorize and trim your photos online.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.xajaxproject.org/" style="color: rgb(49, 81, 162); "&gt;xajax PHP Class Library&lt;/a&gt;&lt;br /&gt;xajax is a PHP class for easily working with PHP AJAX applications. It gives you an easy-to-use API for quickly managing AJAX-related tasks. Check out the&lt;a href="http://www.xajaxproject.org/examples/multiply/multiply.php" style="color: rgb(49, 81, 162); "&gt;xajax Multiplier demo&lt;/a&gt; and the &lt;a href="http://www.xajaxproject.org/examples/thewall/thewall.php" style="color: rgb(49, 81, 162); "&gt;Graffiti Wall demo&lt;/a&gt; to see the xajax PHP class in action.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://phpuserclass.com/" style="color: rgb(49, 81, 162); "&gt;PHP User Class&lt;/a&gt;&lt;br /&gt;PHP User Class is an excellent script that helps you create a system for user authentication (i.e. registration, log in, account profile, etc.). It’s a useful utility to have around if you require user registration for your Web applications.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://gtk.php.net/" style="color: rgb(49, 81, 162); "&gt;PHP-GTK&lt;/a&gt;&lt;br /&gt;PHP-GTK is a PHP extension for the &lt;a href="http://www.gtk.org/" style="color: rgb(49, 81, 162); "&gt;GTK+&lt;/a&gt; toolkit (a robust toolkit for developing GUIs). It is a suite of useful OOP functions and classes to help you rapidly build cross-platform, client-side GUI’s for your application.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="padding-top: 10px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin-bottom: 18px; font: normal normal normal 2.5em/normal Helvetica, Arial, Helvetica, sans-serif; color: rgb(47, 47, 47); border-bottom-width: 3px; border-bottom-style: solid; border-bottom-color: rgb(47, 47, 47); "&gt;PHP Online Tools and Resources&lt;/h3&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://code.google.com/p/minify/" style="color: rgb(49, 81, 162); "&gt;Minify!&lt;/a&gt;&lt;br /&gt;Minify is a PHP 5 app that can combine multiple CSS or JavaScript files, compress their content (i.e. remove unnecessary white space and comments) and serve the results with HTTP encoding (via Gzip/deflate) and headers that allow optimal client-side caching. This will help you follow several of Yahoo!’s&lt;a rel="nofollow" href="http://developer.yahoo.com/performance/index.html#rules" style="color: rgb(49, 81, 162); "&gt;Rules for High Performance Websites&lt;/a&gt;.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://code.google.com/p/minify/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/minify.gif" alt="Minify in 50 Extremely Useful PHP Tools" width="550" height="221" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/minify.gif" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://en.dklab.ru/lib/HTTP_StaticMerger/" style="color: rgb(49, 81, 162); "&gt;HTTP_StaticMerger: Automatic “merging” of CSS and JavaScript files&lt;/a&gt;&lt;br /&gt;This library automatically merges sets of static files (CSS or JavaScript) and speeds up page loading (by lowering the number of HTTP queries). It is recommended to use this together with caching reverse-proxy to minimize the response time.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.phpobjectgenerator.com/" style="color: rgb(49, 81, 162); "&gt;PHP Object Generator&lt;/a&gt;&lt;br /&gt;PHP Object Generator is an open-source Web-based tool that helps you quickly construct PHP objects and leverage object-oriented programming (OOP) principles in your code.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://www.phpobjectgenerator.com/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/03_object_generator.jpg" alt="03 Object Generator in 50 Extremely Useful PHP Tools" width="407" height="481" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/03_object_generator.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.gotapi.com/php" style="color: rgb(49, 81, 162); "&gt;gotAPI/PHP&lt;/a&gt;&lt;br /&gt;gotAPI is a useful online tool for quickly looking up PHP functions and classes. Also check out the &lt;a href="http://www.gotapi.com/widgets/compiled/c1_module_php.html" style="color: rgb(49, 81, 162); "&gt;Quick PHP look-up&lt;/a&gt; widget example in case you’d like to include this awesome look-up feature on your website.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;/p&gt;&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://www.gotapi.com/php" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/04_gotapi.jpg" alt="04 Gotapi in 50 Extremely Useful PHP Tools" width="500" height="312" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/04_gotapi.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.koders.com/" style="color: rgb(49, 81, 162); "&gt;koders&lt;/a&gt;&lt;br /&gt;koders is a search engine for open-source and downloadable code. It currently has over a billion lines of code indexed and isn’t limited to just PHP.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://pecl.php.net/" style="color: rgb(49, 81, 162); "&gt;PECL&lt;/a&gt;&lt;br /&gt;PECL is a directory of all known PHP extensions and a hosting facility for downloading and developing PHP extensions.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="padding-top: 10px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin-bottom: 18px; font: normal normal normal 2.5em/normal Helvetica, Arial, Helvetica, sans-serif; color: rgb(47, 47, 47); border-bottom-width: 3px; border-bottom-style: solid; border-bottom-color: rgb(47, 47, 47); "&gt;In-Browser Tools (Firefox Add-Ons)&lt;/h3&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.firephp.org/" style="color: rgb(49, 81, 162); "&gt;FirePHP&lt;/a&gt;&lt;br /&gt;FirePHP is a Firefox extension that allows you to log data in &lt;a href="http://getfirebug.com/" style="color: rgb(49, 81, 162); "&gt;Firebug&lt;/a&gt;. It has a variety of useful logging features, such as the ability to change your error and exception handling on the fly and to log errors directly to the Firebug console. To learn more about what FirePHP can do, check out the FirePHP guide on&lt;a href="http://www.firephp.org/HQ/Use.htm" style="color: rgb(49, 81, 162); "&gt;how to use FirePHP&lt;/a&gt;. For developers using the &lt;a href="http://framework.zend.com/" style="color: rgb(49, 81, 162); "&gt;Zend PHP framework&lt;/a&gt;, you might find this guide on &lt;a href="http://www.christophdorn.com/Blog/2008/09/02/firephp-and-zend-framework-16/" style="color: rgb(49, 81, 162); "&gt;using  FirePHP with Zend&lt;/a&gt; useful.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;/p&gt;&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://www.firephp.org/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/01_firephp.jpg" alt="01 Firephp in 50 Extremely Useful PHP Tools" width="435" height="271" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/01_firephp.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://phplangeditor.mozdev.org/" style="color: rgb(49, 81, 162); "&gt;phpLangEditor&lt;/a&gt;&lt;br /&gt;phpLangEditor is a very handy Firefox add-on for translating language files and variables in your script.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;/p&gt;&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://phplangeditor.mozdev.org/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/02_phplangeditor.jpg" alt="02 Phplangeditor in 50 Extremely Useful PHP Tools" width="499" height="287" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/02_phplangeditor.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3505" style="color: rgb(49, 81, 162); "&gt;PHP Lookup&lt;/a&gt;&lt;br /&gt;PHP Lookup is a built-in search bar to help you quickly look up references to PHP syntax.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/8984" style="color: rgb(49, 81, 162); "&gt;PHP Manual Search&lt;/a&gt;&lt;br /&gt;PHP Manual Search is a handy search bar that searches &lt;a href="http://www.php.net/docs.php" style="color: rgb(49, 81, 162); "&gt;official PHP documentation&lt;/a&gt; from within your Web browser.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="padding-top: 10px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin-bottom: 18px; font: normal normal normal 2.5em/normal Helvetica, Arial, Helvetica, sans-serif; color: rgb(47, 47, 47); border-bottom-width: 3px; border-bottom-style: solid; border-bottom-color: rgb(47, 47, 47); "&gt;Frameworks for PHP&lt;/h3&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://dwoo.org/" style="color: rgb(49, 81, 162); "&gt;Dwoo&lt;/a&gt;&lt;br /&gt;Dwoo is a PHP 5 template engine positioned as an alternative to Smarty. It is (nearly) fully compatible with its templates and plug-ins, but it is being written from scratch and is aimed to go one step further with a cleaner code base.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://codeigniter.com/" style="color: rgb(49, 81, 162); "&gt;CodeIgniter&lt;/a&gt;&lt;br /&gt;CodeIgniter is a powerful, high-performance, open-source PHP framework that helps you author PHP applications rapidly. CodeIgniter is known for having a light footprint, thereby reducing your server’s work. You can get up and running with CodeIgniter in a jiffy: it has an awesome &lt;a href="http://codeigniter.com/user_guide/" style="color: rgb(49, 81, 162); "&gt;online manual&lt;/a&gt;, a couple of helpful &lt;a href="http://codeigniter.com/tutorials/" style="color: rgb(49, 81, 162); "&gt;video tutorials&lt;/a&gt; and an active &lt;a href="http://codeigniter.com/forums/" style="color: rgb(49, 81, 162); "&gt;user forum&lt;/a&gt;.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://codeigniter.com/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/codeigniter.jpg" alt="Codeigniter in 50 Extremely Useful PHP Tools" width="448" height="251" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/codeigniter.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.yiiframework.com/" style="color: rgb(49, 81, 162); "&gt;YII Framework&lt;/a&gt;&lt;br /&gt;Here is a high-performance component-based PHP framework that is supposed to be more efficient than CodeIgniter, CakePHP, ZF and Symfony. An optimal solution for developing large-scale Web applications. Yii supports MVC, DAO/ActiveRecord, I18N/L10N, caching, jQuery-based AJAX support, authentication and role-based access control, scaffolding, input validation, widgets, events, theming and Web services.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.netbeans.org/features/php/index.html" style="color: rgb(49, 81, 162); "&gt;NetBeans&lt;/a&gt;&lt;br /&gt;A dedicated PHP coding environment and complete integration with web standards. The NetBeans PHP editor is dynamically integrated with NetBeans HTML, JavaScript and CSS editing features such as syntax highlighting and the JavaScript debugger. NetBeans IDE 6.5 fully supports iterative development, so testing PHP projects follows the classic patterns familiar to web developers.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.solarphp.com/" style="color: rgb(49, 81, 162); "&gt;Solar&lt;/a&gt;&lt;br /&gt;Solar is a PHP 5 development framework for Web applications derived from the &lt;a href="http://phpsavant.com/" style="color: rgb(49, 81, 162); "&gt;Savant&lt;/a&gt; templating engine. Solar uses the MVC architectural pattern and has a host of classes and functions for securing your Web app against SQL injection, cross-website scripting (XSS) and other common exploits.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://www.solarphp.com/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/solar.jpg" alt="Solar in 50 Extremely Useful PHP Tools" width="450" height="198" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/solar.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.symfony-project.org/" style="color: rgb(49, 81, 162); "&gt;symfony&lt;/a&gt;&lt;br /&gt;symfony is an open-source PHP 5 Web application framework that is well known for its modularity and useful library of classes. To get up and running as fast as possible, you should check out the pragmatic symfony online tutorial called “&lt;a href="http://www.jobeet.org/" style="color: rgb(49, 81, 162); "&gt;The symfony 1.2 advent calendar tutorial&lt;/a&gt;,” which takes you through a step-by-step example of building your own symfony-based Web application.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://pear.php.net/" style="color: rgb(49, 81, 162); "&gt;PEAR – PHP Extension and Application Repository&lt;/a&gt;&lt;br /&gt;PEAR is a popular framework and distribution system for reusable PHP components. The purpose of the framework is to provide a structured library of open-source code for PHP users, a system for code distribution and package maintenance and a standard style for PHP code.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://propel.phpdb.org/trac/" style="color: rgb(49, 81, 162); "&gt;Propel&lt;/a&gt;&lt;br /&gt;Propel is an Object-Relational Mapping (ORM) framework for PHP 5. It allows you to access your database using a set of objects, providing a simple API for storing and retrieving data.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://wiki.limb-project.com/doku.php?id=limb3:en:packages:macro" style="color: rgb(49, 81, 162); "&gt;{{macro}} template engine&lt;/a&gt;&lt;br /&gt;{{macro}} compiles initial templates into executable PHP scripts with very clean syntax (much cleaner than WACT and Smarty) and executes them very fast. The engine doesn’t use an XML-like syntax; there are only two data scopes, global and local, and no more data sources (all data is displayed with regular PHP variables); and the system supports all WACT features such as templates wrapping and including.&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/macro.gif" alt="Macro in 50 Extremely Useful PHP Tools" width="450" height="183" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/macro.gif" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://framework.zend.com/" style="color: rgb(49, 81, 162); "&gt;Zend Framework&lt;/a&gt;&lt;br /&gt;The Zend Framework by &lt;a href="http://www.zend.com/en/company/" style="color: rgb(49, 81, 162); "&gt;Zend Technologies&lt;/a&gt; (the creators of PHP’s scripting engine) is a popular PHP Web application framework that embraces the principles of PHP OOP; it’s very extensible and has built-in utilities for working with free Web service APIs, such as those of &lt;a href="http://code.google.com/apis/gdata/" style="color: rgb(49, 81, 162); "&gt;Google&lt;/a&gt;, &lt;a href="http://flickr.com/services/" style="color: rgb(49, 81, 162); "&gt;Flickr&lt;/a&gt; and &lt;a href="http://aws.amazon.com/" style="color: rgb(49, 81, 162); "&gt;Amazon&lt;/a&gt;.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.qcodo.com/" style="color: rgb(49, 81, 162); "&gt;Qcodo&lt;/a&gt;&lt;br /&gt;Qcodo is an excellent open-source PHP Web application framework. It’s subdivided into two parts: (1) Code Generator, and (2) Qforms. Code Generator handles the creation of object code and PHP and HTML front-end code from your data model. Qforms is an intuitive system for handling and creating complex PHP-driven HTML Web forms. Check out &lt;a href="http://www.qcodo.com/demos/" style="color: rgb(49, 81, 162); "&gt;demos of applications that use Qcodo and presentational material that covers Qcodo&lt;/a&gt;.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://www.qcodo.com/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/qc.gif" alt="Qc in 50 Extremely Useful PHP Tools" width="528" height="249" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/qc.gif" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.modernmethod.com/sajax/" style="color: rgb(49, 81, 162); "&gt;SAJAX&lt;/a&gt;&lt;br /&gt;SAJAX is a JavaScript and AJAX application framework that works well with PHP (as well as several other server-side scripting languages). See SAJAX at work by going to &lt;a href="http://www.modernmethod.com/sajax/sajax-0.12/php/example_wall.php" style="color: rgb(49, 81, 162); "&gt;Wall live demonstration&lt;/a&gt;.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.smarty.net/" style="color: rgb(49, 81, 162); "&gt;Smarty&lt;/a&gt;&lt;br /&gt;Smarty is a popular PHP templating system to help you separate PHP logic and front-end code (HTML, CSS, JavaScript). It will keep your projects modular and easier to maintain.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://cakephp.org/" style="color: rgb(49, 81, 162); "&gt;CakePHP&lt;/a&gt;&lt;br /&gt;CakePHP is one of the leading PHP frameworks for creating robust, fully-featured Web applications. CakePHP has an extensive and well-organized&lt;a href="http://book.cakephp.org/" style="color: rgb(49, 81, 162); "&gt;online manual&lt;/a&gt;. If you want to learn via video tutorials, check out the &lt;a href="http://live.cakephp.org/" style="color: rgb(49, 81, 162); "&gt;CakePHP screencasts&lt;/a&gt;.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://cakephp.org/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/cake.jpg" alt="Cake in 50 Extremely Useful PHP Tools" width="417" height="180" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/cake.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://phpsavant.com/yawiki/" style="color: rgb(49, 81, 162); "&gt;Savant2&lt;/a&gt;&lt;br /&gt;Savant2 is another popular object-oriented PHP templating system. Instead of a special syntax unique to Savant2, you use PHP syntax to develop your project’s template.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.phpspec.org/" style="color: rgb(49, 81, 162); "&gt;PHPSpec&lt;/a&gt;&lt;br /&gt;PHPSpec is a simple and intuitive PHP framework. It follows the Behavior-Driven Development principle and therefore allows you to write behavior-oriented code, oftentimes in plain English.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style="padding-top: 10px; padding-right: 0px; padding-bottom: 3px; padding-left: 0px; margin-bottom: 18px; font: normal normal normal 2.5em/normal Helvetica, Arial, Helvetica, sans-serif; color: rgb(47, 47, 47); border-bottom-width: 3px; border-bottom-style: solid; border-bottom-color: rgb(47, 47, 47); "&gt;PHP IDEs and Editors&lt;/h3&gt;&lt;ul style="list-style-type: square; "&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.phpeclipse.com/" style="color: rgb(49, 81, 162); "&gt;PHPEclipse&lt;/a&gt;&lt;br /&gt;PHPEclipse is a popular PHP source-code editor that is open source and runs on all the major operating systems, such as Windows, Linux and Mac OS. It has all the features you’d expect from a PHP source-code editor, such as code-folding, syntax highlighting, hover-over tool tips and support for XDebug and DBG.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://www.phpeclipse.com/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/07_php_eclipse.jpg" alt="07 Php Eclipse in 50 Extremely Useful PHP Tools" width="445" height="424" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/07_php_eclipse.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.nusphere.com/products/phped.htm" style="color: rgb(49, 81, 162); "&gt;PhpED&lt;/a&gt;&lt;br /&gt;PhpED is an excellent IDE for Windows users. It is one of the most robust and feature-packed IDEs currently out on the market and has useful features such as a built-in &lt;a href="http://www.nusphere.com/products/php_profiler.htm" style="color: rgb(49, 81, 162); "&gt;source-code profiler&lt;/a&gt; to find bottlenecks in your PHP source code and excellent integration with third-party apps and services just as front-end code validation.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://www.nusphere.com/products/phped.htm" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/08_phped.jpg" alt="08 Phped in 50 Extremely Useful PHP Tools" width="500" height="339" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/08_phped.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.mpsoftware.dk/phpdesigner.php" style="color: rgb(49, 81, 162); "&gt;phpDesigner&lt;/a&gt;&lt;br /&gt;phpDesigner is a lightweight PHP editor/IDE that also handles front-end code and markup remarkably well. Check out the phpDesigner &lt;a href="http://www.mpsoftware.dk/tutorials.php" style="color: rgb(49, 81, 162); "&gt;online tutorials&lt;/a&gt;, as well as &lt;a href="http://www.mpsoftware.dk/phpdesigner_screencasts.php" style="color: rgb(49, 81, 162); "&gt;screencasts on phpDesigner&lt;/a&gt; to help you learn more about the IDE.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://www.mpsoftware.dk/phpdesigner.php" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/09_phpdesigner.jpg" alt="09 Phpdesigner in 50 Extremely Useful PHP Tools" width="350" height="300" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/09_phpdesigner.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.zend.com/en/products/studio/" style="color: rgb(49, 81, 162); "&gt;Zend Studio&lt;/a&gt;&lt;br /&gt;Zend Studio is an excellent PHP IDE for Eclipse. It’ll help you develop, deploy and manage Rich Internet Applications (RIAs) in an intuitive interface.&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://www.zend.com/en/products/studio/" style="color: rgb(49, 81, 162); "&gt;&lt;img src="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/10_zend_studio.jpg" alt="10 Zend Studio in 50 Extremely Useful PHP Tools" width="485" height="333" original="http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/10_zend_studio.jpg" style="margin-top: 6px; margin-right: 0px; margin-bottom: 6px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: inline; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.aptana.com/php" style="color: rgb(49, 81, 162); "&gt;Aptana PHP&lt;/a&gt;&lt;br /&gt;Aptana PHP is an open-source IDE extension/plug-in to be used in conjunction with Aptana Studio. To learn more, be sure to check out the &lt;a href="http://www.aptana.com/docs/index.php/PHP" style="color: rgb(49, 81, 162); "&gt;online documentation about Aptana PHP&lt;/a&gt;.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.eclipse.org/pdt/" style="color: rgb(49, 81, 162); "&gt;PDT&lt;/a&gt;&lt;br /&gt;PDT is a PHP Development Tools framework that’s part of the Eclipse project. PDT includes all the necessary tools for you to create PHP-based Web applications.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.jcxsoftware.com/vs.php" style="color: rgb(49, 81, 162); "&gt;VS.Php&lt;/a&gt;&lt;br /&gt;VS.Php is a PHP IDE for MS Visual Studio, making it a great IDE for recently converted ASP developers who have used MS VS to develop Web applications. To get you up and running ASAP with VS.Php, check out Jcx.Software’s &lt;a href="http://www.jcxsoftware.com/tutorials.php" style="color: rgb(49, 81, 162); "&gt;online tutorials&lt;/a&gt; as well as its &lt;a href="http://www.jcxsoftware.com/jcx/vsphp/docs" style="color: rgb(49, 81, 162); "&gt;online documentation&lt;/a&gt;.&lt;/li&gt;&lt;li style="padding-bottom: 0.45em; "&gt;&lt;a href="http://www.phpedit.com/" style="color: rgb(49, 81, 162); "&gt;PHPEdit&lt;/a&gt;&lt;br /&gt;PHPEdit is an excellent PHP editor/IDE with a ton of useful features and a very intuitive user interface. To learn more about why PHPEdit is a good IDE, read the &lt;a href="http://www.phpedit.com/Features/10-reasons-to-use-PHPEdit" style="color: rgb(49, 81, 162); "&gt;10 reasons to use PHPEdit&lt;/a&gt; and view the &lt;a href="http://www.phpedit.com/Features/Screencasts/PHPEdit-3.0-Overview" style="color: rgb(49, 81, 162); "&gt;introductory screencast about PHPEdit&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="margin-bottom: 1.15em; "&gt;Source: &lt;a href="http://www.smashingmagazine.com/2009/01/20/50-extremely-useful-php-tools/"&gt;http://www.smashingmagazine.com/2009/01/20/50-extremely-useful-php-tools/&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-bottom: 1.15em; "&gt;&lt;/p&gt;&lt;p style="margin-bottom: 1.15em; "&gt;&lt;a href="http://www.qainfotech.com"&gt;Software Testing Services&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-6731962374218320973?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/6731962374218320973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=6731962374218320973' title='55 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/6731962374218320973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/6731962374218320973'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/12/50-extremely-useful-php-tools.html' title='50 Extremely Useful PHP Tools'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>55</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-6936743844503183583</id><published>2009-11-19T20:57:00.000-08:00</published><updated>2009-11-19T21:01:23.799-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Mysql'/><title type='text'>NoSQL Ecosystem</title><content type='html'>&lt;span class="Apple-style-span"   style="  color: rgb(51, 51, 51); line-height: 18px; font-family:Arial, Helvetica, sans-serif;font-size:12px;"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; "&gt;I found a very interesting article entitled "&lt;a href="http://www.rackspacecloud.com/blog/2009/11/09/nosql-ecosystem" style="color: rgb(36, 91, 139); "&gt;NoSQL Ecosystem&lt;/a&gt;" from The Rackspace Could. It dove into the fact that we need an alternative for relational databases to handle the high volume of data these days. Some examples the article gave:&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; "&gt;&lt;i&gt;The fundamental problem is that relational databases cannot handle many modern workloads. There are three specific problem areas: scaling out to data sets like Digg’s (3 TB for green badges) or Facebook’s (50 TB for inbox search) or eBay’s (2 PB overall), per-server performance, and rigid schema design.&lt;/i&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; "&gt;It's a good read, I would like to hear your thoughts around this NoSQL Movement idea.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; "&gt;&lt;span class="Apple-style-span"   style="color: rgb(16, 55, 94);   font-family:Georgia, 'Times New Roman', Times, serif;font-size:13px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p face="inherit" size="13px" color="initial" style="  font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline- padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;By &lt;a href="http://twitter.com/spyced" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Jonathan Ellis&lt;/a&gt;, Systems Architect&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Unprecedented data volumes are driving businesses to look at alternatives to the traditional relational database technology that has served us well for &lt;a href="http://en.wikipedia.org/wiki/IBM_DB2#History" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;over thirty years&lt;/a&gt;.  Collectively, these alternatives have become known as “NoSQL databases.”&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;The fundamental problem is that relational databases cannot handle many modern workloads.  There are three specific problem areas: &lt;strong style="font-family: inherit; font-size: 13px; font-style: normal; font-weight: 700; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;&lt;a href="http://adam.blog.heroku.com/past/2009/7/6/sql_databases_dont_scale/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;scaling out&lt;/a&gt; to data sets&lt;/strong&gt; like Digg’s (&lt;a href="http://blog.digg.com/?p=966" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;3 TB for green badges&lt;/a&gt;) or Facebook’s (&lt;a href="http://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;50 TB for inbox search&lt;/a&gt;) or eBay’s (&lt;a href="http://qconsf.com/sf2009/file?path=/QConSF2007/slides/public/RandyShoup_eBayArchPrinciples.pdf" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;2 PB overall&lt;/a&gt;),&lt;strong style="font-family: inherit; font-size: 13px; font-style: normal; font-weight: 700; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;&lt;a href="http://havemacwillblog.com/2008/11/10/6-reasons-why-relational-database-will-be-superseded/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;per-server performance&lt;/a&gt;&lt;/strong&gt;, and &lt;strong style="font-family: inherit; font-size: 13px; font-style: normal; font-weight: 700; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;&lt;a href="http://www.viget.com/extend/nosql-misconceptions/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;rigid schema design&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Businesses, including The Rackspace Cloud, need to find new ways to store and scale large amounts of data. I recently wrote a &lt;a href="http://www.rackspacecloud.com/blog/2009/09/23/the-cassandra-project/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;post on  Cassandra&lt;/a&gt;, a non-relational database we have committed resources to. There are other non-relational databases being worked on and collectively, we call this the “NoSQL movement.”&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;The “NoSQL” term was actually coined by a &lt;a href="http://blog.sym-link.com/2009/10/30/nosql_whats_in_a_name.html" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;fellow Racker, Eric Evans&lt;/a&gt; when Johan Oskarsson of Last.fm wanted to organize &lt;a href="http://blog.oskarsson.nu/2009/06/nosql-debrief.html" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;an event to discuss open source distributed databases&lt;/a&gt;. The name and concept both caught on.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Some people object to the NoSQL term because it sounds like we’re defining ourselves based on what we aren’t doing rather than what we are. That’s true, to a degree, but the term is still valuable because when a relational database is the only tool you know, every problem looks like a thumb.  NoSQL is &lt;a href="http://blog.postmaster.gr/2009/11/05/what-i-like-about-the-nosql-crowd/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;making people aware that there are other options out there&lt;/a&gt;. But we’re not anti-relational-database for when that really is the best tool for the job; it’s “&lt;a href="http://twitter.com/emileifrem/statuses/5200345765" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Not Only SQL&lt;/a&gt;,” rather than “No SQL at all.”&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;One real concern with the NoSQL name is that it’s such a big tent that there is room for very different designs.  If this is not made clear when discussing the various products, it results in confusion.  So I’d like to suggest three axes along which to think about the many database options: &lt;strong style="font-family: inherit; font-size: 13px; font-style: normal; font-weight: 700; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;scalability&lt;/strong&gt;, &lt;strong style="font-family: inherit; font-size: 13px; font-style: normal; font-weight: 700; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;data and query model&lt;/strong&gt;, and &lt;strong style="font-family: inherit; font-size: 13px; font-style: normal; font-weight: 700; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;persistence design&lt;/strong&gt;.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;I have chosen 10 NoSQL databases as examples.  This is not an exhaustive list, but the concepts discussed are crucial for evaluating others as well.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;&lt;strong style="font-family: inherit; font-size: 13px; font-style: normal; font-weight: 700; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Scalability&lt;/strong&gt;&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Scaling reads is easy with replication, so when we’re talking about scaling in this context, we mean scaling writes by automatically partitioning data across multiple machines.  We call systems that do this “distributed databases.”  These include &lt;a href="http://incubator.apache.org/cassandra/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Cassandra&lt;/a&gt;, &lt;a href="http://hadoop.apache.org/hbase/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;HBase&lt;/a&gt;, &lt;a href="http://riak.basho.com/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Riak&lt;/a&gt;,&lt;a href="http://code.google.com/p/scalaris/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Scalaris&lt;/a&gt;, &lt;a href="http://project-voldemort.com/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Voldemort&lt;/a&gt;, and more.  If your write volume or data size is more than one machine can handle then these are your only options if you don’t want to manage partitioning manually.  (&lt;a href="http://www.25hoursaday.com/weblog/2009/01/16/BuildingScalableDatabasesProsAndConsOfVariousDatabaseShardingSchemes.aspx" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;You don’t.&lt;/a&gt;)&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;There are two things to look for in a distributed database: 1) support for multiple datacenters and 2) the ability to add new machines to a live cluster transparently to your applications.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;&lt;img class="alignnone" title="NoSQL_1" src="http://c0179631.cdn.cloudfiles.rackspacecloud.com/NoSQL_1_New.png" alt="" width="528" height="214" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: orange; border-right-color: orange; border-bottom-color: orange; border-left-color: orange; " /&gt;&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Non-distributed NoSQL databases include &lt;a href="http://couchdb.apache.org/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;CouchDB&lt;/a&gt;, &lt;a href="http://www.mongodb.org/display/DOCS/Home" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;MongoD&lt;/a&gt;&lt;a href="http://www.mongodb.org/display/DOCS/Home" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;B&lt;/a&gt;, &lt;a href="http://neo4j.org/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Neo4j&lt;/a&gt;, &lt;a href="http://code.google.com/p/redis/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Redis&lt;/a&gt;, and &lt;a href="http://1978th.net/tokyocabinet/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Tokyo Cabinet&lt;/a&gt;.  These can serve as persistence layers for distributed systems; MongoDB provides limited support for sharding, as does a separate Lounge project for CouchDB, and Tokyo Cabinet can be used as a Voldemort storage engine.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;&lt;strong style="font-family: inherit; font-size: 13px; font-style: normal; font-weight: 700; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Data and Query Model&lt;/strong&gt;&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;There is a lot of variety in the data models and query APIs in NoSQL databases.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;&lt;img class="alignnone" title="NoSQL_2" src="http://c0179631.cdn.cloudfiles.rackspacecloud.com/NoSQL_2_New.png" alt="" width="528" height="351" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: orange; border-right-color: orange; border-bottom-color: orange; border-left-color: orange; " /&gt;&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;&lt;em style="font-family: inherit; font-size: 13px; font-style: italic; font-weight: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); "&gt;(Respective Links: &lt;a href="http://wiki.apache.org/cassandra/API" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Thrift&lt;/a&gt;, &lt;a href="http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;map/reduce views&lt;/a&gt;, &lt;a href="http://wiki.apache.org/hadoop/Hbase/ThriftApi" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Thrift&lt;/a&gt;, &lt;a href="http://www.mongodb.org/display/DOCS/Querying" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Cursor&lt;/a&gt;,&lt;a href="http://api.neo4j.org/current/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt; Graph&lt;/a&gt;, &lt;a href="http://code.google.com/p/redis/wiki/CommandReference" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Collection&lt;/a&gt;, &lt;a href="http://riak.basho.com/nyc-nosql/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Nested hashes&lt;/a&gt;, &lt;a href="http://code.google.com/p/scalaris/wiki/APIs" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;get/put&lt;/a&gt;, &lt;a href="http://1978th.net/tokyocabinet/spex-en.html" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;get/put&lt;/a&gt;, &lt;a href="http://project-voldemort.com/javadoc/client/voldemort/client/package-summary.html" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;get/put&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Some highlights:&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;The columnfamily model shared by Cassandra and HBase is inspired by the one described by &lt;a href="http://labs.google.com/papers/bigtable-osdi06.pdf" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;Google’s Bigtable paper&lt;/a&gt;, section 2.  (Cassandra drops historical versions, and adds&lt;a href="http://arin.me/code/wtf-is-a-supercolumn-cassandra-data-model" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;supercolumns&lt;/a&gt;.) In both systems, you have rows and columns like you are used to seeing, but the rows are &lt;a href="http://en.wikipedia.org/wiki/Sparse_array" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;sparse&lt;/a&gt;: each row can have as many or as few columns as desired, and columns do not need to be defined ahead of time.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;The Key/value model is the simplest and easiest to implement but inefficient when you are only interested in querying or updating part of a value.  It’s also &lt;a href="http://spyced.blogspot.com/2009/05/why-you-wont-be-building-your-killer.html" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;difficult to implement more sophisticated structures on top of distributed key/value&lt;/a&gt;.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Document databases are essentially the next level of Key/value, allowing nested values associated with each key.  Document databases support querying those more efficiently than simply returning the entire &lt;a href="http://en.wikipedia.org/wiki/Binary_large_object" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;blob&lt;/a&gt; each time.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Neo4J has a really unique data model, storing objects and relationships as nodes and edges in a graph.  For queries that fit this model (e.g., hierarchical data) they can be&lt;a href="http://www.slideshare.net/emileifrem/neo4j-the-benefits-of-graph-databases-oscon-2009" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;1000s of times faster&lt;/a&gt; than alternatives.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Scalaris is unique in offering distributed transactions across multiple keys.  (Discussing the &lt;a href="http://queue.acm.org/detail.cfm?id=1394128" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;trade-offs&lt;/a&gt;&lt;a href="http://queue.acm.org/detail.cfm?id=1394128" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt; between consistency and availability&lt;/a&gt; is beyond the scope of this post, but that is another aspect to keep in mind when evaluating distributed systems.)&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;&lt;strong style="font-family: inherit; font-size: 13px; font-style: normal; font-weight: 700; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Persistence Design&lt;/strong&gt;&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;By persistence design I mean, “how is data stored internally?”&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;&lt;img class="alignnone" title="NoSQL_3" src="http://c0179631.cdn.cloudfiles.rackspacecloud.com/NoSQL_3.png" alt="" width="528" height="353" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: orange; border-right-color: orange; border-bottom-color: orange; border-left-color: orange; " /&gt;&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;The persistence model tells us a lot about what kind of workloads these databases will be good at.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;In-memory databases are very, very fast (Redis achieves &lt;a href="http://code.google.com/p/redis/wiki/Benchmarks" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;over 100,000 operations per second &lt;/a&gt;on a single machine), but cannot work with data sets that exceed available RAM.  Durability (retaining data even if a server crashes or loses power) can also be a problem; the amount of data you can expect to lose between flushes (copying the data to disk) is potentially large.  Scalaris, the other in-memory database on our list, tackles the durability problem with replication, but since it does not support multiple data centers your data will be still be vulnerable to things like power failures.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Memtables and SSTables buffer writes in memory (a “memtable”) after writing to an append-only commit log for durability.  When enough writes have been accepted, the memtable is sorted and written to disk all at once as a “sstable.”  This provides close to in-memory performance since no seeks are involved, while avoiding the durability problems of purely in-memory approaches.  (This is described in more detail in sections 5.3 and 5.4 of the previously-referenced Bigtable paper, as well as in &lt;a href="http://www.springerlink.com/content/rfkpd5yej9v5chrp/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;The log-structured merge-tree&lt;/a&gt;.)&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;&lt;a href="http://en.wikipedia.org/wiki/B-tree" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;B-Trees&lt;/a&gt; have been used in databases since practically the beginning of time.  They provide robust indexing support, but performance is poor on rotational disks (which are still by far the most cost-effective) because of the multiple seeks involved in reading or writing anything.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;An interesting variant is CouchDB’s &lt;a href="http://jchrisa.net/drl/nosql-oakland/btree-nosql-oak.pdf" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;append-only B-Trees&lt;/a&gt;, which avoids the overhead of seeks at the cost of limiting CouchDB to &lt;a href="http://horicky.blogspot.com/2008/10/couchdb-implementation.html" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;one write at a time&lt;/a&gt;.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;&lt;strong style="font-family: inherit; font-size: 13px; font-style: normal; font-weight: 700; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;The NoSQL movement has exploded in 2009 as an increasing number of businesses wrestle with large data volumes.  The Rackspace Cloud is pleased to have played an early role in the NoSQL movement, and continues to commit resources to Cassandra and support events like &lt;a href="http://nosqleast.com/2009/" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;NoSQL East&lt;/a&gt;.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;NoSQL conference announcements and related discussion can be found on the G&lt;a href="http://groups.google.com/group/nosql-discussion?pli=1" target="_blank" style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; color: rgb(16, 55, 94); text-decoration: underline; "&gt;oogle discussion group&lt;/a&gt;.&lt;/p&gt;&lt;p style="font-family: inherit; font-size: 13px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 18px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Source: &lt;span class="Apple-style-span"&gt;&lt;a href="http://www.rackspacecloud.com/blog/2009/11/09/nosql-ecosystem/"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;http://www.rackspacecloud.com/blog/2009/11/09/nosql-ecosystem/&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-6936743844503183583?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/6936743844503183583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=6936743844503183583' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/6936743844503183583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/6936743844503183583'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/11/nosql-ecosystem.html' title='NoSQL Ecosystem'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-2539942863963699600</id><published>2009-11-04T18:27:00.000-08:00</published><updated>2009-11-04T18:29:04.085-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP techniques'/><title type='text'>MySQL University: GRAPH computation engine for MySQL</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: rgb(51, 51, 51); line-height: 18px; "&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; "&gt;One of the things relational databases are not very good at is handling structures like trees (for example structure of categories in forum) or graphs (for example network of friends on social networking site).&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; "&gt;GRAPH is a MySQL plugin which promises to handle such data in an easy and efficient manner using normal SQL syntax. I don't know any details, as MySQL University announcement was the first time I ever heard of this. Nevertheless the topic seems interesting, so if you would like to know more, &lt;a href="http://forge.mysql.com/wiki/GRAPH_computation_engine_for_MySQL" style="color: rgb(36, 91, 139); "&gt;attend MySQL Uni session&lt;/a&gt; this Thursday, November 5th at 10:00 GMT.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; "&gt;As usual session recording in flash format will also be available at a later time.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; "&gt;More information about GRAPH is available at &lt;a href="http://openquery.com/products/graph-engine" style="color: rgb(36, 91, 139); "&gt;OpenQuery's site&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; "&gt;For more information about MySQL University, go to my &lt;a href="http://www.phpfreaks.com/blog/mysql-university" style="color: rgb(36, 91, 139); "&gt;introductory post&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; "&gt;Source: &lt;a href="http://www.phpfreaks.com/blog/mysql-university-graph-computation-engine-for-mysql"&gt;http://www.phpfreaks.com/blog/mysql-university-graph-computation-engine-for-mysql&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-2539942863963699600?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/2539942863963699600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=2539942863963699600' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2539942863963699600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2539942863963699600'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/11/mysql-university-graph-computation.html' title='MySQL University: GRAPH computation engine for MySQL'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-7087050843855920365</id><published>2009-09-07T20:10:00.000-07:00</published><updated>2009-09-07T20:15:55.682-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><title type='text'>11 Popular Open Source Enterprise Software</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;font-family:'Times New Roman';font-size:16px;"  &gt;&lt;span class="Apple-style-span" style="color: rgb(80, 80, 80); line-height: 18px;font-family:Arial;font-size:13px;"  &gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;A&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://mediaproducts.gartner.com/reprints/microsoft/164057.html" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;report&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;by Gartner predicts that the open source software (OSS) model will be adopted by at least 90% cloud-computing providers by the year 2013. As incredible as it sounds, the OSS model is an emerging key component for organizations that are looking for cost effective, reliable solutions for their operations.&lt;/p&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;Each year, InfoWorld reviews hundreds of open source organization as part of its ‘Best of Open Source’ /&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://www.infoworld.com/d/open-source/best-open-source-enterprise-software-740&amp;amp;current=1&amp;amp;last=12#slideshowTop" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;BOSSIE Awards&lt;/a&gt;. We’ve compiled a list of open source applications that made their way to this year’s BOSSIE Awards winners:&lt;/p&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;/strong&gt;&lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;/strong&gt;&lt;div id="attachment_490" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 160px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;a href="http://www.compiere.com/" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;img class="size-full wp-image-490" title="compiere" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/09/compiere.jpg" alt="Compiere" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="75" width="150" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;Compiere&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Compiere&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;a href="http://www.compiere.com/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;Compiere&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;is a commercial open source Enterprise Resource Planning (ERP) and Customer Relationship Management (CRM) application. It allows you to automate all your financial, distribution, sales and service processes. It uses a model-driven application platform that provides customers with adaptability, rapid deployment, and low cost of ownership.&lt;/p&gt;&lt;div id="attachment_491" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 160px;"&gt;&lt;a href="http://www.dimdim.com/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;&lt;img class="size-full wp-image-491" title="dimdim-oss" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/09/dimdim-oss.jpg" alt="DimDim" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="75" width="150" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;DimDim&lt;/p&gt;&lt;/div&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;DimDim&lt;/strong&gt;&lt;/h2&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;a href="http://www.dimdim.com/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;Dimdim&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;is a simple to use browser-based web conferencing service. You can show presentations, collaborate via whiteboards, chat, talk and broadcast via webcam with absolutely no download required to host, attend or even record meetings. It is similar to solutions like&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://www.webex.com/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;WebEx&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;and&lt;a href="https://www2.gotomeeting.com/?Portal=www.gotomeeting.com" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;GotoMeeting&lt;/a&gt;. The free version of DimDim allows you to host event with up to 20 people, but if you’d like more attendees, you can upgrade for their pro plans.&lt;/p&gt;&lt;div id="attachment_492" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 160px;"&gt;&lt;a href="http://www.hotscripts.com/listing/drupal/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;&lt;img class="size-full wp-image-492" title="drupal-oss" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/09/drupal-oss.jpg" alt="Drupal" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="75" width="150" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;Drupal&lt;/p&gt;&lt;/div&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Drupal&lt;/strong&gt;&lt;/h2&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;a href="http://drupal.org/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;Drupal&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;is an open source content management platform that supports a variety of sites ranging from blogs to large community driven web portals. Some of its built-in modules include user administration, publishing workflow, discussion capabilities, news aggregation, and metadata functionalities using controlled vocabularies and XML publishing for content sharing purposes.&lt;/p&gt;&lt;div id="attachment_493" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 160px;"&gt;&lt;a href="http://www.intalio.com/products/bpm/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;&lt;img class="size-full wp-image-493" title="intalio-oss" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/09/intalio-oss.jpg" alt="Intalio BPM" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="75" width="150" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;Intalio BPM&lt;/p&gt;&lt;/div&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Intalio BPM&lt;/strong&gt;&lt;/h2&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;a href="http://www.intalio.com/products/bpm/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;&lt;br /&gt;Intalio&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;is a Business Process Management (BPM) solution that provides all the components required for the design, deployment and management of most complex business process. It is based on the Eclipse standard and Apache engine. Intalio PM is available as either a downloadable software or as Software as a Service.&lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;/strong&gt;&lt;div id="attachment_495" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 160px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;a href="http://jasperforge.org/" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;img class="size-full wp-image-495" title="jasper-oss" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/09/jasper-oss.jpg" alt="JasperSoft BI Suite" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="75" width="150" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;JasperSoft BI Suite&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;JasperSoft BI Suite&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;a href="http://jasperforge.org/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;JasperSoft&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;Suite is a Business Intelligence (BI) application that provides integrated reporting and analysis and data integration. It is  is comprised of an interactive reporting server, graphical and ad hoc report design interfaces, OLAP analysis, an ETL tool for data integration, and a Java reporting library for use with either stand-alone or embedded business intelligence applications..&lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;/strong&gt;&lt;div id="attachment_496" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 160px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;a href="http://www.magentocommerce.com/" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;img class="size-full wp-image-496" title="magento-oss" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/09/magento-oss.jpg" alt="Magento" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="75" width="150" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;Magento&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Magento&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;a href="http://www.magentocommerce.com/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;Magento&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;is an open source PHP and MySql ecommerce script bundle with tons of features like catalog management, marketing and promotion tools, analytics and reporting. The Magento Community Edition is available for free and best suited for small businesses looking for an ecommerce solution. Its enterprise edition is more geared towards corporations looking for a production-ready solution with SLA agreements.&lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;/strong&gt;&lt;div id="attachment_497" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 160px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;a href="http://www.openbravo.com/" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;img class="size-full wp-image-497" title="opebravo-oss" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/09/opebravo-oss.jpg" alt="OpenBravo ERP" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="75" width="150" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;OpenBravo ERP&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;OpenBravo ERP&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;a href="http://www.openbravo.com/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;OpenBravo&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;is an Enterprise Resource Planning (ERP) web-based open source solution. It has several functionalities tailored to manage accounting, sales, CRM, inventory and projects for any organizations. It is scalable and can be easily deployed on premise or on the cloud. It supports an add-on system whereby you can use 3&lt;sup style="margin: 0px; padding: 0px;"&gt;rd-party&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/sup&gt;modules or write your own to add new features adapted to your needs.&lt;/p&gt;&lt;div id="attachment_498" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 160px;"&gt;&lt;a href="http://www.pentaho.com/index.php" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;&lt;img class="size-full wp-image-498" title="pentaho-oss" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/09/pentaho-oss.jpg" alt="Pentaho BI Suite " style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="75" width="150" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;Pentaho BI Suite&lt;/p&gt;&lt;/div&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Pentaho BI Suite&lt;/strong&gt;&lt;/h2&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;a href="http://www.pentaho.com/index.php" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;Pentaho&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;is an open source data warehousing and Business Intelligence (BI) suite available as downloadable or as SaaS. It supports query and reporting, interactive analysis, dashboards, data integration/ETL, data mining. Its dashboards feature allow you to get immediate visibility into metrics while the data mining feature can help you discover hidden patterns and indicators of future performance for your business.&lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;/strong&gt;&lt;div id="attachment_500" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 160px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;a href="http://piwik.org/" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;img class="size-full wp-image-500" title="piwiki-oss" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/09/piwiki-oss.jpg" alt="Piwik" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="75" width="150" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;Piwik&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Piwik&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;a href="http://piwik.org/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;Piwik&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;in a nutshell is a free open source alternative to Google Analytics. It is a PHP/MySQL based web analytics script that can be downloaded and installed on your own web server. Similar to Google Analytics, all you need to add to your website is a copy-and-paste JavaScript tracking code. It will then provide you with detailed reports about your website’s visitors, the search engines and keywords they used, etc. Learn more in this&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://www.blogger.com/piwik-web-analytics-script/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;post&lt;/a&gt;.&lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;/strong&gt;&lt;div id="attachment_501" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 160px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;a href="https://www.sugarcrm.com/crm/" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;img class="size-full wp-image-501" title="sugarcrm-oss" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/09/sugarcrm-oss.jpg" alt="SugarCRM " style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="75" width="150" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;SugarCRM&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;SugarCRM&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;a href="https://www.sugarcrm.com/crm/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;SugarCRM&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;is a Customer Relationship Management script that has been constantly evolving since the past few years. It is bundled with a set of tools for salesforce automation (leads, pipeline forecasting, and account management), e-marketing, and online lead capture, as well as customer support and automated service handling.&lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;/strong&gt;&lt;div id="attachment_502" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 160px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;&lt;a href="http://www.hotscripts.com/listing/wordpress/" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;img class="size-full wp-image-502" title="wordpress-oss" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/09/wordpress-oss.jpg" alt="WordPress" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="75" width="150" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;WordPress&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;WordPress&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;a href="http://www.wordpress.org/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;WordPress&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;is a state-of-the-art semantic personal publishing platform with a focus on aesthetics, web standards, and usability. It supports multiple users, categories, comments, bookmarklets, RSS syndication, several APIs, weblogs.com ping, and more!&lt;/p&gt;&lt;br /&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;Source: &lt;a href="http://www.hotscripts.com/blog/11-popular-open-source-enterprise-software/"&gt;http://www.hotscripts.com/blog/11-popular-open-source-enterprise-software/&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-7087050843855920365?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/7087050843855920365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=7087050843855920365' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/7087050843855920365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/7087050843855920365'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/09/11-popular-open-source-enterprise.html' title='11 Popular Open Source Enterprise Software'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-6302919134741085338</id><published>2009-09-06T20:20:00.000-07:00</published><updated>2009-09-06T20:36:20.727-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='rss builder'/><title type='text'>How to Create an RSS Feed</title><content type='html'>RSS is a method of distributing links to content in your web site that you'd like others to use. In other words, it's a mechanism to "syndicate" your content.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Steps&lt;/span&gt;&lt;br /&gt;What is RSS?&lt;br /&gt;How does RSS syndication work? Say you publish a new web page about a particular topic. You want others interested in that topic to know about it. By listing the page as an "item" in your RSS file, you can have the page appear in front of those who read information using RSS readers or "news aggregators". RSS also allows people to easily add links to your content within their own web pages. Bloggers are a huge core audience that especially does this.&lt;br /&gt;What does RSS stand for? There's a can of worms. RSS as introduced by Netscape in 1999 then later abandoned in 2001 stood for "Rich Site Summary." Another version of RSS pioneered by UserLand Software stands for "Really Simple Syndication." In yet another version, RSS stands for "RDF Site Summary."&lt;br /&gt;History buffs might be interested that there's been some rivalry over who invented RSS. This is why we have both different names and indeed different "flavors" or versions of RSS.&lt;br /&gt;At the heart of an RSS file are "items." No matter what version of RSS you settle on, your file will have to include at least one item. Items are generally web pages that you'd like others to link to. For example, let's say you just created a web page reviewing a new cell phone that's being released. Information about that page would form an item.&lt;br /&gt;To enter your item into the RSS file, you'll need three bits of information:&lt;br /&gt;&lt;br /&gt;Title&lt;br /&gt;Description&lt;br /&gt;Link&lt;br /&gt;&lt;br /&gt;The title and description of your item need not match exactly the HTML title tag of the web page that the item refers to, nor the meta description tag, assuming you use these. You can write any title and description that you think will describe the page. However, using your page's title and meta description tag certainly makes it easy to copy and paste to build your RSS feed.&lt;br /&gt;&lt;br /&gt;In the case of our example page, let's say this is the information we settle on to define it as an item:&lt;br /&gt;&lt;br /&gt;Recent Changes - WikiHow&lt;br /&gt;Patrol all the edits that people have recently made to wikiHow!&lt;br /&gt;http://www.wikihow.com/Special:Recentchanges&lt;br /&gt;&lt;br /&gt;Now we have to surround that information with xml tags. These are similar to HTML tags, with the exception that unlike with HTML, there's no set definition of xml tags. Anyone can make up a particular xml tag. Whether it is useful depends on the program that reads the resulting xml file. In the case of RSS feeds, they have their own unique set of XML tags that are defined. Use these correctly, and then anything that reads RSS will understand your information.&lt;br /&gt;&lt;br /&gt;Did that make your head spin? If so, don't reread - just carry on to see how simple it is. First, open a text editor like Notepad. We're going to build our RSS file using it.&lt;br /&gt;&lt;br /&gt;For your title, you need to start it with the title tag, then follow this with the text of the title, then end with the title tag.&lt;br /&gt;&lt;br /&gt;For your description, you do the same, starting out with the opening description tag, then following with the actual description, then closing with the description tag.&lt;br /&gt;&lt;br /&gt;Next, we add the link information, beginning with link, following with the actual hyperlink, then closing with . &lt;br /&gt;Now there's one more thing we need to do. We actually have to define all this information as forming a particular "item," which we do using a special item tag.&lt;br /&gt;&lt;br /&gt;You place the opening item tag, "item" at the top or start of all the information we've listed. You then place the closing item tag, "item", at the bottom or "end" of the item information. &lt;br /&gt;&lt;br /&gt;Congratulations! You've now made your first item. There's a bit more to do to finish our RSS file. First, what if we have other items we want to syndicate? Then we simply add more item elements, just as we did above. You can have up to 15 items. New items tend to be inserted at the top, with old items removed from the bottom, to make room for new stuff.&lt;br /&gt;With our example, let's see how things look if we add two more items:&lt;br /&gt;&lt;br /&gt;Now, how does something reading our RSS file know that the information above is for our "channel" when it looks just like item information? Simple. As long as we don't surround this information with an opening and closing item tags, it won't be seen as item information but rather as channel information.&lt;br /&gt;There are a few last things we need to do. First, we need to add a tag at the very top of the file saying that this is written according to the XML 1.0 specifications. Right under this, we also have to say what RSS version we are using.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So far, everything we've done is compatible with UserLand's popular RSS 0.91 version. However, it also matches UserLand's latest RSS 2.0 version, as well, so we'll define the file as meeting that specification. This will allow us to add other neat features in the future, if we want.&lt;br /&gt;&lt;br /&gt;Finally, after the RSS tag, we need to add an opening "channel" tag. That gives us this at the top of the file:&lt;br /&gt;&lt;br /&gt;&lt;rss version="2.0"&gt;&lt;br /&gt;&lt;channel&gt;&lt;br /&gt;At the bottom of the file, after all the items we want to syndicate, we have to insert a closing channel and RSS tag, in that order. Those look like this:&lt;br /&gt;&lt;/channel&gt;&lt;br /&gt;&lt;/rss&gt;&lt;br /&gt;This means our complete file looks like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Saving The File - Now that we're done adding to the file, we need to save it. But what name shall we give it? As for the first part, that really can be whatever you like. For our example, let's say we just call it "feed.xml".&lt;br /&gt;&lt;br /&gt;Now that our file is saved, we can place it anywhere we want on our web server. Let's say we put it in the root or home directory. Then the address to our RSS file would be:&lt;br /&gt;&lt;br /&gt;http://www.wikihow.com/feed.xml&lt;br /&gt;Adding the Feed to Your Page - There is one more thing left to do. To make it obvious that you have a feed on your page you should declare it in the head tag on your web page. To do this add the following code:&lt;br /&gt;&lt;link rel="alternate" type="application/rss+xml" title="WikiHow Feeds" href="http://www.wikihow.com/feed.xml"&gt;&lt;br /&gt;If everything worked, you should see the little orange RSS icon in your browser's address bar. (Firefox,Opera)&lt;br /&gt;&lt;br /&gt;Tips&lt;br /&gt;Getting started will take time and isn't that easy, but after you know the basics it gets easier.&lt;br /&gt;For more technical details on RSS, read the RSS 2.0 specification&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-6302919134741085338?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/6302919134741085338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=6302919134741085338' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/6302919134741085338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/6302919134741085338'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/09/how-to-create-rss-feed.html' title='How to Create an RSS Feed'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-959789256831284742</id><published>2009-08-24T21:44:00.000-07:00</published><updated>2009-08-24T21:47:41.592-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='popularity'/><category scheme='http://www.blogger.com/atom/ns#' term='programming language'/><title type='text'>Determining Programming Language Popularity</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: 'Times New Roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(80, 80, 80); font-family: Arial; font-size: 13px; line-height: 18px;"&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;One common question that members ask us is which language is most popular? While there is no definitive answer to this question, it all depends on which statistics and rankings you are looking at and how you interpret the results. There are several organizations that publishes regular reports or tools that provides trends to measure popularity of a programming language. In this post, we take a look at some of these reports and tools along with the metrics they use.&lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" target="_blank" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;TIOBE – Popularity by Community Index&lt;/a&gt;&lt;/h2&gt;&lt;div id="attachment_432" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 110px;"&gt;&lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;&lt;img class="size-full wp-image-432" title="TIOBE" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/08/tiobe3.jpg" alt="TIOBE" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="62" width="100" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;TIOBE&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;The TIOBE Programming Community index  gives a monthly indication of the popularity of programming language based several factors - the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, Wikipedia and YouTube are used also to calculate the ratings.&lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;a href="http://langpop.com/" target="_blank" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;LangPop - Popularity by Search and Discussions&lt;/a&gt;&lt;/h2&gt;&lt;div id="attachment_433" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 110px;"&gt;&lt;a href="http://langpop.com/" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;&lt;img class="size-full wp-image-433" title="LangPop" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/08/langpop4.jpg" alt="LangPop" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="62" width="100" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;LangPop&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;LangPop uses some metrics similar to TIOBE, but also takes into consideration some other channels like Craiglist, Amazon’s books index, del.icio.us and open source project hosting site like Google Code and Freshmeat. It also aggregates data based on what people are talking about on IRC, Reddit and Slahsot.&lt;/p&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt; &lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;a href="https://www.ohloh.net/languages/compare" target="_blank" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;Ohloh - Popularity by Commits&lt;/a&gt;&lt;/h2&gt;&lt;div id="attachment_434" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 110px;"&gt;&lt;a href="https://www.ohloh.net/languages/compare" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;&lt;img class="size-full wp-image-434" title="Ohloh" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/08/ohloh1.jpg" alt="Ohloh" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="62" width="100" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;Ohloh&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;Ohloh is a project hosting site for open source projects and has a strong community of developers. Their monthly language comparison is calculated based on the number of commits made by source code developers for that particular month, A commit is a change done to the code and Ohloh requires at least one line change for that language.&lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;a href="http://www.blackducksoftware.com/news/releases/2009-08-12" target="_blank" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;BlackDuck - Popularity by Lines of Code&lt;/a&gt;&lt;/h2&gt;&lt;div id="attachment_435" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 110px;"&gt;&lt;a href="http://www.blackducksoftware.com/news/releases/2009-08-12" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;&lt;img class="size-full wp-image-435" title="BlackDuck" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/08/blackduck1.jpg" alt="BlackDuck" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="62" width="100" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;BlackDuck&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;BlackDuck publishes regular analysis of language usage used in open source projects. It determines this by counting lines of source code across all open source projects. Black Duck Software gathers information by continuously spidering the Internet collecting open source code and binary files into its database from over 200,000 projects.&lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;a href="http://www.google.com/trends?q=php%2Casp.net%2Casp%2Cajax%2Ccfml%2Cjsp%2Cruby+on+rails&amp;amp;ctab=0&amp;amp;geo=all&amp;amp;date=all&amp;amp;sort=0" target="_blank" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;Google Trends - Popularity by Search Trends&lt;/a&gt;&lt;/h2&gt;&lt;div id="attachment_436" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 110px;"&gt;&lt;a href="http://www.google.com/trends?q=php%2Casp.net%2Casp%2Cajax%2Ccfml%2Cjsp%2Cruby+on+rails&amp;amp;ctab=0&amp;amp;geo=all&amp;amp;date=all&amp;amp;sort=0" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;&lt;img class="size-full wp-image-436" title="Google Trends " src="http://www.hotscripts.com/blog/wp-content/uploads/2009/08/google-trends1.jpg" alt="Google Trends " style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="62" width="100" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;Google Trends&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;Google Trends is a powerful tool to see how often a particular search-term is used relative to the total search-volume. The best thing about Google Trends is that results are in real time and you can group any programming language of your choice to be included in the result.&lt;/p&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt; &lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;a href="http://www.indeed.com/jobtrends?q=php%2Casp.net%2Casp%2Cajax%2Ccfml%2Cjsp%2Cruby+on+rails&amp;amp;l=&amp;amp;relative=1" target="_blank" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;Indeed - Popularity by Job Trends&lt;/a&gt;&lt;/h2&gt;&lt;div id="attachment_437" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 110px;"&gt;&lt;a href="http://www.indeed.com/jobtrends?q=php%2Casp.net%2Casp%2Cajax%2Ccfml%2Cjsp%2Cruby+on+rails&amp;amp;l=&amp;amp;relative=1" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;&lt;img class="size-full wp-image-437" title="Indeed " src="http://www.hotscripts.com/blog/wp-content/uploads/2009/08/indeeed1.jpg" alt="Indeed " style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="62" width="100" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;Indeed&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;Indeed is a search engine that aggregates job listings from the web. It provides a trend tool to compare jobs with particular term. You can use it to search job trends based on the different programming language.&lt;/p&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt; &lt;/p&gt;&lt;h2 style="margin: 20px 0px 6px; padding: 0px; font-weight: normal; font-size: 21px; color: rgb(21, 122, 67); background-image: none; font-family: Times; text-decoration: none; font-style: normal;"&gt;&lt;a href="http://blogs.oreilly.com/cgi-bin/mt/mt-search.cgi?blog_id=57&amp;amp;tag=market%20analysis&amp;amp;limit=20&amp;amp;IncludeBlogs=57" target="_blank" style="margin: 0px; padding: 0px; color: rgb(56, 56, 56); background-image: none; font-size: 21px; font-weight: normal; font-family: Times; text-decoration: none; font-style: normal;"&gt;O’Reillly - Popularity by Book Sales&lt;/a&gt;&lt;/h2&gt;&lt;div id="attachment_438" class="wp-caption alignright" style="border: 1px solid rgb(221, 221, 221); margin: 10px; padding: 4px 0px 0px; float: right; text-align: center; background-color: rgb(243, 243, 243); width: 110px;"&gt;&lt;a href="http://blogs.oreilly.com/cgi-bin/mt/mt-search.cgi?blog_id=57&amp;amp;tag=market%20analysis&amp;amp;limit=20&amp;amp;IncludeBlogs=57" style="margin: 0px; padding: 0px; color: rgb(132, 0, 0);"&gt;&lt;img class="size-full wp-image-438" title="O'Reillly" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/08/oreilly1.jpg" alt="O'Reillly" style="border-style: none; border-width: 0px; margin: 0px; padding: 0px;" height="62" width="100" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text" style="margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;"&gt;O'Reillly&lt;/p&gt;&lt;/div&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;O’Reilly publishes regular posts on their blog about programming lanaguage trends based on computer book sales. These statistics rough ballparks and are based on O’Reilly published books only but they still provides a relative demand of each language.&lt;/p&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;a href="http://www.hotscripts.com/blog/determining-programming-language-popularity/"&gt;http://www.hotscripts.com/blog/determining-programming-language-popularity/&lt;/a&gt;&lt;/p&gt;&lt;p style="margin: 0px 0px 15px; padding: 0px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-959789256831284742?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/959789256831284742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=959789256831284742' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/959789256831284742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/959789256831284742'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/08/determining-programming-language.html' title='Determining Programming Language Popularity'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-1924286504138331428</id><published>2009-07-31T18:43:00.000-07:00</published><updated>2009-07-31T18:44:42.099-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='application'/><category scheme='http://www.blogger.com/atom/ns#' term='web developers'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>6 iPhone Apps for Web Developers</title><content type='html'>&lt;p&gt;Perhaps the biggest reason for the staggering success of the iPhone is its thousands of applications that are available. iPhone apps ranges from games, productivity tools, entertainment programs but there are also apps that can be a great addition to a web developer’s toolbox. If you have an iPhone, here are some apps that you’ll find useful. Please note that the URLs for the applications below will automatically load the Apple Store within iTune.&lt;/p&gt; &lt;h2&gt;Developer Notes&lt;/h2&gt; &lt;p&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=323249166&amp;amp;mt=8"&gt;&lt;img class="alignright size-full wp-image-325" style="margin-left: 5px; margin-right: 5px;" title="developernotes" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/07/developernotes.jpg" alt="developernotes" height="75" width="75" /&gt;Developer Notes&lt;/a&gt; is an application built exclusively for software and web development community. It allows you to organize development tasks with ease. Each tasks can be assigned to a specific type like todo, fixme, idea with different tracking status like new, pending, on-hold or done. You can also prioritize tasks and set their due dates or move tasks between different versions. DeveloperNotes also comes with built-in email features that allows you to email tasks to yourself or your lead developer.&lt;/p&gt; &lt;h2&gt;iCheatSheets&lt;/h2&gt; &lt;p&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=319453066&amp;amp;mt=8"&gt;&lt;img class="alignright size-full wp-image-326" style="margin-left: 5px; margin-right: 5px;" title="icheatsheet" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/07/icheatsheet.jpg" alt="icheatsheet" height="75" width="75" /&gt;&lt;/a&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=319453066&amp;amp;mt=8" target="_blank"&gt;CheatSheets&lt;/a&gt; is for every seasoned developers that needs a quick refresher course. It is a free reference application that gives web developers quick reference to a variety of useful functions right at their finger tips. It has quick function and command references for most popular web technologies like ASP, PHP, HTML and also includes reference for topics like Mod Rewrite and Regular Expressions.&lt;/p&gt; &lt;h2&gt;FTP on The Go&lt;/h2&gt; &lt;p&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewArtist?id=286479939"&gt;&lt;img class="alignright size-full wp-image-327" style="margin-left: 5px; margin-right: 5px;" title="ftponthego" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/07/ftponthego.jpg" alt="ftponthego" height="76" width="75" /&gt;&lt;/a&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewArtist?id=286479939" target="_blank"&gt;FTP on The Go&lt;/a&gt; is an FTP client for the iPhone with all features of a desktop FTP client. It allows you to fix your web site, and view files on your FTP server from anywhere. Other than the default FTP features like upload and download, it also support editing text file with its built-in editor. Its Find/Replace and Go To Line Number enables you to fix your codes faster. FTP on The Go can also store your files on your iPhone and you can view,edit or email any of the saved files.&lt;/p&gt; &lt;h2&gt;DatabaseViewer&lt;/h2&gt; &lt;p&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=312061860&amp;amp;mt=8"&gt;&lt;img class="alignright size-full wp-image-328" style="margin-left: 5px; margin-right: 5px;" title="dbviewer" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/07/dbviewer.jpg" alt="dbviewer" height="75" width="75" /&gt;&lt;/a&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=312061860&amp;amp;mt=8" target="_blank"&gt;DatabaseViewer&lt;/a&gt; is a commercial application with its price tagged at $19.99 - a little expensive for an iPhone application, in my opinion. It will allow you to view any database on your iPhone and you can synchronize data wirelessly. It support SQL select queries, filters and you can sort the fields. DatabaseViewer currently supports most of the popular databases like MS Access, SQL Server, MySQL, PostegreSQL and any other ODBC compliant database.&lt;/p&gt; &lt;h2&gt;WorkTimer&lt;/h2&gt; &lt;p&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293280857&amp;amp;mt=8"&gt;&lt;img class="alignright size-full wp-image-329" style="margin-left: 5px; margin-right: 5px;" title="worktimer" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/07/worktimer.jpg" alt="worktimer" height="74" width="75" /&gt;&lt;/a&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293280857&amp;amp;mt=8" target="_blank"&gt;WorkTimer&lt;/a&gt; is a time management application that allows you to track how long you’ve spent on various project so that you can eventually bill your client accordingly. This is pretty useful for web developers that works both from office and home and need a convenient way to track their hours. At the end of each month, you can email yourself (or anyone else) a monthly report of all the hours worked in different projects.&lt;/p&gt; &lt;h2&gt;Source Viewer&lt;/h2&gt; &lt;p&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=308126298&amp;amp;mt=8"&gt;&lt;img class="alignright size-full wp-image-330" style="margin-left: 5px; margin-right: 5px;" title="soureviewer" src="http://www.hotscripts.com/blog/wp-content/uploads/2009/07/soureviewer.jpg" alt="soureviewer" height="75" width="75" /&gt;&lt;/a&gt;&lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=308126298&amp;amp;mt=8" target="_blank"&gt;Source Viewer&lt;/a&gt; is a handy application that enables you to view a web site’s HTML source code - just as you would with the ‘view source’ option in your web browser. The source code of the web site is presented in an easy to read format with code highlighting feature. The best thing about this application is that it also collects all images and links (CSS links, JS links) from the source code and these can then be viewed separately.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Source : http://www.hotscripts.com/blog/iphone-apps-for-web-developers/&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-1924286504138331428?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/1924286504138331428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=1924286504138331428' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/1924286504138331428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/1924286504138331428'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/07/6-iphone-apps-for-web-developers.html' title='6 iPhone Apps for Web Developers'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-5592118370755995143</id><published>2009-07-03T21:39:00.000-07:00</published><updated>2009-07-03T21:43:00.845-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP techniques'/><title type='text'>10 Ways to Avoid Writing Crappy Code</title><content type='html'>&lt;span style="font-weight:bold;"&gt;1. Learn OOP and common OO principles&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is an absolute requirement. If you are still coding procedural, this is no small task. What are you waiting for?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Employ Test Driven Design&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Code that is buggy or simply doesn't work at all can safely be considered "crappy code". TDD gives you the confidence that your code works, and the side effects force better and more flexible software design.&lt;br /&gt;If you are not familiar with TDD yet, and this post has prompted you to try it, be warned: at first it will seem very cumbersome. What definitely will help is this piece of advice, which is at the core of Test Driven Design: don't write tests afterwards, write them first. Without going to much into the details, and somewhat simplified the general mantra is this: write a test first, make it work by writing the application code, refactor, write another test, make it work, refactor, etc etc. It's a cycle. The application code follows the test code, not the other way around.&lt;br /&gt;I recommend PHPUnit. It has the most features and the largest adoption.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Refactor, refactor, refactor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Refactoring means "to improve the design of existing code". Making changes to code results in an increasing loss of quality of that code, this is known as "software decay". To battle this phenomenon, you have to constantly evaluate if the code hasn't lost it's quality, and look for opportunities to improve the design beyond it's original. But there's a catch. And it isn't the time that refactoring takes, if you do it properly you'll save those hours by having avoided software decay. It is the risk of change.&lt;br /&gt;I can understand if you are hesitant to change code that works (at least for now). But this is where number two comes back into play: as long as you've written the right tests, you can make sure your changes don't break anything.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Simpler is better&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Your mind should constantly be waging a battle between simplicity and flexibility. Avoid unnecessary complication.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;4. Use Design Patterns&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Design Patterns describe real world software design problem and solutions. Make sure you are familiar with them, buy some books. If you encounter a design problem that seems familiar take your trusty GoF and PoEAA from the shelf and look it up.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;5. Don't Use Design Patterns&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once you are familiar with Design Patterns, or even just with the existence of them, it can be tempting to start sprinkling pattern implementations over your application code, just because you can. Don't. Remember a Design Pattern consists of a problem and one or more solutions to that problem. Until you have the problem, don't use the solution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;6. Accept the limitations of your language&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Believe me, I know that as a programmer it is difficult to accept limitations on bending your code to your will, but trying to change the behaviour of PHP is not the solution. PHP has limitations, you'll have to live with them. If you try to "patch" them, chances are you will do more harm than good.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;7. Pretend you are writing a book&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It has been said that "code should be easy to read rather than easy to write". Maybe somebody else will need to understand your code at some stage. Maybe two years from now, you will revisit this code and need to re-learn it's inner workings.&lt;br /&gt;Semantics, meaningful docblocks and clear execution flow are everything. Imagine reading an instruction manual without pictures, filled with meaningless abbreviations, and with the pages in arbitrary order, without page numbers. That's how someone, maybe you, will feel if you ignore this advice.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;8. Peer Review&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Believe it or not, you don't know everything and you aren't always right. Nobody is. Getting a "second opinion" can only improve the end result.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;9. E_STRICT is your friend&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Make sure your code runs properly with E_STRICT turned on. Although, if you have gotten this far, I don't think that will be a problem.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;10. Create a distinction between "source code" and a "build"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Even though PHP is an interpreted language, this is an important distinction in my opinion, even though practically noone employs this in the PHP world. A build in PHP is a copy of (part of) the source code, which includes assets like HTML, CSS and JavaScript, and is stripped of anything not necessary for running the application. Maybe your build is a Phar file, or maybe you have combined some source files into a single file (like the guys at Doctrine do). Maybe you can provide different build of the same project to server different purposes..&lt;br /&gt;How does this help you avoid crappy code? It allows you to have the source code and build differ, avoiding any compromises you might be tempted to make to facilitate runing or developing the application. Bonus points if you allow the user to choose between placing everything in the server document root or just a bootstrap and the static files.&lt;br /&gt;&lt;br /&gt;There are various build tools available, personally I use PHPUnderControl, which is a patch for CruiseControl and gives you a variety of build server features. It uses Ant by default, but I also use Phing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-5592118370755995143?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/5592118370755995143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=5592118370755995143' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/5592118370755995143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/5592118370755995143'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/07/10-ways-to-avoid-writing-crappy-code.html' title='10 Ways to Avoid Writing Crappy Code'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-3049292486697510844</id><published>2009-07-02T23:58:00.000-07:00</published><updated>2009-11-05T04:55:35.622-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>10 Signs of Crappy PHP Software</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;Like it or not, as a professional developer, sooner or later you are going to do some customising (if you are lucky, "extending") of existing software.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;If you are not familiar with the software, it is good advice to look into it before accepting the job. I had to learn that the hard way. But how do you recognize crappy applications without getting knee deep into the code? 10 pointers to identify crappy PHP software quickly...&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;1. The software tries to reinvent the object model, or "fix" language features.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;See if you can find a class called "Object". If you find it, it's a pretty clear indication that the author is in the business of trying to reinvent the object model (most commonly because of his own lacking understanding of OO). It is safe to assume that his "fixes" won't stop there. Unplug your phone and hide under your desk.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;2. The code includes user defined global variables&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;A search in the code for "global" or "$GLOBALS" may reveal something like this:&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;global $database, $my, $mainframe;&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;The infamous global variable. If you can tell me what those last two variables contain you are either intimate with the software I pulled it from, or you're psychic. Unlimited bonus points if you can say what code has had it's claws on it before execution flow got to this point. In short, steer well clear.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;3. Scattered HTML and SQL&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;Search for some common SQL and HTML strings. You should be able to determine very quickly whether these are appropriate places for HTML or SQL. If you find HTML and SQL in the same file, "crappyness" is most definitely confirmed.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;4. Classes do too much&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;Find the 3 largest class files by bit size. Take a look at the class name. Does it indicate a distinct responsibility? Look at the methods. Are the tasks they perform closely related? If not, run away screaming.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;5. Lots of properties are public or lots of properties are static&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;If lots of properties are declared "public static", triple your quote. If I have to explain why, maybe there's an open position on the development team of the software for you.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;6. Multiple levels of inheritance&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;More than 2 levels inheritance should be avoided like the plague. I stake my life on the resulting objects having too much unrelated behaviour (ok, maybe not my life, but if you find a proper use of more than 2 levels of inheritance, I'll buy you a beer).&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;7. The authors try to use Design Patterns&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;Whether or not the authors have a clue is easily determined by searching for some of the most common design patters. Search the code base and/or documentation for "factory", "decorator", "strategy" etc. If present, you can pretty quickly determine whether the authors know their stuff or are trying to look interesting. That is, if you know how the code should look. If not, refuse to take the project until you do.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;8. The software messes with the error level&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;Well written applications run fine at any error level. Searching the files for /error_level\(.*\)/ should do the trick. In case of hits, try replacing the value with E_STRICT. That's little more than a formality though.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;9. In the code base, there is a directory called "core"&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;This is usually used as an excuse to have the whole application dependent on whatever is in there. Despite the appeal of the term (it does make the contents sound pretty cool and important), defining a "core" is a sign of bad design.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;10. The software uses it's own template language.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;&lt;font face="verdana"&gt;Be afraid. Very afraid. These guys are definitely in the business of reinventing the wheel. Ignore this warning and you will find yourself spending the better part of a day simulating a "for" loop.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font class="Apple-style-span" size="small"&gt;&lt;font class="Apple-style-span" size="4"&gt;&lt;font class="Apple-style-span" size="16"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;font class="Apple-style-span" size="small"&gt;&lt;a style="font-family: verdana;" href="http://www.pixeloutpost.com/"&gt;&lt;font style="text-decoration: none;"&gt;&lt;font style="font-style: normal;"&gt;&lt;font&gt;fine arts prints&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana"&gt; - Outpost makes it easy to create large prints and Art from your Photos and Illustrations on multiple types of fine art papers and artist canvases&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font size="2"&gt;&lt;a style="font-family: verdana;" href="http://www.centauruscomputers.com/"&gt;&lt;font style="text-decoration: none;"&gt;&lt;font style="font-style: normal;"&gt;&lt;font&gt;gaming computer&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana"&gt; - Computers - Buy new custom built gaming computers from $499.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.netconcepts.cn/services/seo"&gt;Chinese SEO&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.seopositive.com/"&gt;SEO Company&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;font class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" face="'Times New Roman'" size="3"&gt;&lt;font class="Apple-style-span" style="border-collapse: collapse;" face="Arial"&gt;&lt;a href="http://www.marketingguru.co.uk/"&gt;Marketing Lists&lt;/a&gt; - &lt;/font&gt;&lt;/font&gt;&lt;font class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" face="'Times New Roman'" size="3"&gt;&lt;font class="Apple-style-span" style="border-collapse: collapse;" face="Arial"&gt;Accurate and targeted UK consumer mailing list selectable from over 1000criteria.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;&lt;font class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" face="'Times New Roman'" size="3"&gt;&lt;font class="Apple-style-span" style="border-collapse: collapse;" face="Arial"&gt;&lt;a href="http://www.moolahology.com/"&gt;Work from home&lt;/a&gt; - &lt;/font&gt;&lt;/font&gt;&lt;font class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" face="'Times New Roman'" size="3"&gt;&lt;font class="Apple-style-span" style="border-collapse: collapse;" face="Arial"&gt;Moolahology is a work from home guide that focuses on helping people start their own internet business through affiliate marketing.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.infocaresolution.com/"&gt;seo company india&lt;/a&gt; - INFOCARE India provides Search Engine Marketing solutions like SEO, Link Building, PPC, Web Development and Web Design services at very affordable prices.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.webpromotionerindia.com/"&gt;Link building services india&lt;/a&gt; - cheapest SEO Company in India offers free SEO consultation and Search Engine Optimization.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.covalentworks.com/"&gt;EDI solutions&lt;/a&gt; - EDI solutions without buying EDI software. Complete outsourced systems.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.clinkweb.com/"&gt;Web design company in Miami&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.bootstrapdevelopment.com/"&gt;ipod software&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eci2.com/"&gt;Eci software&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.highlyrelevant.com/california-search-engine-optimization-seo.html"&gt;California seo services&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.micrositez.co.uk/"&gt;&lt;font dir="ltr" id=":2y3"&gt;SEO&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.techservicesguide.com.au/"&gt;IT Support IT Services&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.webconferencing.net.au/livemeetingonline.php"&gt;Mikes Live Meeting&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-3049292486697510844?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/3049292486697510844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=3049292486697510844' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/3049292486697510844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/3049292486697510844'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/07/10-signs-of-crappy-php-software.html' title='10 Signs of Crappy PHP Software'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-2481018756916202142</id><published>2009-06-23T01:44:00.000-07:00</published><updated>2009-06-26T05:28:13.071-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP techniques'/><title type='text'>Using MySQL Administrator with WampServer</title><content type='html'>&lt;p&gt;For those readers who do not develop PHP on Windows platform &lt;a href="http://www.wampserver.com/en/" target="_blank"&gt;WampServer&lt;/a&gt; is probably the most popular Apache + MySQL + PHP package for Windows. MySQL Administrator on the other hand, is a part of &lt;a href="http://dev.mysql.com/downloads/gui-tools/5.0.html" target="_blank"&gt;MySQL GUI Tools&lt;/a&gt; package.&lt;/p&gt; &lt;p&gt;The problem with this pair, is that they don't want to work together. At least not right out of box. MySQL Administrator fails to find mysql service process as installed by WampServer. This leads to infamous 'Could not find settings' error message.&lt;/p&gt; &lt;p&gt;&lt;img src="" alt="" /&gt;&lt;/p&gt; &lt;p&gt;You still will be able to use MySQL Administrator, but some of its features will be unavailable - among them quite important 'Startup variables' that lets you configure your server.&lt;/p&gt; &lt;p&gt;The reason is simple. WampServer keeps MySQL's config file in a directory, that is not checked by MySQL Administrator's searching algorithm.&lt;/p&gt; &lt;p&gt;Luckily, the solution is also simple.&lt;/p&gt; &lt;p&gt;Open registry editor&lt;br /&gt;Windows XP: Go to &lt;tt&gt;Start&lt;/tt&gt; &gt; &lt;tt&gt;Run...&lt;/tt&gt;  type in &lt;tt&gt;regedit&lt;/tt&gt; and press Enter&lt;br /&gt;Vista: Go to &lt;tt&gt;Start&lt;/tt&gt;, type &lt;tt&gt;regedit&lt;/tt&gt; into search box and press Enter&lt;/p&gt; &lt;p&gt;A word of warning: be careful when using registry editor, as you might break your system if you change wrong variables.&lt;/p&gt; &lt;p&gt;Using tree on the left go to:&lt;br /&gt;&lt;tt&gt;HKEY_LOCAL_MACHINE\System\&lt;wbr&gt;CurrentControlSet\Services\&lt;wbr&gt;wampmysqld&lt;/tt&gt;&lt;/p&gt; &lt;p&gt;In the window on the right find &lt;tt&gt;ImagePath&lt;/tt&gt; variable, double click it's name.&lt;/p&gt; &lt;p&gt;In the dialog that opens you should see something like this:&lt;br /&gt;&lt;tt&gt;c:\wamp\bin\mysql\mysql5.1.33\&lt;wbr&gt;bin\mysqld.exe  wampmysqld&lt;/tt&gt;&lt;br /&gt;(MySQL's version may vary)&lt;/p&gt; &lt;p&gt;Change it like this:&lt;br /&gt;&lt;tt&gt;"c:\wamp\bin\mysql\mysql5.1.&lt;wbr&gt;33\bin\mysqld.exe" --defaults-file="c:\wamp\bin\&lt;wbr&gt;mysql\mysql5.1.33\my.ini" wampmysqld&lt;/tt&gt;&lt;br /&gt;(be careful not to miss any double quotes!&lt;/p&gt; &lt;p&gt;Close registry editor, then restart you MySQL server from WampServer's tray menu.&lt;/p&gt; &lt;p&gt;MySQL Administrator should work fine now.&lt;/p&gt; &lt;p&gt;That would be it ;)&lt;/p&gt; &lt;p&gt;----&lt;/p&gt; &lt;p&gt;&lt;a href="http://forums.mysql.com/read.php?34,128259,128297#msg-128297" target="_blank"&gt;MySQL Forums post, where I've found this solution&lt;/a&gt;|&lt;a href="http://www.bluehat.co.uk/services/database-development.aspx" target="_blank"&gt;Database Software Development by Expert Developers, UK&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-2481018756916202142?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/2481018756916202142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=2481018756916202142' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2481018756916202142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2481018756916202142'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/06/using-mysql-administrator-with.html' title='Using MySQL Administrator with WampServer'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-7125860447925645412</id><published>2009-06-18T04:01:00.000-07:00</published><updated>2009-08-01T05:55:17.231-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='linux user'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP training'/><title type='text'>SSH Auto-mount Network Share</title><content type='html'>&lt;p&gt;(&lt;b&gt;Beware&lt;/b&gt; - &lt;i&gt;This blog/tutorial is directed towards linux based users&lt;/i&gt;)&lt;br /&gt;When doing any type of work, especially web work, one of the royal pains is FTPing to your server, or any type of file transfer. Well now you can make it quick and painless. Let me introduce SSHFS. There are 3 major components when creating the SSHFS, and I will guide you through creating and installing all of the necessary steps. Now you can mount and use your file system to automatically upload files and folders to your server with ease.&lt;/p&gt; &lt;p&gt;&lt;span style="text-decoration: underline;"&gt;&lt;i&gt;The 3 Major components:&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;ol&gt;&lt;li&gt;SSH Automatic Login&lt;/li&gt;&lt;li&gt;Install SSHFS&lt;/li&gt;&lt;li&gt;Mount your folder(s)&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;SSH Automatic Login&lt;/h3&gt;&lt;p&gt;Run this command (with the obvious variable substitutions).  It should create a public ssh key on your server.&lt;/p&gt; &lt;pre&gt;ssh-copy-id [-i [identity_file]] [user@]machine&lt;/pre&gt;&lt;ol&gt;&lt;li&gt;ssh-keygen -t dsa&lt;/li&gt;&lt;li&gt;ssh-copy-id user@machiner.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt; Check to make sure it's there, the file should be called, "authorized_keys".&lt;br /&gt; &lt;/p&gt; &lt;pre&gt;ls -al ~/.ssh/&lt;/pre&gt;&lt;p&gt; If you're having trouble with this part, you can reference this tutorial which breaks this component into smaller steps: &lt;a href="http://wp.uberdose.com/2006/10/16/ssh-automatic-login/" target="_blank"&gt;SSH Automatic Login&lt;/a&gt;.&lt;/p&gt; &lt;h3&gt;Install SSHFS&lt;/h3&gt;&lt;pre&gt;sudo apt-get install sshfs&lt;/pre&gt;&lt;p&gt; Or use whatever package manager your distribution provides.&lt;/p&gt; &lt;h3&gt;Mount&lt;/h3&gt;&lt;p&gt; Create a shell script, we'll call it "mount.sh", and add the contents:&lt;br /&gt; &lt;/p&gt; &lt;pre&gt;sshfs [user]@[your_server].com:/dir/&lt;wbr&gt;on/server /dir/to/mount&lt;/pre&gt;&lt;p&gt; Run the script:&lt;br /&gt; &lt;/p&gt; &lt;pre&gt;./mount.sh&lt;/pre&gt;&lt;p&gt; Go to the mounted directory and run the 'ls' command to make sure all of your files/folders from your server show up in your local directory.&lt;/p&gt; &lt;p&gt;After you have this successfully working you should at it to your startup scripts.&lt;br /&gt; &lt;/p&gt; &lt;pre&gt;System &gt;&gt; Preferences &gt;&gt; Sessions &gt;&gt; [add_a_new_entry]&lt;/pre&gt;&lt;p&gt;You should be all set. You should have an automatic SSH login (no prompt for a password) from your computer to your server and a mounted folder to your server that acts as an automatic FTP client. The files in your mounted directory should be synced with that of your server. Now all you have to do is move or copy your desired files/folders into the mounted directory, and voila, they're on your server.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-7125860447925645412?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/7125860447925645412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=7125860447925645412' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/7125860447925645412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/7125860447925645412'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/06/ssh-auto-mount-network-share.html' title='SSH Auto-mount Network Share'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-6231980242190787773</id><published>2009-05-29T18:20:00.000-07:00</published><updated>2009-05-29T18:24:52.034-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='MySQL 5.1'/><title type='text'>MySQL University: Boosting Performance With MySQL 5.1 Partitioning</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;It's been some time some time since we had a MySQL Uni session subject that could be interesting to an 'average' PHP developer. The one that's going to take place next Thursday will definitely be of this sort.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Introduced in MySQL 5.1, partitioning lets you divide your tables into smaller chunks of data... while still keeping them in one table. No more need for `invoices2006`, `invoices2007`, `invoices2008` tables to cope with archival data, no more wicked UNIONs. Now you can tell MySQL to keep invoices (or whatever you need to keep) from one year separate from all other years, thus improving queries that only deal with records from one year.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;That's just a simple example, as there are much more to partitioning than that. I urge you therefore to attend MySQL Uni's Dimdim session this Thursday, June 4th at 13:00GMT.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The session will be presented by Giuseppe Maxia a.k.a. The Data Charmer. I attended one of his sessions in the past, and he seems like a very interesting person to listen to.Check the MySQL University home page for details (and possible last minute schedule changes!)For more information about MySQL University, see my introductory post&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-6231980242190787773?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/6231980242190787773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=6231980242190787773' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/6231980242190787773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/6231980242190787773'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/05/mysql-university-boosting-performance.html' title='MySQL University: Boosting Performance With MySQL 5.1 Partitioning'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-8887666736150034265</id><published>2009-04-25T22:13:00.000-07:00</published><updated>2009-04-25T22:21:54.180-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personality Development'/><title type='text'>Personality Development  - a slide I liked</title><content type='html'>&lt;div style="width: 425px; text-align: left;" id="__ss_1342734"&gt;&lt;a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/indrajitbadal/personality-development-1342734?type=presentation" title="Personality Development"&gt;Personality Development&lt;/a&gt;&lt;object style="margin: 0px;" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=personalitydevelopment-090426000833-phpapp02&amp;amp;stripped_title=personality-development-1342734"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=personalitydevelopment-090426000833-phpapp02&amp;amp;stripped_title=personality-development-1342734" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;"&gt;View more &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline;" href="http://www.slideshare.net/indrajitbadal/personality-development-1342734#relatedList"&gt;Related List&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-8887666736150034265?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/8887666736150034265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=8887666736150034265' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/8887666736150034265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/8887666736150034265'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/04/personality-development.html' title='Personality Development  - a slide I liked'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-6070956910217660258</id><published>2009-04-25T18:46:00.000-07:00</published><updated>2009-04-25T18:54:00.512-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TIMESTAMP'/><category scheme='http://www.blogger.com/atom/ns#' term='Mysql'/><title type='text'>Too much information about the MySQL TIMESTAMP</title><content type='html'>&lt;div class="serendipity_entry_body"&gt;Source:http://www.gizmola.com/blog/archives/93-Too-much-information-about-the-MySQL-TIMESTAMP.html&lt;br /&gt;&lt;br /&gt;The MySQL timestamp is an oddity, being both a mySQL "Data Type" as well as a type of specialty column that provides a built in default. It doesn't help matters, that the timestamp was changed significantly around mysql version 4.1.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The Old TIMESTAMP&lt;/h3&gt;&lt;br /&gt;In older mysql versions, the TIMESTAMP was not in the same format as a DateTime column, and you could also set up truncation by defining the TIMESTAMP to have a fixed size. For example, you could define a TIMESTAMP column to be a TIMESTAMP(4) which would then only store the 4 digit Year portion of a DateTime value. I won't go into much detail on the pre version 4.1 TIMESTAMP, however, if you're stuck with an older version of MySQL I recommend you read the manual carefully before you attempt to use any of the information here. I'm going to concentrate on the current TIMESTAMP.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;TIMESTAMP Properties&lt;/h3&gt;&lt;br /&gt;At its most fundamental, the TIMESTAMP is really nothing more than a Unix TimeStamp, which is to say, that internally it is stored as an integer value of seconds. Where a MySQL DATETIME column can be used to store any date and time from Jan 1, 1000 to 12/31/9999, the TIMESTAMP is limited in the same ways that the Unix timestamp is currently limited -- it can only store values from Jan 1, 1970 to Jan 9, 2038.&lt;br /&gt;&lt;br /&gt;Those familiar with Unix design, will recognize the Jan 9, 2038 date as being the next big "Y2K" computing panic, and if you're young enough, you may realize a large payday in your future, selling remediation services to companies in roughly another 28 years. The folks at &lt;a href="http://www.gizmola.com/blog/exit.php?url_id=988&amp;amp;entry_id=93" onmouseover="window.status='http://www.y2038.com/';return true;" onmouseout="window.status='';return true;" title="http://www.y2038.com/"&gt;http://www.y2038.com/&lt;/a&gt; are already estimating this to be as much as a 10 trillion dollar jackpot, although no doubt by that time most of the coding will be done by the Morlocks from their &lt;em&gt;underground cave cities&lt;/em&gt;.   Outsourcing of IT to Morlocks will be a major industry trend by the year 2020, mark my words.&lt;br /&gt;&lt;br /&gt;            &lt;/div&gt;                          &lt;div class="serendipity_entry_extended"&gt;&lt;h3&gt;Saving bytes&lt;/h3&gt;&lt;br /&gt;MySQL stores a timestamp as a 32 bit integer, which of course requires 4 bytes of storage. This is one reason why you might want to use a TIMESTAMP over a DATETIME, which requires 8 bytes. Primarily, people look to the TIMESTAMP because, as its name implies, it can be utilized to &lt;em&gt;stamp the time&lt;/em&gt; on a row at the point it's inserted.  Let's take a look at a mysql TIMESTAMP in action.&lt;br /&gt;&lt;br /&gt;First let's create a table with a single TIMESTAMP column in it. We will not refer to this column, and observe what happens when we insert a new row into the table. In case you're keeping score:&lt;br /&gt;&lt;div class="bash geshi" style="text-align: left;"&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;select&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;@@&lt;/span&gt;version;&lt;br /&gt;+-----------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;@@&lt;/span&gt;version &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+-----------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; 5.0.45    &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+-----------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="mysql geshi" style="text-align: left;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top;"&gt;&lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;CREATE&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;TABLE&lt;/span&gt; atimestamp &lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;id &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;INT&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;KEY&lt;/span&gt; &lt;span style="color: rgb(153, 0, 255); font-weight: bold;"&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; justnow &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;DATETIME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; created &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;TIMESTAMP&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;;&lt;/span&gt;  &lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="bash geshi" style="text-align: left;"&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; describe atimestamp;&lt;br /&gt;+---------+-----------+------+-----+-------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Field   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Type      &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Null &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Key &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Default           &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Extra          &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+-------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt;      &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; int&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;11&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; PRI &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NULL              &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; auto_increment &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; datetime  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; YES  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NULL              &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; created &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; timestamp &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; CURRENT_TIMESTAMP &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+-------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3&lt;/span&gt; rows &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;So here we have the table, along with a datetime column that we will set to the magic value of NOW().&lt;br /&gt;&lt;br /&gt;&lt;div class="bash geshi" style="text-align: left;"&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; insert into atimestamp &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;justnow&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt; values &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;NOW&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row affected &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;select&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; created             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;14&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;29&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;58&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;14&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;29&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;58&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Just as one would hope, MySQL automatically sets the value of TIMESTAMP column I named "created" to be the same as the Server time. So if our primary goal is to have a column that keeps track of when the row was created, our TIMESTAMP does a great job.&lt;br /&gt;&lt;em&gt;&lt;br /&gt;Or does it?&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Stopping an UPDATE from overwriting the TIMESTAMP&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;What happens if, at later time, we UPDATE a column in the table?&lt;br /&gt;&lt;br /&gt;&lt;div class="bash geshi" style="text-align: left;"&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; update atimestamp &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; justnow = NOW&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row affected &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;Rows matched: &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;  Changed: &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;  Warnings: &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;select&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;*&lt;/span&gt; from atimestamp;            &lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; created             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;14&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;30&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;32&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;14&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;30&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;32&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This is not good.  Our created time has been lost, because the default behavior of a TIMESTAMP is to update the value to NOW(), &lt;strong&gt;any time the row is changed.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The TIMESTAMP Defaults&lt;/h3&gt;&lt;br /&gt;Setting a column to be a MySQL TIMESTAMP is equivalent to also giving the column a default of &lt;em&gt;CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP&lt;/em&gt;. For those not familiar with Mysql Defaults, when creating a table, you can specify a default value for a column to receive if it is not specifically assigned a value during an INSERT. You do this using the DEFAULT keyword, and for all columns other than a TIMESTAMP this must be a constant value. Timestamp columns can specify the CURRENT_TIMESTAMP default which tells mySQL to default this column to NOW().&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Stopping UPDATE on TIMESTAMP&lt;/h3&gt;&lt;br /&gt;The only way not to get the update behavior is to specifically declare the TIMESTAMP to &lt;strong&gt;DEFAULT CURRENT_TIMESTAMP&lt;/strong&gt;. This seems to me to defeat the purpose of having the default behavior in the first place but might be understandable if it was possible for you to have a second TIMESTAMP column, perhaps named "updated".&lt;br /&gt;&lt;br /&gt;Unfortunately, you can't have one TIMESTAMP with DEFAULT CURRENT_TIMESTAMP, and a second one with ON UPDATE CURRENT_TIMESTAMP. More often than not, what people really want is only the DEFAULT CURRENT_TIMESTAMP behavior, so it's very important to remember this workaround, if you are using a TIMESTAMP as for example, the "signup date" in a User table. See this in action below:&lt;br /&gt;&lt;br /&gt;&lt;div class="mysql geshi" style="text-align: left;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top;"&gt;&lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;CREATE&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;TABLE&lt;/span&gt; atimestamp &lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;id &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;INT&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;KEY&lt;/span&gt; &lt;span style="color: rgb(153, 0, 255); font-weight: bold;"&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; justnow &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;DATETIME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; created &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;TIMESTAMP&lt;/span&gt; &lt;span style="color: rgb(153, 0, 255); font-weight: bold;"&gt;DEFAULT&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="bash geshi" style="text-align: left;"&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; describe atimestamp;&lt;br /&gt;+---------+-----------+------+-----+-------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Field   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Type      &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Null &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Key &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Default           &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Extra          &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+-------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt;      &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; int&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;11&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; PRI &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NULL              &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; auto_increment &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; datetime  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; YES  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NULL              &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; created &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; timestamp &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; CURRENT_TIMESTAMP &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+-------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3&lt;/span&gt; rows &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; insert into atimestamp &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;justnow&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt; values &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;NOW&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;;                       &lt;br /&gt;Query OK, &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row affected &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;select&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; created             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;18&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;15&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;38&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;18&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;15&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;38&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; update atimestamp &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; justnow = NOW&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;;                       &lt;br /&gt;Query OK, &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row affected &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;Rows matched: &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;  Changed: &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;  Warnings: &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;select&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; created             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;18&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;15&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;56&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;18&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;15&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;38&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now we have automatic timestamping on INSERT, but without the timestamp being overwritten on UPDATE.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;What about an UPDATE only TIMESTAMP?&lt;/h3&gt;&lt;br /&gt;Perhaps there's a really good reason to dedicate a TIMESTAMP to only apply the time when the row is updated. I can't think of one, but for the sake of completeness, here's how you can define the Default.&lt;br /&gt;&lt;br /&gt;&lt;div class="mysql geshi" style="text-align: left;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top;"&gt;&lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;CREATE&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;TABLE&lt;/span&gt; atimestamp &lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;id &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;INT&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;KEY&lt;/span&gt; &lt;span style="color: rgb(153, 0, 255); font-weight: bold;"&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; justnow &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;DATETIME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; updated &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;TIMESTAMP&lt;/span&gt; &lt;span style="color: rgb(153, 0, 255); font-weight: bold;"&gt;DEFAULT&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;0&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;ON&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;UPDATE&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="bash geshi" style="text-align: left;"&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; describe atimestamp;                           &lt;br /&gt;+---------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Field   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Type      &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Null &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Key &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Default             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Extra          &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt;      &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; int&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;11&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; PRI &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NULL                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; auto_increment &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; datetime  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; YES  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NULL                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; updated &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; timestamp &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;3&lt;/span&gt; rows &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; insert into atimestamp &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;justnow&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt; values &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;NOW&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row affected &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;select&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; updated             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;33&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;56&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.01&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; update atimestamp &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; justnow = NOW&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row affected &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;Rows matched: &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;  Changed: &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;  Warnings: &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;select&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; updated             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;34&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;19&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;34&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;19&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Many Timestamps, but only one that's magical&lt;/h3&gt;&lt;br /&gt;MySQL will allow you to declare multiple columns of type TIMESTAMP, but &lt;strong&gt;only the first timestamp in the table will have the built in Default.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="mysql geshi" style="text-align: left;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top;"&gt;&lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;CREATE&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;TABLE&lt;/span&gt; bigtimestamp &lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;id &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;INT&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;KEY&lt;/span&gt; &lt;span style="color: rgb(153, 0, 255); font-weight: bold;"&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; justnow &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;DATETIME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; created &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;TIMESTAMP&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; updated &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;TIMESTAMP&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; verified &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;TIMESTAMP&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="bash geshi" style="text-align: left;"&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; describe bigtimestamp;&lt;br /&gt;+----------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Field    &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Type      &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Null &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Key &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Default             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Extra          &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt;       &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; int&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;11&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; PRI &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NULL                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; auto_increment &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; datetime  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; YES  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NULL                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; created  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; timestamp &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; CURRENT_TIMESTAMP   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; updated  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; timestamp &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; verified &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; timestamp &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;5&lt;/span&gt; rows &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; insert into bigtimestamp &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;justnow&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt; values &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;NOW&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row affected &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.01&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;select&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;*&lt;/span&gt; from bigtimestamp;&lt;br /&gt;+----+---------------------+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; created             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; updated             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; verified            &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;39&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;19&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;39&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;19&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Even with this limitation, it may still be a good idea to declare your Date columns as TIMESTAMP type, as the savings of 4 bytes per date per row can easily be significant if your table will have a lot of rows in it.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Single table Insert and Update Timestamp Workaround&lt;/h3&gt;&lt;br /&gt;It is actually possible to trick mysql into providing the default timestamp behavior for "created' and "updated" columns, despite the documented limitation of only having one default timestamp per table. If you define the first timestamp column to have a default of 0, while also being NOT NULL, you can trick mysql into supplying today's date by &lt;em&gt;explicitly setting the column to be NULL on insert.&lt;/em&gt; In this case, mySQL decides to be &lt;em&gt;helpful&lt;/em&gt; and for no logical reason, to set the value to NOW(). The second TIMESTAMP which has the explict TIMESTAMP defaults, works normally, and is set to NOW() on insert and update.&lt;br /&gt;&lt;br /&gt;&lt;div class="mysql geshi" style="text-align: left;"&gt;&lt;ol&gt;&lt;li style="font-weight: normal; vertical-align: top;"&gt;&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top;"&gt;&lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;CREATE&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;TABLE&lt;/span&gt; atimestamp &lt;span style="color: rgb(255, 0, 255);"&gt;(&lt;/span&gt;id &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;INT&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;KEY&lt;/span&gt; &lt;span style="color: rgb(153, 0, 255); font-weight: bold;"&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; justnow &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;DATETIME&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; created &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;TIMESTAMP&lt;/span&gt; &lt;span style="color: rgb(204, 0, 153); font-weight: bold;"&gt;NOT&lt;/span&gt; &lt;span style="color: rgb(153, 0, 255); font-weight: bold;"&gt;NULL&lt;/span&gt; &lt;span style="color: rgb(153, 0, 255); font-weight: bold;"&gt;DEFAULT&lt;/span&gt; &lt;span style="color: rgb(0, 128, 128);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;,&lt;/span&gt; updated &lt;span style="color: rgb(255, 153, 0); font-weight: bold;"&gt;TIMESTAMP&lt;/span&gt; &lt;span style="color: rgb(153, 0, 255); font-weight: bold;"&gt;DEFAULT&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;CURRENT_TIMESTAMP&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;ON&lt;/span&gt; &lt;span style="color: rgb(153, 0, 153); font-weight: bold;"&gt;UPDATE&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="bash geshi" style="text-align: left;"&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; describe atimestamp;&lt;br /&gt;+---------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Field   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Type      &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Null &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Key &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Default             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; Extra          &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt;      &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; int&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;11&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; PRI &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NULL                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; auto_increment &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; datetime  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; YES  &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NULL                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; created &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; timestamp &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; updated &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; timestamp &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; NO   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;     &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; CURRENT_TIMESTAMP   &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;                &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4&lt;/span&gt; rows &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; insert into atimestamp &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;justnow&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt; values &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;NOW&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row affected &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;select&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; created             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; updated             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;54&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;54&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; insert into atimestamp &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;created, justnow&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt; values &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;NULL, NOW&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row affected &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;select&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;*&lt;/span&gt; from atimestamp;                                     &lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; created             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; updated             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;54&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;54&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;2&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;55&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;35&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;55&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;35&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;55&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;35&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2&lt;/span&gt; rows &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; update atimestamp &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(0, 120, 0);"&gt;justnow&lt;/span&gt;=NOW&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt; WHERE &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 0);"&gt;2&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; row affected &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;Rows matched: &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;  Changed: &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;  Warnings: &lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;select&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(194, 12, 185); font-weight: bold;"&gt;id&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; justnow             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; created             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; updated             &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;54&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;54&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;2&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;56&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;48&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;55&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;35&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;2009&lt;/span&gt;-04-&lt;span style="color: rgb(0, 0, 0);"&gt;24&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;23&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;56&lt;/span&gt;:&lt;span style="color: rgb(0, 0, 0);"&gt;48&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2&lt;/span&gt; rows &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;in&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;set&lt;/span&gt; &lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0.00&lt;/span&gt; sec&lt;span style="color: rgb(122, 8, 116); font-weight: bold;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;While this technique works at present, I would consider it an undocumented hack, based on a side effect. It also requires you to explicitly specify NULL in the values for the created column. If you forget to reference the column in the INSERT statement, it will not set the value to NOW() as illustrated above. This technique works for now, but who knows what will happen in future versions of mySQL? Use at your own risk.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-6070956910217660258?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/6070956910217660258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=6070956910217660258' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/6070956910217660258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/6070956910217660258'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/04/too-much-information-about-mysql.html' title='Too much information about the MySQL TIMESTAMP'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-2506267154694591756</id><published>2009-04-20T22:34:00.000-07:00</published><updated>2009-07-01T23:31:20.107-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='password recovery'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='ms outlook'/><title type='text'>PST Password Recovery Software</title><content type='html'>Stellar Phoenix Outlook PST Repair Software is designed to recover lost or forgotten PST file password instantly. Stellar also provide recovery of  your lost or corrupt outlook email file and s allow splitting PST file into smaller files when PST file size exceed from 2 GB and  Outlook can’t recognize the PST files. This Software completely recovers all of Microsoft Outlook Problems.&lt;br /&gt;&lt;br /&gt;Microsoft Outlook is a Personal information manager used to receive confidential, personal and business important client mails .It used mainly for email, contacts, notes, messages, calendar entries, journal all these features are stores in Personal Storage Table (PST). PST is a password protection feature also adds to its data security. To protect your client mail and other outlook features you must set a password. The PST password may get lost or forgotten. This is the time when you need your outlook &lt;a href="http://www.pst-password-recovery.com/"&gt;password recovery&lt;/a&gt;.&lt;br /&gt;Key Features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Instantaneous PST password recovery&lt;/li&gt;&lt;li&gt;Mail account password recovery&lt;/li&gt;&lt;li&gt;Generation of several passwords for a single file&lt;/li&gt;&lt;li&gt;Can save recovered passwords in notepad or any other text editor&lt;/li&gt;&lt;li&gt;PST password recovery options for Outlook 2007, 2003, 2002, 2000 and 98&lt;/li&gt;&lt;li&gt;Passwords having special characters and numbers can be recovered&lt;/li&gt;&lt;li&gt;Interactive interface&lt;/li&gt;&lt;li&gt;PST repair ability&lt;/li&gt;&lt;li&gt;Can split PST into smaller PST files&lt;/li&gt;&lt;li&gt;Live Update feature to help software constantly updated&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Cases, when PST password recovery may be needed:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lost or forgotten the PST or mail account password&lt;/li&gt;&lt;li&gt;The bit of paper or file is missing where the password was written&lt;/li&gt;&lt;li&gt;Password was set a long ago and now you have no clue of&lt;/li&gt;&lt;li&gt;Outlook is not accepting your password&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Stellar Phoenix Outlook PST Repair Software has designed the program to recover forgotten, lost or missing PST password in any case along with intuitive interface. &lt;a href="http://www.pst-password-recovery.com/"&gt;PST Password Recovery&lt;/a&gt; program gives a set of new passwords to access PST.&lt;br /&gt;&lt;br /&gt;Stellar Phoenix Application is most powerful to recovery lost Password. It supports Outlook 2007, 2003, 2002 and 2000. The application can also be used to split large PST file into smaller parts. This Stellar product is efficient enough to give you PST password recovery, PST repair and split PST options in a single fusion. All three jobs are productive, valuable and viable through Stellar Phoenix Outlook PST Repair Software. You can download free version of windows data recovery then please &lt;a href="http://www.pst-password-recovery.com/download-password-recovery-software.php"&gt;Visit here&lt;/a&gt;…..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.vizuality.co.uk/index.php"&gt;Vizuality Marketing and Design Doncaster&lt;/a&gt;&lt;br /&gt;Vizualitys marketing, PR, public relations, graphic and media design expertise will transform your ideas into brand development and corporate identity. Based in Doncaster, South Yorkshire we are leaders in our field.Design and print services also avaiable.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.instant-radio-codes.com/radio-codes-blaupunkt.php"&gt;Instant Blaupunkt Radio Codes&lt;/a&gt;&lt;br /&gt;It`s so easy to get your Blaupunkt Radio Code! And our fully automated process will guide you through the entire procedure. After you have entered your radio details into the boxes provided, you will be directed to the PayPal website to make a secure payment, and once completed, your Blaupunkt Radio Code will be ready for you to view Online. We will also send a copy via E-Mail for your to print off for your records.&lt;br /&gt;&lt;a href="http://www.stellarinfo.com/"&gt;Data Recovery Software&lt;/a&gt;&lt;br /&gt;Buy award winning hard drive data recovery software and utilities or try the demos free. Stellar offers a complete solution of file recovery software and lost data restoration programs for Windows (Windows 95, 98, ME, NT, 2000, 2003, XP), Apple Macintosh, Novell, Linux, Unix operating system and FAT, NTFS,NTFS5,HFS, HFS+, NWFS, EXT2 and EXT3 file systems.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.stellarinfo.com/data-recovery-services.htm"&gt;Data Recovery Services&lt;/a&gt;&lt;br /&gt;Offers data recovery, data recovery services from crashed hard drives, laptops and damaged Mac drive. Stellar provides data recovery in New Jersey, data recovery services in USA, ASIA &amp; European Countries.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.stellarinfo.com/file-recovery.htm"&gt;File Recovery&lt;/a&gt;&lt;br /&gt;Stellar offers you hard drive disk &amp; file recovery and protection software and data file eraser utility for complete protection of your data.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.stellarinfo.com/partition-recovery.htm"&gt;Partition Recovery&lt;/a&gt;&lt;br /&gt;Windows data recovery software, an easy to use NTFS &amp; FAT partition recovery Utility that examines inaccessible hard drives for damages and corruptions and recovers the data back.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.stellarinfo.com/download.htm"&gt;Hard Drive Recovery&lt;/a&gt;&lt;br /&gt;Try our data recovery software. Available are Data recovery software download for windows 95,98,Me,Novell,Unix,Linux,windows NT,XP,2000 which give you easy recovery decision of try before you buy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-2506267154694591756?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/2506267154694591756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=2506267154694591756' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2506267154694591756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2506267154694591756'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/04/pst-password-recovery-software.html' title='PST Password Recovery Software'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-7834064738601312205</id><published>2009-04-20T22:29:00.000-07:00</published><updated>2009-05-08T04:53:42.282-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development tool'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Atlassian offering licenses to Confluence and Jira for $5</title><content type='html'>&lt;p&gt;Atlassian has made a name for itself with its java based opensource development tools. Confluence (an Intranet Wiki tool) and Jira (a bug tracker) are two of the companies Flagship products. Calling this their "Atlassian Stimulus Project", they are offering 5 user licenses for $5 each, and donating the proceeds to "Room to Read".&lt;/p&gt; &lt;p&gt;I have used both Confluence and Jira as well as Fisheye, and they are all excellent products, that don't quite have competitors in the LAMP world. Any small development company will find Jira a great bug tracker, capable of complex workflows. Confluence is a Wiki on steriods, that can be used in a variety of ways as an interanet tool, and for design, and internal and external documentation. Both products are modular and there are a substantial number of plugins that increase their functionality. I'd urge any small company to take a look at this offer, which is only good for the next 5 days.&lt;/p&gt; &lt;p&gt;Visit &lt;a href="http://www.atlassian.com/starter/" target="_blank"&gt;http://www.atlassian.com/&lt;wbr&gt;starter/&lt;/a&gt; for the details.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.latestt.com/Docshare/docshare.aspx?catId=3&amp;amp;catName=technology&amp;amp;valType=1"&gt;Share Technology Documents&lt;/a&gt; - Upload and download technology documents online. Share technology documents and  reports with friends at latestt.com&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-7834064738601312205?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/7834064738601312205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=7834064738601312205' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/7834064738601312205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/7834064738601312205'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/04/atlassian-offering-licenses-to.html' title='Atlassian offering licenses to Confluence and Jira for $5'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-179602992252654769</id><published>2009-04-09T18:14:00.000-07:00</published><updated>2009-07-01T23:29:36.983-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP techniques'/><title type='text'>Microsoft Q&amp;A: Running PHP on Windows Server 2008</title><content type='html'>Microsoft has been recently engaging in a number of open source projects. They have been working on enhancing performance, security and stability of PHP applications on Windows Server platforms.&lt;br /&gt;&lt;br /&gt;In relation to that we would, in cooperation with Microsoft, invite you to trial a Windows based web stack consisting of IIS 7, PHP 5 and SQL Server. Via the PHP on WS 2008 website you will be able to request a 30-day trial with a Microsoft hosting partner, and you'll be able to request a downloadable trial for installation on your own computer. You will be able to find more information on that page as well. Alternatively, if you have Windows Vista you can install IIS 7 and test its FastCGI capabilities.&lt;br /&gt;&lt;br /&gt;We have setup a dedicated board, PHP on Windows Server 2008 - Microsoft Q&amp;amp;A, where you will be able to post your feedback and discuss it in general. Commencing April 20th, Hank Janssen and his team from the Microsoft Open Source Center will be available to respond on the feedback, and answer whatever questions that may arise.&lt;br /&gt;&lt;br /&gt;We hope you will take part in this Q&amp;amp;A to enhance PHP, and specifically to enhance it on the Windows platform.&lt;br /&gt;&lt;br /&gt;Do feel free to ask in the board if you have any questions.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.script2please.com/php-development.html"&gt;PHP Web Development&lt;/a&gt; services at Script2please.com&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.webrankings.co.uk/seo-web-design/"&gt;SEO Web Design&lt;/a&gt; - Web Rankings - UK based White Label SEO Web Design Agency. Search Engine Optimisation, Search Engine Marketing, Web Design,  PPC, Conversion Specialists.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ardentcreative.co.uk/"&gt;Web Design Agency&lt;/a&gt; - Web Design, Web Development &amp;amp; Web Marketing Agency based in Surrey&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.spaceandtime.eu.com/"&gt;Media Buying&lt;/a&gt; - Media planning &amp;amp; buying, including digital from Space &amp;amp; Time Media.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.alkemi.co.nz"&gt;SEO &lt;/a&gt; - Learn how search engine marketing, PPC management, conversion enhancement and web analytics tracking can boost your online profitability. Visit our website and harness the web with Alkemi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-179602992252654769?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/179602992252654769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=179602992252654769' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/179602992252654769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/179602992252654769'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/04/microsoft-q-running-php-on-windows.html' title='Microsoft Q&amp;A: Running PHP on Windows Server 2008'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-8694433537924720044</id><published>2009-03-26T21:27:00.000-07:00</published><updated>2009-03-26T21:31:12.789-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='website design'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Chrome'/><title type='text'>Solve your site rendering  problem with Google Chrome</title><content type='html'>By Glenn Wilson, Product Manager, Google Chrome&lt;br /&gt;http://googlewebmastercentral.blogspot.com/2009/03/helping-your-site-look-great-with.html&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Since launching Google Chrome last September, we received a number of questions from webmasters and web developers about how to make their sites look great in Google Chrome. The questions were very insightful and illuminating for the Chrome team, and I want to respond with a few helpful tips for making your site look stellar in Google Chrome.&lt;br /&gt;&lt;br /&gt;Detecting Google Chrome&lt;br /&gt;&lt;br /&gt;Most sites will render the same in both Safari and Google Chrome, because they're both WebKit-based browsers. If your site looks right in Safari, then it should look right in Google Chrome, too.&lt;br /&gt;&lt;br /&gt;Since Chrome is relatively new, many sites have confused Google Chrome with another browser. If your site doesn't look quite right in Chrome but works fine in Safari, it's possible your site may just not recognize Chrome's user-agent string.&lt;br /&gt;&lt;br /&gt;As platforms and browsers adopt WebKit as their rendering engine, your site can detect and support them automatically with the right JavaScript checks. Commonly, sites use JavaScript to 'sniff' the navigator.userAgent property for "Chrome" or "Safari", but you should use proper object detection if possible. In fact, Gmail has been detecting WebKit properly in Chrome since day one!&lt;br /&gt;&lt;br /&gt;If you must detect the user-agent type, you can use this simple JavaScript to detect WebKit:&lt;br /&gt;&lt;br /&gt;var isWebkit =&lt;br /&gt;navigator.userAgent.indexOf("AppleWebKit") &gt; -1;&lt;br /&gt;&lt;br /&gt;Or, if you want to check that the version of WebKit is at least a certain version—say, if you want to use a spiffy new WebKit feature:&lt;br /&gt;&lt;br /&gt;var webkitVersion =&lt;br /&gt;parseFloat(navigator.userAgent.split("AppleWebKit/")[1]) ||&lt;br /&gt;undefined;&lt;br /&gt;if (webkitVersion &amp;amp;&amp;amp; webkitVersion &gt; 500 ) {&lt;br /&gt;// use spiffy WebKit feature here&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;For reference, here are a few browser releases and the version of WebKit they shipped:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Browser Version of WebKit&lt;br /&gt;Chrome 1.0 525.19&lt;br /&gt;Chrome 2.0 beta 530.1&lt;br /&gt;Safari 3.1 525.19&lt;br /&gt;Safari 3.2 525.26.2&lt;br /&gt;Safari 4.0 beta 528.16&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can find more information about detecting WebKit at webkit.org.&lt;br /&gt;&lt;br /&gt;Other helpful tips&lt;br /&gt;Google Chrome doesn't support ActiveX plug-ins, but does support NPAPI plug-ins. This means you can show plug-in content like Flash and Java in Google Chrome the same way you do with Firefox and Safari.&lt;br /&gt;If text on your site looks a bit off, make sure you provide the proper content type and character encoding information in the HTTP response headers, or at the beginning of your pages, preferably near the top of the &lt;head&gt; section.&lt;br /&gt;Don't put block elements inside inline elements.&lt;br /&gt;Wrong: &lt;a&gt;&lt;div&gt;This will look wrong.&lt;/div&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Right: &lt;div&gt;&lt;a&gt;This will look right!&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;If your JavaScript isn't working in Google Chrome, you can debug using Chrome's built-in JavaScript debugger, under the "page" menu -&gt; 'Developer' -&gt; 'Debug JavaScript' menu option.&lt;br /&gt;To help webmasters and web developers find more answers, we created a support center and forum specifically to answer your questions. Of course, if you find something you think is really a bug in Chrome, please report it to us!&lt;br /&gt;&lt;br /&gt;Help us improve Google Chrome!&lt;br /&gt;&lt;br /&gt;If you'd like to help even more, we're looking for sites that may be interested in allowing Google to use their site as a benchmark for our internal compatibility and performance measurements. If you're interested in having Google Chrome development optimized against a cached version of your site, please contact us about details at chrome-webmasters@google.com.&lt;br /&gt;&lt;br /&gt;Please keep the feedback coming, and we'll keep working to improve Google Chrome!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-8694433537924720044?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/8694433537924720044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=8694433537924720044' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/8694433537924720044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/8694433537924720044'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/03/solve-your-site-rendering-problem-with.html' title='Solve your site rendering  problem with Google Chrome'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-8727528379293926585</id><published>2009-03-23T00:21:00.000-07:00</published><updated>2009-03-23T00:25:24.650-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Develop new gadgets with support from Google.</title><content type='html'>http://www.google.com/gadgetventures/&lt;br /&gt;&lt;br /&gt;Try your hand on Google pilot program dedicated to helping developers create richer, more useful gadgets. Inspired by the success of &lt;a href="http://www.google.com/ig"&gt;iGoogle&lt;/a&gt;, which has been driven by the creation by 3rd-party developers of a broad range of gadgets, Gadget Ventures provides two types of funding:     &lt;ol&gt;&lt;li&gt;&lt;strong&gt;Grants&lt;/strong&gt; of $5,000 to those who’ve built gadgets we’d like to see developed further. You’re eligible to apply for a grant if you’ve developed a gadget that’s in our &lt;a href="http://www.google.com/ig/directory"&gt; gadgets directory&lt;/a&gt; and gets at least 250,000 weekly page views. To apply, you must submit a one-page proposal detailing how you’d use the grant to improve your gadget. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Seed       investments&lt;/strong&gt; of $100,000 to developers who’d like to build a business around the gadgets platform. Only Google Gadget Venture grant recipients are eligible for this type of funding. Submitting a business plan detailing how you plan to build a viable business around the gadgets platform is a required part of the seed investment application process.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-8727528379293926585?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/8727528379293926585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=8727528379293926585' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/8727528379293926585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/8727528379293926585'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/03/develop-new-gadgets-with-support-from.html' title='Develop new gadgets with support from Google.'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-4515929503483335323</id><published>2009-03-20T23:34:00.000-07:00</published><updated>2009-03-20T23:40:02.171-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Download Google Chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='Chrome Experiments'/><title type='text'>Chrome Experiments - The Power of JavaScript!</title><content type='html'>&lt;p&gt;  &lt;!--content with more link--&gt;  &lt;/p&gt;&lt;p&gt;&lt;a href="http://tnerd.com/tag/google/" title="Google" rel="tag"&gt;http://tnerd.com/2009/03/20/5-best-chrome-experiments-the-power-of-javascript/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;  &lt;img src="http://tnerd.com/wp-content/uploads/2008/09/chrome.jpg" alt="Chrome" align="right" border="0" width="165" height="200" /&gt;&lt;a href="http://tnerd.com/tag/google/" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google"&gt;Google&lt;/a&gt; has always been a step ahead when it comes to creating a buzz for its products and attracting great talent to build upon its tools. &lt;/p&gt; &lt;p&gt;  &lt;a href="http://www.chromeexperiments.com/" target="_blank"&gt;ChromeExperiments.com&lt;/a&gt; is one such example. Applications showcased  on this site are mostly built on JavaScript &lt;a id="KonaLink0" target="undefined" class="kLink" style="text-decoration: underline ! important; position: static;" href="http://tnerd.com/2009/03/20/5-best-chrome-experiments-the-power-of-javascript/#"&gt;&lt;span style="font-weight: 400; position: static;font-family:Arial,Helvetica,Sans-Serif;font-size:12;color:#b00000;"   &gt;&lt;span class="kLink" style="font-weight: 400; position: static;font-family:Arial,Helvetica,Sans-Serif;font-size:12;color:#b00000;"   &gt;technologies&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; and are a showcase of out-of-the-box thinking and creativity. These Applications/Experiments might not be put to use as it is, however, they serve their purpose of demonstrating the power of JavaScript and the Browser.&lt;/p&gt; &lt;p&gt;  Following are the top 5 experiments from the bunch.. (I  recommend viewing these experiments in &lt;a title="Google Chrome" href="http://tnerd.com/tag/google-chrome/"&gt;Google Chrome&lt;/a&gt;. Click &lt;a href="http://www.google.com/chrome" target="_blank"&gt;here&lt;/a&gt; to &lt;a title="download Chrome" href="http://tnerd.com/tag/download-chrome/"&gt;download Chrome&lt;/a&gt; if you don’t  have it installed already)&lt;/p&gt; &lt;p&gt;&lt;span id="more-3073"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;BallDroppings:&lt;/strong&gt; It’s a musical app which looks like pong. The balls are dropped one after the other, users can draw lines/bars to keep the balls from going off the screen. The balls bounce off the bar drawn on the screen creating a sound every time a ball hits the bar.  &lt;/p&gt; &lt;p&gt;  Click &lt;a href="http://balldroppings.com/js" target="_blank"&gt;here&lt;/a&gt; to  launch the experiment or watch the video below to see it in action.&lt;/p&gt; &lt;p align="center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/G6IKsek8DKE&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/G6IKsek8DKE&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Browser Ball:&lt;/strong&gt; This is another fun application which shows the power of JavaScript and how  well &lt;a title="Chrome" href="http://tnerd.com/tag/chrome/"&gt;Chrome&lt;/a&gt; handles it. &lt;/p&gt; &lt;p&gt; All you have to do is Open windows and throw the ball through them. Not only that but you can also add new windows on the fly.&lt;/p&gt; &lt;p&gt;  Click &lt;a href="http://experiments.instrum3nt.com/markmahoney/ball/" target="_blank"&gt;here&lt;/a&gt; to launch  the app or watch the following video to see it in action&lt;/p&gt; &lt;p align="center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3al8prbfK5o&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/3al8prbfK5o&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Ball Pool&lt;/strong&gt;: Ball Pool works on the laws of physics. Shake the browser, move or throw the balls around and see how the browser and see how the onscreen objects react to it. &lt;/p&gt; &lt;p&gt;  &lt;strong&gt;From the Author:&lt;/strong&gt;  Start by shaking the browser, then create new balls (click on empty space), move some others (drag) and reset the screen (double click).&lt;/p&gt; &lt;p&gt;It’s like the old days once again! &lt;img src="http://tnerd.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /&gt; &lt;/p&gt; &lt;p&gt;  Click &lt;a href="http://www.chromeexperiments.com/hosted/ballpool/index.html" target="_blank"&gt;here&lt;/a&gt; to  launch the experiment or watch the following video to see the app in action&lt;/p&gt; &lt;p align="center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/XPlybgUiotA&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/XPlybgUiotA&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Boombox: &lt;/strong&gt;This  application lets you control the volume of the sound by resizing the channel  window.&lt;/p&gt; &lt;p&gt; For demo purpose the application plays a song online, however, it would be great if it can be integrated with any of the music services online.&lt;/p&gt; &lt;p&gt;  Click &lt;a href="http://boombox.paradoxica.net/" target="_blank"&gt;here&lt;/a&gt; to  launch the application or watch the video below to see the app in action&lt;/p&gt; &lt;p align="center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/A_i9xmVndbc&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/A_i9xmVndbc&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Monster:&lt;/strong&gt; This  application demonstrates how JavaScript is used instead of Flash to create 3D  objects and animation in the browser. &lt;/p&gt;  &lt;p&gt;  Click &lt;a href="http://deanm.github.com/pre3d/monster.html" target="_blank"&gt;here&lt;/a&gt; to launch the animation or watch the video below to see it in action.&lt;/p&gt;&lt;p align="center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/E9EQSV7zRZg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/E9EQSV7zRZg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;a href="http://tnerd.com/tag/google/" title="Google" rel="tag"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-4515929503483335323?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/4515929503483335323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=4515929503483335323' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/4515929503483335323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/4515929503483335323'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/03/chrome-experiments-power-of-javascript.html' title='Chrome Experiments - The Power of JavaScript!'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-4954839974212794648</id><published>2009-03-03T05:12:00.000-08:00</published><updated>2009-03-03T05:14:22.829-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sesconference'/><category scheme='http://www.blogger.com/atom/ns#' term='outsourcing'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='Technologies'/><category scheme='http://www.blogger.com/atom/ns#' term='Indus  Net'/><category scheme='http://www.blogger.com/atom/ns#' term='web  marketing'/><title type='text'>Abhishek Rungta interviewed at SES London 2009</title><content type='html'>&lt;object width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/p6YvMQjBikw&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/p6YvMQjBikw&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-4954839974212794648?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/4954839974212794648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=4954839974212794648' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/4954839974212794648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/4954839974212794648'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/03/abhishek-rungta-interviewed-at-ses.html' title='Abhishek Rungta interviewed at SES London 2009'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-8642522067275995652</id><published>2009-03-02T05:12:00.000-08:00</published><updated>2009-04-14T05:22:09.233-07:00</updated><title type='text'>Show You’re a Professional with Isilon Certification</title><content type='html'>In the IT industry you can show you’re a professional with Isilion and the Isilion certification. With the Isilion certifications training and the Isilion practice exams, you cannot go wrong in any way. You will be able to pass your exams with flying colors.&lt;br /&gt;Everything that you need will be made available to you including Isilion training tools, Isilion exams preparation and the Isilion study guide prepared by certified &lt;a href="http://www.examsexpert.com/"&gt;exams expert&lt;/a&gt;. With all of this and so much more, you will not fail in the task you have set for yourself.&lt;br /&gt;After all of the effort that you have put forth, studying day in and day out, the Isilion exams will be a walk in the park by the time that you are done. There are professional instructors and teachers that are at your disposal to help you every step of the way.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Move On With Your Career&lt;/span&gt;&lt;br /&gt;They want to make sure that you get your certifications with Isilion and move forward in the career and field of your choice. By getting your certifications, you are showing the IT world that you are ready to undertake one of the most challenging careers in today’s market place.&lt;br /&gt;Employers will see you as someone that is taking their career seriously and will not let anything stand in their way of getting what they want. You will have the opportunity to shine above all others when you can show a potential employer that you are certified.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Use the Guidelines&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;By following the study guide for Isilion that is made available to you by you are getting all of the information that you could possible need to help you succeed. Although they cannot take the test for you, with all of the support that you will receive you will feel as though they are actually there helping you with every question that you have to answer for the Isilion exam or other exams preparation study guides , tutorial, practice tests, &lt;a href="http://www.examsexpert.com/200-045.html"&gt;200-045 practice exam&lt;/a&gt;.&lt;br /&gt;So, what are you waiting for? There is no time like the present to jump on board with Isilion and start studying for your future. This is a choice and a decision that you will never regret working with Isilion. Secure your future and get your certifications with exams experts today and Isilion so you will never look back again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-8642522067275995652?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/8642522067275995652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=8642522067275995652' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/8642522067275995652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/8642522067275995652'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/03/show-youre-professional-with-isilon.html' title='Show You’re a Professional with Isilon Certification'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-1361374611183556655</id><published>2009-02-18T23:45:00.000-08:00</published><updated>2009-02-18T23:53:31.138-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Security Enhancements'/><category scheme='http://www.blogger.com/atom/ns#' term='Zend'/><category scheme='http://www.blogger.com/atom/ns#' term='Framework'/><title type='text'>Zend Framework 1.7.5 released - contains important security fix</title><content type='html'>&lt;p&gt;Zend Framework 1.7.5 has been released, and as always you can download the latest copy of Zend Framework for free from:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://framework.zend.com/download/latest/"&gt;http://framework.zend.com/download/latest/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Besides the normal small enhancements and bug fixes that come with an incremental release such as this, there is also a rather important (and somewhat controversial) security fix that was added. This security fix breaks backwards compatibility with the previous version, because it simply must in order to exist. There is however a way to turn the security fix off to keep your current applications working in the case that this change breaks you.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-1361374611183556655?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/1361374611183556655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=1361374611183556655' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/1361374611183556655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/1361374611183556655'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/02/zend-framework-175-released-contains.html' title='Zend Framework 1.7.5 released - contains important security fix'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-2543725749460700163</id><published>2009-02-02T06:13:00.000-08:00</published><updated>2009-02-02T06:15:53.878-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>5 Popular CSS Frameworks + Tutorials &amp; Tools for Getting Started</title><content type='html'>&lt;p&gt;CSS frameworks have grown in popularity recently, enabling developers to &lt;strong&gt;rapidly prototype designs&lt;/strong&gt;. The idea of CSS Frameworks is to do all the heavy lifting of the repetitive tasks you do over and over again on each site, allowing you to get faster results and get to the fun stuff designers love.&lt;/p&gt; &lt;p&gt;Main features of good CSS Framework is to &lt;i&gt;&lt;strong&gt;1)&lt;/strong&gt;&lt;/i&gt; rapidly speed up our development time,&lt;i&gt; &lt;strong&gt;2)&lt;/strong&gt;&lt;/i&gt; should have a very small size, &lt;i&gt;&lt;strong&gt;3)&lt;/strong&gt;&lt;/i&gt; have good documentation and tutorials and &lt;i&gt;&lt;strong&gt;4)&lt;/strong&gt;&lt;/i&gt; have clean grid structure. You will need a basic understanding of the CSS framework you are going to use to understand why and how things get solved.&lt;/p&gt; &lt;p&gt;In today’s post we present an overview of the &lt;strong&gt;5 most popular CSS Frameworks&lt;/strong&gt;; &lt;strong&gt;showcasing handpicked tutorials &lt;/strong&gt;for using each of them among other &lt;strong&gt;useful tools and resources&lt;/strong&gt; you will definitely find useful and time-saving.&lt;/p&gt; &lt;p&gt;&lt;span id="more-8074"&gt;&lt;/span&gt;&lt;/p&gt; &lt;h3 class="title"&gt;1. &lt;a href="http://960.gs/"&gt;960 CSS Framework&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;img src="http://noupe.com/img/css-framework-1.jpg" alt="5 Popular CSS Frameworks + Tutorials &amp;amp; Tools for Getting Started" /&gt;&lt;/p&gt; &lt;p&gt;The 960 Grid System is an effort to streamline web development workflow by providing commonly used dimensions, based on a width of 960 pixels. There are two variants: 12 and 16 columns, which can be used separately or in tandem. The 960.css file itself is only 3.6 KB compressed.&lt;/p&gt; &lt;p&gt;&lt;a href="http://960.gs/demo.html" class="download"&gt;Demo can be found here&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Tutorials Explaining how to use 960 CSS Framework&lt;/strong&gt;&lt;/p&gt; &lt;ul class="post"&gt;&lt;li&gt; &lt;h5 class="title"&gt; &lt;a href="http://nettuts.com/videos/screencasts/a-detailed-look-at-the-960-css-framework/"&gt;A Detailed Look at the 960 CSS Framework&lt;/a&gt;&lt;/h5&gt; &lt;p&gt;&lt;img src="http://noupe.com/img/css-framework-1-1.jpg" alt="Popular CSS FrameWorks: 10 Useful Tutorials For Getting Stared" /&gt;&lt;/p&gt; &lt;p&gt; “Jeffrey Way” takes a close look at the 960 CSS Framework, explaing the pros and cons of using it. He also takes us step by by step and create a simple “12 column” layout with a simple header and two column structure. Most important tip here is : you must assign a class to each div. Naming conventions require that that the class name begins with “grid_” and ends with the number of columns needed.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;h5 class="title"&gt; &lt;a href="http://www.divitodesign.com/2008/12/960-css-framework-learn-basics/"&gt;960 CSS Framework - Learn the Basics&lt;/a&gt;&lt;/h5&gt; &lt;p&gt;Stefan Vervoort takes the heavy work for you and explains the basics of this framework so you can start developing with 960 pretty fast. Basics principles explained here include: not to edit 960.css, Loading the grid, Containers, Grids / Columns, Margins and styling. &lt;a href="http://www.divitodesign.com/2009/01/tricks-to-solve-960-css-framework-problems/"&gt;Another post&lt;/a&gt; by Stefan where he solves some of the problem he faced while working with this framework.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;h5 class="title"&gt; &lt;a href="http://designinfluences.com/fluid960gs/"&gt;Fluid 960 Grid System&lt;/a&gt;&lt;/h5&gt; &lt;p&gt;&lt;img src="http://noupe.com/img/css-framework-1-3.jpg" alt="Popular CSS FrameWorks: 10 Useful Tutorials For Getting Stared" /&gt;&lt;/p&gt; &lt;p&gt;The Fluid 960 Grid System templates have been built upon the work of Nathan Smith and his 960 Grid System using effects from the Mootools JavaScript library.&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;h3 class="title"&gt;2. &lt;a href="http://blueprintcss.org/"&gt;Blueprint CSS Framework&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://blueprintcss.org/"&gt;&lt;img src="http://noupe.com/img/css-framework-2.jpg" alt="Popular CSS FrameWorks: 10 Useful Tutorials For Getting Stared" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Blueprint is a CSS framework, which aims to cut down on your CSS development time. It gives you a solid CSS foundation to build your project on top of, with an easy-to-use grid, sensible typography, nice-looking forms and even a stylesheet for printing. One of its main feature is performing a mass reset of browser default styles, offering a methodology to use for customizable layout grids and most important is that all elements are override-able.&lt;/p&gt; &lt;p&gt;There are  several &lt;a href="http://github.com/joshuaclayton/blueprint-css/tree/master/blueprint/plugins"&gt;Blueprint plugins&lt;/a&gt; available which can overwrite aspects of the framework or add new styles for you to use. &lt;/p&gt; &lt;p&gt;&lt;a href="http://blueprintcss.org/tests/" class="download"&gt;Check out the Live Demos&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Tutorials Explaining how to use Blueprint CSS Framework and tools using it &lt;/strong&gt;&lt;/p&gt; &lt;ul class="post"&gt;&lt;li&gt; &lt;h5 class="title"&gt;&lt;a href="http://blueflavor.com/blog/2007/oct/24/blueprint-css-101/"&gt;BlueprintCSS 101&lt;/a&gt;&lt;/h5&gt; &lt;p&gt;Jeff Croft  explains Blueprint’s core feature, how we use it, how it has impacted our workflow, and what we like about it.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;h5 class="title"&gt;&lt;a href="http://nettuts.com/tutorials/html-css-techniques/a-closer-look-at-the-blueprint-css-framework/"&gt;A Closer Look At the Blueprint CSS Framework&lt;/a&gt;&lt;/h5&gt; &lt;p&gt;In this tutorial we will get a look at the inner workings of Blueprint and we’ll take a look at demo application that uses Blueprint to get a better idea of how to actually use the framework.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;h5 class="title"&gt;&lt;a href="http://www.garethjmsaunders.co.uk/downloads/blueprintcss_cheatsheet_0-7-1.pdf"&gt;Blueprint CSS Cheat Sheet&lt;/a&gt;&lt;/h5&gt; &lt;/li&gt;&lt;li&gt; &lt;h5 class="title"&gt;&lt;a href="http://kematzy.com/blueprint-generator/"&gt;Blueprint Grid CSS Generator&lt;/a&gt;&lt;/h5&gt; &lt;p&gt;This tool will help you generate more flexible versions of Blueprint’s grid.css and compressed.css and grid.png image file for use as a background image during development- very handy for making sure everything lines up properly. Whether you prefer 8, 10,16 or 24 columns in your design, this generator now enables you that flexibility with Blueprint.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;h5 class="title"&gt;&lt;a href="http://pxtoem.com/"&gt;PXtoEM&lt;/a&gt;&lt;/h5&gt; &lt;p&gt;&lt;a href="http://pxtoem.com/"&gt;&lt;img src="http://noupe.com/img/css-framework-2-1.jpg" alt="Popular CSS FrameWorks: 10 Useful Tutorials For Getting Stared" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;PXtoEM.com is a website that makes converting PX values to EM values easier. The CSS file of the values you’ve choosen can be get based on the typography.css portion of Blueprint CSS to setup a default typography.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; &lt;h5 class="title"&gt;&lt;a href="http://www.constructyourcss.com/"&gt;Construct&lt;/a&gt;&lt;/h5&gt; &lt;p&gt;Construct, a visual layout editor based on Blueprint &amp;amp; jQuery, Construct, a useful tool for CSS designers and as proof that a visual layout editor is possible to acheive with clean CSS &amp;amp; semantic HTML.&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;h3 class="title"&gt;3. &lt;a href="http://docs.jquery.com/UI/Theming/API#The_jQuery_UI_CSS_Framework"&gt;The jQuery UI CSS Framework&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://docs.jquery.com/UI/Theming/API#The_jQuery_UI_CSS_Framework"&gt;&lt;img src="http://noupe.com/img/css-framework-3.jpg" alt="Popular CSS FrameWorks: 10 Useful Tutorials For Getting Stared" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;jQuery UI includes a robust CSS Framework designed for building custom jQuery widgets. The framework includes classes that cover a wide array of common user interface needs, and can be manipulated using jQuery UI &lt;a href="http://www.themeroller.com/"&gt;ThemeRoller&lt;/a&gt;. By building your UI components using the jQuery UI CSS Framework, you will be adopting shared markup conventions and allowing for ease of code integration across the plugin community at large. &lt;/p&gt; &lt;ul class="post"&gt;&lt;li&gt; &lt;h5 class="title"&gt;&lt;a href="http://www.filamentgroup.com/lab/styling_buttons_and_toolbars_with_the_jquery_ui_css_framework/"&gt;Styling Buttons and Toolbars with the jQuery UI&lt;/a&gt;&lt;/h5&gt; &lt;p&gt;&lt;a href="http://www.filamentgroup.com/lab/styling_buttons_and_toolbars_with_the_jquery_ui_css_framework/"&gt;&lt;img src="http://noupe.com/img/css-framework-3-1.jpg" alt="Popular CSS FrameWorks: 10 Useful Tutorials For Getting Stared" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;A real-world examples of themeable buttons and toolbars using the &lt;a href="http://docs.jquery.com/UI/Theming/API"&gt;jQuery UI CSS framework&lt;/a&gt;, a system of classes developed for &lt;a href="http://jqueryui.com/demos/"&gt;jQuery UI widgets&lt;/a&gt; that can easily be applied to any plugin, and even static content. Here are button examples that demonstrate how to incorporate the power of the CSS framework classes in a custom widget.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.filamentgroup.com/examples/buttonFrameworkCSS/" class="download"&gt;Check out the Live Demos here&lt;/a&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;h5 class="title"&gt;4. &lt;a href="http://www.yaml.de/en/"&gt;YAML&lt;/a&gt;&lt;/h5&gt; &lt;p&gt;&lt;a href="http://www.yaml.de/en/"&gt;&lt;img src="http://noupe.com/img/css-framework-4.jpg" alt="Popular CSS FrameWorks: 10 Useful Tutorials For Getting Stared" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Yaml (Yet Another Multicolumn Layout) focused on flexible layouts and offers column and grid based design elements for flexible, elastic or fixed layouts. You will need a license to use it. &lt;/p&gt; &lt;p&gt;YAML comes with a a very nice &lt;a href="http://builder.yaml.de/"&gt;Ajax builder&lt;/a&gt;, a handy tool for visual development of YAML-based CSS layouts which allows you to put the containers of the layout visually together via drag-n-drop. The valid HTML- and CSS-code is generated automatically on the fly.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.yaml.de/fileadmin/examples/index.html" class="download"&gt;Check out the Live Demos here&lt;/a&gt;&lt;/p&gt; &lt;ul class="post"&gt;&lt;li&gt; &lt;h5 class="title"&gt;&lt;a href="http://www.smashingmagazine.com/2008/06/26/flexible-layouts-challenge-for-the-future/"&gt;Flexible Layouts with YAML&lt;/a&gt;&lt;/h5&gt; &lt;p&gt;&lt;a href="http://www.smashingmagazine.com/2008/06/26/flexible-layouts-challenge-for-the-future//"&gt;&lt;img src="http://noupe.com/img/css-framework-4-1.jpg" alt="Popular CSS FrameWorks: 10 Useful Tutorials For Getting Stared" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Dirk Jesse, the developer of YAML (Yet Another Multicolumn Layout), an (X)HTML&amp;amp;CSS framework which explains his motivation for YAML in the last paragraph of the article, providing an overview of what is possible with YAML and may deliver some ideas for your future layouts.&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;h5 class="title"&gt;5. &lt;a href="http://developer.yahoo.com/yui/grids/"&gt;Yahoo YUI Grids CSS&lt;/a&gt;&lt;/h5&gt; &lt;p&gt;&lt;a href="http://developer.yahoo.com/yui/grids/"&gt;&lt;img src="http://noupe.com/img/css-framework-5.jpg" alt="Popular CSS FrameWorks: 10 Useful Tutorials For Getting Stared" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The foundational YUI Grids CSS offers four preset page widths, six preset templates, and the ability to stack and nest subdivided regions of two, three, or four columns. The 4kb file provides over 1000 page layout combinations. Features include: Self-clearing footer, customization of width for fixed-width layouts, Supports fluid-width (100%) layouts and more.&lt;/p&gt; &lt;p&gt;The &lt;a href="http://developer.yahoo.com/yui/grids/builder/"&gt;YUI Grids Builder&lt;/a&gt; — a simple interface for Grids customization.&lt;/p&gt; &lt;p&gt;Don’t forget to check the&lt;a href="http://yuiblog.com/assets/pdf/cheatsheets/css.pdf"&gt; CSS Reset/Base/Fonts/Grids Cheat Sheet&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-2543725749460700163?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/2543725749460700163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=2543725749460700163' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2543725749460700163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2543725749460700163'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/02/5-popular-css-frameworks-tutorials.html' title='5 Popular CSS Frameworks + Tutorials &amp; Tools for Getting Started'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-2581231084136629577</id><published>2009-01-29T03:25:00.000-08:00</published><updated>2009-01-29T03:31:53.460-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP techniques'/><title type='text'>Dynamic Image Generation</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Long and boring back-story....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One of the standard features of a message board is allowing members to have a signature, which is appended to the bottom of each post they make. Posters can put whatever they want into the signature (within forum settings). Putting quotes in one's signature is one of the more popular things to do.&lt;br /&gt;&lt;br /&gt;A lot of people put in some motto they live by, some funny quote by some famous person, whatever. Some people like to quote things other posters on the board have said. I am one of those people. I think it's fun and promotes a sense of belonging to the community.&lt;br /&gt;&lt;br /&gt;I've been a member of the phpfreaks forum for a number of years now, and over the years, I have posted and come across quotes that were (to me, anyways) worth collecting. But having a bunch of quotes in a sig isn't very convenient. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.phpfreaks.com/tutorial/php-add-text-to-image"&gt;&lt;span style="font-weight:bold;"&gt;Click Here&lt;/span&gt;&lt;/a&gt; to Read Full Article from www.phpfreaks.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-2581231084136629577?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/2581231084136629577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=2581231084136629577' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2581231084136629577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2581231084136629577'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/01/dynamic-image-generation.html' title='Dynamic Image Generation'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-5778286059531074248</id><published>2009-01-27T23:29:00.000-08:00</published><updated>2009-01-27T23:35:23.984-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP training'/><title type='text'>MySQL University</title><content type='html'>MySQL University is a series of free web seminars. Each week (on Thursdays) you have a unique opportunity to learn something interesting from &lt;a href="http://www.script2please.com/php-development.html"&gt;MySQL developers&lt;/a&gt; and professionals.&lt;br /&gt;&lt;br /&gt;MySQL University sessions cover wide range of topics including server administration, extending MySQL functionality, or just tips for better performance of your queries.&lt;br /&gt;&lt;br /&gt;The sessions are conducted using &lt;a href="http://www.dimdim.com/"&gt;DimDim&lt;/a&gt;, a web based conference tool build in Flash. It works really good even if your connection is not the fastest one.&lt;br /&gt;During the session, the presenter will show slides and talk about the topic (so it's pretty important that you can understand spoken English), and you and other participants can ask questions using built in chat.&lt;br /&gt;I strongly recommend you to take part in 'live' sessions as it is pretty unique experience, but if for some reason you can't, then there is archive of past sessions, often with flash recording, available at &lt;a href="http://forge.mysql.com/wiki/MySQL_University"&gt;MySQL University's home page&lt;/a&gt;.&lt;br /&gt;On the same page you will also find more detailed information on participation, as well as a schedule of upcoming sessions with abstracts and presentation slides, to help you decide if particular subject will be interesting to you or not.&lt;br /&gt;&lt;br /&gt;There's also &lt;a href="http://www.google.com/calendar/embed?src=2sm2lq8nr230ifm2gujrg1r93k%40group.calendar.google.com"&gt;a Google Calendar with MySQL University Schedule&lt;/a&gt; available, to which you can subscribe.&lt;br /&gt;&lt;br /&gt;From now on, I will (if time permits) post here on PHPfreaks about upcoming sessions that might be interesting for an 'average' PHP developer.&lt;br /&gt;&lt;br /&gt;The one that takes place next Thursday is titled 'Scalability Challenges in an InnoDB-based Replication Environment' and seems to be directed more to server administrators. If however, you run your website on a VPS or a dedicated server, you might as well take a look at it.&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-5778286059531074248?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/5778286059531074248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=5778286059531074248' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/5778286059531074248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/5778286059531074248'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/01/mysql-university.html' title='MySQL University'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-3666011127169696313</id><published>2009-01-22T05:24:00.000-08:00</published><updated>2009-01-22T05:29:59.563-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP training'/><title type='text'>Where can I learn about PHP and MySQL ?</title><content type='html'>&lt;p&gt;The official PHP site is &lt;a href="http://www.php.net/"&gt;http://www.php.net&lt;/a&gt; and the online documentation is found at &lt;a href="http://www.php.net/manual"&gt;http://www.php.net/manual&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If you would rather follow a tutorial, then check out &lt;a href="http://www.devshed.com/"&gt;http://www.devshed.com&lt;/a&gt; (this covers PHP and others) or &lt;a href="http://www.phpbuilder.com/"&gt;http://www.phpbuilder.com&lt;/a&gt; or just do a search on google for PHP Tutorials.&lt;/p&gt;&lt;p&gt;Especially look into how PHP integrates with MySQL so you can program database powered websites. If you are the type of person who likes to dive in the deepend, try downloading some basic scripts from &lt;a href="http://www.hotscripts.com/"&gt;http://www.hotscripts.com&lt;/a&gt; and/or &lt;a href="http://php.resourceindex.com/"&gt;http://php.resourceindex.com&lt;/a&gt; and start ripping apart the code to see what's being done.&lt;/p&gt;&lt;p&gt;The official MySQL site , is &lt;a href="http://www.mysql.org/"&gt;www.mysql.org&lt;/a&gt;, also look into a great mysql tutorial at&lt;/p&gt;&lt;p&gt;&lt;a href="http://dev.mysql.com/doc/refman/5.0/en/tutorial.html"&gt;http://dev.mysql.com/doc/refman/5.0/en/tutorial.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;lastly below is a link to a dozen php and mysql tutorials frm webreference.com &lt;a href="http://www.webreference.com/programming/php/"&gt;http://www.webreference.com/programming/php/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://indusnetacademy.com/professional-php-mysql-developer"&gt;php mysql training cources&lt;/a&gt; at Kolkata, India&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-3666011127169696313?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/3666011127169696313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=3666011127169696313' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/3666011127169696313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/3666011127169696313'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/01/where-can-i-learn-about-php-and-mysql.html' title='Where can I learn about PHP and MySQL ?'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-3358268368113034103</id><published>2009-01-22T04:36:00.000-08:00</published><updated>2009-01-22T04:40:51.510-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP 5'/><title type='text'>PHP 5.3 on Windows</title><content type='html'>Congratulations to the PHP community on its PHP 5.3 alpha 2 release in December.  In roughly one month, there have been over 80,000 downloads of the alpha 2 release from unique IP addresses.&lt;br /&gt;&lt;br /&gt;You can see that interest in PHP on Windows is growing significantly when you compare this to the 40,000 or so Windows downloads of PHP 5.2 alpha and beta combined over nearly five months.&lt;br /&gt;&lt;br /&gt;One of the critical accomplishments in 5.3 has been updating the code base so that the core engine can be built under the latest version of Visual C (VC9).   This update has enabled members of the community to focus on optimizing the PHP core to run on Windows.   Already, with alpha 2, the release is proving itself to be a stable, robust implementation.&lt;br /&gt;&lt;br /&gt;The community anticipates hitting general availability for 5.3 in the spring.  Interest in that release is already running high and should continue to grow in the coming weeks.&lt;br /&gt;&lt;br /&gt;Source: http://port25.technet.com/archive/2009/01/16/php-5-3-on-windows-update.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-3358268368113034103?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/3358268368113034103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=3358268368113034103' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/3358268368113034103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/3358268368113034103'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/01/php-53-on-windows.html' title='PHP 5.3 on Windows'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-623638187071567487</id><published>2009-01-16T06:35:00.000-08:00</published><updated>2009-01-22T03:08:42.976-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP techniques'/><title type='text'>PHP Cheat Sheet</title><content type='html'>The PHP cheat sheet is a one-page reference sheet, listing date format arguments, regular expression syntax and common functions.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_klK0Vvuf1U8/SXCcXmaodzI/AAAAAAAAAA8/B3JX_PEGlZo/s1600-h/php-cheat-sheet-v1.png"&gt;&lt;img style="cursor: pointer; width: 647px; height: 400px;" src="http://1.bp.blogspot.com/_klK0Vvuf1U8/SXCcXmaodzI/AAAAAAAAAA8/B3JX_PEGlZo/s400/php-cheat-sheet-v1.png" alt="" id="BLOGGER_PHOTO_ID_5291901491423508274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You may down load the orginal image from the below links&lt;br /&gt;http://www.addedbytes.com/download/php-cheat-sheet-v1/png/&lt;br /&gt;http://www.addedbytes.com/download/php-cheat-sheet-v2/png/&lt;br /&gt;&lt;br /&gt;Find some other interesting and helpful Cheat sheets&lt;br /&gt;http://feeds.feedburner.com/CheatSheets-ILoveJackDanielscom&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/notebook/public/03439767920182003586/BDRKWDAoQ3cC3yuMj"&gt;Maloy Bookmarks&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-623638187071567487?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/623638187071567487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=623638187071567487' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/623638187071567487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/623638187071567487'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/01/php-cheat-sheet.html' title='PHP Cheat Sheet'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_klK0Vvuf1U8/SXCcXmaodzI/AAAAAAAAAA8/B3JX_PEGlZo/s72-c/php-cheat-sheet-v1.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-4488250053007346818</id><published>2009-01-05T22:25:00.000-08:00</published><updated>2009-01-05T22:41:04.372-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP techniques'/><title type='text'>Standardizing Variables to Code Faster</title><content type='html'>If you’ve been coding for a while you probably have some set ways in which you work. I recommend you also widen this method to naming variables, which when done consistently can be a huge help, especially when you are using some fancy MySQL along with your &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;PHP code&lt;/span&gt;. If you are building a site with 15 MySQL tables it is helpful if you know all the column names because you always name them in the same way, but the same thing goes for simple variables, and even ids and classes for HTML elements.&lt;br /&gt;&lt;br /&gt;A very common example can be variables which hold a user’s data. In my case I always use the variable ‘$u’ for holding the username, and the variable ‘$p’ for holding the password. If you are grabbing a lot of data, like first name, last name, email and so on you can make up your own standard set, I use ‘$fn’, ‘$ln’ and ‘$e’ respectively for the three.&lt;br /&gt;&lt;br /&gt;Since you usually use these variables in the same script the importance of naming them consistently may not seem like a huge time saver. However when you get into session variables it saves you a lot of time if you don’t always have to look at where you are defining them to find out the names of each. I pull user data using a mysql query when a user logs in and I immediately place the whole array in a session variable name “$_SESSION['user']“. The names of the columns represent the values of this array, so the username and email would respectively become “$_SESSION['user']['Username']“, “$_SESSION['user']['Email']“. This is the same in my case for every single website I build where applicable.&lt;br /&gt;&lt;br /&gt;User data naming consistency is also very prominent in the MySQL tables themselves. As you can see above my columns are also named the same in each case, a user’s email is always “Email”, his last name is always “LastName”. I steer clear of abbreviations with MySQL tables so other coders can easily see what’s going on as well. Consistency doesn’t just apply to the actual names, you can also apply it to cases. As you can see all my column names are always capitalized, they are like wikiwords, but user session variables which don’t come from MySQL are not capitalized. For example, when a user logs in he is assigned a time, which is usually one hour. If he/she is inactive for more than this time (no refreshes), he/she is logged out. There is no need to store this in the database, and so I know that this is not in there the session variable here is “$_SESSION['user']['time']“. This means that if I come back to work on a site a year after completion I know exactly where variables come from.&lt;br /&gt;&lt;br /&gt;Even if you don’t yet know any PHP, you’re just getting into HTML and CSS you can still use these good practices. When assigning ids and classes to elements try and work out a structure for yourself that you always use. I use empty div tags to clear floats a lot, so I have a separate class named “cl” for this purpose. Whenever I start out a new webpage I include this class by default in the stylesheet since I know I will most likely need it.&lt;br /&gt;&lt;br /&gt;That’s about it for standardizing your coding work, most of it is just common sense really. Try and work out your own method which works best for you. It takes time and a lot of practice to get a system working well since there is so much to think of, but if you always keep this in mind somewhere while coding you’ll be a faster and better coder in no time at all!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Script2please.com&lt;/span&gt; is one of the leading &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;offshore outsourcing&lt;/span&gt; companies in India, We Offer  Rich &lt;a href="http://www.script2please.com/php-developement.html"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;php web development&lt;/span&gt;&lt;/a&gt; services, and &lt;a href="http://script2please.com/custom-web-dev.html"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;custom web development&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Source: http://www.ghacks.net/2009/01/02/web-development-standardizing-variables-to-code-faster/&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-4488250053007346818?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/4488250053007346818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=4488250053007346818' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/4488250053007346818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/4488250053007346818'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2009/01/standardizing-variables-to-code-faster.html' title='Standardizing Variables to Code Faster'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-187270268885398541</id><published>2008-12-05T00:44:00.000-08:00</published><updated>2008-12-05T02:25:22.116-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP 5'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Security Enhancements'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP techniques'/><title type='text'>PHP 5.2.7 Released</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Security Enhancements and Fixes in PHP 5.2.7:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Upgraded PCRE to version 7.8 (Fixes CVE-2008-2371)&lt;/li&gt;&lt;li&gt;Fixed missing initialization of BG(page_uid) and BG(page_gid), reported by Maksymilian Arciemowicz.&lt;/li&gt;&lt;li&gt;Fixed a crash inside gd with invalid fonts (Fixes CVE-2008-3658).&lt;/li&gt;&lt;li&gt;Fixed a possible overflow inside memnstr (Fixes CVE-2008-3659).&lt;/li&gt;&lt;li&gt;Fixed incorrect php_value order for Apache configuration, reported by Maksymilian Arciemowicz.&lt;/li&gt;&lt;li&gt;Fixed safe_mode related security issues detailed in CVE-2008-2665 and CVE-2008-2666.&lt;/li&gt;&lt;li&gt;Crash with URI/file..php (filename contains 2 dots) (Fixes CVE-2008-3660)&lt;/li&gt;&lt;li&gt;IMAP toolkit crash: rfc822.c legacy routine buffer overflow. (Fixes CVE-2008-2829)&lt;/li&gt;&lt;/ul&gt; &lt;span style="font-weight: bold;"&gt;Some of the key enhancements in PHP 5.2.7 include:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fixed several memory leaks inside the readline and sqlite extensions&lt;/li&gt;&lt;li&gt;A number of corrections relating to date parsing inside the date extension&lt;/li&gt;&lt;li&gt;Fixed bugs relating to data retrieval in the PDO extension&lt;/li&gt;&lt;li&gt;A series of crashes in various areas of code were resolved&lt;/li&gt;&lt;li&gt;Several corrections were made to the strip_tags() function interms of &lt;&gt;&lt;/li&gt;&lt;li&gt;A number of bugs were fixed in extract() function when&lt;/li&gt;&lt;li&gt; EXTR_REFS flag is being used&lt;/li&gt;&lt;li&gt;Added the ability to log PHP errors to the SAPI (Ex. Apachelog) logging facility&lt;/li&gt;&lt;li&gt;Over 170 bug fixes.&lt;/li&gt;&lt;/ul&gt; For users upgrading from PHP 5.0 and PHP 5.1, an upgrade guide is available here &lt;a href="http://www.php.net/migration52" target="_blank"&gt;http://www.php.net/&lt;wbr&gt;migration52&lt;/a&gt;), detailing the changes between those releases and PHP &lt;a href="http://5.2.7./" target="_blank"&gt;5.2.7.&lt;/a&gt; For a full list of changes in PHP 5.2.7, see the ChangeLog (&lt;a href="http://www.php.net/ChangeLog-5.php#5.2.7" target="_blank"&gt;http://www.php.net/ChangeLog-&lt;wbr&gt;5.php#5.2.7&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.script2please.com/php-development.html"&gt;PHP Web Development&lt;/a&gt; - PHP mysql web development services, php solutions, custom development of Internet applications using PHP for high performance and enterprise ready web application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-187270268885398541?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/187270268885398541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=187270268885398541' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/187270268885398541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/187270268885398541'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2008/12/php-527-released.html' title='PHP 5.2.7 Released'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-2517116166304959035</id><published>2008-11-25T21:45:00.001-08:00</published><updated>2008-11-25T22:31:05.751-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wordpress'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='theme'/><title type='text'>3 best ways to Optimize your wordpress theme</title><content type='html'>One of most powerful and advance feature of wordpress is it themes. There are thousands of FREE and paid themes available for wordpress. It is not harder to create a new theme for wordpress even if you have only a little knowledge of php web development or html. Wordpress themes are what display everything on your blog, including pages, posts, categories, archives and your front page.You can create your own theme or you can use the Yvo Schaap’s online theme designer to create wide range of colorful and beautiful themes easily.Every wordpress theme uses many different functions, loops to load content on your blog. Wordpress’s core system itself calls many queries before loading your theme files. With few of following tweaks, you can easily optimize your wordpress themes to reduce server load and to provide faster output.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Define variables instead of calling functions each time&lt;/span&gt;&lt;br /&gt;There could be many functions being used in themes. You can define variables in your header file to avoid calling those functions again and again and just use the pre-define variable by a single function call. For example,  you may be using bloginfo, the_permalink, get_option etc. Define their variables and avoid using them again and again for same purpose.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Avoid loading unnecessary javascript, css&lt;/span&gt;&lt;br /&gt;At some of your pages you may need additional javascript or css files to be loaded.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3.Use WP super cache is one of best plugins for me. &lt;/span&gt;&lt;br /&gt;It generate static content for your blog. Even the function calls. It can generate static front page, single posts, category pages in form of html. So until the cache time is over, those html files will be loaded to user’s browser and generate only a tiny bit of load to your server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-2517116166304959035?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/2517116166304959035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=2517116166304959035' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2517116166304959035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/2517116166304959035'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2008/11/3-best-ways-to-optimize-your-wordpress.html' title='3 best ways to Optimize your wordpress theme'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-6216700205534554032</id><published>2008-11-12T02:53:00.000-08:00</published><updated>2008-11-12T02:59:42.658-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Internet Marketing'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='design resources'/><category scheme='http://www.blogger.com/atom/ns#' term='Design'/><title type='text'>Submit Your Design News</title><content type='html'>if you have facts related to design and want to spread,  convey the message to large number of online visitors then these are the resources which will take you a step ahead to be published. just register and submit your news their.&lt;br /&gt;&lt;br /&gt;http://www.designfloat.com/submit&lt;br /&gt;http://designbump.com/submit&lt;br /&gt;http://graphic-design-links.com/submit.php&lt;br /&gt;http://devmarks.com/&lt;br /&gt;http://www.wscoop.com/&lt;br /&gt;http://www.dzone.com/&lt;br /&gt;http://designm.ag/&lt;br /&gt;http://design-related.com/&lt;br /&gt;http://www.fuelyourcreativity.com/&lt;br /&gt;http://cssglobe.com/&lt;br /&gt;http://sharebrain.info/&lt;br /&gt;http://www.youthedesigner.com/&lt;br /&gt;http://help-developer.com/index.php/2008/07/community-links/&lt;br /&gt;http://abduzeedo.com/user_news/&lt;br /&gt;http://scriptandstyle.com/submit&lt;br /&gt;http://kailoon.com/&lt;br /&gt;http://www.crazyleafdesign.com/blog/submit-news/&lt;br /&gt;http://www.stylegala.com/&lt;br /&gt;http://www.noupe.com/&lt;br /&gt;http://psdtuts.com/userlinks/user-link-feed/&lt;br /&gt;http://vectortuts.com/features/user-link-feed/#add&lt;br /&gt;http://nettuts.com/userlinks/user-link-feed/&lt;br /&gt;http://csscreme.com/submit_news/&lt;br /&gt;http://psdlearning.com/2008/07/user-links/&lt;br /&gt;http://www.brushking.eu/submit_news.php&lt;br /&gt;http://www.cssleak.com/submit_news.php&lt;br /&gt;http://www.myinkblog.com/2008/07/06/user-link-feed-my-ink-blog/&lt;br /&gt;http://www.knowtebook.com/community-link-feed-1112.htm&lt;br /&gt;http://www.cssdrive.com/index.php/main/submit/&lt;br /&gt;http://www.visual-blast.com/&lt;br /&gt;http://www.smashingapps.com/news/linkslist.php?TB_iframe=true&amp;amp;height=300&amp;amp;width=450&lt;br /&gt;http://freelancefolder.com/submit-link/&lt;br /&gt;http://www.QBN.com&lt;br /&gt;http://www.naldzgraphics.com:&lt;br /&gt;http://styl.eti.me/&lt;br /&gt;http://vot.eti.me/&lt;br /&gt;http://www.psdtop.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-6216700205534554032?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/6216700205534554032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=6216700205534554032' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/6216700205534554032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/6216700205534554032'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2008/11/submit-your-design-news.html' title='Submit Your Design News'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-3151812235068092091</id><published>2008-11-12T02:35:00.000-08:00</published><updated>2008-11-12T02:47:10.644-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='E-Commerce'/><title type='text'>Why Shopping Cart Software?</title><content type='html'>Don't let the name fool you, shopping cart software is a lot more than just a cart. Good shopping cart software can help your Internet business in other capacities as well, including:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Payment Processing &lt;/span&gt;– Many programs offer credit card processing as well as check, COD or other methods of possessing payments.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Webpage Design&lt;/span&gt; – Many merchants are not web designers, so some programs will include wizards to help you build your webpage without requiring you to know HTML.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Storefront Design&lt;/span&gt; – Store front wizards incorporate templates or other tools to help you set up your storefront.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Inventory Control&lt;/span&gt; – Good programs will keep track of your inventory and generate reports.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Shipping&lt;/span&gt; – Nearly all software offer a shipping tool that calculates shipping costs for customers based on parameters that you set, some can even link up to common shipping methods like FedEx.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tax Calculation&lt;/span&gt; – Most shopping cart programs can calculate taxes, a valuable tool, especially since many states are considering requiring that merchants collect taxes for online sales.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Customer Management&lt;/span&gt; – Many shopping carts programs have features that will let customers view their previous purchases. The program will also recognize the customer when they come back for a return visit.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Marketing&lt;/span&gt; – A shopping cart is useless if you don't sell anything. Marketing help can be invaluable, some programs offer information on affiliate programs and help with merchandising. Many are able to create coupons, gift certificates or other incentives. In addition, they provide sales reports and 'hit' or traffic information as well.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Security&lt;/span&gt; – Customers will not want to purchase online if they feel the website cannot protect their personal information. Many shopping cart programs will offer protection by encrypting information, processing credit cards through reputable processing services and by allowing customers to move through their program without having to download cookies.&lt;br /&gt;On this site, you'll find articles on shopping cart software and services and reviews so you can decide which software will best fit your business plans. At TopTenREVIEWS - We do the research so you don't have to.™&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What to Look for in Shopping Cart Software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Choosing the right shopping cart is one of the most crucial steps to making your online business a success. Your customers need to be able to purchase your product(s) as easily as possible, with a sense of security. For the business owner, the software should be simple to use, with lots of useful features and great customer support when needed.&lt;br /&gt;&lt;br /&gt;We reviewed 22 of the leading shopping carts programs to help you find the program that will improve your chances of reaching your sales goals.&lt;br /&gt;&lt;br /&gt;Below are the criteria &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fecommerce-software-review.toptenreviews.com%2F&amp;amp;ei=urIaSeHTBouw6wOMrbzFDg&amp;amp;usg=AFQjCNGTSQsAQEgHptYIAMwESgmeK1EkCg&amp;amp;sig2=kT-o1cKkpXxs0ow9j-8OBg"&gt;TopTenREVIEWS&lt;/a&gt; used to rate shopping cart software:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Feature Se&lt;/span&gt;t – The features range from a simple shopping cart to accounting and inventory functions. The programs that offered the most features and in turn, the most flexibility received high scores in this area. The most important goal is to find the program that includes desired features at a desirable cost.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ease of Use &lt;/span&gt;– Good programs are easy for the entrepreneur and the customer to use. Wizards are helpful in webpage and storefront development, menus and help should be easily assessable and presented in a logical manner.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ease of Setup&lt;/span&gt; – The software should install quickly and without errors. If it is a program that is accessed online, it should be easy to get to and use.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Help/Documentation&lt;/span&gt; – Excellent customer and technical support is paramount. The program should offer inner program support in help menus, user manuals, FAQs pages or other methods. The manufacture should offer support through telephone, email, mail or chat. The help should be useful and prompt.&lt;br /&gt;&lt;br /&gt;Once your have your DBA ("Doing Business As") established, a bank account open, market desirable products and the perfect shopping cart software, you may be well on your way to a successful Internet business. If you're already in business, but are not happy with your shopping cart program or have out grown it, look into a new program that will help you manage all of your concerns more efficiently.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Top E-commerce Software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;www.shopsite.com/&lt;br /&gt;www.merchandizer.com/&lt;br /&gt;ecommerce.networksolutions.com/&lt;br /&gt;www.storefront.net&lt;br /&gt;www.mercantec.com/&lt;br /&gt;www.freemerchantcredit.com/&lt;br /&gt;www.goemerchant.com&lt;br /&gt;www.mivamerchant.com/&lt;br /&gt;www.1shoppingcart.com&lt;br /&gt;www.x-cart.com&lt;br /&gt;www.vpasp.com/&lt;br /&gt;www.actinic.co.uk/&lt;br /&gt;www.justaddcommerce.net/&lt;br /&gt;www.cubecart.com/&lt;br /&gt;www.webmastercart.com&lt;br /&gt;www.webgenie.com&lt;br /&gt;www.salescart.net/&lt;br /&gt;www.easycart.net/&lt;br /&gt;www.americart.com&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.script2please.com/php-development.html"&gt;PHP web development&lt;/a&gt;, &lt;a href="http://www.script2please.com/open-source.html"&gt;E-Commerce Solutions&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-3151812235068092091?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/3151812235068092091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=3151812235068092091' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/3151812235068092091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/3151812235068092091'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2008/11/why-shopping-cart-software.html' title='Why Shopping Cart Software?'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-934360242012660924</id><published>2008-11-06T01:28:00.000-08:00</published><updated>2008-11-06T01:35:24.322-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Content management system'/><title type='text'>10 Promising Content Management Systems</title><content type='html'>&lt;p&gt;When it comes to content management systems (CMS) and publishing platforms, there are plenty to choose from. They vary in technologies used, organization structure, performance, and license. You’ve probably heard of popular content management systems such as &lt;a href="http://drupal.org/"&gt;Drupal&lt;/a&gt;, &lt;a href="http://wordpress.org/"&gt;WordPress&lt;/a&gt;, &lt;a href="http://www.movabletype.org/"&gt;Movable Type&lt;/a&gt;, &lt;a href="http://www.joomla.org/"&gt;Joomla!&lt;/a&gt;, and &lt;a href="http://textpattern.com/"&gt;Textpattern&lt;/a&gt;,  but if you want to try a platform that’s a little less main stream – check out  these excellent alternatives. &lt;/p&gt; &lt;p&gt;In this article, you’ll find &lt;strong&gt;10 terrific content management systems&lt;/strong&gt; that may not garner as much  attention as their more popular counterparts - &lt;strong&gt;but should&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;There’s a large amount of content management systems out there, so if your favorite isn’t on here, share it with us in the comments.&lt;/p&gt; &lt;h3&gt;&lt;a href="http://expressionengine.com/"&gt;ExpressionEngine&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://expressionengine.com/"&gt;&lt;img src="http://images.sixrevisions.com/2008/11/04-01_expressionengine.png" alt="ExpressionEngine - screen shot." width="550" height="240" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://expressionengine.com/sales/try"&gt;Go to  ExpressionEngine demo&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;span id="more-198"&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;ExpressionEngine&lt;/em&gt; is a powerful and easy-to-use content management system. ExpressionEngine is known for its flexibility and intuitive Template Engine that lets developers easily mold the CMS into its intended use. It has a built-in caching feature that significantly reduces server load (helpful in times of high traffic). Check out the &lt;a href="http://expressionengine.com/showcase/"&gt;Showcase section&lt;/a&gt; on EE’s  website to see live sites that use ExpressionEngine.&lt;/p&gt; &lt;h3&gt;&lt;a href="http://www.concrete5.org/"&gt;Concrete5&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://www.concrete5.org/"&gt;&lt;img src="http://images.sixrevisions.com/2008/11/04-02_concrete5.jpg" alt="Concrete5 - screen shot." width="550" height="240" /&gt;&lt;/a&gt;&lt;a href="http://www.concrete5.org/"&gt;&lt;br /&gt;Go to Concrete5 demo&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;em&gt;Concrete5&lt;/em&gt; is a solid content management system that’s a breeze to use. You can edit a web page live by entering "edit mode", which makes the regions and elements on the web page you are viewing editable. It has a very robust administration panel with a built-in system for gathering statistics so you don’t need to install a plugin/extension or use a third party application like Google Analytics to monitor your site traffic. &lt;/p&gt; &lt;h3&gt;&lt;a href="http://radiantcms.org/"&gt;Radiant CMS&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://radiantcms.org/"&gt;&lt;img src="http://images.sixrevisions.com/2008/11/04-03_radiant_cms.png" alt="Radiant CMS - screen shot." width="550" height="240" /&gt;&lt;/a&gt;&lt;a href="http://radiantcms.org/demo/"&gt;&lt;br /&gt;Go to Radiant CMS demo&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Radiant CMS&lt;/em&gt; focuses itself for use in small teams. It’s designed as a simple and elegant  CMS akin to &lt;a href="http://gettingreal.37signals.com/ch02_Build_Less.php"&gt;37  Signals applications&lt;/a&gt;, holding out on complicated and unnecessary features to provide users a straightforward interface for creating and editing website content.&lt;/p&gt; &lt;h3&gt;&lt;a href="http://www.cushycms.com/"&gt;CushyCMS&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://www.cushycms.com/"&gt;&lt;img src="http://images.sixrevisions.com/2008/11/04-04_Cushycms.png" alt="CushyCMS - screen shot." width="550" height="240" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;CushyCMS&lt;/em&gt; is a "plug-and-play" content management system that doesn’t require you to install anything to get it working, which can greatly reduce your maintenance cost and development time. With CushyCMS, you define which areas are editable, making it a safe option to your not-very-tech-savvy clients. CushyCMS is currently being used by about 10,000 websites and is gaining popularity as a no-hassle, user-friendly CMS.&lt;/p&gt; &lt;h3&gt;&lt;a href="http://21degrees.com.au/products/symphony/"&gt;Symphony&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://21degrees.com.au/products/symphony/"&gt;&lt;img src="http://images.sixrevisions.com/2008/11/04-05_symphony.png" alt="Symphony - screen shot." width="550" height="240" /&gt;&lt;/a&gt;&lt;a href="http://demo.symphony21.com/symphony/"&gt;&lt;br /&gt;Go to  Symphony demo&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Symphony&lt;/em&gt;, created  by Overture, is a CMS designed for developers, utilizing &lt;a href="http://www.w3.org/TR/xslt"&gt;XSLT&lt;/a&gt; to provide developers flexibility in customizing Symphony. If you don’t know much about XSLT, Overture provides a large number of tutorials and screencasts on &lt;a href="http://overture21.com/wiki/getting-started/tutorials-and-screencasts"&gt;their  resource center&lt;/a&gt;. With that said, Symphony isn’t for everybody and those looking for a content management system that requires little technical expertise should probably consider another option.&lt;/p&gt; &lt;h3&gt;&lt;a href="http://modxcms.com/"&gt;MODx&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://modxcms.com/"&gt;&lt;img src="http://images.sixrevisions.com/2008/11/04-06_modx.png" alt="MODx - screen shot." width="550" height="240" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;MODx&lt;/em&gt; is both a  content management system &lt;em&gt;and&lt;/em&gt; a PHP web application framework. MODx puts a high emphasize on web standards, allowing you to build XHTML 1.1 strict compliant websites easily. It comes with a build-in CSS menu builder for hassle-free site navigation development. For less-experienced users, MODx comes with a graphical user interface installer so you can get up and running quickly.&lt;/p&gt; &lt;h3&gt;&lt;a href="http://plone.org/"&gt;Plone CMS&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://plone.org/"&gt;&lt;img src="http://images.sixrevisions.com/2008/11/04-07_plone.jpg" alt="Plone CMS - screen shot." width="550" height="240" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Plone CMS&lt;/em&gt; is a feature-packed content management system built on the Zope web application framework. It’s supported by a large and active developer community so you won’t have any trouble finding help. Plone has &lt;a href="http://plone.org/documentation"&gt;extensive documentation&lt;/a&gt; in a wiki  format to help you get started and help you take advantage of its more advanced  features.&lt;/p&gt; &lt;h3&gt;&lt;a href="http://railfrog.com/"&gt;Railfrog&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://railfrog.com/"&gt;&lt;img src="http://images.sixrevisions.com/2008/11/04-08_railfrog.png" alt="Railfrog - screen shot." width="550" height="240" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Railfrog&lt;/em&gt; is one of the few CMS’s built on top of the Ruby On Rails web application framework (the same technology powering popular web applications such as &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt; and &lt;a href="http://www.basecamphq.com/?source=rails"&gt;Basecamp&lt;/a&gt;). To help you get  started on Railfrog, check out its &lt;a href="http://cvsdude.com/trac/railfrog/cms/wiki/GettingStartedForDevelopers"&gt;Developer  Portal&lt;/a&gt; where you’ll find guides that you can follow to get rolling.&lt;/p&gt; &lt;h3&gt;&lt;a href="http://typo3.com/"&gt;TYPO3 CMS&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://typo3.com/"&gt;&lt;img src="http://images.sixrevisions.com/2008/11/04-09_typo3.jpg" alt="TYPO3 CMS - screen shot." width="550" height="240" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;TYPO3&lt;/em&gt; is an open-source, enterprise-level content management system focused on providing companies a solution for websites and their intranet. While many CMS’s try to be simple and basic, TYPO3 provides users complex and powerful features to help you achieve complicated tasks and ability to integrate with other applications.&lt;/p&gt; &lt;h3&gt;&lt;a href="http://www.silverstripe.com/"&gt;SilverStripe&lt;/a&gt;&lt;/h3&gt; &lt;p&gt;&lt;a href="http://www.silverstripe.com/"&gt;&lt;img src="http://images.sixrevisions.com/2008/11/04-10_silverstripe.png" alt="SilverStripe - screen shot." width="550" height="240" /&gt;&lt;/a&gt;&lt;a href="http://demo.silverstripe.com/"&gt;&lt;br /&gt;Go to SilverStripe  demo&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;SilverStripe&lt;/em&gt; is a  PHP-based, open-source content management system. It uses the &lt;a href="http://en.wikipedia.org/wiki/Model-view-controller"&gt;MVC&lt;/a&gt; coding  framework to offer developers great flexibility and potential for scalability.  Check out the &lt;a href="http://demo.silverstripe.com/"&gt;live demo on their site&lt;/a&gt; to see a basic installation of SilverStripe as well as to take a peak at how  the administration system looks like.&lt;/p&gt; &lt;h3&gt;Content Management System Resources&lt;/h3&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cmsmatrix.org/"&gt;The CMS Matrix&lt;/a&gt; - A Tool for comparing Content Management Systems.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cmswatch.com/"&gt;CMS Watch&lt;/a&gt; - A news portal for Content Management Systems.&lt;/li&gt;&lt;li&gt;&lt;a href="http://mashable.com/2007/07/30/content-management-systems/"&gt;CMS Toolbox:  80+ Open Source Content Management Systems&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://cmsreport.com/"&gt;CMS Report&lt;/a&gt; - A website that reports on Content Management Sytems.&lt;/li&gt;&lt;li&gt;&lt;a href="http://nettuts.com/site-builds/how-to-build-a-maintainable-site-using-cushycms-and-twitter/"&gt;How  to Build a Maintainable Site using CushyCMS and Twitter&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3281895583339810405-934360242012660924?l=india-web-development.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://india-web-development.blogspot.com/feeds/934360242012660924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3281895583339810405&amp;postID=934360242012660924' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/934360242012660924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3281895583339810405/posts/default/934360242012660924'/><link rel='alternate' type='text/html' href='http://india-web-development.blogspot.com/2008/11/10-promising-content-management-systems.html' title='10 Promising Content Management Systems'/><author><name>Indrajit</name><uri>http://www.blogger.com/profile/00770324965861147136</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://4.bp.blogspot.com/_klK0Vvuf1U8/SZLgEZPGZzI/AAAAAAAAABs/kgieUHPmhWg/S220/mine.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3281895583339810405.post-4046211317859994083</id><published>2008-11-06T00:44:00.000-08:00</published><updated>2008-11-06T01:27:46.245-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP techniques'/><category scheme='http://www.blogger.com/atom/ns#' term='website development'/><category scheme='http://www.blogger.com/atom/ns#' term='website development tutorials'/><title type='text'>creating a fully featured registration script</title><content type='html'>&lt;p&gt;&lt;a href="http://www.script2please.com/php-development.html"&gt;PHP web Development&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In this tutorial you will learn how to create a fully featured registration script, users will be able to enter your site, visit the registration page, fill in the info, submit the form, receive an activation e-mail and be able to activate there accounts.&lt;/p&gt;  &lt;p&gt;Alright, this tutorial won't teach you anything about design, so the finalized script won't look pretty at all, but it is very easy to implement into any design.&lt;/p&gt; &lt;p&gt;First, we are going to need to create a table in our database so that we can store all of our registration info. We are going to call this table, users since that's what it will store!&lt;/p&gt;  &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;MySQL:&lt;/span&gt; &lt;div id="mysql-1"&gt; &lt;div class="mysql"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(153, 51, 51); font-weight: bold;"&gt;CREATE TABLE&lt;/span&gt; users &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;id &lt;span style="color: rgb(170, 153, 51); font-weight: bold;"&gt;INT&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;11&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(170, 51, 153); font-weight: bold;"&gt;NOT NULL&lt;/span&gt; &lt;span style="color: rgb(170, 51, 153); font-weight: bold;"&gt;AUTO_INCREMENT&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;username &lt;span style="color: rgb(170, 153, 51); font-weight: bold;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;30&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(170, 51, 153); font-weight: bold;"&gt;NOT NULL&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;password &lt;span style="color: rgb(170, 153, 51); font-weight: bold;"&gt;CHAR&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;40&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(170, 51, 153); font-weight: bold;"&gt;NOT NULL&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;email &lt;span style="color: rgb(170, 153, 51); font-weight: bold;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;70&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;active &lt;span style="color: rgb(170, 153, 51); font-weight: bold;"&gt;CHAR&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;32&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(153, 51, 51); font-weight: bold;"&gt;PRIMARY KEY&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;id&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; That little SQL creates our table to store all of our user information in, now we need a way to connect to the database.&lt;/p&gt;  &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;PHP:&lt;/span&gt; &lt;div id="php-2"&gt; &lt;div class="php"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(255, 153, 51); font-style: italic;"&gt;// CHANGE THESE VALUES&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;DEFINE&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'DB_USER'&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;'database username'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;DEFINE&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'DB_PASSWORD'&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;'database password'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;DEFINE&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'DB_HOST'&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;'localhost'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;a href="http://www.php.net/define"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;DEFINE&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'DB_NAME'&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;'database name'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt; &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$dbc&lt;/span&gt; = @&lt;a href="http://www.php.net/mysql_connect"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mysql_connect&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;DB_HOST, DB_USER, DB_PASSWORD&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; OR &lt;a href="http://www.php.net/die"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;die&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'Could not connect to MySQL: '&lt;/span&gt; . &lt;a href="http://www.php.net/mysql_error"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mysql_error&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt; &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;@&lt;a href="http://www.php.net/mysql_select_db"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mysql_select_db&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;DB_NAME&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; OR &lt;a href="http://www.php.net/die"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;die&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'Could not select the database: '&lt;/span&gt; . &lt;a href="http://www.php.net/mysql_error"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mysql_error&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;  &lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&gt;&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; This is just a file that we can use to connect to our database with, now all we need to do is include it any file that we want to query the database from.&lt;/p&gt; &lt;p&gt;Now that we have our table and mysql connection file setup, we need to create the PHP file that allows the person to register.&lt;/p&gt; &lt;p&gt;Let's start off by creating the form processing part of the file, it will be included in the same file as the form.&lt;/p&gt;  &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;PHP:&lt;/span&gt; &lt;div id="php-3"&gt; &lt;div class="php"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(97, 97, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/isset"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'submitted'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt; &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;$errors&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(97, 97, 0);"&gt;require_once&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'mysql_connect.php'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; This part is easy, all it does is start a new PHP section, then our first if() statement is saying &lt;i&gt;IF&lt;/i&gt; our form is submitted, then continue. We also start a new variable, and assign an array to it. So that we can echo out our errors (if there are any) at the end. We also include our mysql_connect.php file, since we will be querying the database.&lt;/p&gt;  &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;PHP:&lt;/span&gt; &lt;div id="php-4"&gt; &lt;div class="php"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(97, 97, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/eregi"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;eregi&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'^[[:alnum:]&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\-&lt;/span&gt;]{4,30}$'&lt;/span&gt;, &lt;a href="http://www.php.net/stripslashes"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;stripslashes&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/trim"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'username'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;$user&lt;/span&gt; = &lt;a href="http://www.php.net/mysql_real_escape_string"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mysql_real_escape_string&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'username'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;$query&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;"SELECT username FROM users WHERE username = '$user'"&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;$result&lt;/span&gt; = @&lt;a href="http://www.php.net/mysql_query"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mysql_query&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$query&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;$num&lt;/span&gt; = @&lt;a href="http://www.php.net/mysql_num_rows"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mysql_num_rows&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$result&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(97, 97, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$num&lt;/span&gt;&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;$errors&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;span style="color:red;"&gt;The username you have chosen has already been taken, please try again.&lt;/span&gt;'&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;span style="color: rgb(97, 97, 0);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;$username&lt;/span&gt; = &lt;a href="http://www.php.net/mysql_real_escape_string"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mysql_real_escape_string&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'username'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;span style="color: rgb(97, 97, 0);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;$errors&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;span style="color:red;"&gt;Please provide a valid username between 4 and 30 characters.&lt;/span&gt;'&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; This is where we check our first field, the username field. We use regular expressions to validate that the username is good. It must only contain numbers, letters, periods and it must be between 4 and 30 characters. If our regular expressions passes all the tests, we query the database and check if the username has been taken, if it has been taking we add an error to our $error array. If it is not taken then we it is assigned to the $username variable.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;**UPDATE V1.1**&lt;/strong&gt; - I have fixed the error that so many people are getting, I made a mistake, I have now added extra security to the script and it should be pretty much bug free.&lt;/p&gt;  &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;PHP:&lt;/span&gt; &lt;div id="php-5"&gt; &lt;div class="php"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(97, 97, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;!&lt;a href="http://www.php.net/eregi"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;eregi&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'^[a-zA-Z]+[a-zA-Z0-9_-]*@([a-zA-Z0-9]+){1}(&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\.&lt;/span&gt;[a-zA-Z0-9]+){1,2}'&lt;/span&gt;, &lt;a href="http://www.php.net/stripslashes"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;stripslashes&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/trim"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'email'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;$errors&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;span style="color:red;"&gt;Please provide a valid email address.&lt;/span&gt;'&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;span style="color: rgb(97, 97, 0);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;$email&lt;/span&gt; = &lt;a href="http://www.php.net/mysql_real_escape_string"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mysql_real_escape_string&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'email'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; This little tid-bit of code just validates there e-mail address using another regular expression.&lt;/p&gt; &lt;div class="igBar"&gt;&lt;span id="lphp-6"&gt;&lt;a href="http://www.example.com/php/registration-script/#" onclick="javascript:showPlainTxt('php-6'); return false;"&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;PHP:&lt;/span&gt; &lt;div id="php-6"&gt; &lt;div class="php"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(97, 97, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;!&lt;a href="http://www.php.net/empty"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'password1'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(97, 97, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'password1'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt; != &lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'password2'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;$errors&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;span style="color:red;"&gt;The 2 passwords you have entered do not match.&lt;/span&gt;'&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;span style="color: rgb(97, 97, 0);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;$password&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'password1'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;span style="color: rgb(97, 97, 0);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;$errors&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;span style="color:red;"&gt;Please provide a password.&lt;/span&gt;'&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; This is where we validate our password(s). First we check if they entered in the first password, then if it isn't empty, we make sure that password 1 and password 2 are the exact same (password, and verify password). If they do not match each other, we add an error to our $errors array. If they do match each other, we continue.&lt;/p&gt;  &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;PHP:&lt;/span&gt; &lt;div id="php-7"&gt; &lt;div class="php"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(97, 97, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/empty"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$errors&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                &lt;span style="color: rgb(0, 0, 255);"&gt;$a&lt;/span&gt; = &lt;a href="http://www.php.net/md5"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;md5&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/uniqid"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;uniqid&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/rand"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;rand&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;$query&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;"INSERT INTO users (username, email, password, active) VALUES ('$username', '$email', SHA('$password'), '$a')"&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;$result&lt;/span&gt; = @&lt;a href="http://www.php.net/mysql_query"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mysql_query&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$query&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(97, 97, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/mysql_affected_rows"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mysql_affected_rows&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; == &lt;span style="color: rgb(128, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt; &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                        &lt;span style="color: rgb(255, 153, 51); font-style: italic;"&gt;// Send the E-Mail&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                        &lt;span style="color: rgb(0, 0, 255);"&gt;$body&lt;/span&gt; = &lt;span style="color: rgb(255, 0, 0);"&gt;"Thank you for registering at the User Registration site. To activate your account, please click on this link:&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;"&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                &lt;span style="color: rgb(0, 0, 255);"&gt;$body&lt;/span&gt; .= &lt;span style="color: rgb(255, 0, 0);"&gt;"http://www.whateveraddressyouwanthere.com/activate.php?x="&lt;/span&gt; . &lt;a href="http://www.php.net/mysql_insert_id"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mysql_insert_id&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; . &lt;span style="color: rgb(255, 0, 0);"&gt;"&amp;amp;y=$a"&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;a href="http://www.php.net/mail"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;mail&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_POST&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'email'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;'Registration Confirmation'&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 255);"&gt;$body&lt;/span&gt;, &lt;span style="color: rgb(255, 0, 0);"&gt;'From: admin@sitename.com'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt; &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;                        &lt;span style="color: rgb(255, 153, 51); font-style: italic;"&gt;// Show thank you message&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;h3&gt;Thank You!&lt;/h3&gt;&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;            You have been registered, you have been sent an e-mail to the address you specified before. Please check your e-mails to activate your account.'&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;span style="color: rgb(97, 97, 0);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;            &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;span style="color:red;"&gt;You could not be registered, please contact us about the problem and we will fix it as soon as we can.&lt;/span&gt;'&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; This is the part where we do our error checking, if our $errors variable is empty (no errors) then we continue on with the form. So we insert everything into our users table, run the query, then check if it worked using mysql_affected_rows() == 1. If our query only affected 1 row (only inserted 1 user, no more and no less.) then our query worked, you are shown a message and the e-mail is sent to the user.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;**UPDATE V1.2**&lt;/strong&gt; - The query has been fixed, and everything has been personally tested and works now. If there is still more bugs please tell me.&lt;/p&gt; &lt;p&gt;If it didn't work, (the query didn't work) you are shown an error message.&lt;/p&gt;  &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;PHP:&lt;/span&gt; &lt;div id="php-8"&gt; &lt;div class="php"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;span style="color: rgb(97, 97, 0);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;        &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;'&lt;h3&gt;Error!&lt;/h3&gt;&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        The following error(s) occured:&lt;br /&gt;'&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;        &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(97, 97, 0);"&gt;foreach&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$errors&lt;/span&gt; &lt;span style="color: rgb(97, 97, 0);"&gt;as&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$msg&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;            &lt;a href="http://www.php.net/echo"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;echo&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;" - &lt;span style="font-weight: bold; color: rgb(0, 10, 0);"&gt;\"&lt;/span&gt;red&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\"&lt;/span&gt;&gt;$msg&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;\n&lt;/span&gt;";&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;        &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;?&gt;&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; This is the finishing of the PHP section of our registration script, this is always where we check for errors. If the $errors array was not empty then the user is shown an error message and we use a foreach loop to display all of our errors and echo them out to the user. Then we end our PHP section.&lt;/p&gt;  &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;HTML:&lt;/span&gt; &lt;div id="html-9"&gt; &lt;div class="html"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/h3.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;h3&gt;Register&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href="http://december.com/html/4/element/h3.html"&gt; &lt;/a&gt;&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt;&lt;a href="http://december.com/html/4/element/h3.html"&gt; &lt;/a&gt;&lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/form.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;form&gt;&lt;/form&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;action&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;" method="post"&gt;&lt;/a&gt;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;input type=""&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;text&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;" name="&lt;/span&gt;username&lt;span style="color: rgb(255, 0, 0);"&gt;" value="&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;&lt;/span&gt;?php if &lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;isset&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;$_POST&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'username'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; echo $_POST&lt;span style="color: rgb(102, 204, 102);"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'username'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;]&lt;/span&gt;; ?&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt;" size="30" maxlength="30" /&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/small.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;small&gt;&lt;/small&gt;&lt;/span&gt;&lt;small&gt;&lt;/small&gt;&lt;/a&gt;&lt;/span&gt;&lt;small&gt;Username&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/small&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/p.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/input.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;input&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"password"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"password1"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;size&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"30"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;maxlength&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"40"&lt;/span&gt; /&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/small.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;small&gt;&lt;/small&gt;&lt;/span&gt;&lt;small&gt;&lt;/small&gt;&lt;/a&gt;&lt;/span&gt;&lt;small&gt;Password&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/small&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/p.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/input.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;input&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"password"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"password2"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;size&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"30"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;maxlength&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"40"&lt;/span&gt; /&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/small.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;small&gt;&lt;/small&gt;&lt;/span&gt;&lt;small&gt;&lt;/small&gt;&lt;/a&gt;&lt;/span&gt;&lt;small&gt;Confirm Password&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/small&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/p.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;a href="http://december.com/html/4/element/input.html"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;input&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;type&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"text"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"email"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;size&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"30"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;maxlength&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"30"&lt;/span&gt; &lt;span style="color: rgb(0, 0, 102);"&gt;value&lt;/span&gt;=&lt;span style="color: rgb(255, 0, 0);"&gt;"&lt;/span&gt;" /&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;small&gt;&lt;/small&gt;&lt;/span&gt;&lt;small&gt;Email Address&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;/span&gt;&lt;/small&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);font-family:'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;input type=""&gt;submit&lt;span style="color: rgb(255, 0, 0);"&gt;" name="&lt;/span&gt;submit&lt;span style="color: rgb(255, 0, 0);"&gt;" value="&lt;/span&gt;Register&lt;span style="color: rgb(255, 0, 0);"&gt;" /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 153, 0);"&gt;&lt;input type=""&gt;hidden&lt;span style="color: rgb(255, 0, 0);"&gt;" name="&lt;/span&gt;submitted&lt;span style="color: rgb(255, 0, 0);"&gt;" value="&lt;/span&gt;TRUE&lt;span style="color: rgb(255, 0, 0);"&gt;" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0); font-family: 'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;p&gt; So I lied, there is still a little tiny bit of PHP but very simple stuff. Here we just create our form, with the corresponding names as in our PHP script. Make sure you name your the hidden input as submitted, this is how our PHP script knows that the form is submitted.&lt;/p&gt; &lt;p&gt;That is it for our registration part of our script, now we just have to do the activation part, this is a simple little script.&lt;/p&gt; &lt;div class="igBar"&gt;&lt;span id="lphp-10"&gt;&lt;a href="http://www.example.com/php/registration-script/#" onclick="javascript:showPlainTxt('php-10'); return false;"&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;PHP:&lt;/span&gt; &lt;div id="php-10"&gt; &lt;div class="php"&gt; &lt;ol&gt;&lt;li style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0); font-family: 'Courier New',Courier,monospace;"&gt; &lt;div style="font-weight: normal; font-family: 'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(97, 97, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/isset"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_GET&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'x'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0); font-family: 'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;$x&lt;/span&gt; = &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;int&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;$_GET&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'x'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;span style="color: rgb(97, 97, 0);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0); font-family: 'Courier New',Courier,monospace;"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;$x&lt;/span&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0); font-family: 'Courier New',Courier,monospace;"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;&lt;span style="color: rgb(97, 97, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/isset"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;isset&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$_GET&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'y'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;$y&lt;/span&gt; = &lt;span style="color: rgb(0, 0, 255);"&gt;$_GET&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;[&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;'y'&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;]&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0); font-family: 'Courier New',Courier,monospace;"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt; &lt;span style="color: rgb(97, 97, 0);"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;$y&lt;/span&gt; = &lt;span style="color: rgb(128, 0, 0);"&gt;0&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0); font-family: 'Courier New',Courier,monospace;"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(54, 44, 2);"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt; &lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li face="'Courier New',Courier,monospace" style="font-weight: normal; font-style: normal; color: rgb(0, 0, 0);"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;&lt;span style="color: rgb(97, 97, 0);"&gt;if&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$x&lt;/span&gt;&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; &amp;amp;&amp;amp; &lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;a href="http://www.php.net/strlen"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;strlen&lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;$y&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt; == &lt;span style="color: rgb(128, 0, 0);"&gt;32&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 
