<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Web Magician - Information, News, Programming Tips and Tricks about IT Technology</title><link>http://web-magician.blogspot.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/web-magician" /><description>Place for web technology information, programming tips and tricks on PHP, Apache, AJAX, JavaScript, HTML, CSS and many more</description><language>en</language><managingEditor>noreply@blogger.com (Paryank Kansara)</managingEditor><lastBuildDate>Sun, 12 Feb 2012 23:01:17 PST</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">15</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info uri="web-magician" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><media:copyright>Copyright reserved by Paryank Kansara</media:copyright><media:keywords>object,oriented,programming,java,programming,language,php,programming,xml,programming,programming,web,programming,application,programming,interface,computer,programming,php,code,php,tutorial,java,php,software,javascript,info,magento,commerce</media:keywords><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology/Software How-To</media:category><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology/Tech News</media:category><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Technology/Podcasting</media:category><itunes:owner><itunes:email>pmkansara@gmail.com</itunes:email><itunes:name>Paryank Kansara</itunes:name></itunes:owner><itunes:author>Paryank Kansara</itunes:author><itunes:explicit>no</itunes:explicit><itunes:keywords>object,oriented,programming,java,programming,language,php,programming,xml,programming,programming,web,programming,application,programming,interface,computer,programming,php,code,php,tutorial,java,php,software,javascript,info,magento,commerce</itunes:keywords><itunes:subtitle>Web Magician - Information, News, Programming Tips and Tricks about IT Technology</itunes:subtitle><itunes:summary>Place for web technology information, programming tips and tricks on PHP, Apache, AJAX, JavaScript, HTML, CSS and many more</itunes:summary><itunes:category text="Technology"><itunes:category text="Software How-To" /></itunes:category><itunes:category text="Technology"><itunes:category text="Tech News" /></itunes:category><itunes:category text="Technology"><itunes:category text="Podcasting" /></itunes:category><geo:lat>23.03</geo:lat><geo:long>72.58</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-nd/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>web-magician</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Overriding Controllers and Actions in Magento</title><link>http://feedproxy.google.com/~r/web-magician/~3/vNdVJTgyMys/overriding-controllers-and-actions-in.html</link><category>Tips and Tricks</category><category>Magento Commerce</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Tue, 16 Aug 2011 01:44:07 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-2130019599426845458</guid><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;In my &lt;a href="http://web-magician.blogspot.com/2009/04/secret-feature-of-magento-13-sharing.html"&gt;previous post&lt;/a&gt;, I had explained a way to add extra controllers to existing route. Here I am going to explain another method which is used for overriding controllers and actions. Like my each post on tips &amp;amp; tricks, I am going to first explain where the trick is applicable! I am considering that readers of this post are aware of MVC architecture in Magento.&lt;br /&gt;
&lt;br /&gt;
Let me explain the difference between the both tricks. The trick explained in previous post is used when we need additional URLs in same route i.e. additional controllers and actions. I have already explained an example there. Here we need to change the behavior of existing controller and action. For example, when a customer adds a product to shopping cart, &lt;code&gt;addAction&lt;/code&gt; of &lt;code&gt;CartController&lt;/code&gt; of &lt;code&gt;Mage_Checkout&lt;/code&gt; module is called. If we want to override this by &lt;code&gt;My_Checkout&lt;/code&gt;, &lt;code&gt;MycartController&lt;/code&gt;, &lt;code&gt;myaddAction&lt;/code&gt; as similarly as we can override Models and Blocks in our own modules. So the the trick in previous post is used for &lt;b&gt;overloading&lt;/b&gt; while the trick here is used for &lt;b&gt;overriding&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Of course, this too can be done just by simple XML configuration (apart from creating custom controllers and actions) but without using &lt;a href="http://www.magentocommerce.com/wiki/how_to_overload_a_controller"&gt;route rewriting approach&lt;/a&gt;! Let's take a same example above where we want to override action for &lt;code&gt;checkout/cart/add&lt;/code&gt;. First create &lt;code&gt;My_Checkout&lt;/code&gt; module with &lt;code&gt;MycartController&lt;/code&gt; class and &lt;code&gt;myaddAction&lt;/code&gt; method defined within it. The way to do this is better explained in this &lt;a href="http://www.magentocommerce.com/wiki/custom_module_with_custom_database_table"&gt;wiki&lt;/a&gt;. Then the configuration required in &lt;code&gt;etc/config.xml&lt;/code&gt; of &lt;code&gt;My_Checkout&lt;/code&gt; module is like below:&lt;br /&gt;
&lt;pre class="brush: xml"&gt;&amp;lt;global&amp;gt;
  &amp;lt;routers&amp;gt;
    &amp;lt;checkout&amp;gt; &amp;lt;!-- Mage_Checkout module --&amp;gt;
      &amp;lt;rewrite&amp;gt;
        &amp;lt;cart&amp;gt; &amp;lt;!-- CartController --&amp;gt;
          &amp;lt;to&amp;gt;mycheckout/mycart&amp;lt;/to&amp;gt; &amp;lt;!-- My_Checkout module, MycartController --&amp;gt;
          &amp;lt;override_actions&amp;gt;true&amp;lt;/override_actions&amp;gt;
          &amp;lt;actions&amp;gt;
            &amp;lt;add&amp;gt; &amp;lt;!-- addAction --&amp;gt;
              &amp;lt;to&amp;gt;mycheckout/mycart/myadd&amp;lt;to&amp;gt; &amp;lt;!-- My_Checkout/MycartController/myaddAction --&amp;gt;
            &amp;lt;/add&amp;gt;
          &amp;lt;/actions&amp;gt;
        &amp;lt;/cart&amp;gt;
      &amp;lt;/rewrite&amp;gt;
    &amp;lt;/checkout&amp;gt;
  &amp;lt;/routers&amp;gt;
&amp;lt;/global&amp;gt;
&lt;/pre&gt;Here we also need configuration to define module front name for &lt;code&gt;My_Checkout&lt;/code&gt; module as below:&lt;br /&gt;
&lt;pre class="brush: xml"&gt;&amp;lt;frontend&amp;gt;   &amp;lt;!-- It will be admin for overriding admin controller --&amp;gt;
  &amp;lt;routers&amp;gt;
    &amp;lt;mycheckout&amp;gt;
      &amp;lt;use&amp;gt;admin&amp;lt;/use&amp;gt;
      &amp;lt;args&amp;gt;
        &amp;lt;module&amp;gt;My_Checkout&amp;lt;/module&amp;gt;
        &amp;lt;frontName&amp;gt;mycheckout&amp;lt;/frontName&amp;gt;
      &amp;lt;/args&amp;gt;
    &amp;lt;/mycheckout&amp;gt;
  &amp;lt;/routers&amp;gt;
&amp;lt;/frontend&amp;gt;   &amp;lt;!-- It will be admin for overriding admin controller --&amp;gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt; The above configuration examples only display portions of &lt;code&gt;config.xml&lt;/code&gt; file. Please do not consider it as a complete configuration.&lt;br /&gt;
&lt;br /&gt;
Simple isn't it? Now let's understand how it works. The work flow of this rewrite process is little bit tricky.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;When an &lt;code&gt;checkout/cart/add&lt;/code&gt; action is going to be dispatched, first it is passed through rewrite process.&lt;/li&gt;
&lt;li&gt;Rewrite process tries to find &lt;code&gt;global/routers/checkout/rewrite/cart&lt;/code&gt; node is found in configuration, where &lt;code&gt;checkout&lt;/code&gt; is front name of &lt;code&gt;Mage_Checkout&lt;/code&gt; module and &lt;code&gt;cart&lt;/code&gt; indicates &lt;code&gt;&lt;code&gt;Mage_Checkout_&lt;/code&gt;CartController&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If this node is not found, rewrite process is not be continued and returned to dispatch process. So the action is executed normally. Otherwise, rewrite process is continued.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Now, under this node, it tries to find whether &lt;code&gt;override_actions&lt;/code&gt; node is &lt;code&gt;true&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt;. By default value of &lt;code&gt;override_actions&lt;/code&gt; is true. So if it is not added in configuration, it is considered as true.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;override_actions&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt;, it overrides all actions of &lt;code&gt;Mage_Checkout_CartController&lt;/code&gt; with same actions of &lt;code&gt;My_Checkout_MycartController&lt;/code&gt; as defined by &lt;code&gt;to&lt;/code&gt; node value &lt;code&gt;mycheckout/mycart&lt;/code&gt;. For example, if we have defined &lt;code&gt;addAction&lt;/code&gt; and &lt;code&gt;indexAction&lt;/code&gt; methods inside &lt;code&gt;My_Checkout_MycartController&lt;/code&gt;, then it automatically overrides both &lt;code&gt;addAction&lt;/code&gt; and &lt;code&gt;indexAction&lt;/code&gt; of &lt;code&gt;Mage_Checkout_CartController&lt;/code&gt;. In short using &lt;code&gt;to&lt;/code&gt; node and &lt;code&gt;override_actions&lt;/code&gt; node we can override whole controller instead of individual actions.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;actions/add&lt;/code&gt; node is defined where, &lt;code&gt;add&lt;/code&gt; indicates &lt;code&gt;addAction&lt;/code&gt; of &lt;code&gt;Mage_Checkout_CartController&lt;/code&gt;, then &lt;code&gt;override_actions&lt;/code&gt; node value is not considered and overrides action by value of &lt;code&gt;actions/add/to&lt;/code&gt; node which is &lt;code&gt;mycheckout/mycart/myadd&lt;/code&gt; i.e. &lt;code&gt;My_Checkout&lt;/code&gt; module, M&lt;code&gt;y_Checkout_Mycontroller&lt;/code&gt; and &lt;code&gt;myaddAction&lt;/code&gt;. So we can also override individual actions by this type of configuration.&lt;/li&gt;
&lt;/ol&gt;Sounds good again? Try it too...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-2130019599426845458?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=vNdVJTgyMys:u0A5NoCK9K0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=vNdVJTgyMys:u0A5NoCK9K0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=vNdVJTgyMys:u0A5NoCK9K0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=vNdVJTgyMys:u0A5NoCK9K0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=vNdVJTgyMys:u0A5NoCK9K0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=vNdVJTgyMys:u0A5NoCK9K0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=vNdVJTgyMys:u0A5NoCK9K0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=vNdVJTgyMys:u0A5NoCK9K0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=vNdVJTgyMys:u0A5NoCK9K0:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=vNdVJTgyMys:u0A5NoCK9K0:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=vNdVJTgyMys:u0A5NoCK9K0:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=vNdVJTgyMys:u0A5NoCK9K0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=vNdVJTgyMys:u0A5NoCK9K0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=vNdVJTgyMys:u0A5NoCK9K0:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-16T14:14:07.994+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">14</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2009/06/overriding-controllers-and-actions-in.html</feedburner:origLink></item><item><title>Secret feature of Magento 1.3: Sharing same route name for different modules!</title><link>http://feedproxy.google.com/~r/web-magician/~3/PZTH08RV6jw/secret-feature-of-magento-13-sharing.html</link><category>Tips and Tricks</category><category>Magento Commerce</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Mon, 01 Feb 2010 20:51:46 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-8543442811455965627</guid><description>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I have already talked about flexible architecture of &lt;a href="http://www.magentocommerce.com/"&gt;Magento Commerce&lt;/a&gt; in my previous posts. As Magento allows to customize its default behavior without touching and modifying the existing code, we can override any of the existing class by defining our own in our out of the box extensions. I have also played with Magento by creating variety of extensions, and believe me, it was a real fun of programming. Magento allowed me to change everything I desired.&lt;br /&gt;
&lt;br /&gt;
But I was still feeling that something is missing! And that missing thing was provision for &lt;b&gt;&lt;i&gt;sharing of route names&lt;/i&gt;&lt;/b&gt; which is now available since Magento 1.3 released yesterday. Now, the first question may arise here that "what is sharing of route names?". 'Sharing of route names' is not a functional feature. So if you'll try to find it in &lt;a href="http://www.magentocommerce.com/features"&gt;Magento features list&lt;/a&gt;, you may be disappointed. Actually it is a feature for developers. It is not even mentioned in &lt;a href="http://www.magentocommerce.com/download/release_notes#Release%20Notes%20-%20Magento%201.3.0%20%28March%2030,%202009%29"&gt;Magento 1.3 Release Notes&lt;/a&gt;. I found this secret feature in newer version of Magento when I was roaming inside the code to search the difference between 1.2 and 1.3. Let me explain this feature in more detail.&lt;br /&gt;
&lt;br /&gt;
Sometimes, I was supposed to develop extensions which required extra pages or forms in existing modules. For example, adding extra features to Admin Panel. I needed some extra controllers and actions for Admin Panel. This seems OK. I could easily create a local module for it as explained in this &lt;a href="http://www.magentocommerce.com/wiki/how_to_create_an_admin_form_module"&gt;Wiki&lt;/a&gt;. But an uncomfortable part in this way is this configuration:&lt;br /&gt;
&lt;pre class="brush: xml"&gt;&amp;lt;admin&amp;gt;
 &amp;lt;routers&amp;gt;
   &amp;lt;sintax&amp;gt;
     &amp;lt;use&amp;gt;admin&amp;lt;/use&amp;gt;
     &amp;lt;args&amp;gt;
       &amp;lt;module&amp;gt;Mage_Sintax&amp;lt;/module&amp;gt;
       &amp;lt;frontName&amp;gt;sintax&amp;lt;/frontName&amp;gt;
     &amp;lt;/args&amp;gt;
   &amp;lt;/sintax&amp;gt;
 &amp;lt;/routers&amp;gt;
&amp;lt;/admin&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
Here, all URLs of my additional pages will be started by &lt;code&gt;/sintax/&lt;/code&gt; while all other admin panel pages will be started by &lt;code&gt;/admin/&lt;/code&gt;. I am forced to use other routes for my additional modules. I cannot just add more URLs to 'admin' route! This can be fare for Admin Panel pages as they will never be visible by public. But what if I want to add more pages to frontend? If I add any extra page to 'catalog' module, I can't define URLs for my pages starting with &lt;code&gt;/catalog/&lt;/code&gt;. I have to define a route something like &lt;code&gt;/mycatalog/&lt;/code&gt; which I don't like!&lt;br /&gt;
&lt;br /&gt;
One solution for this to use URL rewrite from &lt;code&gt;/catalog/mypage/&lt;/code&gt; to &lt;code&gt;/mycatalog/mypage/&lt;/code&gt;. But unfortunately, URL helpers will still generate URLs like &lt;code&gt;/mycatalog/mypage/&lt;/code&gt;.&lt;br /&gt;
&lt;br /&gt;
The problem with the older version of Magento was mapping one to one relationthip with module front name to module real name i.e. 'catalog' =&amp;gt; 'Mage_Catalog', 'admin' =&amp;gt; 'Mage_Adminhtml' etc. So I could not map my additional module to existing front name. But Magento 1.3 allows to map additional modules to existing front names. How? Just by changing router configuration for module shown above to the following:&lt;br /&gt;
&lt;pre class="brush: xml"&gt;&amp;lt;admin&amp;gt;
 &amp;lt;routers&amp;gt;
   &amp;lt;adminhtml&amp;gt;
     &amp;lt;args&amp;gt;
       &amp;lt;modules&amp;gt;
         &amp;lt;sintax before=&amp;quot;Mage_Adminhtml&amp;quot;&amp;gt;Mage_Sintax&amp;lt;/sintax&amp;gt;
       &amp;lt;/modules&amp;gt;
     &amp;lt;/args&amp;gt;
   &amp;lt;/adminhtml&amp;gt;
 &amp;lt;/routers&amp;gt;
&amp;lt;/admin&amp;gt;
&lt;/pre&gt;This configutation will add &lt;code&gt;Mage_Sintax&lt;/code&gt; module to &lt;code&gt;admin&lt;/code&gt; frontname. An attribute &lt;code&gt;before&lt;/code&gt; can be added to give more priority then existing module in finding controllers. For example in this case, &lt;code&gt;/admin/catalog/&lt;/code&gt; URL will call a controller class &lt;code&gt;Mage_Sintax_CatalogController&lt;/code&gt;, if it is defined and if not then it will call &lt;code&gt;Mage_Adminhtml_CatalogController&lt;/code&gt;. Similarly, &lt;code&gt;after&lt;/code&gt; attribute will assign less priority then the existing module. We can add as many modules as we need to the same front name  using this way.&lt;br /&gt;
&lt;br /&gt;
Sounds good? Then try it yourself...!&lt;br /&gt;
&lt;br /&gt;
&lt;div class="zemanta-pixie"&gt;&lt;img src="http://img.zemanta.com/pixy.gif?x-id=99ec0a67-8d67-8286-8cb4-a8cceaa0dd4f" class="zemanta-pixie-img" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-8543442811455965627?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=PZTH08RV6jw:aUL2cD4oPM4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=PZTH08RV6jw:aUL2cD4oPM4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=PZTH08RV6jw:aUL2cD4oPM4:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=PZTH08RV6jw:aUL2cD4oPM4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=PZTH08RV6jw:aUL2cD4oPM4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=PZTH08RV6jw:aUL2cD4oPM4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=PZTH08RV6jw:aUL2cD4oPM4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=PZTH08RV6jw:aUL2cD4oPM4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=PZTH08RV6jw:aUL2cD4oPM4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=PZTH08RV6jw:aUL2cD4oPM4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=PZTH08RV6jw:aUL2cD4oPM4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=PZTH08RV6jw:aUL2cD4oPM4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=PZTH08RV6jw:aUL2cD4oPM4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=PZTH08RV6jw:aUL2cD4oPM4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-02T10:21:46.068+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">20</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2009/04/secret-feature-of-magento-13-sharing.html</feedburner:origLink></item><item><title>Zend Framework 1.7 with AMF support released!!!</title><link>http://feedproxy.google.com/~r/web-magician/~3/ht28gwkG5-Y/zend-framework-17-with-amf-support.html</link><category>Zend Framework</category><category>PHP</category><category>Web Technology Information</category><category>Frameworks</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Mon, 17 Nov 2008 23:25:57 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-8300548281134598375</guid><description>&lt;p&gt;Zend Framework 1.7.0 is now available from the Zend Framework download site: &lt;a href="http://framework.zend.com/download/latest"&gt;http://framework.zend.com/download/latest&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This release introduces many new components and features, including:&lt;/p&gt;  &lt;ul class="disc"&gt;&lt;li&gt;Zend_Amf with support for AMF0 and AMF3 protocols&lt;/li&gt;&lt;li&gt;Dojo Toolkit 1.2.1&lt;/li&gt;&lt;li&gt;Support for dijit editor available in the Dojo Toolkit&lt;/li&gt;&lt;li&gt;Zend_Service_Twitter&lt;/li&gt;&lt;li&gt;ZendX_JQuery in extras library&lt;/li&gt;&lt;li&gt;Metadata API in Zend_Cache&lt;/li&gt;&lt;li&gt;Google book search API in Zend_Gdata&lt;/li&gt;&lt;li&gt;Preliminary support for GData Protocol v2 in Zend_Gdata&lt;/li&gt;&lt;li&gt;Support for skip data processing in Zend_Search_Lucene&lt;/li&gt;&lt;li&gt;Support for Open Office XML documents in Zend_Search_Lucene indexer&lt;/li&gt;&lt;li&gt;Performance enhancements in Zend_Loader, Zend_Controller, and server components&lt;/li&gt;&lt;li&gt;Zend_Mail_Storage_Writable_Maildir enhancements for mail delivery&lt;/li&gt;&lt;li&gt;Zend_Tool in incubator&lt;/li&gt;&lt;li&gt;Zend_Text_Table for formatting table using characters&lt;/li&gt;&lt;li&gt;Zend_ProgressBar&lt;/li&gt;&lt;li&gt;Zend_Config_Writer&lt;/li&gt;&lt;li&gt;ZendX_Console_Unix_Process in the extras library&lt;/li&gt;&lt;li&gt;Zend_Db_Table_Select support for Zend_Paginator&lt;/li&gt;&lt;li&gt;Global parameters for routes&lt;/li&gt;&lt;li&gt;Using Chain-Routes for Hostname-Routes via Zend_Config&lt;/li&gt;&lt;li&gt;I18N improvements     &lt;ul&gt;&lt;li&gt;Application wide locale for all classes         &lt;/li&gt;&lt;li&gt;Data retrieving methods are now static         &lt;/li&gt;&lt;li&gt;Additional cache handling methods in all I18N classes         &lt;/li&gt;&lt;li&gt;Zend_Translate API simplified     &lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;File transfer enhancements     &lt;ul&gt;&lt;li&gt;Support for file elements in subforms&lt;/li&gt;&lt;li&gt;Support for multifile elements&lt;/li&gt;&lt;li&gt;Support for MAX_FILES_SIZE in form&lt;/li&gt;&lt;li&gt;Support for breaking validation chain&lt;/li&gt;&lt;li&gt;Support for translation of failure ,messages&lt;/li&gt;&lt;li&gt;New IsCompressed, IsImage, ExcludeMimeType, ExcludeExtension validators&lt;/li&gt;&lt;li&gt;Support for FileInfo extension in MimeType validator     &lt;/li&gt;&lt;/ul&gt;    &lt;/li&gt;&lt;li&gt;Zend_Db_Table_Select adapater for Zend_Paginator&lt;/li&gt;&lt;li&gt;Support for custom adapters in Zend_Paginator&lt;/li&gt;&lt;li&gt;More flexible handling of complex types in Zend_Soap&lt;/li&gt;&lt;/ul&gt;      &lt;p&gt;In addition, almost three hundred bugs have been fixed:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=10903"&gt;http://framework.zend.com/issues/secure/IssueNavigator.jspa?requestId=10903&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-8300548281134598375?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ht28gwkG5-Y:qsmoBNaRe4Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ht28gwkG5-Y:qsmoBNaRe4Y:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ht28gwkG5-Y:qsmoBNaRe4Y:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ht28gwkG5-Y:qsmoBNaRe4Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=ht28gwkG5-Y:qsmoBNaRe4Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ht28gwkG5-Y:qsmoBNaRe4Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=ht28gwkG5-Y:qsmoBNaRe4Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ht28gwkG5-Y:qsmoBNaRe4Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ht28gwkG5-Y:qsmoBNaRe4Y:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=ht28gwkG5-Y:qsmoBNaRe4Y:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ht28gwkG5-Y:qsmoBNaRe4Y:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ht28gwkG5-Y:qsmoBNaRe4Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=ht28gwkG5-Y:qsmoBNaRe4Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ht28gwkG5-Y:qsmoBNaRe4Y:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-18T12:55:57.499+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2008/11/zend-framework-17-with-amf-support.html</feedburner:origLink></item><item><title>Zend Framework 1.6 Released!!!</title><link>http://feedproxy.google.com/~r/web-magician/~3/JcHUQGpirkA/zend-framework-16-released.html</link><category>Zend Framework</category><category>PHP</category><category>Web Technology Information</category><category>Open Source</category><category>Frameworks</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Sat, 06 Sep 2008 18:06:11 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-7516540162431330439</guid><description>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I develop my PHP web applications in Zend Framework since its first stable release. I compared it with many other frameworks and I choose Zend Framework for my development approch because of its outstanding flexibility, huge community support and transperent development roadmap.&lt;br/&gt;&lt;br/&gt;Yesterday, Zend has released a brand new version of Zend Framework 1.6. This new version has introduced many new useful features. The new 1.6 version includes built in support of &lt;a href='http://dojotoolkit.org/'&gt;Dojo Toolkit&lt;/a&gt;, a powerful AJAX and UI library as well as &lt;a href='http://phpunit.de/'&gt;PHPUnit&lt;/a&gt;, the most powerful Unit Testing framework for PHP.&lt;br/&gt;&lt;br/&gt;The complete list of new features of Zend Framework is:&lt;br/&gt;&lt;ul class='disc'&gt;&lt;li&gt;Dojo Integration&lt;ul&gt;&lt;li&gt;JSON-RPC&lt;/li&gt;&lt;li&gt;Dojo Data packing&lt;/li&gt;&lt;li&gt;Dojo View Helper&lt;/li&gt;&lt;li&gt;Dijit integration with Zend_Form &amp;amp; Zend_View&lt;/li&gt;&lt;li&gt;Dojo Library Distribution&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;SOAP&lt;ul&gt;&lt;li&gt;SOAP Server&lt;/li&gt;&lt;li&gt;SOAP Client&lt;/li&gt;&lt;li&gt;Autodiscovery&lt;/li&gt;&lt;li&gt;WSDL access&lt;/li&gt;&lt;li&gt;WSDL Generation&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Preview of Tooling Project in Laboratory (see /laboratory folder)&lt;ul&gt;&lt;li&gt;Command Line Interface&lt;/li&gt;&lt;li&gt;Project Asset Management&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Unit Testing Harness for Controllers&lt;/li&gt;&lt;li&gt;Lucene 2.3 Index File Format Support&lt;/li&gt;&lt;li&gt;Zend_Session save handler for Database Tables&lt;/li&gt;&lt;li&gt;Paginator Component&lt;/li&gt;&lt;li&gt;Text/Figlet Support&lt;/li&gt;&lt;li&gt;ReCaptcha Service&lt;/li&gt;&lt;li&gt;Zend_Config_Xml Attribute Support&lt;/li&gt;&lt;li&gt;Character Set Option for DB Adapters&lt;/li&gt;&lt;li&gt;Zend File Transfer Component&lt;/li&gt;&lt;li&gt;New Media View Helpers (Flash, Quicktime, Object, and Page)&lt;/li&gt;&lt;li&gt;Support in Zend_Translate for INI File Format&lt;/li&gt;&lt;li&gt;Zend_Tool&lt;/li&gt;&lt;li&gt;Zend_Wildfire Component with FireBug Log Writer&lt;/li&gt;&lt;li&gt;Zend_Db_Profiler with FireBug support&lt;br/&gt;&lt;/li&gt;&lt;/ul&gt;With the lots of new features, Zend Framework has also enhansed the performance compared to older releases. You can download the latest release of Zend Framework from &lt;a href='http://framework.zend.com/download/latest'&gt;here&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;Zend Framework has made its own place in the clouds of more than 40 PHP Frameworks.Technorati Tags: &lt;a class='performancingtags' href='http://technorati.com/tag/Zend%20Framework' rel='tag'&gt;Zend Framework&lt;/a&gt;, &lt;a class='performancingtags' href='http://technorati.com/tag/Web%20Technology%20Information' rel='tag'&gt;Web Technology Information&lt;/a&gt;, &lt;a class='performancingtags' href='http://technorati.com/tag/PHP' rel='tag'&gt;PHP&lt;/a&gt;, &lt;a class='performancingtags' href='http://technorati.com/tag/Frameworks' rel='tag'&gt;Frameworks&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-7516540162431330439?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=JcHUQGpirkA:bhi_y3AvW-I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=JcHUQGpirkA:bhi_y3AvW-I:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=JcHUQGpirkA:bhi_y3AvW-I:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=JcHUQGpirkA:bhi_y3AvW-I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=JcHUQGpirkA:bhi_y3AvW-I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=JcHUQGpirkA:bhi_y3AvW-I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=JcHUQGpirkA:bhi_y3AvW-I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=JcHUQGpirkA:bhi_y3AvW-I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=JcHUQGpirkA:bhi_y3AvW-I:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=JcHUQGpirkA:bhi_y3AvW-I:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=JcHUQGpirkA:bhi_y3AvW-I:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=JcHUQGpirkA:bhi_y3AvW-I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=JcHUQGpirkA:bhi_y3AvW-I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=JcHUQGpirkA:bhi_y3AvW-I:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-07T06:36:11.808+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2008/09/zend-framework-16-released.html</feedburner:origLink></item><item><title>Introducing Web Magician Toolbar</title><link>http://feedproxy.google.com/~r/web-magician/~3/3S5anDRtZ0c/introducing-web-magician-toolbar.html</link><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Thu, 21 Aug 2008 21:57:19 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-2059118114237201428</guid><description>New Web Magician Toolbar is now available. You may really like to try our new toolbar because it's free, private and secure. It takes few seconds for installation. It also includes the features which may make your browsing and searching easier and keep you connected with us: &lt;ol&gt;&lt;li&gt;Accelerated search bar - Google powered search bar for faster and accurate search results&lt;br /&gt;&lt;/li&gt;&lt;li&gt;E Mail Notifications - Get new email notifications for your Yahoo, Gmail, Hotmail or POP3 Mails&lt;/li&gt;&lt;li&gt;Radio - Stay tuned and listen each Web Magician blog entries as Podcast&lt;br /&gt;&lt;/li&gt;&lt;li&gt;RSS feeds - Get updated with latest posts of Web Magician&lt;/li&gt;&lt;li&gt;Pop-up Blocker - Block annoying pop-ups automatically&lt;/li&gt;&lt;li&gt;Privacy - Clean your private data like cookies, history, cache from your browser&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Weather forecast - Get world wide weather information&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Web Magician Quick launch button - Visit us on a single click&lt;/li&gt;&lt;/ol&gt;Web Magician Toolbar is available for Mozilla Firefox and Internet Explorer. &lt;a href="http://webmagician.ourtoolbar.com/exe"&gt;Try Our Toolbar&lt;/a&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;script  type='text/javascript'  src="http://hosting.conduit.com/Banners/Standard?ctid=CT1183146&amp;BannerType=HorizontalMedium_468_60b&amp;setup=true"&gt;&lt;/script&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-2059118114237201428?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=3S5anDRtZ0c:KJtWXPzcGB8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=3S5anDRtZ0c:KJtWXPzcGB8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=3S5anDRtZ0c:KJtWXPzcGB8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=3S5anDRtZ0c:KJtWXPzcGB8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=3S5anDRtZ0c:KJtWXPzcGB8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=3S5anDRtZ0c:KJtWXPzcGB8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=3S5anDRtZ0c:KJtWXPzcGB8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=3S5anDRtZ0c:KJtWXPzcGB8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=3S5anDRtZ0c:KJtWXPzcGB8:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=3S5anDRtZ0c:KJtWXPzcGB8:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=3S5anDRtZ0c:KJtWXPzcGB8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=3S5anDRtZ0c:KJtWXPzcGB8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=3S5anDRtZ0c:KJtWXPzcGB8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=3S5anDRtZ0c:KJtWXPzcGB8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-22T10:27:19.727+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2008/08/introducing-web-magician-toolbar.html</feedburner:origLink></item><item><title>Actual Model implementation in MVC Architecture</title><link>http://feedproxy.google.com/~r/web-magician/~3/RYzN9o8-yo0/actual-model-implementation-in-mvc.html</link><category>MVC</category><category>Programming Patterns</category><category>Software Architecture</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Sun, 10 Aug 2008 06:53:10 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-7548563957626670053</guid><description>Frameworks like Ruby on Rails have made MVC (Model View Controller) architecture more popular and easier. Most of the PHP frameworks like &lt;a href="http://www.cakephp.org/"&gt;CakePHP&lt;/a&gt;, &lt;a href="http://www.symfony-project.org/"&gt;Symfony&lt;/a&gt;, &lt;a href="http://www.phpontrax.com/"&gt;PHP on Trax&lt;/a&gt;, &lt;a href="http://framework.zend.com/"&gt;Zend Framework&lt;/a&gt; have followed similar patterns as Ruby on Rails for MVC. By using these frameworks, MVC in design is no longer painful.&lt;br /&gt;&lt;br /&gt;But do all people maintain MVC in real manner??? The major misconception the people have is about the role of Model in MVC. I read many tutorials of Ruby on Rails, Zend Framework, CakePHP and Symfony. Many of the tutorials explain the role of Model as to access data from database. That means Model would be responsible for providing and updating of data into the database!!! All the business logic would be handled by the Controller!!!&lt;br /&gt;&lt;br /&gt;It is a simple way, but would be fare only for small scale applications which do only CRUD (Create, Read, Update, Delete) operations. Then, what about large applications where business logic is much complex? Is it a good idea to encapsulate all business logic in Controller?&lt;br /&gt;&lt;br /&gt;I recently read some blog posts such as:&lt;br /&gt;&lt;a href="http://kore-nordmann.de/blog/why_active_record_sucks.html"&gt;ActiveRecord sucks&lt;/a&gt; by Kore Nordmann,&lt;br /&gt;&lt;a href="http://blog.mikeseth.com/index.php?/archives/4-ActiveRecord-sucks,-but-Kore-Nordmann-is-wrong.html#extended"&gt;ActiveRecord sucks, but Kore Nordmann is wrong&lt;/a&gt; by Mike Seth,&lt;br /&gt;&lt;a href="http://karwin.blogspot.com/2008/05/activerecord-does-not-suck.html"&gt;ActiveRecord does not suck&lt;/a&gt; by Bill Karwin and&lt;br /&gt;&lt;a href="http://www.davedevelopment.co.uk/2008/06/17/fat-models-and-the-data-access-layer/"&gt;Fat Models and the Data Access Layer&lt;/a&gt; by Dave Marshall&lt;br /&gt;&lt;br /&gt;Bill Karwin and Dave Marshall explains actual implimentation of Model. The Model is a business logic of your application not only the database access layer. Active Record (in RoR, Cake, Symfony) or Table/Row Data Gateway (in Zend Framework) should be used &lt;span style="font-weight: bold; font-style: italic;"&gt;as a part of model &lt;/span&gt;not &lt;span style="font-weight: bold; font-style: italic;"&gt;as a model&lt;/span&gt;. Your all business logic should be encapsulated in Models only.&lt;br /&gt;&lt;br /&gt;One of the strongest reasons for following MVC is &lt;span style="font-style: italic;"&gt;reusability&lt;/span&gt;. Think about the case when you want to port your PHP web application to desktop application using PHP-GTK. If you have followed correct MVC architecture then you can easily reuse the same Models of web based application into GTK based application. If you have encapsulated your business logic in controller, then you have to rewrite all the code again for GTK!!! It would simply kill DRY (Don't Repeat Yourself) principle!!!&lt;br /&gt;&lt;br /&gt;I am using Zend Framework since its 1.0 release. At the beginning I read lots of tutorials about it and I was in the same misconceptions about the Models. Then I had taken a look around the code base of Magento Commerce. As I told in my &lt;a href="http://web-magician.blogspot.com/2007/08/magento-get-ready-for-new-open-source-e.html"&gt;previous post&lt;/a&gt;, Magento is built on Zend Framework and follows MVC architecture. (I noticed that Magento uses many ZF components but does not use Zend_Controller and Zend_View for its MVC because of its own custom patterns. But the implementation is quite similar to Zend Framework.) I'd noticed that MVC is followed in really nice way and provides very much flexibility for customization. It is very good example for enterprise application design.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-7548563957626670053?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=RYzN9o8-yo0:h59P5ij0WHw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=RYzN9o8-yo0:h59P5ij0WHw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=RYzN9o8-yo0:h59P5ij0WHw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=RYzN9o8-yo0:h59P5ij0WHw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=RYzN9o8-yo0:h59P5ij0WHw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=RYzN9o8-yo0:h59P5ij0WHw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=RYzN9o8-yo0:h59P5ij0WHw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=RYzN9o8-yo0:h59P5ij0WHw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=RYzN9o8-yo0:h59P5ij0WHw:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=RYzN9o8-yo0:h59P5ij0WHw:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=RYzN9o8-yo0:h59P5ij0WHw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=RYzN9o8-yo0:h59P5ij0WHw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=RYzN9o8-yo0:h59P5ij0WHw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=RYzN9o8-yo0:h59P5ij0WHw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-10T19:23:10.502+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2008/08/actual-model-implementation-in-mvc.html</feedburner:origLink></item><item><title>Magento 1.0 has arrived!!!</title><link>http://feedproxy.google.com/~r/web-magician/~3/5P2EaE05h1E/magento-10-has-arrived.html</link><category>PHP</category><category>Web Technology Information</category><category>News</category><category>Open Source</category><category>E-Commerce</category><category>Magento Commerce</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Wed, 07 May 2008 23:47:45 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-7228499398343540081</guid><description>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;My &lt;a href='http://web-magician.blogspot.com/2007/08/magento-get-ready-for-new-open-source-e.html'&gt;previous post&lt;/a&gt; was published before the launch of &lt;a href='http://www.magentocommerce.com/'&gt;Magento&lt;/a&gt; - Preview Version and was introducing the features those were going to be implemented (and now have been implemented). The preview version was released on 31st August, 2007. So it has been very long time since my last post but busy schedule of life was'nt giving me a single moment for blogging.&lt;br/&gt;&lt;br/&gt;And yesterday, on 31st March, 2008, long awaited &lt;a href='http://www.magentocommerce.com/blog/magento-10/'&gt;Production version of Magento Commerce&lt;/a&gt; has been released.&lt;br/&gt;&lt;br/&gt;Since the release of &lt;a href='http://www.magentocommerce.com/download/release_notes#Magento%20Release%20Notes%20-%200.6.12383%20%28August%2031,%202007%29'&gt;first preview version&lt;/a&gt;, the updates was being released frequently. With every release, Magento was shining more and more. The progress is incredible in very less time. Magento provides lot of exciting &lt;a href='http://www.magentocommerce.com/features'&gt;features&lt;/a&gt; like Multiple Stores and Websites, Google Checkout support, Single Page Checkout, Shipping to multiple addresses in one order and many more.&lt;br/&gt;&lt;br/&gt;&lt;a href='http://www.varien.com/'&gt;Varien&lt;/a&gt; - Magento Company  has already announced parnership and collaboration with &lt;a href='http://www.magentocommerce.com/blog/magento-announces-partnership-with-parallels-for-one-click-installation-of/'&gt;Parallels &lt;/a&gt;and &lt;a href='http://www.magentocommerce.com/blog/announcing-one-click-install-of-magento-10-on-media-temples-gs-grid-service/'&gt;Media Temple&lt;/a&gt; to deliver &lt;a title='Magento' href='http://www.magentocommerce.com/' linkindex='44' set='yes'&gt;Magento 1.0&lt;/a&gt; through a one-click installation wizard.&lt;br/&gt;&lt;br/&gt;As a developer, the most impressive thing I found in magento is its flexibility for customization. As I have already mentioned in my &lt;a href='http://web-magician.blogspot.com/2007/08/magento-get-ready-for-new-open-source-e.html'&gt;previous post&lt;/a&gt;, magento is developed on Zend Framework and uses MVC architecture, which makes magento easier to maintain. Apart from that, magento also provides out of the box solution for customization. That means, magento can be customized as you need without modifying a single line of code in existing core modules. Instead, you can develop your own modules with specific configuration which overwrite the behavior of existing core modules. I love this way because it provides flexibility for upgrading magento to newer version.&lt;br/&gt;&lt;br/&gt;So, on this occasion it really worths if they say:&lt;span style='font-style: italic;'&gt; &lt;/span&gt;&lt;blockquote&gt;&lt;span style='font-style: italic;'&gt;Open Source eCommerce has &lt;/span&gt;&lt;span style='font-weight: bold; font-style: italic;'&gt;officially&lt;/span&gt;&lt;span style='font-style: italic;'&gt; evolved&lt;/span&gt;.&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-7228499398343540081?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=5P2EaE05h1E:sBkrnnhQVMM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=5P2EaE05h1E:sBkrnnhQVMM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=5P2EaE05h1E:sBkrnnhQVMM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=5P2EaE05h1E:sBkrnnhQVMM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=5P2EaE05h1E:sBkrnnhQVMM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=5P2EaE05h1E:sBkrnnhQVMM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=5P2EaE05h1E:sBkrnnhQVMM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=5P2EaE05h1E:sBkrnnhQVMM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=5P2EaE05h1E:sBkrnnhQVMM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=5P2EaE05h1E:sBkrnnhQVMM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=5P2EaE05h1E:sBkrnnhQVMM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=5P2EaE05h1E:sBkrnnhQVMM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=5P2EaE05h1E:sBkrnnhQVMM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=5P2EaE05h1E:sBkrnnhQVMM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-08T12:17:45.743+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2008/04/magento-10-has-arrived.html</feedburner:origLink></item><item><title>Magento - Get ready for new Open Source E-Commerce solution</title><link>http://feedproxy.google.com/~r/web-magician/~3/mezqxAL3fFY/magento-get-ready-for-new-open-source-e.html</link><category>PHP</category><category>News</category><category>Open Source</category><category>E-Commerce</category><category>Magento Commerce</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Thu, 23 Aug 2007 05:06:27 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-5079379205524509095</guid><description>&lt;div style="text-align: justify;"&gt;&lt;a target="_blank" href="http://www.magentocommerce.com/"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_jrKgiDy1xo0/Rs1wKPgZj5I/AAAAAAAAACQ/_b_njr1DW-I/s320/8.gif" alt="" id="BLOGGER_PHOTO_ID_5101857274144067474" border="0" /&gt;&lt;/a&gt;After investing 5 years in osCommerce based E-Commerce solutions, Varien is going to launch it's own Open Source E-Commerce Solution - &lt;a href="http://www.magentocommerce.com/"&gt;Magento&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As osCommerce is not much upgraded since long time, E-Commerce service providers are eagerly waiting for new solutions with more functionalities and features, &lt;a href="http://www.magentocommerce.com/"&gt;Magento&lt;/a&gt; will have to pass through a difficult examination. At a first look at the website of &lt;a href="http://www.magentocommerce.com/"&gt;Magento&lt;/a&gt; it seems that it would be better than any older E-Commerce solutions.&lt;br /&gt;&lt;br /&gt;It is very hard to make users to switch from other products to your product. Because  first question they would ask you is: "What's better in yours than the current?". Varien says something in answer of it on their &lt;a href="http://www.magentocommerce.com/ecommerce-why-magento"&gt;Why Magento&lt;/a&gt; Page.&lt;br /&gt;&lt;/div&gt;&lt;ol style="font-weight: bold; text-align: justify;"&gt;&lt;li&gt;No Constraints&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Magento is much flexible so that you can create your online store exactly as your business model without any extra clutter or constricting design limits.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Completely Scalable&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Magento is completely scalable. So with growing of your site, you can easily manage more resources.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Professional and Community Support&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Magento offers professional reliable support, as well as the help of its passionate community.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Smooth Integration&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;You can create your customized store according to your business model in Magento with easier integration by saving your time and resources.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cutting Edge Features&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Magento provides many extra features like Produce Tagging, Multi-address Shipping, Product Comparison System etc. those are not yet provided by any other open source e-commerce solutions.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Magento is built on &lt;a href="http://framework.zend.com/"&gt;Zend Framework&lt;/a&gt; so it is clear that it will strictly follow MVC structure in it's through out coding. Thus, it would flexible to developers too.&lt;br /&gt;&lt;br /&gt;Let's wait for it's first Beta Release and examine it's power trying it our self.&lt;br /&gt;&lt;br /&gt;Source: magentocommerce.com&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-5079379205524509095?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=mezqxAL3fFY:DKeds7F7CkQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=mezqxAL3fFY:DKeds7F7CkQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=mezqxAL3fFY:DKeds7F7CkQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=mezqxAL3fFY:DKeds7F7CkQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=mezqxAL3fFY:DKeds7F7CkQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=mezqxAL3fFY:DKeds7F7CkQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=mezqxAL3fFY:DKeds7F7CkQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=mezqxAL3fFY:DKeds7F7CkQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=mezqxAL3fFY:DKeds7F7CkQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=mezqxAL3fFY:DKeds7F7CkQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=mezqxAL3fFY:DKeds7F7CkQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=mezqxAL3fFY:DKeds7F7CkQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=mezqxAL3fFY:DKeds7F7CkQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=mezqxAL3fFY:DKeds7F7CkQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-23T17:36:27.701+05:30</app:edited><media:thumbnail url="http://1.bp.blogspot.com/_jrKgiDy1xo0/Rs1wKPgZj5I/AAAAAAAAACQ/_b_njr1DW-I/s72-c/8.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2007/08/magento-get-ready-for-new-open-source-e.html</feedburner:origLink></item><item><title>YAML - Just another powerful and easy markup language</title><link>http://feedproxy.google.com/~r/web-magician/~3/lDuiIOs4PoU/yaml-just-another-powerful-and-easy.html</link><category>Web Technology Information</category><category>YAML</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Sun, 05 Aug 2007 22:09:47 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-769760943772971765</guid><description>YAML is a human-readable data serialization format that takes concepts from languages such as XML, C, Python, Perl, as well as the format for electronic mail as specified by RFC 2822. YAML was first proposed by Clark Evans in 2001, who designed it together with Ingy döt Net and Oren Ben-Kiki.&lt;br /&gt;&lt;br /&gt;YAML is a recursive acronym meaning "YAML Ain't Markup Language". Early in its development, YAML was said to mean "Yet Another Markup Language", retronymed to distinguish its purpose as data-centric, rather than document markup. However since "markup language" is frequently synonymous with data serialization, it is reasonable to consider YAML a lightweight markup language.&lt;br /&gt;&lt;br /&gt;YAML syntax is relatively straightforward and was designed to be easily mapped to data types common to most high-level languages (lists, hashes (mappings), and scalar (single value) data.). Its familiar indented outline and lean appearance makes it especially suited for tasks where humans are likely to view or edit data structures, such as configuration files, dumping during debugging, and document headers (e.g. the headers found on most e-mails are very close to YAML in look). Its line and whitespace delimeters make it friendly to ad hoc grep/python/perl/ruby operations. YAML uses a notation based on a set of sigil characters distinct from those used in XML, making the two languages composable. A major part of its accessibility comes from eschewing the use of enclosures like quotation marks, brackets, braces, and open/close-tags which can be hard for the human eye to balance in nested hierarchies.&lt;br /&gt;&lt;br /&gt;Data structure hierarchy is maintained by outline indentation. The following YAML document defines a hash with 7 top level keys. One of the keys, "items", contains a 2 element array (or "list"), each element of which is itself a hash with four keys. The "ship-to" hash content is copied from the "bill-to" hash's content as indicated by the anchor(&amp;) and reference(*) labels. An optional "..." can be used at end of a file (useful for signalling an end in streamed communications without closing the pipe). Optional blank lines can be added for readability. The specific number of spaces in the indentation is unimportant as long as the hierarchy order is maintained and parallel elements have the same left justification. Multiple documents can exist in a file and are separated by "---". Notice that strings do not require enclosure in quotations.&lt;br /&gt;&lt;h3&gt;Example:&lt;/h3&gt;&lt;br /&gt;&lt;code&gt;---!myDocument&lt;br /&gt;logEvent:    Purchase Invoice&lt;br /&gt;date:        2007-08-06&lt;br /&gt;customer:&lt;br /&gt;   given:   Dorothy&lt;br /&gt;   family:  Gale&lt;br /&gt;&lt;br /&gt;bill-to:  &amp;amp;id001&lt;br /&gt;   street: |&lt;br /&gt;           123 Tornado Alley&lt;br /&gt;           Suite 16&lt;br /&gt;   city:   East Westville&lt;br /&gt;   state:  KS&lt;br /&gt;&lt;br /&gt;ship-to:  *id001  &lt;br /&gt; &lt;br /&gt;items:&lt;br /&gt;   - part_no:   A4786&lt;br /&gt;     descrip:   Water Bucket (Filled)&lt;br /&gt;     price:     1.47&lt;br /&gt;     quantity:  4&lt;br /&gt;&lt;br /&gt;   - part_no:   E1628&lt;br /&gt;     descrip:   High Heeled "Ruby" Slippers&lt;br /&gt;     price:     100.27&lt;br /&gt;     quantity:  1&lt;br /&gt;&lt;br /&gt;specialDelivery:  &gt;&lt;br /&gt;   Follow the Yellow Brick&lt;br /&gt;   Road to the Emerald City.&lt;br /&gt;   Pay no attention to the&lt;br /&gt;   man behind the curtain.&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-769760943772971765?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=lDuiIOs4PoU:Hob2v4tNgok:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=lDuiIOs4PoU:Hob2v4tNgok:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=lDuiIOs4PoU:Hob2v4tNgok:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=lDuiIOs4PoU:Hob2v4tNgok:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=lDuiIOs4PoU:Hob2v4tNgok:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=lDuiIOs4PoU:Hob2v4tNgok:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=lDuiIOs4PoU:Hob2v4tNgok:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=lDuiIOs4PoU:Hob2v4tNgok:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=lDuiIOs4PoU:Hob2v4tNgok:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=lDuiIOs4PoU:Hob2v4tNgok:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=lDuiIOs4PoU:Hob2v4tNgok:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=lDuiIOs4PoU:Hob2v4tNgok:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=lDuiIOs4PoU:Hob2v4tNgok:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=lDuiIOs4PoU:Hob2v4tNgok:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-08-06T10:39:47.430+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2007/08/yaml-just-another-powerful-and-easy.html</feedburner:origLink></item><item><title>Dynamic Virtual Host with Apache</title><link>http://feedproxy.google.com/~r/web-magician/~3/rpJQA653hwA/dynamic-virtual-host-with-apache.html</link><category>Web Hosting</category><category>Tips and Tricks</category><category>Apache</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Mon, 30 Jul 2007 20:31:50 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-7442697694820381306</guid><description>Apache, the most popular web server on earth, is distributed with a large number of modules, some of which are included by default when you compile the package, and some which aren't. One of those that you can optionally compile is mod_vhost_alias, which I find particularly useful. It's been available since Apache version 1.3.7.&lt;br /&gt;&lt;br /&gt;Mod_vhost_alias adds dynamic virtual hosting. That is, we don't need a VirtualHost declaration for each site. Using mod_vhost_alias directives, we can rewrite requests based on the IP address or the host name of the requested resource and return documents from the correct site. The advantages of this capability are that you can add any number of web sites without resorting to modifying and reloading the Apache configuration time and time again.&lt;br /&gt;&lt;br /&gt;The extra directives available to us when mod_vhost_alias is present are: VirtualDocumentRoot, VirtualDocumentRootIP, VirtualScriptAlias, and VirtualScriptAliasIP.&lt;br /&gt;&lt;br /&gt;Those ending with 'IP' use the IP address of the site requested, whereas the others use the host name. Since IP addresses are hard to come by these days, that is until IPV6, the 128 bit net addressing protocol becomes the norm, we'll concentrate on using VirtualDocumentRoot and VirtualScriptAlias to maximize the number of sites we host under one IP. If you need to use the IP versions of these instructions, it shouldn't be difficult for you to figure out since they work exactly the same way, but parse the IP of the requested host name instead.&lt;br /&gt;&lt;br /&gt;Let's start with an example from an imaginary configuration file...&lt;br /&gt;&lt;br /&gt;&amp;lt;VirtualHost 208.231.13.91&amp;gt;&lt;br /&gt;CustomLog /www/logs/208.231.13.91.log vcommon&lt;br /&gt;UseCanonicalName Off&lt;br /&gt;VirtualDocumentRoot /www/webdocs/%-2/&lt;br /&gt;VirtualScriptAlias /www/scripts/%-2/&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;br /&gt;You'll first notice the "UseCanonicalName Off" core directive. This is mandatory for our purposes as it tells Apache to use the host name as requested by the client rather than a value set in a ServerName directive or devising one if it's absent. You'll also notice that all our sites' web documents must be in a sub-directory of /www/webdocs and all their scripts in a sub-directory of /www/scripts. For each site you added, you'd have to create these sub-directories and add a dns zone with the IP 208.231.13.91, but that's all. Of course, you can use your own paths.&lt;br /&gt;&lt;br /&gt;More important are the strange %-2 in the paths. This is a vhost instruction that allows us to extract a part of the host name and use it in the rewriting of the document path. The parts of the host name are determined by the '.' it contains. Thus, www.xyzcgrf.com has 3 parts. '%-2' means "extract the second to last part of the host name". Again using our example, suppose we have a request for "http://www.xyzcgrf.com/hello.htm"...Since xyzcgrf.com resolves to 208.231.13.91, Apache would use our VirtualHost declaration and would replace '%-2' with 'xyzcgrf', as the latter is the before last part of the host name. The document to return would thus be found at: /www/webdocs/xyzcgrf/hello.htm.&lt;br /&gt;&lt;br /&gt;Continuing with our example, a request for the script "http://www.xyzcgrf.com/cgi-bin/test.cgi" would execute the script found at /www/scripts/xyzcgrf/test.cgi. Note that even if the requested url omitted the 'www.', it would still be rewritten correctly in my example. While the above example would serve you well for the dot-com and dot-net type domains, it would not fare well for country domains. Thus, a request for http://xfxfvc.co.uk and http://ghtrrd.co.uk would both translate to a path of /www/webdocs/co/, which is obviously not what we intended. There's actually a whole slew of interpolation meta characters that we can use, so we're not stuck. Here are some of them, using http://www.bogus.xyzcgrf.com as an example.&lt;br /&gt;&lt;br /&gt;%0 : use the whole name [www.bogus.xyzcgrf.com]&lt;br /&gt;%1 : use the first part [www]&lt;br /&gt;%2 : use the second part [bogus]&lt;br /&gt;%3 : use the third part [xyzcgrf]&lt;br /&gt;%-1 : use the last part [com]&lt;br /&gt;%-3 : use the third to last part [bogus]&lt;br /&gt;%2+ : use the second and all subsequent parts [bogus.xyzcgrf.com]&lt;br /&gt;%3+ : use the third and all subsequent parts [xyzcgrf.com]&lt;br /&gt;...etc...&lt;br /&gt;&lt;br /&gt;You can also go nuts by extracting a part from a host name, then extracting a part from that part. In the latter case, the part would be a character or sequence of characters. We do this by using the format '%N.M', where %N is our first extract and 'M' is the second. The '.' is mandatory, but you omit the '%' in the second. For example...&lt;br /&gt;&lt;br /&gt;VirtualDocumentRoot /www/webdocs/%-2.2/&lt;br /&gt;&lt;br /&gt;...if we put the url http://www.bogus.xyzcgrf.com through this directive, we get /www/webdocs/y/. That's because %-2 extracted xyzcgrf, and the '2' gave us the second letter 'y'. I never needed this capability, but maybe you'll find some use for it. If what truly interests you is extreme url rewriting, there's another module which can allow you to slice and dice urls any which way, called "rewrite_module". We'll explore its possibilities in the near future.&lt;br /&gt;&lt;br /&gt;In order to smoothly rewrite paths for our xfxfvc.co.uk type host names that our first example fumbled with, we need to assign them a different IP in a separate VirtualHost declaration. Our vhost directives in that one would look like this...&lt;br /&gt;&lt;br /&gt;VirtualDocumentRoot /www/webdocs/%-3/&lt;br /&gt;VirtualScriptAlias /www/scripts/%-3/&lt;br /&gt;&lt;br /&gt;Thus, we'd extract the xfxfvc rather than the 'co'. I believe in keeping things simple, so I avoid using anything but the %- interpolations, as the rightmost part of any host name is reliable whereas the leftmost isn't. One drawback to using vhost_mod is that you can't have individual log files for each site sharing the IP. Instead, all will log to the same files. The way we compensate for that is by creating a special logging definition that will include a field that registers the domain of the request. Thus, for example, the instruction...&lt;br /&gt;&lt;br /&gt;LogFormat "%V %h %l %u %t "%r" %s %b" vcommon&lt;br /&gt;&lt;br /&gt;Appears somewhere in our configuration file. The "%V" tells apache to log the host name requested by the client [See: mod_log_config].&lt;br /&gt;&lt;br /&gt;With the LogFormat we've just defined, your log might look something like this...&lt;br /&gt;&lt;br /&gt;www.rtzxfgh.com 172.128.55.43 - -&lt;br /&gt;[03/May/2001:10:21:48 -0400] &lt;br /&gt;"GET /bogus.htm HTTP/1.1" 200 0&lt;br /&gt;www.ouwqagxh.com 172.128.55.44 - -&lt;br /&gt;[03/May/2001:10:21:49 -0400] &lt;br /&gt;"GET / HTTP/1.1" 200 0&lt;br /&gt;&lt;br /&gt;In order to generate individual traffic reports for each site sharing the log file is a statistical tool that can parse such a log.&lt;br /&gt;&lt;br /&gt;Some useful links you can follow to get further knowledge on the subjects discussed today:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://httpd.apache.org/docs/mod/mod_vhost_alias.html"&gt;mod_vhost_alias&lt;/a&gt;&lt;br /&gt;&lt;a href="http://httpd.apache.org/docs/mod/core.html#usecanonicalname"&gt;UseCanonicalName&lt;/a&gt;&lt;br /&gt;&lt;a href="http://httpd.apache.org/docs/mod/mod_log_config.html"&gt;mod_log_config&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Source: devnewz.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-7442697694820381306?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=rpJQA653hwA:WQbjeKG0EkE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=rpJQA653hwA:WQbjeKG0EkE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=rpJQA653hwA:WQbjeKG0EkE:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=rpJQA653hwA:WQbjeKG0EkE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=rpJQA653hwA:WQbjeKG0EkE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=rpJQA653hwA:WQbjeKG0EkE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=rpJQA653hwA:WQbjeKG0EkE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=rpJQA653hwA:WQbjeKG0EkE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=rpJQA653hwA:WQbjeKG0EkE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=rpJQA653hwA:WQbjeKG0EkE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=rpJQA653hwA:WQbjeKG0EkE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=rpJQA653hwA:WQbjeKG0EkE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=rpJQA653hwA:WQbjeKG0EkE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=rpJQA653hwA:WQbjeKG0EkE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-31T09:01:50.756+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2007/07/dynamic-virtual-host-with-apache.html</feedburner:origLink></item><item><title>PHP 6 Overview</title><link>http://feedproxy.google.com/~r/web-magician/~3/qzRG3Ecf2vY/php-6-overview.html</link><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Thu, 19 Jul 2007 04:14:39 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-6762106393291888493</guid><description>&lt;p&gt;PHP 6, it seems, will make the leap and become a more clean environment - which is something I really appreciate.&lt;/p&gt;&lt;p&gt;The register_globals, magic_quotes and safe_mode will finally disappear and hopefully slowly fade away into distant memory. It seems PHP 6 will even refuse to start if these settings are found in php.ini. Dropping support for the long versions of super globals, like HTTP_POST_VARS, is also scheduled. This is long overdue.&lt;/p&gt;&lt;p&gt;One thing I at first was a bit hesitant to is moving all the database extensions out of the core into PECL. It looks like this is not set in stone and seems to be an ongoing discussion. After thinking about it myself I think it would be the right thing to do. It would boost the usage of PDO and make it more used and thus more mature. It would also clear up some of the confusion among newcomers in the PHP sphere. "Use PDO or make an active choice" - would probably be the best for the future of PHP.&lt;/p&gt;&lt;p&gt;SOAP is widely used today and good support for SOAP has been around as an extension you have to actively turn on if you needed it. It also has many limitations as has been discussed recently on the PECL-DEV mailing list. There is also a new PHP SOAP extension being developed that is using &lt;a target="" title="" href="http://ws.apache.org/axis2/"&gt;Apache Axis 2&lt;/a&gt; from the Apache Foundation. I think what is suggested for PHP 6, to fix most of the remaining issues as well as implement support for some of the security extensions of SOAP, is the right way to go. I really think SOAP needs to be natively supported in PHP rather than having to depend on an external library as is the case with the Axis2 extension.&lt;/p&gt;&lt;p&gt;Named parameters to functions and methods has also been discussed. Even though I can remember how I enjoyed writing Smalltalk code with named parameters more than 10 years ago in university I don't think it should be implemented in PHP. Luckily those that decide on the roadmap thought the same as me.&lt;/p&gt;&lt;p&gt;Something that really annoys me today is that you can call methods both statically and dynamically whether they are marked static or not. It just doesn't make sense. This will in the yet distant PHP 6 generate an E_FATAL. Now that makes sense.&lt;/p&gt;This above is all well but it is in the planned additions it gets really interesting. PHP 6 will have the opcode cache APC included in the core distribution. It will not be turned on by default - but I think this is the first small step towards a future with JIT compilation or something along those lines. Good UTF support is another thing that is sorely needed and it seems a lot of work will be directed to clean up the string handling in PHP 6.&lt;br /&gt;&lt;br /&gt;Source: dotvoid.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-6762106393291888493?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=qzRG3Ecf2vY:SCdvfaydKRM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=qzRG3Ecf2vY:SCdvfaydKRM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=qzRG3Ecf2vY:SCdvfaydKRM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=qzRG3Ecf2vY:SCdvfaydKRM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=qzRG3Ecf2vY:SCdvfaydKRM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=qzRG3Ecf2vY:SCdvfaydKRM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=qzRG3Ecf2vY:SCdvfaydKRM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=qzRG3Ecf2vY:SCdvfaydKRM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=qzRG3Ecf2vY:SCdvfaydKRM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=qzRG3Ecf2vY:SCdvfaydKRM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=qzRG3Ecf2vY:SCdvfaydKRM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=qzRG3Ecf2vY:SCdvfaydKRM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=qzRG3Ecf2vY:SCdvfaydKRM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=qzRG3Ecf2vY:SCdvfaydKRM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-19T16:44:39.355+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2007/07/php-6-overview.html</feedburner:origLink></item><item><title>Web 3.0 Features</title><link>http://feedproxy.google.com/~r/web-magician/~3/YzT-R1tJqy0/web-30-features.html</link><category>Web Technology Information</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Tue, 17 Jul 2007 02:55:56 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-4937607284888534535</guid><description>Just in case you missed it, the web now has version numbers. Nearly three years  ago, amid continued hand-wringing over the dot-com crash, a man named Dale Dougherty  dreamed up something called Web 2.0, and the idea soon took on a life of its  own. In the beginning, it was little more than a rallying cry, a belief that  the Internet would rise again. But as Dougherty's O'Reilly Media  put together the first Web 2.0 Conference in late 2005, the term seemed to trumpet  a particular kind of online revolution, a World Wide Web of the people.&lt;br /&gt;&lt;br /&gt;Web 2.0 came to describe almost any site, service, or technology that promoted  sharing and collaboration right down to the Net's grass roots. That includes  blogs and wikis, tags and RSS feeds, &lt;a href="http://del.icio.us/" target="blank"&gt;del.icio.us&lt;/a&gt; and &lt;a href="http://www.flickr.com/" target="blank"&gt;Flickr&lt;/a&gt;, &lt;a href="http://www.myspace.com/" target="blank"&gt;MySpace&lt;/a&gt; and &lt;a href="http://www.youtube.com/" target="blank"&gt;YouTube&lt;/a&gt;.  Because the concept blankets so many disparate ideas, some have questioned how  meaningful—and how useful—it really is, but there's little  doubt it owns a spot in our collective consciousness. Whether or not it makes  sense, we now break the history of the Web into two distinct stages: Today we  have Web 2.0, and before that there was Web 1.0.&lt;br /&gt;&lt;br /&gt;Which raises the question: What will Web 3.0 look like?&lt;br /&gt;&lt;br /&gt;Yes, it's too early to say for sure. In many ways, even Web 2.0 is a work in progress. But it goes without saying that new Net technologies are always under development—inside universities, think tanks, and big corporations, as much as Silicon Valley start-ups—and blogs are already abuzz with talk of the Web's next generation.&lt;br /&gt;&lt;br /&gt;To many, Web 3.0 is something called the Semantic Web, a term coined by Tim  Berners-Lee, the man who invented the (first) World Wide Web. In essence, the  Semantic Web is a place where machines can read Web pages much as we humans  read them, a place where search engines and software agents can better troll  the Net and find what we're looking for. "It's a set of standards  that turns the Web into one big database," says Nova Spivack, CEO of Radar  Networks, one of the leading voices of this new-age Internet.&lt;br /&gt;&lt;br /&gt;But some are skeptical about whether the Semantic Web—or at least, Berners-Lee's  view of it—will actually take hold. They point to other technologies capable  of reinventing the online world as we know it, from 3D virtual worlds to Web-connected  bathroom mirrors. Web 3.0 could mean many things, and for Netheads, every single  one is a breathtaking proposition.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tim, Lucy, and The Semantic Web&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The Semantic Web isn't a new idea. This notion of a Web where machines can better read, understand, and process all that data floating through cyberspace—a concept many refer to as Web 3.0—first entered the public consciousness in 2001, when a story appeared in Scientific American. Coauthored by Berners-Lee, the article describes a world in which software "agents" perform Web-based tasks we often struggle to complete on our own.&lt;br /&gt;&lt;br /&gt;The article begins with an imaginary girl named Lucy, whose mother has just been told by her doctor that she needs to see a specialist. "At the doctor's office, Lucy instructed her Semantic Web agent through her handheld Web browser," we read. "The agent promptly retrieved information about Mom's prescribed treatment from the doctor's agent, looked up several lists of providers, and checked for the ones in-plan for Mom's insurance within a 20-mile radius of her home and with a rating of excellent on trusted rating services."&lt;br /&gt;&lt;br /&gt;That's quite a mouthful, but it only begins to describe Berners-Lee's vision of a future Web. Lucy's Semantic Web agent can also check potential appointment times against her mother's busy schedule, reschedule other appointments if need be, and more—all on its own, without help from Lucy. And Lucy is just one example. A Semantic Web agent could be programmed to do almost anything, from automatically booking your next vacation to researching a term paper.&lt;br /&gt;&lt;br /&gt;How will this actually work? In Berners-Lee's view, it involves a reannotation of the Web, adding all sorts of machine-readable metadata to the human-readable Web pages we use today (see "Questions of Semantics," opposite). Six years after the Scientific American article, official standards describing this metadata are in place—including the Recourse Description Framework (RDF) and the Web Ontology Language (OWL)—and they're already trickling into real-world sites, services, and other tools. -Semantic Web metadata underpins Yahoo!'s new food site. Spivack's Radar Networks is building a kind of Semantic Web portal. A development platform, Jena, is in the works at HP. And you'll find Semantic Web structures in Oracle's Spatial database tool.&lt;br /&gt;&lt;br /&gt;The problem is that a complete reannotation of the Web is a massive undertaking. "The Semantic Web is a good-news, bad-news thing," says R. David Lankes, an associate professor at Syracuse University's School of Information Studies. "You get the ability to do all these very complex queries, but it takes a tremendous amount of time and metadata to make that happen."&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Other Semantic Web&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;As a consequence, many researchers take a very different approach to the Semantic Web. Rather than calling for an overhaul of Web formats, which would involve hundreds of thousands of independent sites, they're building agents that can better understand Web pages as they exist today. They're not making the pages easier to read, they're making the software agents smarter.&lt;br /&gt;&lt;br /&gt;One early example is the BlueOrganizer from AdaptiveBlue (www.adaptiveblue.com). In certain situations, when you visit a Web page, this browser plug-in can understand what the page is about, automatically retrieving related information from other sites and services. If you visit a movie blog, for instance, and read about a particular film, it immediately links to sites where you can buy or rent that film. "It's what you might call a top-down approach," says Alex Iskold, the company's CEO. "Web pages already contain semantic data. We can understand them, so why shouldn't computers? Why not build a technology that can parse and process existing services and databases?"&lt;br /&gt;&lt;br /&gt;Of course, that's easier said than done. Countless companies offer tools similar to BlueOrganizer—including Claria's PersonalWeb—but these aren't that different from the old Amazon.com "recommendation engine," which suggests new products based on your surfing and buying habits. We're a long way from agents that can think on their own. In the near term, the Semantic Web may require the sort of metadata Berners-Lee proposes. "Automated agents are worth striving for," says Pattie Maes, an MIT Media Lab veteran who founded the Lab's Software Agents Group. "But it's hard to say what's better—tags built into Web pages or tags that are, in a sense, inferred by machines."&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Semantics and Search&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The Semantic Web, like Web 2.0, is a nebulous concept. "Considering that the very word semantic is all about meaning, it's ironic that the term Semantic Web is so ill defined," says Radar Networks' Spivack. Some, like Spivack, fall into the Berners-Lee camp. Others, like AdaptiveBlue's Iskold, believe in the artificial-intelligence method. And then there are the others: the semantic searchers.&lt;br /&gt;&lt;br /&gt;Rather than providing automatic information retrieval, semantic search engines seek to improve on the Google-like search model we've grown so accustomed to. The idea is to move beyond mere keyword searches to a better understanding of natural-language queries. "Right now, search engines can't tell the difference between Paris Hilton and the Hilton in Paris," says Jeff Bates, cofounder of Slashdot, one of the driving forces behind Web 2.0. "There's millions of dollars being spent trying to better optimize search, and that's a big part of what the Semantic Web will be."&lt;br /&gt;&lt;br /&gt;This kind of natural-language processing has been in development for years, but it, too, has found its way onto the public Web. Several start-ups, including Powerset and TextDigger, are hard at work on semantic search engines based on the open-source academic project WordNet. It should be noted, however, that natural-language search could very well play a role in the Berners-Lee Semantic Web. His is merely a framework to enable all sorts of apps, and semantic search might be one of them.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pcmag.com/article2/0,1895,2102852,00.asp"&gt;Source&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-4937607284888534535?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=YzT-R1tJqy0:W97h8DO-DJI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=YzT-R1tJqy0:W97h8DO-DJI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=YzT-R1tJqy0:W97h8DO-DJI:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=YzT-R1tJqy0:W97h8DO-DJI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=YzT-R1tJqy0:W97h8DO-DJI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=YzT-R1tJqy0:W97h8DO-DJI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=YzT-R1tJqy0:W97h8DO-DJI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=YzT-R1tJqy0:W97h8DO-DJI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=YzT-R1tJqy0:W97h8DO-DJI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=YzT-R1tJqy0:W97h8DO-DJI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=YzT-R1tJqy0:W97h8DO-DJI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=YzT-R1tJqy0:W97h8DO-DJI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=YzT-R1tJqy0:W97h8DO-DJI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=YzT-R1tJqy0:W97h8DO-DJI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-17T15:25:56.612+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2007/07/web-30-features.html</feedburner:origLink></item><item><title>Go PHP 5 - Major PHP Projects and Web Hosts agrees to go for PHP 5</title><link>http://feedproxy.google.com/~r/web-magician/~3/ZBocjG2W6DY/go-php-5-major-p.html</link><category>PHP</category><category>News</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Fri, 13 Jul 2007 07:42:58 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-2934509077555878373</guid><description>&lt;p&gt;&lt;a href="http://gophp5.org/" title="Support GoPHP5.org"&gt;&lt;img src="http://gophp5.org/sites/gophp5.org/buttons/goPHP5-200x65.png" alt="Support GoPHP5.org" align="right" border="0" height="65" width="200" /&gt;&lt;/a&gt; PHP 4 has served the web developer community for seven years now, and served it well. However, it also shows its age. Most of PHP 4's shortcomings have been addressed by PHP 5, released three years ago, but the transition from PHP 4 to PHP 5 has been slow for a number of reasons.&lt;/p&gt; &lt;p&gt;PHP developers cannot leverage PHP 5's full potential without dropping support for PHP 4, but PHP 4 is still installed on a majority of shared web hosts and users would then be forced to switch to a different application. Web hosts cannot upgrade their servers to PHP 5 without making it impossible for their users to run PHP 4-targeted web apps, and have no incentive to go to the effort of testing and deploying PHP 5 while most web apps are still compatible with PHP 4 and the PHP development team still provides maintenance support for PHP 4. The PHP development team, of course, can't drop maintenance support for PHP 4 while most web hosts still run PHP 4.&lt;/p&gt; &lt;p&gt;It is a dangerous cycle, and one that needs to be broken. The PHP developer community has decided that it is indeed now time to move forward, together. Therefore, many popular software projects like &lt;a href="http://drupal.org/gophp5"&gt;Drupal&lt;/a&gt;, &lt;a href="http://www.phpmyadmin.net/gophp5"&gt;phpMyAdmin&lt;/a&gt;, &lt;a href="http://phppgadmin.sourceforge.net/?page=gophp5"&gt;phpPgAdmin&lt;/a&gt;, &lt;a href="http://propel.tigris.org/"&gt;Propel&lt;/a&gt;, &lt;a href="http://www.symfony-project.com/weblog/post/136.html"&gt;Symfony&lt;/a&gt;, &lt;a href="http://typo3.org/"&gt;Typo3&lt;/a&gt;  etc. have all agreed that effective February 5th, 2008, any new feature releases will have a minimum version requirement of at least PHP 5.2.0. Furthermore, the listed web hosts have agreed that effective February 5th, 2008, they will include PHP 5.2 (or a more recent version) in their service offer. &lt;/p&gt; &lt;p&gt;It is our belief that this will provide web hosts reason to upgrade and the PHP development team the ability to retire PHP 4 and focus efforts on PHP 5 and the forthcoming PHP 6, all without penalizing any existing project for being "first out of the gate".&lt;/p&gt;&lt;p&gt;&lt;a href="http://gophp5.org/"&gt;Source&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-2934509077555878373?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ZBocjG2W6DY:ttxj-aDShmg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ZBocjG2W6DY:ttxj-aDShmg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ZBocjG2W6DY:ttxj-aDShmg:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ZBocjG2W6DY:ttxj-aDShmg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=ZBocjG2W6DY:ttxj-aDShmg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ZBocjG2W6DY:ttxj-aDShmg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=ZBocjG2W6DY:ttxj-aDShmg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ZBocjG2W6DY:ttxj-aDShmg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ZBocjG2W6DY:ttxj-aDShmg:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=ZBocjG2W6DY:ttxj-aDShmg:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ZBocjG2W6DY:ttxj-aDShmg:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ZBocjG2W6DY:ttxj-aDShmg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=ZBocjG2W6DY:ttxj-aDShmg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=ZBocjG2W6DY:ttxj-aDShmg:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-13T20:12:58.397+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2007/07/go-php-5-major-p.html</feedburner:origLink></item><item><title>Object oriented programming (OOP) without classes…!!!</title><link>http://feedproxy.google.com/~r/web-magician/~3/9zDY5WM5np8/object-oriented-programming-oop-without.html</link><category>PHP</category><category>OOPs</category><category>Drupal</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Thu, 12 Jul 2007 22:21:55 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-8423967600434588441</guid><description>&lt;p&gt;Nowadays, object oriented programming (OOP) is quickly taking place over the traditional procedure oriented programming (POP). Success of the modern programming languages like C# and Java is obviously because of OOPs Power.&lt;/p&gt; &lt;p&gt;As all the OOP languages use CLASS or similar data structures for Object Oriented Programming, we have considered that without a "CLASS", OOP is not possible.&lt;/p&gt; &lt;p&gt;With the same idea in my mind, I’d briefly gone through the code base of "Drupal" - One of the most popular open source content management system and framework built with PHP language. I often read and heard many praise about the power of Drupal, but after the first look at the code base, I amazed that Drupal doesn’t use a single Class in it’s code base! Whole Drupal code base is based on just functions. As PHP, with which programming language Drupal itself is built, is also implementing many powerful OPP features, I could not understand why Drupal is not using these features!&lt;/p&gt; &lt;p&gt;As I’d not seen the keyword 'class' in Drupal code base, I evaluated Drupal as non-OOP as many programmers do. And that was my mistake! Even though, Drupal doesn’t contain any class like data structure, it is still Object Oriented. I realized this fact after details study of Drupal.&lt;/p&gt; &lt;p&gt;Actually, the OOP concept is not based on uses of data structures like CLASS. It is based on the fundamentals of features like Objects, Abstraction, Encapsulation, Polymorphism, Inheritance etc. If these fundamental features are included in programming then it can be considered in OOP.&lt;/p&gt; &lt;p&gt;Drupal covers all these features without classes. I also realized that the power of Drupal is hardly depends on this programming structure only. The way, how the hook system has been implemented in Drupal would never been possible with the use of Classes.&lt;/p&gt; &lt;p&gt;See more details about how Drupal implements Object Oriented Programming (OOP) without using Classes, visit: &lt;a href="http://api.drupal.org/api/HEAD/file/developer/topics/oop.html"&gt;http://api.drupal.org/api/HEAD/file/developer/topics/oop.html&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-8423967600434588441?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=9zDY5WM5np8:E94IwTPowQ8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=9zDY5WM5np8:E94IwTPowQ8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=9zDY5WM5np8:E94IwTPowQ8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=9zDY5WM5np8:E94IwTPowQ8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=9zDY5WM5np8:E94IwTPowQ8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=9zDY5WM5np8:E94IwTPowQ8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=9zDY5WM5np8:E94IwTPowQ8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=9zDY5WM5np8:E94IwTPowQ8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=9zDY5WM5np8:E94IwTPowQ8:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=9zDY5WM5np8:E94IwTPowQ8:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=9zDY5WM5np8:E94IwTPowQ8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=9zDY5WM5np8:E94IwTPowQ8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=9zDY5WM5np8:E94IwTPowQ8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=9zDY5WM5np8:E94IwTPowQ8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-13T10:51:55.279+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2007/07/object-oriented-programming-oop-without.html</feedburner:origLink></item><item><title>Google Gears - lets developers take web applications offline!!!</title><link>http://feedproxy.google.com/~r/web-magician/~3/dQ7YFF3MF0A/google-gears-lets-developers-take-web.html</link><category>News</category><author>pmkansara@gmail.com (Paryank Kansara)</author><pubDate>Thu, 12 Jul 2007 22:20:09 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-33639903.post-6741460604175487844</guid><description>&lt;p&gt;One of the biggest knocks against Google Docs &amp;amp; Spreadsheets, Gmail, ThinkFree Office, and other online applications is that you need a fast and reliable Internet connection to use them. No Web access, no data.&lt;/p&gt; &lt;p&gt;Google hopes to eliminate this limitation with &lt;a href="http://gears.google.com/"&gt;Google Gears&lt;/a&gt;, a free open-source browser extension that developers can use to create offline versions of their Web applications. The company hopes Gears will lead to the development of a single industry standard for writing offline apps.&lt;/p&gt; &lt;p&gt;The first program created with the Gears API is the Google Reader feed-reading application, which is available today. The company is counting on application developers to extend and enhance the Gears environment, which is why Google decided to release it “in its early stages,” according to the company.&lt;/p&gt; &lt;p&gt;The Gears API will be available for all Web development environments, including &lt;a href="http://labs.adobe.com/technologies/apollo/"&gt;Adobe’s Apollo&lt;/a&gt; product, which also allows Web apps to run on the desktop. Adobe chief software architect Kevin Lynch says his company is happy to be working with Google to create “a standard cross-platform, cross-browser local storage capability.”&lt;/p&gt; &lt;p&gt;Gears’ Javascript APIs allow you to store data, and cache and multithread online applications to your desktop. It supports the most complex Web services, according to the company. The development environment works with all major browsers written for Windows, Linux, and the Mac OS.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.pcworld.com/staffblog/archives/004519.html"&gt;source&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33639903-6741460604175487844?l=web-magician.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=dQ7YFF3MF0A:ugp-bCXEWfw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=dQ7YFF3MF0A:ugp-bCXEWfw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=dQ7YFF3MF0A:ugp-bCXEWfw:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=dQ7YFF3MF0A:ugp-bCXEWfw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=dQ7YFF3MF0A:ugp-bCXEWfw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=dQ7YFF3MF0A:ugp-bCXEWfw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=dQ7YFF3MF0A:ugp-bCXEWfw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=dQ7YFF3MF0A:ugp-bCXEWfw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=dQ7YFF3MF0A:ugp-bCXEWfw:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=dQ7YFF3MF0A:ugp-bCXEWfw:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=dQ7YFF3MF0A:ugp-bCXEWfw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=dQ7YFF3MF0A:ugp-bCXEWfw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?i=dQ7YFF3MF0A:ugp-bCXEWfw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/web-magician?a=dQ7YFF3MF0A:ugp-bCXEWfw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/web-magician?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-13T10:50:09.869+05:30</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://web-magician.blogspot.com/2007/07/google-gears-lets-developers-take-web.html</feedburner:origLink></item><copyright>Copyright reserved by Paryank Kansara</copyright><media:credit role="author">Paryank Kansara</media:credit><media:rating>nonadult</media:rating><media:description type="plain">Web Magician - Information, News, Programming Tips and Tricks about IT Technology</media:description></channel></rss>

