<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3281895583339810405</atom:id><lastBuildDate>Sat, 04 Apr 2026 11:29:08 +0000</lastBuildDate><category>PHP</category><category>PHP techniques</category><category>php tutorial</category><category>Mysql</category><category>web developers</category><category>Google</category><category>PHP 5</category><category>PHP training</category><category>website development</category><category>E-Commerce</category><category>Internet Marketing</category><category>Security Enhancements</category><category>development</category><category>tools</category><category>website development tutorials</category><category>wordpress</category><category>CMS</category><category>Chrome</category><category>Chrome Experiments</category><category>Content management system</category><category>Copywriting</category><category>Design</category><category>Download Google Chrome</category><category>Drupal</category><category>Framework</category><category>Google Chrome</category><category>Indus  Net</category><category>JavaScript</category><category>Microsoft</category><category>Microsoft Silver Light</category><category>MySQL 5.1</category><category>Personality Development</category><category>Ruby on Rails</category><category>SEO</category><category>SQL Server</category><category>TIMESTAMP</category><category>Technologies</category><category>XML</category><category>Zend</category><category>application</category><category>client side coding</category><category>css</category><category>custom web developmentm</category><category>design resources</category><category>development tool</category><category>frameworks</category><category>gadgets</category><category>iphone</category><category>linux user</category><category>ms outlook</category><category>news</category><category>open source</category><category>opensource</category><category>outsourcing</category><category>password recovery</category><category>php tools</category><category>popularity</category><category>programming language</category><category>rss builder</category><category>server side coding</category><category>sesconference</category><category>software</category><category>sql</category><category>theme</category><category>tutorial</category><category>web  marketing</category><category>web design</category><category>web design company</category><category>website design</category><title>Web Development company</title><description>Find the best web site development and internet marketing, news, tips, tricks, tutorials and providers to help you create and manage your website.</description><link>http://india-web-development.blogspot.com/</link><managingEditor>noreply@blogger.com (Indrajit)</managingEditor><generator>Blogger</generator><openSearch:totalResults>80</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-210290272437664954</guid><pubDate>Tue, 23 Nov 2010 02:16:00 +0000</pubDate><atom:updated>2010-11-22T18:18:44.952-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PHP</category><category domain="http://www.blogger.com/atom/ns#">php tutorial</category><title>XDebug for developing, debugging and profiling PHP</title><description>&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: rgb(0, 0, 0); font-family: &#39;Times New Roman&#39;; 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;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: 13px; line-height: 20px;&quot;&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&#39;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&#39;s var_dump, or as a code coverage analysis tool, and most importantly as a profiler. In this tutorial I&#39;ll attempt to cover installation, and most of XDebug&#39;s standard features.&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5 style=&quot;margin: 0px; padding: 0px; font-size: 1.2em; font-weight: bold; color: rgb(252, 102, 2);&quot;&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=&quot;Apple-converted-space&quot;&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&#39;m not going to cover compiling from source. All the installation options are covered in the&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://www.xdebug.org/docs/&quot; style=&quot;text-decoration: none; color: rgb(197, 81, 0);&quot;&gt;XDebug manual.&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;font-size: 1.2em;&quot;&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=&quot;font-size: 1.2em;&quot;&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=&quot;font-style: normal; font-weight: normal; text-decoration: none; font-size: 1.2em;&quot;&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&#39;ll see an erroneous message indicating that you should add an extension=xdebug.so to your php.ini.&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;strong style=&quot;font-style: normal; font-weight: bold; text-decoration: none;&quot;&gt;IGNORE THIS!!!&lt;/strong&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;br /&gt;You actually need to load XDebug using either:&lt;br /&gt;&lt;tt style=&quot;font-size: 1.2em;&quot;&gt;&lt;br /&gt;; Enable xdebug&lt;br /&gt;zend_extension=&quot;/usr/lib64/php/modules/xdebug.so&quot;&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;--or if you&#39;re setup with the threaded environment that has enabled &quot;thread safety&quot; then:&lt;br /&gt;&lt;tt style=&quot;font-size: 1.2em;&quot;&gt;&lt;br /&gt;; Enable xdebug&lt;br /&gt;zend_extension_ts=&quot;/usr/lib64/php/modules/xdebug.so&quot;&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=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;em style=&quot;font-style: italic; font-weight: normal; text-decoration: none;&quot;&gt;&quot;; Enable xdebug&quot;&lt;/em&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;isn&#39;t necesssary but it&#39;s helpful for documentation purposes to have it, so why not?&lt;br /&gt;&lt;blockquote style=&quot;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);&quot;&gt;If you&#39;ve followed these instructions and you still don&#39;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&#39;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=&quot;margin: 0px; padding: 0px; font-size: 1.6em; font-weight: bold; color: rgb(252, 102, 2);&quot;&gt;var_dump()&lt;/h3&gt;&lt;br /&gt;One of the first things that XDebug will do by default is replace php&#39;s var_dump() with a nicer version that is also configurable in a variety of ways.&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;br /&gt;In this example, I&#39;ve inserted:&lt;br /&gt;&lt;tt style=&quot;font-size: 1.2em;&quot;&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=&quot;font-size: 1.2em;&quot;&gt;&lt;br /&gt;object(JSite)#2 (7) { [&quot;_clientId&quot;]=&gt; int(0) [&quot;_messageQueue&quot;]=&gt; array(0) { } [&quot;_name&quot;]=&gt; string(4) &quot;site&quot; [&quot;scope&quot;]=&gt; NULL [&quot;_errors&quot;]=&gt; array(0) { } [&quot;requestTime&quot;]=&gt; string(16) &quot;2010-10-09 23:56&quot; [&quot;setTemplate&quot;]=&gt; string(13) &quot;rhuk_milkyway&quot; }&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;http://www.flingbits.com/userspace/gizmola/xdebug_vardump.png&quot; alt=&quot;xdebug_vardump&quot; style=&quot;border-width: 0px;&quot; /&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=&quot;http://www.flingbits.com/userspace/gizmola/xdebug_novardump2.png&quot; alt=&quot;xdebug_novardump2&quot; style=&quot;border-width: 0px;&quot; /&gt;&lt;br /&gt;Trying to make sense out of all this jumbled output isn&#39;t easy. With XDebug you can see the forest through the trees.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www.flingbits.com/userspace/gizmola/xdebug_vardump2.png&quot; alt=&quot;xdebug_vardump2&quot; style=&quot;border-width: 0px;&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 style=&quot;margin: 0px; padding: 0px; font-size: 1.6em; font-weight: bold; color: rgb(252, 102, 2);&quot;&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=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;em style=&quot;font-style: italic; font-weight: normal; text-decoration: none;&quot;&gt;display_errors&lt;/em&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;font-size: 1.2em;&quot;&gt;&lt;br /&gt;Fatal error: Uncaught exception &#39;Zend_Controller_Dispatcher_Exception&#39; with message &#39;Invalid controller specified (tutorials)&#39; 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=&quot;http://www.flingbits.com/userspace/gizmola/xdebug_stack1.png&quot; alt=&quot;xdebug_stack1&quot; style=&quot;border-width: 0px;&quot; /&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=&quot;margin: 0px; padding: 0px; font-size: 1.2em; font-weight: bold; color: rgb(252, 102, 2);&quot;&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 &quot;4&quot; gives you the maximum amount of parameter information available.&lt;br /&gt;&lt;tt style=&quot;font-size: 1.2em;&quot;&gt;&lt;br /&gt;xdebug.collect_params=4&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;&lt;h5 style=&quot;margin: 0px; padding: 0px; font-size: 1.2em; font-weight: bold; color: rgb(252, 102, 2);&quot;&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=&quot;margin: 0px; padding: 0px; font-size: 1.2em; font-weight: bold; color: rgb(252, 102, 2);&quot;&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=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;br /&gt;For example:&lt;br /&gt;&lt;tt style=&quot;font-size: 1.2em;&quot;&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 &#39;*&#39;, 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=&quot;font-size: 1.2em;&quot;&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=&quot;margin: 0px; padding: 0px; font-size: 1.6em; font-weight: bold; color: rgb(252, 102, 2);&quot;&gt;Profiling&lt;/h3&gt;&lt;br /&gt;The XDebug profiler outputs &quot;cachegrind compatible files&quot; that can be analyzed with a variety of tools, depending on your platform. If you&#39;re developing on a linux workstation use kcachegrind, or on windows wincachegrind.&lt;span class=&quot;Apple-converted-space&quot;&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&#39;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=&quot;font-size: 1.2em;&quot;&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=&quot;font-size: 1.2em;&quot;&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=&quot;font-style: italic; font-weight: normal; text-decoration: none;&quot;&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=&quot;margin: 0px; padding: 0px; font-size: 1.2em;&quot;&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 &quot;Call Graph&quot; screen. WinCacheGrind is a native windows application which doesn&#39;t provide graphs, but does show the calls and timings, and allows you to sort the profile data in a variety of ways. Here&#39;s a screenshot showing the functions which take the most time.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www.flingbits.com/userspace/gizmola/xdebug_profile.png&quot; alt=&quot;xdebug_profile&quot; style=&quot;border-width: 0px;&quot; /&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=&quot;margin: 0px; padding: 0px; font-size: 1.6em; font-weight: bold; color: rgb(252, 102, 2);&quot;&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=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;br /&gt;&lt;blockquote style=&quot;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);&quot;&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&#39;t hurt to include them, in case you need to make tweaks.&lt;br /&gt;&lt;tt style=&quot;font-size: 1.2em;&quot;&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=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;br /&gt;-- you need to enable the debugger using xdebug.remote_enable=1.&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;em style=&quot;font-style: italic; font-weight: normal; text-decoration: none;&quot;&gt;?XDEBUG_SESSION_START=&lt;/em&gt;. For Eclipse with PDT, the session id will be ECLIPSE_DBGP. For other IDE&#39;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=&quot;margin: 0px; padding: 0px; font-size: 1.2em;&quot;&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=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://www.xdebug.org/docs-dbgp.php&quot; style=&quot;text-decoration: none; color: rgb(197, 81, 0);&quot;&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&#39;d have to setup a port forward rule for your workstation that forwards port 9000 traffic back to your workstation. If you&#39;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=&quot;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);&quot;&gt;If you&#39;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=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://gizmola.com/blog/blog/archives/95-Run-a-Centos-Lamp-development-server-on-XP-using-VirtualBox.html&quot; style=&quot;text-decoration: none; color: rgb(197, 81, 0);&quot;&gt;here&lt;/a&gt;.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 style=&quot;margin: 0px; padding: 0px; font-size: 1.6em; font-weight: bold; color: rgb(252, 102, 2);&quot;&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&#39;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=&quot;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);&quot;&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&#39;t connect to XDebug!&lt;/blockquote&gt;&lt;br /&gt;When configuration is complete you will open the&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;strong style=&quot;font-style: normal; font-weight: bold; text-decoration: none;&quot;&gt;PHP Debug&lt;/strong&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;perspective, and choose a debug configuration. For any specific script you want to debug, you&#39;ll need to create a Debug configuration for it. In other words, if you reach a script via a particular URL, you&#39;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&#39;re interested in via breakpoints, but you&#39;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 &quot;Run to line&quot;. It&#39;s not pretty but it works.&lt;br /&gt;&lt;br /&gt;From the Menu choose the&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;strong style=&quot;font-style: normal; font-weight: bold; text-decoration: none;&quot;&gt;Run | Debug Configurations&lt;/strong&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;panel.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www.flingbits.com/userspace/gizmola/xdebug_eclipse_config1.png&quot; alt=&quot;xdebug_eclipse_config1&quot; style=&quot;border-width: 0px;&quot; /&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 &quot;Index&quot; because I&#39;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 &quot;Add&quot; a new PHP Server.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www.flingbits.com/userspace/gizmola/xdebug_eclipse_config2.png&quot; alt=&quot;xdebug_eclipse_config2&quot; style=&quot;border-width: 0px;&quot; /&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&#39;ve got an application running in a subdirectory off the site root. Leave off the closing &#39;/&#39;!&lt;br /&gt;-- The configuration wizard will take you to the next step, which is adding at least one &quot;Path Mapping&quot;.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www.flingbits.com/userspace/gizmola/xdebug_eclipse_config3.png&quot; alt=&quot;xdebug_eclipse_config3&quot; style=&quot;border-width: 0px;&quot; /&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=&quot;margin: 0px; padding: 0px; font-size: 1.2em; font-weight: bold; color: rgb(252, 102, 2);&quot;&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 &quot;PHP Debug&quot; 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 &quot;step into&quot;, &quot;step over&quot;, and &quot;step and return&quot; buttons on the debug button bar.&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://www.flingbits.com/userspace/gizmola/xdebug_eclipse.png&quot; alt=&quot;xdebug_eclipse&quot; style=&quot;border-width: 0px;&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3 style=&quot;margin: 0px; padding: 0px; font-size: 1.6em; font-weight: bold; color: rgb(252, 102, 2);&quot;&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&#39;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=&quot;http://www.flingbits.com/tutorial/view/xdebug-for-developing-debugging-and-profiling-php&quot;&gt;http://www.flingbits.com/tutorial/view/xdebug-for-developing-debugging-and-profiling-php&lt;/a&gt;</description><link>http://india-web-development.blogspot.com/2010/11/xdebug-for-developing-debugging-and.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>174</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-2412486774789902262</guid><pubDate>Thu, 22 Jul 2010 05:53:00 +0000</pubDate><atom:updated>2010-07-21T22:56:05.105-07:00</atom:updated><title>Making SEO Friendly Websites</title><description>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=&quot;http://www.getwebdesignhelp.com/&quot;&gt;SEO friendly site&lt;/a&gt; is hard. All you need is a proper conception and in-depth knowledge about &lt;a href=&quot;http://www.onlinewebdesigninginfo.com/&quot;&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.</description><link>http://india-web-development.blogspot.com/2010/07/making-seo-friendly-websites.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>91</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-4876386278749907332</guid><pubDate>Tue, 23 Mar 2010 04:15:00 +0000</pubDate><atom:updated>2010-03-22T21:17:29.739-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">web design company</category><title>Image Selection solutions for a Web Design Company</title><description>&lt;div style=&quot;text-align: justify;&quot;&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=&quot;http://www.webguru-india.com/webdesign.php&quot;&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;</description><link>http://india-web-development.blogspot.com/2010/03/image-selection-solutions-for-web.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>58</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-4786190354043825278</guid><pubDate>Tue, 23 Mar 2010 04:12:00 +0000</pubDate><atom:updated>2010-03-22T21:15:19.241-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">web design</category><title>Web Design and the Use of SEO</title><description>&lt;div style=&quot;text-align: justify;&quot;&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=&quot;http://www.quality-web-programming.com/web-application-development.php&quot;&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;</description><link>http://india-web-development.blogspot.com/2010/03/web-design-and-use-of-seo.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>123</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-1151577643469892129</guid><pubDate>Tue, 09 Feb 2010 03:25:00 +0000</pubDate><atom:updated>2010-10-18T23:18:52.923-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CMS</category><category domain="http://www.blogger.com/atom/ns#">Drupal</category><category domain="http://www.blogger.com/atom/ns#">Microsoft</category><category domain="http://www.blogger.com/atom/ns#">PHP</category><category domain="http://www.blogger.com/atom/ns#">SQL Server</category><category domain="http://www.blogger.com/atom/ns#">wordpress</category><title>Microsoft Q&amp;A: Microsoft and Open Source</title><description>&lt;span class=&quot;Apple-style-span&quot; style=&quot;WORD-SPACING: 0px; FONT: medium &#39;Times New Roman&#39;; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;COLOR: rgb(51,51,51);font-size:12;&quot; &gt;&lt;p style=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;WORD-SPACING: 0px; FONT: medium &#39;Times New Roman&#39;; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;COLOR: rgb(51,51,51);font-size:11;&quot; &gt;by&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a class=&quot;author&quot; style=&quot;COLOR: rgb(36,91,139)&quot; href=&quot;http://www.blogger.com/profile/subtalk&quot;&gt;Tomas Gonsorcik&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;on&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;span class=&quot;date&quot;&gt;Feb 8, 2010 5:59:06 PM&lt;/span&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;- 90 views&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&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=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&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=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&gt;There is a good deal of work being done on making PHP run on Azure as well.&lt;/p&gt;&lt;p style=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&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=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&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=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&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=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&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=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&gt;We look forward to hearing from you.&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a style=&quot;COLOR: rgb(36,91,139)&quot; href=&quot;http://www.phpfreaks.com/forums/index.php/board,112.0.html&quot;&gt;Ask your questions in the forum now.&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&gt;&lt;a style=&quot;COLOR: rgb(36,91,139)&quot; href=&quot;http://www.phpfreaks.com/forums/index.php/board,112.0.html&quot;&gt;Source: &lt;/a&gt;&lt;a href=&quot;http://www.phpfreaks.com/blog/microsoft-qa-microsoft-and-open-source&quot;&gt;http://www.phpfreaks.com/blog/microsoft-qa-microsoft-and-open-source&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&gt;&lt;a href=&quot;http://www.spaceandtime.eu.com/media-buying&quot;&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=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;PADDING-RIGHT: 20px; PADDING-LEFT: 20px; PADDING-BOTTOM: 5px; MARGIN: 0px; PADDING-TOP: 10px&quot;&gt;&lt;a href=&quot;http://www.rm.com/Generic.asp?cref=GP1547323&quot;&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=&quot;http://www.nomedexamlifeinsurance.com/&quot; alt=19.10.10&quot;&gt;no exam life insurance&lt;/a&gt;</description><link>http://india-web-development.blogspot.com/2010/02/microsoft-q-microsoft-and-open-source.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>34</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-6731962374218320973</guid><pubDate>Fri, 04 Dec 2009 05:17:00 +0000</pubDate><atom:updated>2010-01-06T02:17:23.958-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PHP</category><category domain="http://www.blogger.com/atom/ns#">PHP techniques</category><category domain="http://www.blogger.com/atom/ns#">php tools</category><title>50 Extremely Useful PHP Tools</title><description>&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  color: rgb(30, 30, 30); line-height: 20px; font-family:Verdana, Arial, Geneva, Helvetica, sans-serif;font-size:12px;&quot;&gt;&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;em&gt;By Jacob Gube&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 1.15em; &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&amp;amp;lang=php&amp;amp;lang2=ruby&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;PHP is faster&lt;/a&gt; (&lt;em&gt;updated&lt;/em&gt;), and it is &lt;a href=&quot;http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;margin-bottom: 1.15em; &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;/p&gt;&lt;h3 style=&quot;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); &quot;&gt;Debugging Tools&lt;/h3&gt;&lt;ul style=&quot;list-style-type: square; &quot;&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://code.google.com/p/webgrind/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Webgrind&lt;/a&gt;&lt;br /&gt;Webgrind is an &lt;a href=&quot;http://www.xdebug.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Xdebug&lt;/a&gt; profiling Web front end in PHP 5. It implements a subset of the features of &lt;a href=&quot;http://kcachegrind.sourceforge.net/cgi-bin/show.cgi&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://code.google.com/p/webgrind/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/webgrind.jpg&quot; alt=&quot;Webgrind in 50 Extremely Useful PHP Tools&quot; width=&quot;500&quot; height=&quot;413&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/webgrind.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://xdebug.org/index.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://gubed.mccabe.nu/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.php-debugger.com/dbg/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.php-debug.com/www/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://sourceforge.net/projects/php-dyn/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.bluestatic.org/software/macgdbp/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;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); &quot;&gt;Testing and Optimization Tools&lt;/h3&gt;&lt;ul style=&quot;list-style-type: square; &quot;&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.phpunit.de/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;PHPUnit&lt;/a&gt;&lt;br /&gt;PHPUnit is a complete port of the popular &lt;a href=&quot;http://www.junit.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.phpunit.de/manual/current/en/writing-tests-for-phpunit.html&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;how to do it&lt;/a&gt;.&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.simpletest.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.simpletest.org/en/first_test_tutorial.html&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;tutorial&lt;/a&gt; that shows you how to create a new test case.&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://www.simpletest.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/simpletest.gif&quot; alt=&quot;Simpletest in 50 Extremely Useful PHP Tools&quot; width=&quot;349&quot; height=&quot;152&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/simpletest.gif&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://selenium-rc.openqa.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://matrix.squiz.net/developer/tools/php_cs&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://dbug.ospinto.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;dBug&lt;/a&gt;&lt;br /&gt;dBug is ColdFusion’s &lt;a href=&quot;http://livedocs.adobe.com/coldfusion/6.1/htmldocs/tags-p21.htm&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://dbug.ospinto.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/11_dbug.jpg&quot; alt=&quot;11 Dbug in 50 Extremely Useful PHP Tools&quot; width=&quot;306&quot; height=&quot;363&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/11_dbug.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.coderholic.com/php-profile-class/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;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); &quot;&gt;Documentation Tools&lt;/h3&gt;&lt;ul style=&quot;list-style-type: square; &quot;&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://phpdoc.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.phpdoc.org/manual.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;online manual&lt;/a&gt;.&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://phpdox.net/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;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); &quot;&gt;Security Tools&lt;/h3&gt;&lt;ul style=&quot;list-style-type: square; &quot;&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.phpcaptcha.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;https://trac.anl.gov/scavenger/wiki/WikiStart&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://php-ids.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://blog.evaria.com/2007/pixy-the-php-security-scanner/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;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); &quot;&gt;Image Manipulation and Graphs&lt;/h3&gt;&lt;ul style=&quot;list-style-type: square; &quot;&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.maani.us/charts4/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://pchart.sourceforge.net/index.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://simplepie.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/chart.gif&quot; alt=&quot;Chart in 50 Extremely Useful PHP Tools&quot; width=&quot;496&quot; height=&quot;234&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/chart.gif&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://wideimage.sourceforge.net/wiki/MainPage&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://us2.php.net/gd&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;GD PHP extension&lt;/a&gt;installed on your Web server.&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.magickwand.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.imagemagick.org/script/index.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;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); &quot;&gt;PHP Code Beautifier&lt;/h3&gt;&lt;ul style=&quot;list-style-type: square; &quot;&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://pear.php.net/package/PHP_Beautifier&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.waterproof.fr/products/phpCodeBeautifier/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://qbnz.com/highlighter/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;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); &quot;&gt;Version-Control Systems&lt;/h3&gt;&lt;ul style=&quot;list-style-type: square; &quot;&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://phing.info/trac/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://code.google.com/p/xinc/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;xinc&lt;/a&gt;&lt;br /&gt;xinc is a &lt;a href=&quot;http://www.martinfowler.com/articles/continuousIntegration.html#EveryCommitShouldBuildTheMainlineOnAnIntegrationMachine&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://subversion.tigris.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Subversion&lt;/a&gt; and &lt;a href=&quot;http://phing.info/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Phing&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;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); &quot;&gt;Useful Extensions, Utilities and Classes&lt;/h3&gt;&lt;ul style=&quot;list-style-type: square; &quot;&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://simplepie.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://simplepie.org/demo/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;RSS and Atom feed reader&lt;/a&gt;, which demonstrates a simple Web application that uses SimplePie.&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://simplepie.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/spie.jpg&quot; alt=&quot;Spie in 50 Extremely Useful PHP Tools&quot; width=&quot;480&quot; height=&quot;392&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/spie.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://htmlpurifier.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.jonasjohn.de/lab/htmlsql.htm&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.jonasjohn.de/lab/htmlsql/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;live demonstration of how htmlSQL works&lt;/a&gt;.&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://searchlightdigital.com/the-greatest-php-snippet-file-ever-using-quicktext-for-notepad&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://creole.phpdb.org/trac/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.codeplex.com/PHPLinq&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://phpimpact.wordpress.com/2008/05/29/30-useful-php-classes-and-components/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;via&lt;/a&gt;]&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.xm1math.net/phpmathpublisher/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://www.xm1math.net/phpmathpublisher/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/math.gif&quot; alt=&quot;Math in 50 Extremely Useful PHP Tools&quot; width=&quot;302&quot; height=&quot;81&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/math.gif&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.phpmyadmin.net/home_page/index.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.codeplex.com/PHPExcel&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://p.horm.org/er/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.xajaxproject.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.xajaxproject.org/examples/multiply/multiply.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;xajax Multiplier demo&lt;/a&gt; and the &lt;a href=&quot;http://www.xajaxproject.org/examples/thewall/thewall.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Graffiti Wall demo&lt;/a&gt; to see the xajax PHP class in action.&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://phpuserclass.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://gtk.php.net/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;PHP-GTK&lt;/a&gt;&lt;br /&gt;PHP-GTK is a PHP extension for the &lt;a href=&quot;http://www.gtk.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;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); &quot;&gt;PHP Online Tools and Resources&lt;/h3&gt;&lt;ul style=&quot;list-style-type: square; &quot;&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://code.google.com/p/minify/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;nofollow&quot; href=&quot;http://developer.yahoo.com/performance/index.html#rules&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Rules for High Performance Websites&lt;/a&gt;.&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://code.google.com/p/minify/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/minify.gif&quot; alt=&quot;Minify in 50 Extremely Useful PHP Tools&quot; width=&quot;550&quot; height=&quot;221&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/minify.gif&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://en.dklab.ru/lib/HTTP_StaticMerger/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.phpobjectgenerator.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://www.phpobjectgenerator.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/03_object_generator.jpg&quot; alt=&quot;03 Object Generator in 50 Extremely Useful PHP Tools&quot; width=&quot;407&quot; height=&quot;481&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/03_object_generator.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.gotapi.com/php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.gotapi.com/widgets/compiled/c1_module_php.html&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://www.gotapi.com/php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/04_gotapi.jpg&quot; alt=&quot;04 Gotapi in 50 Extremely Useful PHP Tools&quot; width=&quot;500&quot; height=&quot;312&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/04_gotapi.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.koders.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://pecl.php.net/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;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); &quot;&gt;In-Browser Tools (Firefox Add-Ons)&lt;/h3&gt;&lt;ul style=&quot;list-style-type: square; &quot;&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.firephp.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;FirePHP&lt;/a&gt;&lt;br /&gt;FirePHP is a Firefox extension that allows you to log data in &lt;a href=&quot;http://getfirebug.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.firephp.org/HQ/Use.htm&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;how to use FirePHP&lt;/a&gt;. For developers using the &lt;a href=&quot;http://framework.zend.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Zend PHP framework&lt;/a&gt;, you might find this guide on &lt;a href=&quot;http://www.christophdorn.com/Blog/2008/09/02/firephp-and-zend-framework-16/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;using  FirePHP with Zend&lt;/a&gt; useful.&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://www.firephp.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/01_firephp.jpg&quot; alt=&quot;01 Firephp in 50 Extremely Useful PHP Tools&quot; width=&quot;435&quot; height=&quot;271&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/01_firephp.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://phplangeditor.mozdev.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://phplangeditor.mozdev.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/02_phplangeditor.jpg&quot; alt=&quot;02 Phplangeditor in 50 Extremely Useful PHP Tools&quot; width=&quot;499&quot; height=&quot;287&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/02_phplangeditor.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/3505&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/8984&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;PHP Manual Search&lt;/a&gt;&lt;br /&gt;PHP Manual Search is a handy search bar that searches &lt;a href=&quot;http://www.php.net/docs.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;official PHP documentation&lt;/a&gt; from within your Web browser.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;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); &quot;&gt;Frameworks for PHP&lt;/h3&gt;&lt;ul style=&quot;list-style-type: square; &quot;&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://dwoo.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://codeigniter.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://codeigniter.com/user_guide/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;online manual&lt;/a&gt;, a couple of helpful &lt;a href=&quot;http://codeigniter.com/tutorials/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;video tutorials&lt;/a&gt; and an active &lt;a href=&quot;http://codeigniter.com/forums/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;user forum&lt;/a&gt;.&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://codeigniter.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/codeigniter.jpg&quot; alt=&quot;Codeigniter in 50 Extremely Useful PHP Tools&quot; width=&quot;448&quot; height=&quot;251&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/codeigniter.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.yiiframework.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.netbeans.org/features/php/index.html&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.solarphp.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Solar&lt;/a&gt;&lt;br /&gt;Solar is a PHP 5 development framework for Web applications derived from the &lt;a href=&quot;http://phpsavant.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://www.solarphp.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/solar.jpg&quot; alt=&quot;Solar in 50 Extremely Useful PHP Tools&quot; width=&quot;450&quot; height=&quot;198&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/solar.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.symfony-project.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.jobeet.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://pear.php.net/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://propel.phpdb.org/trac/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://wiki.limb-project.com/doku.php?id=limb3:en:packages:macro&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/macro.gif&quot; alt=&quot;Macro in 50 Extremely Useful PHP Tools&quot; width=&quot;450&quot; height=&quot;183&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/macro.gif&quot; style=&quot;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; &quot; /&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://framework.zend.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Zend Framework&lt;/a&gt;&lt;br /&gt;The Zend Framework by &lt;a href=&quot;http://www.zend.com/en/company/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://code.google.com/apis/gdata/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Google&lt;/a&gt;, &lt;a href=&quot;http://flickr.com/services/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Flickr&lt;/a&gt; and &lt;a href=&quot;http://aws.amazon.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Amazon&lt;/a&gt;.&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.qcodo.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.qcodo.com/demos/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;demos of applications that use Qcodo and presentational material that covers Qcodo&lt;/a&gt;.&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://www.qcodo.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/qc.gif&quot; alt=&quot;Qc in 50 Extremely Useful PHP Tools&quot; width=&quot;528&quot; height=&quot;249&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/qc.gif&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.modernmethod.com/sajax/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.modernmethod.com/sajax/sajax-0.12/php/example_wall.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;Wall live demonstration&lt;/a&gt;.&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.smarty.net/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://cakephp.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://book.cakephp.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;online manual&lt;/a&gt;. If you want to learn via video tutorials, check out the &lt;a href=&quot;http://live.cakephp.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;CakePHP screencasts&lt;/a&gt;.&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://cakephp.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/cake.jpg&quot; alt=&quot;Cake in 50 Extremely Useful PHP Tools&quot; width=&quot;417&quot; height=&quot;180&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/cake.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://phpsavant.com/yawiki/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.phpspec.org/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;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); &quot;&gt;PHP IDEs and Editors&lt;/h3&gt;&lt;ul style=&quot;list-style-type: square; &quot;&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.phpeclipse.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://www.phpeclipse.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/07_php_eclipse.jpg&quot; alt=&quot;07 Php Eclipse in 50 Extremely Useful PHP Tools&quot; width=&quot;445&quot; height=&quot;424&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/07_php_eclipse.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.nusphere.com/products/phped.htm&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.nusphere.com/products/php_profiler.htm&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://www.nusphere.com/products/phped.htm&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/08_phped.jpg&quot; alt=&quot;08 Phped in 50 Extremely Useful PHP Tools&quot; width=&quot;500&quot; height=&quot;339&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/08_phped.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.mpsoftware.dk/phpdesigner.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.mpsoftware.dk/tutorials.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;online tutorials&lt;/a&gt;, as well as &lt;a href=&quot;http://www.mpsoftware.dk/phpdesigner_screencasts.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;screencasts on phpDesigner&lt;/a&gt; to help you learn more about the IDE.&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://www.mpsoftware.dk/phpdesigner.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/09_phpdesigner.jpg&quot; alt=&quot;09 Phpdesigner in 50 Extremely Useful PHP Tools&quot; width=&quot;350&quot; height=&quot;300&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/09_phpdesigner.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.zend.com/en/products/studio/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://www.zend.com/en/products/studio/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;&lt;img src=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/10_zend_studio.jpg&quot; alt=&quot;10 Zend Studio in 50 Extremely Useful PHP Tools&quot; width=&quot;485&quot; height=&quot;333&quot; original=&quot;http://media.smashingmagazine.com/cdn_smash/images/powerful-php-tools/10_zend_studio.jpg&quot; style=&quot;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; &quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.aptana.com/php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.aptana.com/docs/index.php/PHP&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;online documentation about Aptana PHP&lt;/a&gt;.&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.eclipse.org/pdt/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.jcxsoftware.com/vs.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.jcxsoftware.com/tutorials.php&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;online tutorials&lt;/a&gt; as well as its &lt;a href=&quot;http://www.jcxsoftware.com/jcx/vsphp/docs&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;online documentation&lt;/a&gt;.&lt;/li&gt;&lt;li style=&quot;padding-bottom: 0.45em; &quot;&gt;&lt;a href=&quot;http://www.phpedit.com/&quot; style=&quot;color: rgb(49, 81, 162); &quot;&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=&quot;http://www.phpedit.com/Features/10-reasons-to-use-PHPEdit&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;10 reasons to use PHPEdit&lt;/a&gt; and view the &lt;a href=&quot;http://www.phpedit.com/Features/Screencasts/PHPEdit-3.0-Overview&quot; style=&quot;color: rgb(49, 81, 162); &quot;&gt;introductory screencast about PHPEdit&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;Source: &lt;a href=&quot;http://www.smashingmagazine.com/2009/01/20/50-extremely-useful-php-tools/&quot;&gt;http://www.smashingmagazine.com/2009/01/20/50-extremely-useful-php-tools/&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 1.15em; &quot;&gt;&lt;a href=&quot;http://www.qainfotech.com&quot;&gt;Software Testing Services&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/span&gt;</description><link>http://india-web-development.blogspot.com/2009/12/50-extremely-useful-php-tools.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>188</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-6936743844503183583</guid><pubDate>Fri, 20 Nov 2009 04:57:00 +0000</pubDate><atom:updated>2009-11-19T21:01:23.799-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Mysql</category><category domain="http://www.blogger.com/atom/ns#">PHP</category><category domain="http://www.blogger.com/atom/ns#">sql</category><title>NoSQL Ecosystem</title><description>&lt;span class=&quot;Apple-style-span&quot;   style=&quot;  color: rgb(51, 51, 51); line-height: 18px; font-family:Arial, Helvetica, sans-serif;font-size:12px;&quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; &quot;&gt;I found a very interesting article entitled &quot;&lt;a href=&quot;http://www.rackspacecloud.com/blog/2009/11/09/nosql-ecosystem&quot; style=&quot;color: rgb(36, 91, 139); &quot;&gt;NoSQL Ecosystem&lt;/a&gt;&quot; 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=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; &quot;&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=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; &quot;&gt;It&#39;s a good read, I would like to hear your thoughts around this NoSQL Movement idea.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot;   style=&quot;color: rgb(16, 55, 94);   font-family:Georgia, &#39;Times New Roman&#39;, Times, serif;font-size:13px;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;p face=&quot;inherit&quot; size=&quot;13px&quot; color=&quot;initial&quot; style=&quot;  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; &quot;&gt;By &lt;a href=&quot;http://twitter.com/spyced&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Jonathan Ellis&lt;/a&gt;, Systems Architect&lt;/p&gt;&lt;p style=&quot;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; &quot;&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=&quot;http://en.wikipedia.org/wiki/IBM_DB2#History&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;over thirty years&lt;/a&gt;.  Collectively, these alternatives have become known as “NoSQL databases.”&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;The fundamental problem is that relational databases cannot handle many modern workloads.  There are three specific problem areas: &lt;strong style=&quot;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; &quot;&gt;&lt;a href=&quot;http://adam.blog.heroku.com/past/2009/7/6/sql_databases_dont_scale/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;scaling out&lt;/a&gt; to data sets&lt;/strong&gt; like Digg’s (&lt;a href=&quot;http://blog.digg.com/?p=966&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;3 TB for green badges&lt;/a&gt;) or Facebook’s (&lt;a href=&quot;http://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;50 TB for inbox search&lt;/a&gt;) or eBay’s (&lt;a href=&quot;http://qconsf.com/sf2009/file?path=/QConSF2007/slides/public/RandyShoup_eBayArchPrinciples.pdf&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;2 PB overall&lt;/a&gt;),&lt;strong style=&quot;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; &quot;&gt;&lt;a href=&quot;http://havemacwillblog.com/2008/11/10/6-reasons-why-relational-database-will-be-superseded/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;per-server performance&lt;/a&gt;&lt;/strong&gt;, and &lt;strong style=&quot;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; &quot;&gt;&lt;a href=&quot;http://www.viget.com/extend/nosql-misconceptions/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;rigid schema design&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;p style=&quot;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; &quot;&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=&quot;http://www.rackspacecloud.com/blog/2009/09/23/the-cassandra-project/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&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=&quot;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; &quot;&gt;The “NoSQL” term was actually coined by a &lt;a href=&quot;http://blog.sym-link.com/2009/10/30/nosql_whats_in_a_name.html&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;fellow Racker, Eric Evans&lt;/a&gt; when Johan Oskarsson of Last.fm wanted to organize &lt;a href=&quot;http://blog.oskarsson.nu/2009/06/nosql-debrief.html&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&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=&quot;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; &quot;&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=&quot;http://blog.postmaster.gr/2009/11/05/what-i-like-about-the-nosql-crowd/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&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=&quot;http://twitter.com/emileifrem/statuses/5200345765&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Not Only SQL&lt;/a&gt;,” rather than “No SQL at all.”&lt;/p&gt;&lt;p style=&quot;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; &quot;&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=&quot;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; &quot;&gt;scalability&lt;/strong&gt;, &lt;strong style=&quot;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; &quot;&gt;data and query model&lt;/strong&gt;, and &lt;strong style=&quot;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; &quot;&gt;persistence design&lt;/strong&gt;.&lt;/p&gt;&lt;p style=&quot;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; &quot;&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=&quot;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; &quot;&gt;&lt;strong style=&quot;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; &quot;&gt;Scalability&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;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; &quot;&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=&quot;http://incubator.apache.org/cassandra/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Cassandra&lt;/a&gt;, &lt;a href=&quot;http://hadoop.apache.org/hbase/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;HBase&lt;/a&gt;, &lt;a href=&quot;http://riak.basho.com/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Riak&lt;/a&gt;,&lt;a href=&quot;http://code.google.com/p/scalaris/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Scalaris&lt;/a&gt;, &lt;a href=&quot;http://project-voldemort.com/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&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=&quot;http://www.25hoursaday.com/weblog/2009/01/16/BuildingScalableDatabasesProsAndConsOfVariousDatabaseShardingSchemes.aspx&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;You don’t.&lt;/a&gt;)&lt;/p&gt;&lt;p style=&quot;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; &quot;&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=&quot;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; &quot;&gt;&lt;img class=&quot;alignnone&quot; title=&quot;NoSQL_1&quot; src=&quot;http://c0179631.cdn.cloudfiles.rackspacecloud.com/NoSQL_1_New.png&quot; alt=&quot;&quot; width=&quot;528&quot; height=&quot;214&quot; style=&quot;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; &quot; /&gt;&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;Non-distributed NoSQL databases include &lt;a href=&quot;http://couchdb.apache.org/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;CouchDB&lt;/a&gt;, &lt;a href=&quot;http://www.mongodb.org/display/DOCS/Home&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;MongoD&lt;/a&gt;&lt;a href=&quot;http://www.mongodb.org/display/DOCS/Home&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;B&lt;/a&gt;, &lt;a href=&quot;http://neo4j.org/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Neo4j&lt;/a&gt;, &lt;a href=&quot;http://code.google.com/p/redis/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Redis&lt;/a&gt;, and &lt;a href=&quot;http://1978th.net/tokyocabinet/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&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=&quot;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; &quot;&gt;&lt;strong style=&quot;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; &quot;&gt;Data and Query Model&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;There is a lot of variety in the data models and query APIs in NoSQL databases.&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;&lt;img class=&quot;alignnone&quot; title=&quot;NoSQL_2&quot; src=&quot;http://c0179631.cdn.cloudfiles.rackspacecloud.com/NoSQL_2_New.png&quot; alt=&quot;&quot; width=&quot;528&quot; height=&quot;351&quot; style=&quot;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; &quot; /&gt;&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;&lt;em style=&quot;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); &quot;&gt;(Respective Links: &lt;a href=&quot;http://wiki.apache.org/cassandra/API&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Thrift&lt;/a&gt;, &lt;a href=&quot;http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;map/reduce views&lt;/a&gt;, &lt;a href=&quot;http://wiki.apache.org/hadoop/Hbase/ThriftApi&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Thrift&lt;/a&gt;, &lt;a href=&quot;http://www.mongodb.org/display/DOCS/Querying&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Cursor&lt;/a&gt;,&lt;a href=&quot;http://api.neo4j.org/current/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt; Graph&lt;/a&gt;, &lt;a href=&quot;http://code.google.com/p/redis/wiki/CommandReference&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Collection&lt;/a&gt;, &lt;a href=&quot;http://riak.basho.com/nyc-nosql/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Nested hashes&lt;/a&gt;, &lt;a href=&quot;http://code.google.com/p/scalaris/wiki/APIs&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;get/put&lt;/a&gt;, &lt;a href=&quot;http://1978th.net/tokyocabinet/spex-en.html&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;get/put&lt;/a&gt;, &lt;a href=&quot;http://project-voldemort.com/javadoc/client/voldemort/client/package-summary.html&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;get/put&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;Some highlights:&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;The columnfamily model shared by Cassandra and HBase is inspired by the one described by &lt;a href=&quot;http://labs.google.com/papers/bigtable-osdi06.pdf&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;Google’s Bigtable paper&lt;/a&gt;, section 2.  (Cassandra drops historical versions, and adds&lt;a href=&quot;http://arin.me/code/wtf-is-a-supercolumn-cassandra-data-model&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&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=&quot;http://en.wikipedia.org/wiki/Sparse_array&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&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=&quot;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; &quot;&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=&quot;http://spyced.blogspot.com/2009/05/why-you-wont-be-building-your-killer.html&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;difficult to implement more sophisticated structures on top of distributed key/value&lt;/a&gt;.&lt;/p&gt;&lt;p style=&quot;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; &quot;&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=&quot;http://en.wikipedia.org/wiki/Binary_large_object&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;blob&lt;/a&gt; each time.&lt;/p&gt;&lt;p style=&quot;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; &quot;&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=&quot;http://www.slideshare.net/emileifrem/neo4j-the-benefits-of-graph-databases-oscon-2009&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;1000s of times faster&lt;/a&gt; than alternatives.&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;Scalaris is unique in offering distributed transactions across multiple keys.  (Discussing the &lt;a href=&quot;http://queue.acm.org/detail.cfm?id=1394128&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;trade-offs&lt;/a&gt;&lt;a href=&quot;http://queue.acm.org/detail.cfm?id=1394128&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&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=&quot;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; &quot;&gt;&lt;strong style=&quot;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; &quot;&gt;Persistence Design&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;By persistence design I mean, “how is data stored internally?”&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;&lt;img class=&quot;alignnone&quot; title=&quot;NoSQL_3&quot; src=&quot;http://c0179631.cdn.cloudfiles.rackspacecloud.com/NoSQL_3.png&quot; alt=&quot;&quot; width=&quot;528&quot; height=&quot;353&quot; style=&quot;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; &quot; /&gt;&lt;/p&gt;&lt;p style=&quot;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; &quot;&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=&quot;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; &quot;&gt;In-memory databases are very, very fast (Redis achieves &lt;a href=&quot;http://code.google.com/p/redis/wiki/Benchmarks&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&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=&quot;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; &quot;&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=&quot;http://www.springerlink.com/content/rfkpd5yej9v5chrp/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;The log-structured merge-tree&lt;/a&gt;.)&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/B-tree&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&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=&quot;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; &quot;&gt;An interesting variant is CouchDB’s &lt;a href=&quot;http://jchrisa.net/drl/nosql-oakland/btree-nosql-oak.pdf&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;append-only B-Trees&lt;/a&gt;, which avoids the overhead of seeks at the cost of limiting CouchDB to &lt;a href=&quot;http://horicky.blogspot.com/2008/10/couchdb-implementation.html&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;one write at a time&lt;/a&gt;.&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;&lt;strong style=&quot;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; &quot;&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;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; &quot;&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=&quot;http://nosqleast.com/2009/&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;NoSQL East&lt;/a&gt;.&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;NoSQL conference announcements and related discussion can be found on the G&lt;a href=&quot;http://groups.google.com/group/nosql-discussion?pli=1&quot; target=&quot;_blank&quot; style=&quot;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; &quot;&gt;oogle discussion group&lt;/a&gt;.&lt;/p&gt;&lt;p style=&quot;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; &quot;&gt;Source: &lt;span class=&quot;Apple-style-span&quot;&gt;&lt;a href=&quot;http://www.rackspacecloud.com/blog/2009/11/09/nosql-ecosystem/&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&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;</description><link>http://india-web-development.blogspot.com/2009/11/nosql-ecosystem.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>18</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-2539942863963699600</guid><pubDate>Thu, 05 Nov 2009 02:27:00 +0000</pubDate><atom:updated>2009-11-04T18:29:04.085-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Mysql</category><category domain="http://www.blogger.com/atom/ns#">PHP</category><category domain="http://www.blogger.com/atom/ns#">PHP techniques</category><title>MySQL University: GRAPH computation engine for MySQL</title><description>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: rgb(51, 51, 51); line-height: 18px; &quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; &quot;&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=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; &quot;&gt;GRAPH is a MySQL plugin which promises to handle such data in an easy and efficient manner using normal SQL syntax. I don&#39;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=&quot;http://forge.mysql.com/wiki/GRAPH_computation_engine_for_MySQL&quot; style=&quot;color: rgb(36, 91, 139); &quot;&gt;attend MySQL Uni session&lt;/a&gt; this Thursday, November 5th at 10:00 GMT.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; &quot;&gt;As usual session recording in flash format will also be available at a later time.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; &quot;&gt;More information about GRAPH is available at &lt;a href=&quot;http://openquery.com/products/graph-engine&quot; style=&quot;color: rgb(36, 91, 139); &quot;&gt;OpenQuery&#39;s site&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; &quot;&gt;For more information about MySQL University, go to my &lt;a href=&quot;http://www.phpfreaks.com/blog/mysql-university&quot; style=&quot;color: rgb(36, 91, 139); &quot;&gt;introductory post&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 10px; padding-right: 20px; padding-bottom: 5px; padding-left: 20px; &quot;&gt;Source: &lt;a href=&quot;http://www.phpfreaks.com/blog/mysql-university-graph-computation-engine-for-mysql&quot;&gt;http://www.phpfreaks.com/blog/mysql-university-graph-computation-engine-for-mysql&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;</description><link>http://india-web-development.blogspot.com/2009/11/mysql-university-graph-computation.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-7087050843855920365</guid><pubDate>Tue, 08 Sep 2009 03:10:00 +0000</pubDate><atom:updated>2009-09-07T20:15:55.682-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">open source</category><title>11 Popular Open Source Enterprise Software</title><description>&lt;span class=&quot;Apple-style-span&quot; style=&quot;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:&#39;Times New Roman&#39;;font-size:16px;&quot;  &gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(80, 80, 80); line-height: 18px;font-family:Arial;font-size:13px;&quot;  &gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;A&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://mediaproducts.gartner.com/reprints/microsoft/164057.html&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;report&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;Each year, InfoWorld reviews hundreds of open source organization as part of its ‘Best of Open Source’ /&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://www.infoworld.com/d/open-source/best-open-source-enterprise-software-740&amp;amp;current=1&amp;amp;last=12#slideshowTop&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&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=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/strong&gt;&lt;/p&gt;&lt;h2 style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/strong&gt;&lt;div id=&quot;attachment_490&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.compiere.com/&quot; style=&quot;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;&quot;&gt;&lt;img class=&quot;size-full wp-image-490&quot; title=&quot;compiere&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/09/compiere.jpg&quot; alt=&quot;Compiere&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;75&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;Compiere&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;Compiere&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;a href=&quot;http://www.compiere.com/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;Compiere&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;attachment_491&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;a href=&quot;http://www.dimdim.com/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;&lt;img class=&quot;size-full wp-image-491&quot; title=&quot;dimdim-oss&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/09/dimdim-oss.jpg&quot; alt=&quot;DimDim&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;75&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;DimDim&lt;/p&gt;&lt;/div&gt;&lt;h2 style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;DimDim&lt;/strong&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;a href=&quot;http://www.dimdim.com/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;Dimdim&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://www.webex.com/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;WebEx&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;and&lt;a href=&quot;https://www2.gotomeeting.com/?Portal=www.gotomeeting.com&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&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=&quot;attachment_492&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;a href=&quot;http://www.hotscripts.com/listing/drupal/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;&lt;img class=&quot;size-full wp-image-492&quot; title=&quot;drupal-oss&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/09/drupal-oss.jpg&quot; alt=&quot;Drupal&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;75&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;Drupal&lt;/p&gt;&lt;/div&gt;&lt;h2 style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;Drupal&lt;/strong&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;a href=&quot;http://drupal.org/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;Drupal&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;attachment_493&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;a href=&quot;http://www.intalio.com/products/bpm/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;&lt;img class=&quot;size-full wp-image-493&quot; title=&quot;intalio-oss&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/09/intalio-oss.jpg&quot; alt=&quot;Intalio BPM&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;75&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;Intalio BPM&lt;/p&gt;&lt;/div&gt;&lt;h2 style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;Intalio BPM&lt;/strong&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;a href=&quot;http://www.intalio.com/products/bpm/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;&lt;br /&gt;Intalio&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/strong&gt;&lt;div id=&quot;attachment_495&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://jasperforge.org/&quot; style=&quot;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;&quot;&gt;&lt;img class=&quot;size-full wp-image-495&quot; title=&quot;jasper-oss&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/09/jasper-oss.jpg&quot; alt=&quot;JasperSoft BI Suite&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;75&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;JasperSoft BI Suite&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;JasperSoft BI Suite&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;a href=&quot;http://jasperforge.org/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;JasperSoft&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/strong&gt;&lt;div id=&quot;attachment_496&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.magentocommerce.com/&quot; style=&quot;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;&quot;&gt;&lt;img class=&quot;size-full wp-image-496&quot; title=&quot;magento-oss&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/09/magento-oss.jpg&quot; alt=&quot;Magento&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;75&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;Magento&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;Magento&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;a href=&quot;http://www.magentocommerce.com/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;Magento&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/strong&gt;&lt;div id=&quot;attachment_497&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.openbravo.com/&quot; style=&quot;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;&quot;&gt;&lt;img class=&quot;size-full wp-image-497&quot; title=&quot;opebravo-oss&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/09/opebravo-oss.jpg&quot; alt=&quot;OpenBravo ERP&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;75&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;OpenBravo ERP&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;OpenBravo ERP&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;a href=&quot;http://www.openbravo.com/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;OpenBravo&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;margin: 0px; padding: 0px;&quot;&gt;rd-party&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;attachment_498&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;a href=&quot;http://www.pentaho.com/index.php&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;&lt;img class=&quot;size-full wp-image-498&quot; title=&quot;pentaho-oss&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/09/pentaho-oss.jpg&quot; alt=&quot;Pentaho BI Suite &quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;75&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;Pentaho BI Suite&lt;/p&gt;&lt;/div&gt;&lt;h2 style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;Pentaho BI Suite&lt;/strong&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;a href=&quot;http://www.pentaho.com/index.php&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;Pentaho&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/strong&gt;&lt;div id=&quot;attachment_500&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://piwik.org/&quot; style=&quot;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;&quot;&gt;&lt;img class=&quot;size-full wp-image-500&quot; title=&quot;piwiki-oss&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/09/piwiki-oss.jpg&quot; alt=&quot;Piwik&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;75&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;Piwik&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;Piwik&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;a href=&quot;http://piwik.org/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;Piwik&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;Apple-converted-space&quot;&gt; &lt;/span&gt;&lt;a href=&quot;http://www.blogger.com/piwik-web-analytics-script/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;post&lt;/a&gt;.&lt;/p&gt;&lt;h2 style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/strong&gt;&lt;div id=&quot;attachment_501&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;https://www.sugarcrm.com/crm/&quot; style=&quot;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;&quot;&gt;&lt;img class=&quot;size-full wp-image-501&quot; title=&quot;sugarcrm-oss&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/09/sugarcrm-oss.jpg&quot; alt=&quot;SugarCRM &quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;75&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;SugarCRM&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;SugarCRM&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;a href=&quot;https://www.sugarcrm.com/crm/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;SugarCRM&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;/strong&gt;&lt;div id=&quot;attachment_502&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;&lt;a href=&quot;http://www.hotscripts.com/listing/wordpress/&quot; style=&quot;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;&quot;&gt;&lt;img class=&quot;size-full wp-image-502&quot; title=&quot;wordpress-oss&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/09/wordpress-oss.jpg&quot; alt=&quot;WordPress&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;75&quot; width=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;WordPress&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;strong style=&quot;margin: 0px; padding: 0px;&quot;&gt;WordPress&lt;/strong&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;a href=&quot;http://www.wordpress.org/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;WordPress&lt;/a&gt;&lt;span class=&quot;Apple-converted-space&quot;&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=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;Source: &lt;a href=&quot;http://www.hotscripts.com/blog/11-popular-open-source-enterprise-software/&quot;&gt;http://www.hotscripts.com/blog/11-popular-open-source-enterprise-software/&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;</description><link>http://india-web-development.blogspot.com/2009/09/11-popular-open-source-enterprise.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>8</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-6302919134741085338</guid><pubDate>Mon, 07 Sep 2009 03:20:00 +0000</pubDate><atom:updated>2009-09-06T20:36:20.727-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">rss builder</category><category domain="http://www.blogger.com/atom/ns#">XML</category><title>How to Create an RSS Feed</title><description>RSS is a method of distributing links to content in your web site that you&#39;d like others to use. In other words, it&#39;s a mechanism to &quot;syndicate&quot; your content.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&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 &quot;item&quot; in your RSS file, you can have the page appear in front of those who read information using RSS readers or &quot;news aggregators&quot;. 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&#39;s a can of worms. RSS as introduced by Netscape in 1999 then later abandoned in 2001 stood for &quot;Rich Site Summary.&quot; Another version of RSS pioneered by UserLand Software stands for &quot;Really Simple Syndication.&quot; In yet another version, RSS stands for &quot;RDF Site Summary.&quot;&lt;br /&gt;History buffs might be interested that there&#39;s been some rivalry over who invented RSS. This is why we have both different names and indeed different &quot;flavors&quot; or versions of RSS.&lt;br /&gt;At the heart of an RSS file are &quot;items.&quot; 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&#39;d like others to link to. For example, let&#39;s say you just created a web page reviewing a new cell phone that&#39;s being released. Information about that page would form an item.&lt;br /&gt;To enter your item into the RSS file, you&#39;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&#39;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&#39;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&#39;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&#39;t reread - just carry on to see how simple it is. First, open a text editor like Notepad. We&#39;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&#39;s one more thing we need to do. We actually have to define all this information as forming a particular &quot;item,&quot; which we do using a special item tag.&lt;br /&gt;&lt;br /&gt;You place the opening item tag, &quot;item&quot; at the top or start of all the information we&#39;ve listed. You then place the closing item tag, &quot;item&quot;, at the bottom or &quot;end&quot; of the item information. &lt;br /&gt;&lt;br /&gt;Congratulations! You&#39;ve now made your first item. There&#39;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&#39;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 &quot;channel&quot; when it looks just like item information? Simple. As long as we don&#39;t surround this information with an opening and closing item tags, it won&#39;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&#39;ve done is compatible with UserLand&#39;s popular RSS 0.91 version. However, it also matches UserLand&#39;s latest RSS 2.0 version, as well, so we&#39;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 &quot;channel&quot; tag. That gives us this at the top of the file:&lt;br /&gt;&lt;br /&gt;&lt;rss version=&quot;2.0&quot;&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&#39;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&#39;s say we just call it &quot;feed.xml&quot;.&lt;br /&gt;&lt;br /&gt;Now that our file is saved, we can place it anywhere we want on our web server. Let&#39;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=&quot;alternate&quot; type=&quot;application/rss+xml&quot; title=&quot;WikiHow Feeds&quot; href=&quot;http://www.wikihow.com/feed.xml&quot;&gt;&lt;br /&gt;If everything worked, you should see the little orange RSS icon in your browser&#39;s address bar. (Firefox,Opera)&lt;br /&gt;&lt;br /&gt;Tips&lt;br /&gt;Getting started will take time and isn&#39;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;</description><link>http://india-web-development.blogspot.com/2009/09/how-to-create-rss-feed.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-959789256831284742</guid><pubDate>Tue, 25 Aug 2009 04:44:00 +0000</pubDate><atom:updated>2009-08-24T21:47:41.592-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">popularity</category><category domain="http://www.blogger.com/atom/ns#">programming language</category><title>Determining Programming Language Popularity</title><description>&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: rgb(0, 0, 0); font-family: &#39;Times New Roman&#39;; 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;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(80, 80, 80); font-family: Arial; font-size: 13px; line-height: 18px;&quot;&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&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=&quot;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;&quot;&gt;&lt;a href=&quot;http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html&quot; target=&quot;_blank&quot; style=&quot;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;&quot;&gt;TIOBE – Popularity by Community Index&lt;/a&gt;&lt;/h2&gt;&lt;div id=&quot;attachment_432&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;a href=&quot;http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;&lt;img class=&quot;size-full wp-image-432&quot; title=&quot;TIOBE&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/08/tiobe3.jpg&quot; alt=&quot;TIOBE&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;62&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;TIOBE&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&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=&quot;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;&quot;&gt;&lt;a href=&quot;http://langpop.com/&quot; target=&quot;_blank&quot; style=&quot;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;&quot;&gt;LangPop - Popularity by Search and Discussions&lt;/a&gt;&lt;/h2&gt;&lt;div id=&quot;attachment_433&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;a href=&quot;http://langpop.com/&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;&lt;img class=&quot;size-full wp-image-433&quot; title=&quot;LangPop&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/08/langpop4.jpg&quot; alt=&quot;LangPop&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;62&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;LangPop&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&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=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt; &lt;/p&gt;&lt;h2 style=&quot;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;&quot;&gt;&lt;a href=&quot;https://www.ohloh.net/languages/compare&quot; target=&quot;_blank&quot; style=&quot;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;&quot;&gt;Ohloh - Popularity by Commits&lt;/a&gt;&lt;/h2&gt;&lt;div id=&quot;attachment_434&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;a href=&quot;https://www.ohloh.net/languages/compare&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;&lt;img class=&quot;size-full wp-image-434&quot; title=&quot;Ohloh&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/08/ohloh1.jpg&quot; alt=&quot;Ohloh&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;62&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;Ohloh&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&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=&quot;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;&quot;&gt;&lt;a href=&quot;http://www.blackducksoftware.com/news/releases/2009-08-12&quot; target=&quot;_blank&quot; style=&quot;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;&quot;&gt;BlackDuck - Popularity by Lines of Code&lt;/a&gt;&lt;/h2&gt;&lt;div id=&quot;attachment_435&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;a href=&quot;http://www.blackducksoftware.com/news/releases/2009-08-12&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;&lt;img class=&quot;size-full wp-image-435&quot; title=&quot;BlackDuck&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/08/blackduck1.jpg&quot; alt=&quot;BlackDuck&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;62&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;BlackDuck&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&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=&quot;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;&quot;&gt;&lt;a href=&quot;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&quot; target=&quot;_blank&quot; style=&quot;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;&quot;&gt;Google Trends - Popularity by Search Trends&lt;/a&gt;&lt;/h2&gt;&lt;div id=&quot;attachment_436&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;a href=&quot;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&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;&lt;img class=&quot;size-full wp-image-436&quot; title=&quot;Google Trends &quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/08/google-trends1.jpg&quot; alt=&quot;Google Trends &quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;62&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;Google Trends&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&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=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt; &lt;/p&gt;&lt;h2 style=&quot;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;&quot;&gt;&lt;a href=&quot;http://www.indeed.com/jobtrends?q=php%2Casp.net%2Casp%2Cajax%2Ccfml%2Cjsp%2Cruby+on+rails&amp;amp;l=&amp;amp;relative=1&quot; target=&quot;_blank&quot; style=&quot;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;&quot;&gt;Indeed - Popularity by Job Trends&lt;/a&gt;&lt;/h2&gt;&lt;div id=&quot;attachment_437&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;a href=&quot;http://www.indeed.com/jobtrends?q=php%2Casp.net%2Casp%2Cajax%2Ccfml%2Cjsp%2Cruby+on+rails&amp;amp;l=&amp;amp;relative=1&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;&lt;img class=&quot;size-full wp-image-437&quot; title=&quot;Indeed &quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/08/indeeed1.jpg&quot; alt=&quot;Indeed &quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;62&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;Indeed&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&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=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt; &lt;/p&gt;&lt;h2 style=&quot;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;&quot;&gt;&lt;a href=&quot;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&quot; target=&quot;_blank&quot; style=&quot;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;&quot;&gt;O’Reillly - Popularity by Book Sales&lt;/a&gt;&lt;/h2&gt;&lt;div id=&quot;attachment_438&quot; class=&quot;wp-caption alignright&quot; style=&quot;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;&quot;&gt;&lt;a href=&quot;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&quot; style=&quot;margin: 0px; padding: 0px; color: rgb(132, 0, 0);&quot;&gt;&lt;img class=&quot;size-full wp-image-438&quot; title=&quot;O&#39;Reillly&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/08/oreilly1.jpg&quot; alt=&quot;O&#39;Reillly&quot; style=&quot;border-style: none; border-width: 0px; margin: 0px; padding: 0px;&quot; height=&quot;62&quot; width=&quot;100&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot; style=&quot;margin: 0px; padding: 0px 4px 5px; font-size: 11px; line-height: 22px;&quot;&gt;O&#39;Reillly&lt;/p&gt;&lt;/div&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&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=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;a href=&quot;http://www.hotscripts.com/blog/determining-programming-language-popularity/&quot;&gt;http://www.hotscripts.com/blog/determining-programming-language-popularity/&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 15px; padding: 0px; line-height: 22px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;</description><link>http://india-web-development.blogspot.com/2009/08/determining-programming-language.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>5</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-1924286504138331428</guid><pubDate>Sat, 01 Aug 2009 01:43:00 +0000</pubDate><atom:updated>2009-07-31T18:44:42.099-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">application</category><category domain="http://www.blogger.com/atom/ns#">iphone</category><category domain="http://www.blogger.com/atom/ns#">web developers</category><title>6 iPhone Apps for Web Developers</title><description>&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=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=323249166&amp;amp;mt=8&quot;&gt;&lt;img class=&quot;alignright size-full wp-image-325&quot; style=&quot;margin-left: 5px; margin-right: 5px;&quot; title=&quot;developernotes&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/07/developernotes.jpg&quot; alt=&quot;developernotes&quot; height=&quot;75&quot; width=&quot;75&quot; /&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=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=319453066&amp;amp;mt=8&quot;&gt;&lt;img class=&quot;alignright size-full wp-image-326&quot; style=&quot;margin-left: 5px; margin-right: 5px;&quot; title=&quot;icheatsheet&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/07/icheatsheet.jpg&quot; alt=&quot;icheatsheet&quot; height=&quot;75&quot; width=&quot;75&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=319453066&amp;amp;mt=8&quot; target=&quot;_blank&quot;&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=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewArtist?id=286479939&quot;&gt;&lt;img class=&quot;alignright size-full wp-image-327&quot; style=&quot;margin-left: 5px; margin-right: 5px;&quot; title=&quot;ftponthego&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/07/ftponthego.jpg&quot; alt=&quot;ftponthego&quot; height=&quot;76&quot; width=&quot;75&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewArtist?id=286479939&quot; target=&quot;_blank&quot;&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=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=312061860&amp;amp;mt=8&quot;&gt;&lt;img class=&quot;alignright size-full wp-image-328&quot; style=&quot;margin-left: 5px; margin-right: 5px;&quot; title=&quot;dbviewer&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/07/dbviewer.jpg&quot; alt=&quot;dbviewer&quot; height=&quot;75&quot; width=&quot;75&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=312061860&amp;amp;mt=8&quot; target=&quot;_blank&quot;&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=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293280857&amp;amp;mt=8&quot;&gt;&lt;img class=&quot;alignright size-full wp-image-329&quot; style=&quot;margin-left: 5px; margin-right: 5px;&quot; title=&quot;worktimer&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/07/worktimer.jpg&quot; alt=&quot;worktimer&quot; height=&quot;74&quot; width=&quot;75&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293280857&amp;amp;mt=8&quot; target=&quot;_blank&quot;&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=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=308126298&amp;amp;mt=8&quot;&gt;&lt;img class=&quot;alignright size-full wp-image-330&quot; style=&quot;margin-left: 5px; margin-right: 5px;&quot; title=&quot;soureviewer&quot; src=&quot;http://www.hotscripts.com/blog/wp-content/uploads/2009/07/soureviewer.jpg&quot; alt=&quot;soureviewer&quot; height=&quot;75&quot; width=&quot;75&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=308126298&amp;amp;mt=8&quot; target=&quot;_blank&quot;&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;</description><link>http://india-web-development.blogspot.com/2009/07/6-iphone-apps-for-web-developers.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>11</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-5592118370755995143</guid><pubDate>Sat, 04 Jul 2009 04:39:00 +0000</pubDate><atom:updated>2009-07-03T21:43:00.845-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PHP</category><category domain="http://www.blogger.com/atom/ns#">PHP techniques</category><category domain="http://www.blogger.com/atom/ns#">php tutorial</category><title>10 Ways to Avoid Writing Crappy Code</title><description>&lt;span style=&quot;font-weight:bold;&quot;&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=&quot;font-weight:bold;&quot;&gt;1. Employ Test Driven Design&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Code that is buggy or simply doesn&#39;t work at all can safely be considered &quot;crappy code&quot;. 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&#39;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&#39;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=&quot;font-weight:bold;&quot;&gt;2. Refactor, refactor, refactor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Refactoring means &quot;to improve the design of existing code&quot;. Making changes to code results in an increasing loss of quality of that code, this is known as &quot;software decay&quot;. To battle this phenomenon, you have to constantly evaluate if the code hasn&#39;t lost it&#39;s quality, and look for opportunities to improve the design beyond it&#39;s original. But there&#39;s a catch. And it isn&#39;t the time that refactoring takes, if you do it properly you&#39;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&#39;ve written the right tests, you can make sure your changes don&#39;t break anything.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&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=&quot;font-weight:bold;&quot;&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=&quot;font-weight:bold;&quot;&gt;5. Don&#39;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&#39;t. Remember a Design Pattern consists of a problem and one or more solutions to that problem. Until you have the problem, don&#39;t use the solution.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&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&#39;ll have to live with them. If you try to &quot;patch&quot; them, chances are you will do more harm than good.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;7. Pretend you are writing a book&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It has been said that &quot;code should be easy to read rather than easy to write&quot;. 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&#39;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&#39;s how someone, maybe you, will feel if you ignore this advice.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;8. Peer Review&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Believe it or not, you don&#39;t know everything and you aren&#39;t always right. Nobody is. Getting a &quot;second opinion&quot; can only improve the end result.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&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&#39;t think that will be a problem.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;10. Create a distinction between &quot;source code&quot; and a &quot;build&quot;&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.</description><link>http://india-web-development.blogspot.com/2009/07/10-ways-to-avoid-writing-crappy-code.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>9</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-3049292486697510844</guid><pubDate>Fri, 03 Jul 2009 06:58:00 +0000</pubDate><atom:updated>2009-11-05T04:55:35.622-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PHP</category><category domain="http://www.blogger.com/atom/ns#">php tutorial</category><title>10 Signs of Crappy PHP Software</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;Like it or not, as a professional developer, sooner or later you are going to do some customising (if you are lucky, &quot;extending&quot;) of existing software.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&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=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;1. The software tries to reinvent the object model, or &quot;fix&quot; language features.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;See if you can find a class called &quot;Object&quot;. If you find it, it&#39;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 &quot;fixes&quot; won&#39;t stop there. Unplug your phone and hide under your desk.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;2. The code includes user defined global variables&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;A search in the code for &quot;global&quot; or &quot;$GLOBALS&quot; may reveal something like this:&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;global $database, $my, $mainframe;&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&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&#39;re psychic. Unlimited bonus points if you can say what code has had it&#39;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=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;3. Scattered HTML and SQL&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&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, &quot;crappyness&quot; is most definitely confirmed.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;4. Classes do too much&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&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=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&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=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;If lots of properties are declared &quot;public static&quot;, triple your quote. If I have to explain why, maybe there&#39;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=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;6. Multiple levels of inheritance&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&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&#39;ll buy you a beer).&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;7. The authors try to use Design Patterns&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&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 &quot;factory&quot;, &quot;decorator&quot;, &quot;strategy&quot; 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=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;8. The software messes with the error level&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&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&#39;s little more than a formality though.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;9. In the code base, there is a directory called &quot;core&quot;&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&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 &quot;core&quot; is a sign of bad design.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&gt;10. The software uses it&#39;s own template language.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=&quot;2&quot;&gt;&lt;font face=&quot;verdana&quot;&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 &quot;for&quot; loop.&lt;/font&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;small&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;4&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;16&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;small&quot;&gt;&lt;a style=&quot;font-family: verdana;&quot; href=&quot;http://www.pixeloutpost.com/&quot;&gt;&lt;font style=&quot;text-decoration: none;&quot;&gt;&lt;font style=&quot;font-style: normal;&quot;&gt;&lt;font&gt;fine arts prints&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;verdana&quot;&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=&quot;2&quot;&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font size=&quot;2&quot;&gt;&lt;a style=&quot;font-family: verdana;&quot; href=&quot;http://www.centauruscomputers.com/&quot;&gt;&lt;font style=&quot;text-decoration: none;&quot;&gt;&lt;font style=&quot;font-style: normal;&quot;&gt;&lt;font&gt;gaming computer&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;font face=&quot;verdana&quot;&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=&quot;http://www.netconcepts.cn/services/seo&quot;&gt;Chinese SEO&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.seopositive.com/&quot;&gt;SEO Company&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;font class=&quot;Apple-style-span&quot; style=&quot;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;&quot; face=&quot;&#39;Times New Roman&#39;&quot; size=&quot;3&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse;&quot; face=&quot;Arial&quot;&gt;&lt;a href=&quot;http://www.marketingguru.co.uk/&quot;&gt;Marketing Lists&lt;/a&gt; - &lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; style=&quot;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;&quot; face=&quot;&#39;Times New Roman&#39;&quot; size=&quot;3&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse;&quot; face=&quot;Arial&quot;&gt;Accurate and targeted UK consumer mailing list selectable from over 1000criteria.&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;li style=&quot;font-weight: bold;&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; style=&quot;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;&quot; face=&quot;&#39;Times New Roman&#39;&quot; size=&quot;3&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse;&quot; face=&quot;Arial&quot;&gt;&lt;a href=&quot;http://www.moolahology.com/&quot;&gt;Work from home&lt;/a&gt; - &lt;/font&gt;&lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; style=&quot;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;&quot; face=&quot;&#39;Times New Roman&#39;&quot; size=&quot;3&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse;&quot; face=&quot;Arial&quot;&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=&quot;http://www.infocaresolution.com/&quot;&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=&quot;http://www.webpromotionerindia.com/&quot;&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=&quot;http://www.covalentworks.com/&quot;&gt;EDI solutions&lt;/a&gt; - EDI solutions without buying EDI software. Complete outsourced systems.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.clinkweb.com/&quot;&gt;Web design company in Miami&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.bootstrapdevelopment.com/&quot;&gt;ipod software&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.eci2.com/&quot;&gt;Eci software&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.highlyrelevant.com/california-search-engine-optimization-seo.html&quot;&gt;California seo services&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.micrositez.co.uk/&quot;&gt;&lt;font dir=&quot;ltr&quot; id=&quot;:2y3&quot;&gt;SEO&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.techservicesguide.com.au/&quot;&gt;IT Support IT Services&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.webconferencing.net.au/livemeetingonline.php&quot;&gt;Mikes Live Meeting&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://india-web-development.blogspot.com/2009/07/10-signs-of-crappy-php-software.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-2481018756916202142</guid><pubDate>Tue, 23 Jun 2009 08:44:00 +0000</pubDate><atom:updated>2009-06-26T05:28:13.071-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PHP</category><category domain="http://www.blogger.com/atom/ns#">PHP techniques</category><title>Using MySQL Administrator with WampServer</title><description>&lt;p&gt;For those readers who do not develop PHP on Windows platform &lt;a href=&quot;http://www.wampserver.com/en/&quot; target=&quot;_blank&quot;&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=&quot;http://dev.mysql.com/downloads/gui-tools/5.0.html&quot; target=&quot;_blank&quot;&gt;MySQL GUI Tools&lt;/a&gt; package.&lt;/p&gt; &lt;p&gt;The problem with this pair, is that they don&#39;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 &#39;Could not find settings&#39; error message.&lt;/p&gt; &lt;p&gt;&lt;img src=&quot;&quot; alt=&quot;&quot; /&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 &#39;Startup variables&#39; that lets you configure your server.&lt;/p&gt; &lt;p&gt;The reason is simple. WampServer keeps MySQL&#39;s config file in a directory, that is not checked by MySQL Administrator&#39;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&#39;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&#39;s version may vary)&lt;/p&gt; &lt;p&gt;Change it like this:&lt;br /&gt;&lt;tt&gt;&quot;c:\wamp\bin\mysql\mysql5.1.&lt;wbr&gt;33\bin\mysqld.exe&quot; --defaults-file=&quot;c:\wamp\bin\&lt;wbr&gt;mysql\mysql5.1.33\my.ini&quot; 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&#39;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=&quot;http://forums.mysql.com/read.php?34,128259,128297#msg-128297&quot; target=&quot;_blank&quot;&gt;MySQL Forums post, where I&#39;ve found this solution&lt;/a&gt;|&lt;a href=&quot;http://www.bluehat.co.uk/services/database-development.aspx&quot; target=&quot;_blank&quot;&gt;Database Software Development by Expert Developers, UK&lt;/a&gt;&lt;/p&gt;</description><link>http://india-web-development.blogspot.com/2009/06/using-mysql-administrator-with.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>10</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-7125860447925645412</guid><pubDate>Thu, 18 Jun 2009 11:01:00 +0000</pubDate><atom:updated>2009-08-01T05:55:17.231-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux user</category><category domain="http://www.blogger.com/atom/ns#">PHP</category><category domain="http://www.blogger.com/atom/ns#">PHP training</category><category domain="http://www.blogger.com/atom/ns#">php tutorial</category><title>SSH Auto-mount Network Share</title><description>&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=&quot;text-decoration: underline;&quot;&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&#39;s there, the file should be called, &quot;authorized_keys&quot;.&lt;br /&gt; &lt;/p&gt; &lt;pre&gt;ls -al ~/.ssh/&lt;/pre&gt;&lt;p&gt; If you&#39;re having trouble with this part, you can reference this tutorial which breaks this component into smaller steps: &lt;a href=&quot;http://wp.uberdose.com/2006/10/16/ssh-automatic-login/&quot; target=&quot;_blank&quot;&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&#39;ll call it &quot;mount.sh&quot;, 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 &#39;ls&#39; 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&#39;re on your server.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description><link>http://india-web-development.blogspot.com/2009/06/ssh-auto-mount-network-share.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>4</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-6231980242190787773</guid><pubDate>Sat, 30 May 2009 01:20:00 +0000</pubDate><atom:updated>2009-05-29T18:24:52.034-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Mysql</category><category domain="http://www.blogger.com/atom/ns#">MySQL 5.1</category><category domain="http://www.blogger.com/atom/ns#">PHP</category><title>MySQL University: Boosting Performance With MySQL 5.1 Partitioning</title><description>&lt;p align=&quot;justify&quot;&gt;&lt;span style=&quot;font-family:arial;font-size:85%;&quot;&gt;It&#39;s been some time some time since we had a MySQL Uni session subject that could be interesting to an &#39;average&#39; PHP developer. The one that&#39;s going to take place next Thursday will definitely be of this sort.&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;span style=&quot;font-family:arial;font-size:85%;&quot;&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=&quot;justify&quot;&gt;&lt;span style=&quot;font-family:arial;font-size:85%;&quot;&gt;That&#39;s just a simple example, as there are much more to partitioning than that. I urge you therefore to attend MySQL Uni&#39;s Dimdim session this Thursday, June 4th at 13:00GMT.&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;span style=&quot;font-family:arial;font-size:85%;&quot;&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;</description><link>http://india-web-development.blogspot.com/2009/05/mysql-university-boosting-performance.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-8887666736150034265</guid><pubDate>Sun, 26 Apr 2009 05:13:00 +0000</pubDate><atom:updated>2009-04-25T22:21:54.180-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Personality Development</category><title>Personality Development  - a slide I liked</title><description>&lt;div style=&quot;width: 425px; text-align: left;&quot; id=&quot;__ss_1342734&quot;&gt;&lt;a style=&quot;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;&quot; href=&quot;http://www.slideshare.net/indrajitbadal/personality-development-1342734?type=presentation&quot; title=&quot;Personality Development&quot;&gt;Personality Development&lt;/a&gt;&lt;object style=&quot;margin: 0px;&quot; height=&quot;355&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=personalitydevelopment-090426000833-phpapp02&amp;amp;stripped_title=personality-development-1342734&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;embed src=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=personalitydevelopment-090426000833-phpapp02&amp;amp;stripped_title=personality-development-1342734&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; height=&quot;355&quot; width=&quot;425&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style=&quot;font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;&quot;&gt;View more &lt;a style=&quot;text-decoration: underline;&quot; href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a style=&quot;text-decoration: underline;&quot; href=&quot;http://www.slideshare.net/indrajitbadal/personality-development-1342734#relatedList&quot;&gt;Related List&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;</description><link>http://india-web-development.blogspot.com/2009/04/personality-development.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-6070956910217660258</guid><pubDate>Sun, 26 Apr 2009 01:46:00 +0000</pubDate><atom:updated>2009-04-25T18:54:00.512-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Mysql</category><category domain="http://www.blogger.com/atom/ns#">TIMESTAMP</category><title>Too much information about the MySQL TIMESTAMP</title><description>&lt;div class=&quot;serendipity_entry_body&quot;&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 &quot;Data Type&quot; as well as a type of specialty column that provides a built in default. It doesn&#39;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&#39;t go into much detail on the pre version 4.1 TIMESTAMP, however, if you&#39;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&#39;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 &quot;Y2K&quot; computing panic, and if you&#39;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=&quot;http://www.gizmola.com/blog/exit.php?url_id=988&amp;amp;entry_id=93&quot; onmouseover=&quot;window.status=&#39;http://www.y2038.com/&#39;;return true;&quot; onmouseout=&quot;window.status=&#39;&#39;;return true;&quot; title=&quot;http://www.y2038.com/&quot;&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=&quot;serendipity_entry_extended&quot;&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&#39;s inserted.  Let&#39;s take a look at a mysql TIMESTAMP in action.&lt;br /&gt;&lt;br /&gt;First let&#39;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&#39;re keeping score:&lt;br /&gt;&lt;div class=&quot;bash geshi&quot; style=&quot;text-align: left;&quot;&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;select&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;@@&lt;/span&gt;version;&lt;br /&gt;+-----------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;@@&lt;/span&gt;version &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+-----------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; 5.0.45    &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+-----------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mysql geshi&quot; style=&quot;text-align: left;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt;&lt;div style=&quot;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;&quot;&gt;&lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;CREATE&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;TABLE&lt;/span&gt; atimestamp &lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;(&lt;/span&gt;id &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;INT&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;PRIMARY&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;KEY&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 255); font-weight: bold;&quot;&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; justnow &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;DATETIME&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; created &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;TIMESTAMP&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&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=&quot;bash geshi&quot; style=&quot;text-align: left;&quot;&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; describe atimestamp;&lt;br /&gt;+---------+-----------+------+-----+-------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Field   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Type      &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Null &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Key &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Default           &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Extra          &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+-------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt;      &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; int&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; PRI &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NULL              &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; auto_increment &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; datetime  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; YES  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NULL              &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; created &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; timestamp &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; CURRENT_TIMESTAMP &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+-------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;3&lt;/span&gt; rows &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&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=&quot;bash geshi&quot; style=&quot;text-align: left;&quot;&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; insert into atimestamp &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;justnow&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt; values &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;NOW&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row affected &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;select&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; created             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;  &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;14&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;29&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;58&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;14&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;29&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;58&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&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 &quot;created&quot; 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=&quot;bash geshi&quot; style=&quot;text-align: left;&quot;&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; update atimestamp &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; justnow = NOW&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row affected &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;Rows matched: &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt;  Changed: &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt;  Warnings: &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;select&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;*&lt;/span&gt; from atimestamp;            &lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; created             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;  &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;14&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;30&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;32&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;14&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;30&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;32&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&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 &quot;updated&quot;.&lt;br /&gt;&lt;br /&gt;Unfortunately, you can&#39;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&#39;s very important to remember this workaround, if you are using a TIMESTAMP as for example, the &quot;signup date&quot; in a User table. See this in action below:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mysql geshi&quot; style=&quot;text-align: left;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt;&lt;div style=&quot;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;&quot;&gt;&lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;CREATE&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;TABLE&lt;/span&gt; atimestamp &lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;(&lt;/span&gt;id &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;INT&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;PRIMARY&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;KEY&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 255); font-weight: bold;&quot;&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; justnow &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;DATETIME&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; created &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;TIMESTAMP&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 255); font-weight: bold;&quot;&gt;DEFAULT&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 153); font-weight: bold;&quot;&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&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=&quot;bash geshi&quot; style=&quot;text-align: left;&quot;&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; describe atimestamp;&lt;br /&gt;+---------+-----------+------+-----+-------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Field   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Type      &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Null &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Key &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Default           &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Extra          &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+-------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt;      &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; int&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; PRI &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NULL              &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; auto_increment &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; datetime  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; YES  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NULL              &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; created &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; timestamp &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; CURRENT_TIMESTAMP &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+-------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;3&lt;/span&gt; rows &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; insert into atimestamp &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;justnow&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt; values &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;NOW&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;;                       &lt;br /&gt;Query OK, &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row affected &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;select&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; created             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;  &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;18&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;15&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;38&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;18&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;15&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;38&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; update atimestamp &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; justnow = NOW&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;;                       &lt;br /&gt;Query OK, &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row affected &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;Rows matched: &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt;  Changed: &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt;  Warnings: &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;select&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; created             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;  &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;18&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;15&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;56&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;18&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;15&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;38&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&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&#39;s a really good reason to dedicate a TIMESTAMP to only apply the time when the row is updated. I can&#39;t think of one, but for the sake of completeness, here&#39;s how you can define the Default.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;mysql geshi&quot; style=&quot;text-align: left;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt;&lt;div style=&quot;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;&quot;&gt;&lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;CREATE&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;TABLE&lt;/span&gt; atimestamp &lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;(&lt;/span&gt;id &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;INT&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;PRIMARY&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;KEY&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 255); font-weight: bold;&quot;&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; justnow &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;DATETIME&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; updated &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;TIMESTAMP&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 255); font-weight: bold;&quot;&gt;DEFAULT&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 128, 128);&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;ON&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;UPDATE&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 153); font-weight: bold;&quot;&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&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=&quot;bash geshi&quot; style=&quot;text-align: left;&quot;&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; describe atimestamp;                           &lt;br /&gt;+---------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Field   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Type      &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Null &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Key &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Default             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Extra          &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt;      &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; int&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; PRI &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NULL                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; auto_increment &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; datetime  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; YES  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NULL                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; updated &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; timestamp &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;3&lt;/span&gt; rows &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; insert into atimestamp &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;justnow&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt; values &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;NOW&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row affected &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;select&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; updated             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;  &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;33&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;56&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.01&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; update atimestamp &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; justnow = NOW&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row affected &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;Rows matched: &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt;  Changed: &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt;  Warnings: &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;select&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; updated             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;  &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;34&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;19&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;34&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;19&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&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&#39;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=&quot;mysql geshi&quot; style=&quot;text-align: left;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt;&lt;div style=&quot;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;&quot;&gt;&lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;CREATE&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;TABLE&lt;/span&gt; bigtimestamp &lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;(&lt;/span&gt;id &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;INT&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;PRIMARY&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;KEY&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 255); font-weight: bold;&quot;&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; justnow &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;DATETIME&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; created &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;TIMESTAMP&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; updated &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;TIMESTAMP&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; verified &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;TIMESTAMP&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&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=&quot;bash geshi&quot; style=&quot;text-align: left;&quot;&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; describe bigtimestamp;&lt;br /&gt;+----------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Field    &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Type      &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Null &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Key &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Default             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Extra          &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt;       &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; int&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; PRI &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NULL                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; auto_increment &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; datetime  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; YES  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NULL                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; created  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; timestamp &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; CURRENT_TIMESTAMP   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; updated  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; timestamp &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; verified &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; timestamp &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;5&lt;/span&gt; rows &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; insert into bigtimestamp &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;justnow&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt; values &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;NOW&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row affected &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.01&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;select&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;*&lt;/span&gt; from bigtimestamp;&lt;br /&gt;+----+---------------------+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; created             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; updated             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; verified            &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;  &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;39&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;19&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;39&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;19&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&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 &quot;created&#39; and &quot;updated&quot; 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&#39;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=&quot;mysql geshi&quot; style=&quot;text-align: left;&quot;&gt;&lt;ol&gt;&lt;li style=&quot;font-weight: normal; vertical-align: top;&quot;&gt;&lt;div style=&quot;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;&quot;&gt;&lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;CREATE&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;TABLE&lt;/span&gt; atimestamp &lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;(&lt;/span&gt;id &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;INT&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;PRIMARY&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;KEY&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 255); font-weight: bold;&quot;&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; justnow &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;DATETIME&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; created &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;TIMESTAMP&lt;/span&gt; &lt;span style=&quot;color: rgb(204, 0, 153); font-weight: bold;&quot;&gt;NOT&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 255); font-weight: bold;&quot;&gt;NULL&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 255); font-weight: bold;&quot;&gt;DEFAULT&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 128, 128);&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;,&lt;/span&gt; updated &lt;span style=&quot;color: rgb(255, 153, 0); font-weight: bold;&quot;&gt;TIMESTAMP&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 255); font-weight: bold;&quot;&gt;DEFAULT&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 153); font-weight: bold;&quot;&gt;CURRENT_TIMESTAMP&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;ON&lt;/span&gt; &lt;span style=&quot;color: rgb(153, 0, 153); font-weight: bold;&quot;&gt;UPDATE&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 153); font-weight: bold;&quot;&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&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=&quot;bash geshi&quot; style=&quot;text-align: left;&quot;&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; describe atimestamp;&lt;br /&gt;+---------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Field   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Type      &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Null &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Key &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Default             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; Extra          &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt;      &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; int&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; PRI &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NULL                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; auto_increment &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; datetime  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; YES  &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NULL                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; created &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; timestamp &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; updated &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; timestamp &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; NO   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;     &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; CURRENT_TIMESTAMP   &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;                &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+---------+-----------+------+-----+---------------------+----------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;4&lt;/span&gt; rows &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; insert into atimestamp &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;justnow&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt; values &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;NOW&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row affected &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;select&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; created             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; updated             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;  &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;54&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;54&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; insert into atimestamp &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;created, justnow&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt; values &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;NULL, NOW&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row affected &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;select&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;*&lt;/span&gt; from atimestamp;                                     &lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; created             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; updated             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;  &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;54&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;54&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;  &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;55&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;35&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;55&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;35&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;55&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;35&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2&lt;/span&gt; rows &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; update atimestamp &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 120, 0);&quot;&gt;justnow&lt;/span&gt;=NOW&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt; WHERE &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt; = &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2&lt;/span&gt;;&lt;br /&gt;Query OK, &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; row affected &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;Rows matched: &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt;  Changed: &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt;  Warnings: &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;mysql&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;&gt;&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;select&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;*&lt;/span&gt; from atimestamp;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(194, 12, 185); font-weight: bold;&quot;&gt;id&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; justnow             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; created             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; updated             &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;  &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;54&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; 0000-00-00 00:00:00 &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;54&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;  &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;56&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;48&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;55&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;35&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2009&lt;/span&gt;-04-&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;24&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;23&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;56&lt;/span&gt;:&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;48&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;|&lt;/span&gt;&lt;br /&gt;+----+---------------------+---------------------+---------------------+&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;2&lt;/span&gt; rows &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 0); font-weight: bold;&quot;&gt;set&lt;/span&gt; &lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;0.00&lt;/span&gt; sec&lt;span style=&quot;color: rgb(122, 8, 116); font-weight: bold;&quot;&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;</description><link>http://india-web-development.blogspot.com/2009/04/too-much-information-about-mysql.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-2506267154694591756</guid><pubDate>Tue, 21 Apr 2009 05:34:00 +0000</pubDate><atom:updated>2009-07-01T23:31:20.107-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ms outlook</category><category domain="http://www.blogger.com/atom/ns#">password recovery</category><category domain="http://www.blogger.com/atom/ns#">software</category><category domain="http://www.blogger.com/atom/ns#">tools</category><title>PST Password Recovery Software</title><description>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=&quot;http://www.pst-password-recovery.com/&quot;&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=&quot;http://www.pst-password-recovery.com/&quot;&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=&quot;http://www.pst-password-recovery.com/download-password-recovery-software.php&quot;&gt;Visit here&lt;/a&gt;…..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.vizuality.co.uk/index.php&quot;&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=&quot;http://www.instant-radio-codes.com/radio-codes-blaupunkt.php&quot;&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=&quot;http://www.stellarinfo.com/&quot;&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=&quot;http://www.stellarinfo.com/data-recovery-services.htm&quot;&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=&quot;http://www.stellarinfo.com/file-recovery.htm&quot;&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=&quot;http://www.stellarinfo.com/partition-recovery.htm&quot;&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=&quot;http://www.stellarinfo.com/download.htm&quot;&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.</description><link>http://india-web-development.blogspot.com/2009/04/pst-password-recovery-software.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>6</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-7834064738601312205</guid><pubDate>Tue, 21 Apr 2009 05:29:00 +0000</pubDate><atom:updated>2009-05-08T04:53:42.282-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development tool</category><category domain="http://www.blogger.com/atom/ns#">opensource</category><title>Atlassian offering licenses to Confluence and Jira for $5</title><description>&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 &quot;Atlassian Stimulus Project&quot;, they are offering 5 user licenses for $5 each, and donating the proceeds to &quot;Room to Read&quot;.&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&#39;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&#39;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=&quot;http://www.atlassian.com/starter/&quot; target=&quot;_blank&quot;&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=&quot;http://www.latestt.com/Docshare/docshare.aspx?catId=3&amp;amp;catName=technology&amp;amp;valType=1&quot;&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;</description><link>http://india-web-development.blogspot.com/2009/04/atlassian-offering-licenses-to.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-179602992252654769</guid><pubDate>Fri, 10 Apr 2009 01:14:00 +0000</pubDate><atom:updated>2009-07-01T23:29:36.983-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">PHP</category><category domain="http://www.blogger.com/atom/ns#">PHP techniques</category><title>Microsoft Q&amp;A: Running PHP on Windows Server 2008</title><description>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&#39;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=&quot;http://www.script2please.com/php-development.html&quot;&gt;PHP Web Development&lt;/a&gt; services at Script2please.com&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.webrankings.co.uk/seo-web-design/&quot;&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=&quot;http://www.ardentcreative.co.uk/&quot;&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=&quot;http://www.spaceandtime.eu.com/&quot;&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=&quot;http://www.alkemi.co.nz&quot;&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</description><link>http://india-web-development.blogspot.com/2009/04/microsoft-q-running-php-on-windows.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-8694433537924720044</guid><pubDate>Fri, 27 Mar 2009 04:27:00 +0000</pubDate><atom:updated>2009-03-26T21:31:12.789-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Google Chrome</category><category domain="http://www.blogger.com/atom/ns#">website design</category><title>Solve your site rendering  problem with Google Chrome</title><description>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&#39;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&#39;t look quite right in Chrome but works fine in Safari, it&#39;s possible your site may just not recognize Chrome&#39;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 &#39;sniff&#39; the navigator.userAgent property for &quot;Chrome&quot; or &quot;Safari&quot;, 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(&quot;AppleWebKit&quot;) &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(&quot;AppleWebKit/&quot;)[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&#39;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&#39;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&#39;t working in Google Chrome, you can debug using Chrome&#39;s built-in JavaScript debugger, under the &quot;page&quot; menu -&gt; &#39;Developer&#39; -&gt; &#39;Debug JavaScript&#39; 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&#39;d like to help even more, we&#39;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&#39;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&#39;ll keep working to improve Google Chrome!&lt;br /&gt;</description><link>http://india-web-development.blogspot.com/2009/03/solve-your-site-rendering-problem-with.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-8727528379293926585</guid><pubDate>Mon, 23 Mar 2009 07:21:00 +0000</pubDate><atom:updated>2009-03-23T00:25:24.650-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">development</category><category domain="http://www.blogger.com/atom/ns#">gadgets</category><category domain="http://www.blogger.com/atom/ns#">Google</category><title>Develop new gadgets with support from Google.</title><description>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=&quot;http://www.google.com/ig&quot;&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=&quot;http://www.google.com/ig/directory&quot;&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;</description><link>http://india-web-development.blogspot.com/2009/03/develop-new-gadgets-with-support-from.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3281895583339810405.post-4515929503483335323</guid><pubDate>Sat, 21 Mar 2009 06:34:00 +0000</pubDate><atom:updated>2009-03-20T23:40:02.171-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Chrome</category><category domain="http://www.blogger.com/atom/ns#">Chrome Experiments</category><category domain="http://www.blogger.com/atom/ns#">Download Google Chrome</category><category domain="http://www.blogger.com/atom/ns#">Google</category><title>Chrome Experiments - The Power of JavaScript!</title><description>&lt;p&gt;  &lt;!--content with more link--&gt;  &lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://tnerd.com/tag/google/&quot; title=&quot;Google&quot; rel=&quot;tag&quot;&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=&quot;http://tnerd.com/wp-content/uploads/2008/09/chrome.jpg&quot; alt=&quot;Chrome&quot; align=&quot;right&quot; border=&quot;0&quot; width=&quot;165&quot; height=&quot;200&quot; /&gt;&lt;a href=&quot;http://tnerd.com/tag/google/&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag&quot; title=&quot;Posts tagged with Google&quot;&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=&quot;http://www.chromeexperiments.com/&quot; target=&quot;_blank&quot;&gt;ChromeExperiments.com&lt;/a&gt; is one such example. Applications showcased  on this site are mostly built on JavaScript &lt;a id=&quot;KonaLink0&quot; target=&quot;undefined&quot; class=&quot;kLink&quot; style=&quot;text-decoration: underline ! important; position: static;&quot; href=&quot;http://tnerd.com/2009/03/20/5-best-chrome-experiments-the-power-of-javascript/#&quot;&gt;&lt;span style=&quot;font-weight: 400; position: static;font-family:Arial,Helvetica,Sans-Serif;font-size:12;color:#b00000;&quot;   &gt;&lt;span class=&quot;kLink&quot; style=&quot;font-weight: 400; position: static;font-family:Arial,Helvetica,Sans-Serif;font-size:12;color:#b00000;&quot;   &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=&quot;Google Chrome&quot; href=&quot;http://tnerd.com/tag/google-chrome/&quot;&gt;Google Chrome&lt;/a&gt;. Click &lt;a href=&quot;http://www.google.com/chrome&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; to &lt;a title=&quot;download Chrome&quot; href=&quot;http://tnerd.com/tag/download-chrome/&quot;&gt;download Chrome&lt;/a&gt; if you don’t  have it installed already)&lt;/p&gt; &lt;p&gt;&lt;span id=&quot;more-3073&quot;&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=&quot;http://balldroppings.com/js&quot; target=&quot;_blank&quot;&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=&quot;center&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/G6IKsek8DKE&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/G6IKsek8DKE&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&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=&quot;Chrome&quot; href=&quot;http://tnerd.com/tag/chrome/&quot;&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=&quot;http://experiments.instrum3nt.com/markmahoney/ball/&quot; target=&quot;_blank&quot;&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=&quot;center&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/3al8prbfK5o&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/3al8prbfK5o&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&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=&quot;http://tnerd.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt; &lt;p&gt;  Click &lt;a href=&quot;http://www.chromeexperiments.com/hosted/ballpool/index.html&quot; target=&quot;_blank&quot;&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=&quot;center&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/XPlybgUiotA&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/XPlybgUiotA&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&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=&quot;http://boombox.paradoxica.net/&quot; target=&quot;_blank&quot;&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=&quot;center&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/A_i9xmVndbc&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/A_i9xmVndbc&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&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=&quot;http://deanm.github.com/pre3d/monster.html&quot; target=&quot;_blank&quot;&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=&quot;center&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/E9EQSV7zRZg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/E9EQSV7zRZg&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xcfcfcf&amp;amp;feature=player_embedded&amp;amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;a href=&quot;http://tnerd.com/tag/google/&quot; title=&quot;Google&quot; rel=&quot;tag&quot;&gt;&lt;br /&gt;&lt;/a&gt;</description><link>http://india-web-development.blogspot.com/2009/03/chrome-experiments-power-of-javascript.html</link><author>noreply@blogger.com (Indrajit)</author><thr:total>1</thr:total></item></channel></rss>