<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ajaxian &#187; PHP</title>
	<atom:link href="http://ajaxian.com/by/topic/php/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com</link>
	<description>Cleaning up the web with Ajax</description>
	<lastBuildDate>Thu, 02 Feb 2012 22:23:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
    	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>HipHop Virtual Machine for PHP</title>
		<link>http://ajaxian.com/archives/hiphop-virtual-machine-for-php</link>
		<comments>http://ajaxian.com/archives/hiphop-virtual-machine-for-php#comments</comments>
		<pubDate>Sun, 11 Dec 2011 02:15:51 +0000</pubDate>
		<dc:creator>jvaughan</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=10753</guid>
		<description><![CDATA[Facebook Software Engineer and HipHop for PHP team member Jason Evans provides details on Facebook&#8217;s move to a new high-performance PHP virtual machine. Described by Evans is &#8221;a new PHP execution engine based on the HipHop language runtime that we call the HipHop Virtual Machine (hhvm).&#8221; He sees it as replacement for the HipHop PHP <a href="http://ajaxian.com/archives/hiphop-virtual-machine-for-php">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Facebook Software Engineer and HipHop for PHP team member Jason Evans provides details on Facebook&#8217;s move to a new high-performance PHP virtual machine. Described by Evans is &#8221;a new PHP execution engine based on the HipHop language runtime that we call the HipHop Virtual Machine (hhvm).&#8221; He sees it as replacement for the HipHop PHP interpreter (hphpi). He continues:</p>
<blockquote><p>We have long been keenly aware of the limitations to static analysis imposed by such a dynamic language as PHP, not to mention the risks inherent in developing software with hphpi and deploying with hphpc. Our experiences with hphpc led us to start experimenting with dynamic translation to native machine code, also known as just-in-time (JIT) compilation &#8230; we developed a high-level stack-based virtual machine specifically tailored to PHP that executes HipHop bytecode (HHBC). hhvm uses hphpc&#8217;s PHP&gt;AST implementation and extends the pipeline to PHP&gt;AST&gt;HHBC.</p></blockquote>
<p>He estimates the hhvm bytecode interpreter is approximately 1.6X faster for certain Facebook-specific benchmarks, with still better performance in the offing. But, as described in his <a href="https://www.facebook.com/notes/facebook-engineering/the-hiphop-virtual-machine/10150415177928920 ">blog post on the PHP compilation innovations</a>, there is still work ahead. You can view <a href="https://github.com/facebook/hiphop-php/wiki/">HipHop-related information at GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/hiphop-virtual-machine-for-php/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Building a Basic Silverlight Application to talk to PHP</title>
		<link>http://ajaxian.com/archives/building-a-basic-silverlight-application-to-talk-to-php</link>
		<comments>http://ajaxian.com/archives/building-a-basic-silverlight-application-to-talk-to-php#comments</comments>
		<pubDate>Tue, 01 Jun 2010 09:14:31 +0000</pubDate>
		<dc:creator>tberardi</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=9433</guid>
		<description><![CDATA[Silverlight is a powerful development platform for creating engaging, interactive user experiences for Web, desktop, and mobile applications when online or offline. Silverlight is a free plug-in, powered by the .NET framework and compatible with multiple browsers, devices and operating systems, bringing a new level of interactivity wherever the Web works. Silverlight 4 adds a <a href="http://ajaxian.com/archives/building-a-basic-silverlight-application-to-talk-to-php">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<div>
<p>Silverlight is a powerful development platform for creating  engaging, interactive user experiences for Web, desktop, and mobile  applications when online or offline.</p>
<p>Silverlight is a free plug-in, powered by the .NET framework and  compatible with multiple browsers, devices and operating systems,  bringing a new level of interactivity wherever the Web works.  Silverlight 4 adds a ton of new features, like webcam, microphone, and  printing, to enable you to create incredible applications.</p>
<p>This screencast sponsored by Microsoft shows you how to build a basic Silverlight  application in order to talk to PHP.</p>
<p><!-- Start of Brightcove Player --></p>
<div style="display:none">
</div>
<p><!-- By use of this code snippet, I agree to the Brightcove Publisher T and C found at https://accounts.brightcove.com/en/terms-and-conditions/.  --></p>
<p><script type="text/javascript" src="http://admin.brightcove.com/js/BrightcoveExperiences.js"></script></p>
<p><object id="myExperience87201763001" class="BrightcoveExperience"><param name="bgcolor" value="#FFFFFF" /><param name="width" value="486" /><param name="height" value="412" /><param name="playerID" value="47366654001" /><param name="publisherID" value="1367663370"/><param name="isVid" value="true" /><param name="dynamicStreaming" value="true" /><param name="@videoPlayer" value="87201763001" /></object></p>
<p><!--  This script tag will cause the Brightcove Players defined above it to be created as soon as the line is read by the browser. If you wish to have the player instantiated only after the rest of the HTML is processed and the page load is complete, remove the line. --></p>
<p><script type="text/javascript">brightcove.createExperiences();</script></p>
<p><!-- End of Brightcove Player --></p>
<p>________________________________________________________________________________________</p>
</div>
<div>
<div>===Presenter&#8217;s Bio===</div>
<div>Michael Kimsal has extensive  experience with all levels of web app development in a variety of  languages, from early days of basic form processing through creating  large scale MVC systems to handle millions of visitors. Having taught  PHP at various levels, he is comfortable presenting technical ideas to  different levels of audiences.  Michael has dealt classroom applications  (logicampus), ecommerce apps, CMS apps, custom business logic  utilities, catalog management apps, pay-for content and membership  sites, and more.  He has over 13 years of Senior-level IT experience in  the areas of reducing business operation costs through use of web  technologies, social media technologies, integration and adoption, open  source technologies (licensing, adoption, integration, customization),  project management and developer mentoring.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/building-a-basic-silverlight-application-to-talk-to-php/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>PHPJS: PHP Functions in JS, Now with CommonJS Packaging</title>
		<link>http://ajaxian.com/archives/phpjs</link>
		<comments>http://ajaxian.com/archives/phpjs#comments</comments>
		<pubDate>Thu, 22 Apr 2010 15:11:02 +0000</pubDate>
		<dc:creator>Michael Mahemoff</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=9120</guid>
		<description><![CDATA[PHPJS is an effort to bring the mammoth PHP API into the land of JS., where it can be used for web apps as well as the increasing number of Javascript applications outside the browser. The homepage explains some of the philosophy behind this project: PHP is a language with many high-level functions and while <a href="http://ajaxian.com/archives/phpjs">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://phpjs.org/"><img src="http://ajaxian.com/wp-content/images/phpjs.png" alt="phpjs" title="phpjs" width="170" height="90" class="alignnone size-full wp-image-9119" /></a></p>
<p><a href="http://phpjs.org/">PHPJS</a> is an effort to bring the mammoth <a href="http://www.php.net/manual/en/funcref.php">PHP API</a> into the land of JS., where it can be used for web apps as well as the increasing number of Javascript applications outside the browser.</p>
<p>The homepage explains some of the philosophy behind this project:</p>
<blockquote>
<p><strong>PHP</strong> is a language with many high-level functions and while they&#8217;re not always implemented as consistently as we&#8217;d like (mostly to blame on its underlying C parts), it has a huge following familiar with its syntax so it makes sense to pick its API as a reference<strong>.</strong> Eliminating the need for our own <a href="http://php.net">documentation</a>, thus making life easier, we hope.  </p>
<p> We recognize <strong>JS</strong> &#8211; on the other hand &#8211; has beautiful language features, and we encourage you to <a href="http://www.youtube.com/watch?v=hQVTIJBZook">learn them</a>.  Never let php.js be an excuse <u>not to</u>.</p>
<p>For the same reason, we&#8217;re not porting entire language or control structures of PHP; we stick with the functions.</p>
<p>That said, we think of it as a <strong>challenge</strong> to port everything and decided to also port low-level PHP functions like <a href="http://phpjs.org/functions/strpos:545">strpos</a> even though it may have a JavaScript counterpart (<a href="https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/String/IndexOf">String.indexOf</a>).  Cause besides the intellectual challenge for us, porting more also opens up php.js to all kinds of thought excercises and study purposes.  And so we leave it up to the developer to <a href="http://phpjs.org/packages/configure">decide what to take from this resource</a>. And what not.</p>
</blockquote>
<p>It&#8217;s not new &#8211; the project&#8217;s been around a while and went to GitHub last September. However, it&#8217;s noteworthy as it appears to be fairly unknown in parts of the Javascript community, judging from <a href="http://js.pastebin.com/2RYJWgEX">recent Twitter responsage</a> to a mention of the project. (It was news to me, and I dabble in PHP.)</p>
<p>Moreover, there is significant progress here: project founder Kevin van Zonneveld yesterday <a href="http://twitter.com/kvz/status/12602365534">announced CommonJS support</a>. The homepage indicates it&#8217;s &#8220;first steps&#8221;, but longer term, this potentially brings a huge corpus of library functions into the realm of CommonJS, a win for reuse and a win for all the PHPers getting into JS.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/phpjs/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Pure CSS bar charts as a simple API</title>
		<link>http://ajaxian.com/archives/pure-css-bar-charts-as-a-simple-api</link>
		<comments>http://ajaxian.com/archives/pure-css-bar-charts-as-a-simple-api#comments</comments>
		<pubDate>Fri, 15 Jan 2010 13:19:05 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[charts]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=8453</guid>
		<description><![CDATA[I am right now working on a high-traffic project that will run in a sandbox that doesn't allow me to pull third party JavaScript or use canvas/Flash. Yet I need to generate bar charts from a set of data. The solution to me was to create the charts from HTML using CSS. There have been <a href="http://ajaxian.com/archives/pure-css-bar-charts-as-a-simple-api">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>I am right now working on a high-traffic project that will run in a sandbox that doesn't allow me to pull third party JavaScript or use canvas/Flash. Yet I need to generate bar charts from a set of data.</p>
<p><a href="http://icant.co.uk/csscharts"><img src="http://farm5.static.flickr.com/4034/4275838221_5ed55f57a6.jpg" alt="Pure CSS bar charts"/></a></p>
<p>The solution to me was to create the charts from HTML using CSS. There have been some <a href="http://meyerweb.com/eric/css/edge/bargraph/demo.html">solutions</a> <a href="http://www.splintered.co.uk/experiments/archives/css_bar_graphs/">for</a> <a href="http://www.standards-schmandards.com/exhibits/barchart/">this</a> <a href="http://www.cssplay.co.uk/menu/barchart.html">problem</a> <a href="http://speckyboy.com/2009/02/04/16-usable-css-graph-and-bar-chart-tutorials-and-techniques/">already</a> but I wanted something very simple and easy to maintain. Hence all the markup I am using is this:</p>
<div class="igBar"><a href="javascript:showCodeTxt('xml-5');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">XML:</span>
<div id="xml-5">
<div class="xml">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;ul<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;li<span style="font-weight: bold; color: black;">&gt;</span></span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;span<span style="font-weight: bold; color: black;">&gt;</span></span></span>400<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/span<span style="font-weight: bold; color: black;">&gt;</span></span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/li<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;li<span style="font-weight: bold; color: black;">&gt;</span></span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;span<span style="font-weight: bold; color: black;">&gt;</span></span></span>20<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/span<span style="font-weight: bold; color: black;">&gt;</span></span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/li<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;li<span style="font-weight: bold; color: black;">&gt;</span></span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;span<span style="font-weight: bold; color: black;">&gt;</span></span></span>30<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/span<span style="font-weight: bold; color: black;">&gt;</span></span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/li<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;li<span style="font-weight: bold; color: black;">&gt;</span></span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;span<span style="font-weight: bold; color: black;">&gt;</span></span></span>233<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/span<span style="font-weight: bold; color: black;">&gt;</span></span></span><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/li<span style="font-weight: bold; color: black;">&gt;</span></span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/ul<span style="font-weight: bold; color: black;">&gt;</span></span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>Instead of hard-coding any of the trickery necessary I wrote a PHP script to generate the HTML, the styles and do all the math. So all that is needed to render one of the charts is the following code:</p>
<div class="igBar"><a href="javascript:showCodeTxt('php-6');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">PHP:</span>
<div id="php-6">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span> </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#0000FF;">$values</span> = <span style="color:#FF0000;">'400,20,30,233,312,78,20,67'</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#0000FF;">$height</span> = <span style="color:#800000;">100</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#0000FF;">$width</span> = <span style="color:#800000;">600</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#0000FF;">$bargap</span> = <span style="color:#800000;">0</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#616100;">include</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'csscharts.php'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>Of course, this can also be turned into a web service - you can get the chart with the following URL:</p>
<p><a href="http://icant.co.uk/csscharts/csscharts.php?values=400,20,30,233,312,78,20,67&#038;height=100&#038;width=600&#038;bargap=0">http://icant.co.uk/csscharts/csscharts.php?values=400,20,30,233,312,78,20,67&#038;height=100&#038;width=600&#038;bargap=0</a></p>
<p>And if you specify JSON as the format you get it with a <code>callback</code> to a function called <code>csscharts</code>:</p>
<p><a href="http://icant.co.uk/csscharts/csscharts.php?values=400,20,30,233,312,78,20,67&#038;format=json">http://icant.co.uk/csscharts/csscharts.php?values=400,20,30,233,312,78,20,67&#038;format=json</a></p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-7');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-7">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">csscharts<span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; chart:<span style="color: #3366CC;">"&lt;ul class=<span style="color: #000099; font-weight: bold;">\"</span>barchart<span style="color: #000099; font-weight: bold;">\"</span> [… the rest of the html …]&lt;/ul&gt;"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>That way you can use it in JavaScript:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-8');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-8">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;script&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">function</span> csscharts<span style="color:#006600; font-weight:bold;">&#40;</span>o<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #003366; font-weight: bold;">var</span> container = document.<span style="color: #006600;">getElementById</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'container'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; c.<span style="color: #006600;">innerHTML</span> = o.<span style="color: #006600;">chart</span> + c.<span style="color: #006600;">innerHTML</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;/script&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;script src=<span style="color: #3366CC;">"http://icant.co.uk/csscharts/csscharts.php?values=400,20,30,233,312,78,20,67&amp;format=json"</span>&gt;&lt;/script&gt; </div>
</li>
</ol>
</div>
</div>
</div>
<p>You can <a href="http://icant.co.uk/csscharts/csscharts-demo.php">see some demos here</a>, get <a href="http://icant.co.uk/csscharts/">detailed info about the CSS trickery used</a> and of course <a href="http://github.com/codepo8/CSScharts">download the code on GitHub.</a></ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/pure-css-bar-charts-as-a-simple-api/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Screencast: PHP on Microsoft IIS7</title>
		<link>http://ajaxian.com/archives/screencast-php-on-microsoft-iis7</link>
		<comments>http://ajaxian.com/archives/screencast-php-on-microsoft-iis7#comments</comments>
		<pubDate>Wed, 02 Dec 2009 15:52:21 +0000</pubDate>
		<dc:creator>tberardi</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=8094</guid>
		<description><![CDATA[PHP on Windows has long been held as the preferred development platform for many PHP developers despite the awkward installation process. It has also been assumed that while Apache on Windows isn’t as good as on *nix, it is at least superior (or at least easier) compared to IIS on Windows. With the release of <a href="http://ajaxian.com/archives/screencast-php-on-microsoft-iis7">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>PHP on Windows has long been held as the preferred development platform for many PHP developers despite the awkward installation process. It has also been assumed that while Apache on Windows isn’t as good as on *nix, it is at least superior (or at least easier) compared to IIS on Windows. With the release of IIS7 and the Web Platform Installer, this is no longer valid. You can setup PHP on IIS7 using FastCGI, which by all accounts is starting to give even Apache on *nix a run for its money! This screencast, sponsored by Microsoft, will walk you through the process of getting an up-to-date development environment up and running with PHP 5.3, MySQL 5.1 and IIS 7.5, on Windows 7.</p>
<p><object id="flashObj" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="270" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="bgcolor" value="#FFFFFF" /><param name="flashVars" value="@videoPlayer=61769492001&amp;playerID=61732247001&amp;domain=embed&amp;" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowFullScreen" value="true" /><param name="swLiveConnect" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://c.brightcove.com/services/viewer/federated_f9/61732247001?isVid=1&amp;isUI=1&amp;publisherID=1367663370" /><param name="name" value="flashObj" /><param name="flashvars" value="@videoPlayer=61769492001&amp;playerID=61732247001&amp;&amp;domain=embed&amp;" /><param name="allowfullscreen" value="true" /><embed id="flashObj" type="application/x-shockwave-flash" width="480" height="270" src="http://c.brightcove.com/services/viewer/federated_f9/61732247001?isVid=1&amp;isUI=1&amp;publisherID=1367663370" allowscriptaccess="always" swliveconnect="true" allowfullscreen="true" flashvars="@videoPlayer=61769492001&amp;playerID=61732247001&amp;&amp;domain=embed&amp;" seamlesstabbing="false" base="http://admin.brightcove.com" bgcolor="#FFFFFF" name="flashObj"></embed></object></p>
<p><a href="http://viewer.media.bitpipe.com/1260481898_989/1260905761_493/Screencast---The-Installation-of-PHP-5.3-IIS.pdf" target="_blank">View the transcript.</a><br />
=== Links ===</p>
<p><a href="http://www.microsoft.com/web/Downloads/platform.aspx" target="_blank">Microsoft® Web Platform Installer</a></p>
<p><a href=" http://windows.php.net/" target="_blank">PHP For Windows</a></p>
<p><a href="http://www.iis.net/expand/WinCacheForPHP" target="_blank">Windows Cache Extension for PHP</a></p>
<p>===Presenter's Bio===</p>
<p>Davey Shafik is a full time PHP Developer with a decade of experience in PHP and related technologies. An avid magazine writer for php|architect and the International PHP Magazine, Davey keeps his mind sharp by trying to tackle problems with his unique perspective. Davey is a seasoned PHP conference speaker, author of php|architect's Zend PHP 5 Certification Study Guide, an original core contributor to the Zend Framework and long time PEAR project contributor.</p>
<p>He lives in Florida with his girlfriend and their 6 cats, where he enjoys the sunshine and working full time in academia while maintaining his off-beat PHP related blog at <a href="http://daveyshafik.com/">daveyshafik.com</a>. Davey is Zend PHP 4 and PHP 5 Certified.<a href="http://theserversidecom.bitpipe.com/detail/RES/1259012495_812.html?asrc=CL_PRM_Microsoft "></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/screencast-php-on-microsoft-iis7/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Formaldehyde: PHP debug info for the client side</title>
		<link>http://ajaxian.com/archives/formaldehyde-php-debug-info-for-the-client-side</link>
		<comments>http://ajaxian.com/archives/formaldehyde-php-debug-info-for-the-client-side#comments</comments>
		<pubDate>Thu, 10 Sep 2009 11:49:24 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7336</guid>
		<description><![CDATA[Andrea Giammarchi has released Formaldehyde, a new Ajax and PHP error debugger. Simply grab the project and throw in an inclusion: PLAIN TEXT PHP: &#160; &#60;?php require_once 'formaldehyde.php'; ?&#62; &#160; You are off to the races. Want to do a touch more? PLAIN TEXT JAVASCRIPT: &#160; // *optional* custom ServerError constructor function ServerError&#40;e&#41;&#123; &#160; &#160; <a href="http://ajaxian.com/archives/formaldehyde-php-debug-info-for-the-client-side">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.3site.eu/formaldehyde/formaldehyde.gif"/></p>
<p><a href="https://twitter.com/WebReflection">Andrea Giammarchi</a> has released <a href="http://webreflection.blogspot.com/2009/09/formaldehyde-ajax-php-error-debugger.html">Formaldehyde</a>, a new Ajax and PHP error debugger.</p>
<p>Simply <a href="http://code.google.com/p/formaldehyde/">grab the project</a> and throw in an inclusion:</p>
<div class="igBar"><a href="javascript:showCodeTxt('php-11');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">PHP:</span>
<div id="php-11">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span> <span style="color:#616100;">require_once</span> <span style="color:#FF0000;">'formaldehyde.php'</span>; <span style="color:#000000; font-weight:bold;">?&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>You are off to the races.</p>
<p>Want to do a touch more?</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-12');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-12">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// *optional* custom ServerError constructor</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">function</span> ServerError<span style="color:#006600; font-weight:bold;">&#40;</span>e<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">for</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> key <span style="color: #000066; font-weight: bold;">in</span> e<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">this</span><span style="color:#006600; font-weight:bold;">&#91;</span>key<span style="color:#006600; font-weight:bold;">&#93;</span> = e<span style="color:#006600; font-weight:bold;">&#91;</span>key<span style="color:#006600; font-weight:bold;">&#93;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; ;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// make Firebug the best friend ever</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#40;</span>ServerError.<span style="color: #006600;">prototype</span> = <span style="color: #003366; font-weight: bold;">new</span> Error<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">name</span> = <span style="color: #3366CC;">"ServerError"</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// same call</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> xhr = <span style="color: #003366; font-weight: bold;">new</span> XMLHttpRequest;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">xhr.<span style="color: #006600;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"get"</span>, <span style="color: #3366CC;">"test.php"</span>, <span style="color: #003366; font-weight: bold;">true</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">xhr.<span style="color: #006600;">onreadystatechange</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span>xhr.<span style="color: #006600;">readyState</span> === <span style="color:#800000;">4</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">199</span> &lt;xhr.<span style="color: #006600;">status</span> &amp;&amp; xhr.<span style="color: #006600;">status</span> &lt;<span style="color:#800000;">400</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// do something without failures</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</span>xhr.<span style="color: #006600;">responseText</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// if Formaldehyde managed the call</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span>xhr.<span style="color: #006600;">status</span> === <span style="color:#800000;">500</span> &amp;&amp; xhr.<span style="color: #006600;">getResponseHeader</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"X-Formaldehyde"</span><span style="color:#006600; font-weight:bold;">&#41;</span> != <span style="color: #003366; font-weight: bold;">null</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// evaluate safely the response</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// generating a proper error</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.<span style="color: #006600;">log</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> ServerError<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"("</span> + xhr.<span style="color: #006600;">responseText</span> + <span style="color: #3366CC;">")"</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// 404 or other cases</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.<span style="color: #006600;">log</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> Error<span style="color:#006600; font-weight:bold;">&#40;</span>xhr.<span style="color: #006600;">responseText</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">xhr.<span style="color: #006600;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">null</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>We have known about the great FirePHP for quite some time, but this is different as <a href="http://code.google.com/p/formaldehyde/wiki/FirePHP">explained. Check it out!</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/formaldehyde-php-debug-info-for-the-client-side/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using Base64 encoded images on IE too</title>
		<link>http://ajaxian.com/archives/using-base64-encoded-images-on-ie-too</link>
		<comments>http://ajaxian.com/archives/using-base64-encoded-images-on-ie-too#comments</comments>
		<pubDate>Wed, 22 Apr 2009 10:19:33 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[crossbrowser]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6635</guid>
		<description><![CDATA[Being able to use data: URIs to do interesting things such as inline images is incredibly useful. IE 8 added support for data URIs but what about older versions of IE (which are still far too prevalent)? This nice PHP script shows how you can send back data URIs for those who support it, and <a href="http://ajaxian.com/archives/using-base64-encoded-images-on-ie-too">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Being able to use <code>data:</code> URIs to do interesting things such as inline images is incredibly useful.</p>
<p>IE 8 added <a href="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&#038;ReleaseId=575">support for data URIs</a> but what about older versions of IE (which are still far too prevalent)?</p>
<p><a href="http://www.hedgerwow.com/360/dhtml/base64-image/demo.php">This nice PHP script</a> shows how you can send back data URIs for those who support it, and for older IE, use the message/rfc822 mime type that email clients often use to encode images:</p>
<div class="igBar"><a href="javascript:showCodeTxt('php-14');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">PHP:</span>
<div id="php-14">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/header"><span style="color:#000066;">header</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Content-type:message/rfc822'</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">MIME-Version: <span style="color:#800000;">1</span>.<span style="color:#800000;">0</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Content-Type: multipart/related; boundary=<span style="color:#FF0000;">"NEXT_MHTML_DATA_PART"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">--NEXT_MHTML_DATA_PART</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Content-Location: </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Content-Transfer-Encoding: quoted-printable</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Content-Type: text/html; charset=<span style="color:#FF0000;">"utf-8"</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;!-- put the HTML in here including a <span style="color:#616100;">for</span> loop displaying: --&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;div <span style="color:#000000; font-weight:bold;">class</span>=<span style="color:#FF0000;">"img"</span> style=<span style="color:#FF0000;">"background-image:url(MHTML_IMG&lt;?php echo $index?&gt;)"</span>&gt;&lt;/div&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">--NEXT_MHTML_DATA_PART</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Content-Location: MHTML_IMG&lt;?php <a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> <span style="color:#0000FF;">$index</span>?&gt; &lt;!-- <span style="color:#616100;">for</span> <a href="http://www.php.net/each"><span style="color:#000066;">each</span></a> index --&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600;">Content</span>-Transfer-Encoding: base64</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Content-Type: image/png</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;!-- the image data here --&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">--NEXT_MHTML_DATA_PART</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Content-Location: END_OF_MHTML_FILE</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Content-Transfer-Encoding: base64</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Content-Type: image/png</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">IE_NEED_THIS_TO_END_DATA</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>Very nice, via (<a href="http://twitter.com/simonw/">@simonw</a>) :)</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/using-base64-encoded-images-on-ie-too/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>FirePHP: Tying together Firebug and PHP</title>
		<link>http://ajaxian.com/archives/firephp-tying-together-firebug-and-php</link>
		<comments>http://ajaxian.com/archives/firephp-tying-together-firebug-and-php#comments</comments>
		<pubDate>Fri, 10 Apr 2009 09:28:09 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6520</guid>
		<description><![CDATA[FirePHP solves the problem of AJAX debugging by sending debug information along with the response. To avoid breaking the response content, the debug information is placed into special HTTP response headers. This works for all types of requests, not just AJAX requests, which means you can even debug requests for images that are dynamically generated <a href="http://ajaxian.com/archives/firephp-tying-together-firebug-and-php">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.christophdorn.com/wordpress/wp-content/uploads/2009/04/screenshot_1.png" style="float: right"/></p>
<blockquote><p>
FirePHP solves the problem of AJAX debugging by sending debug information along with the response. To avoid breaking the response content, the debug information is placed into special HTTP response headers. This works for all types of requests, not just AJAX requests, which means you can even debug requests for images that are dynamically generated by a PHP script. You can use FirePHP in your development environment, or use it to track down bugs that only appear on your production site.
</p></blockquote>
<p>This is what Christoph Dorn has to say about <a href="http://www.christophdorn.com/Blog/2009/04/03/how-to-integrate-firephp-for-ajax-development/">FirePHP in his recent writeup</a>.</p>
<p>He goes into detail on how you can setup the Firebug plugin, and how you use it from within PHP:</p>
<div class="igBar"><a href="javascript:showCodeTxt('php-16');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">PHP:</span>
<div id="php-16">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// use an ini file to turn it on and off</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$settings</span> = @<a href="http://www.php.net/parse_ini_file"><span style="color:#000066;">parse_ini_file</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'settings.ini'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$settings</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'FirePHP'</span><span style="color:#006600; font-weight:bold;">&#93;</span> == <span style="color:#FF0000;">'Enabled'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; FB::<span style="color:#006600;">setEnabled</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#000000; font-weight:bold;">true</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#616100;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; FB::<span style="color:#006600;">setEnabled</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#000000; font-weight:bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// log away!</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">FB::<a href="http://www.php.net/log"><span style="color:#000066;">log</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'This is a log message'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// selectively log</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>Debug::<span style="color:#006600;">getOption</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'DisableCache'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#FF9933; font-style:italic;">// code to disable cache</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; FB::<span style="color:#006600;">info</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Cache has been disabled!'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#616100;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#FF9933; font-style:italic;">// default code</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>Check out the article for more info.</p>
<p>In related news, Zend just stepped it up a notch with their <a href="http://www.zend.com/en/products/server/">new Zend Server</a> that fits in nicely with the cloud.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/firephp-tying-together-firebug-and-php/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Showing progress with the Safari 4 multiple file upload</title>
		<link>http://ajaxian.com/archives/showing-progress-with-the-safari-4-multiple-file-upload</link>
		<comments>http://ajaxian.com/archives/showing-progress-with-the-safari-4-multiple-file-upload#comments</comments>
		<pubDate>Wed, 11 Mar 2009 12:11:42 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6259</guid>
		<description><![CDATA[Andrea Giammarchi has taken the new Safari 4 implementation of multi input file upload functionality and has written an article on how to write the client and server to enable this. He shares the new XHR implementation: PLAIN TEXT JAVASCRIPT: &#160; var xhr = new XMLHttpRequest, &#160; &#160; upload = xhr.upload; upload.onload = function&#40;&#41;&#123; &#160; <a href="http://ajaxian.com/archives/showing-progress-with-the-safari-4-multiple-file-upload">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Andrea Giammarchi has taken the new Safari 4 implementation of <a href="http://ajaxian.com/archives/input-typefile-multiple-now-in-a-real-browser">multi input file upload functionality</a> and has written an article on <a href="http://webreflection.blogspot.com/2009/03/safari-4-multiple-upload-with-progress.html">how to write the client and server to enable this</a>.</p>
<p>He shares the new XHR implementation:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-18');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-18">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> xhr = <span style="color: #003366; font-weight: bold;">new</span> XMLHttpRequest,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; upload = xhr.<span style="color: #006600;">upload</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">upload.<span style="color: #006600;">onload</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; console.<span style="color: #006600;">log</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"Data fully sent"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">xhr.<span style="color: #006600;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"post"</span>, page, <span style="color: #003366; font-weight: bold;">true</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">xhr.<span style="color: #006600;">send</span><span style="color:#006600; font-weight:bold;">&#40;</span>binaryData<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>and the delves into a PHP server backend that groks things like <code>X-File-Size</code> and <code>X-File-Name</code>.</p>
<p>Then, he shows the client side code to push this all forward and packages it all up:</p>
<blockquote><p>
The external file with sendFile and sendMultipleFile function is in <a href="http://www.devpro.it/javascript_id_196.html">my repository</a> and in the <a href="http://www.3site.eu/jstests/upload/upload.zip">attached zip</a>, while a <a href="http://www.3site.eu/jstests/upload/">workable example page</a> with a limit of 1Mb for each file is here in my host.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/showing-progress-with-the-safari-4-multiple-file-upload/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Vista / OS X Mash-up Created with GWT on PHP</title>
		<link>http://ajaxian.com/archives/vista-os-x-mash-up-created-with-gwt-on-php</link>
		<comments>http://ajaxian.com/archives/vista-os-x-mash-up-created-with-gwt-on-php#comments</comments>
		<pubDate>Fri, 03 Oct 2008 15:51:35 +0000</pubDate>
		<dc:creator>Ben Galbraith</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Showcase]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4674</guid>
		<description><![CDATA[Here's an interesting link for a Friday. Viktor Zeman on Quality Unit sent us a link to "PostAffiliateXpress", some boring IT application with an interesting interface and an even more intriguing back-end. The UI combines a Vista-like "Start" menu along with an OS X-like dock (using everyone's favorite fish-eye widget). It also has a built-in <a href="http://ajaxian.com/archives/vista-os-x-mash-up-created-with-gwt-on-php">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Here's an interesting link for a Friday. Viktor Zeman on Quality Unit sent us a link to "<a href="http://samples.gwtphp.com/pax4/merchants/">PostAffiliateXpress</a>", some boring IT application with an interesting interface and an even more intriguing back-end.</p>
<p><a href="http://samples.gwtphp.com/pax4/merchants/"><img src="http://ajaxian.com/wp-content/uploads/sample.jpg" alt="" title="Vista / OS X Mash-up" width="470" height="320" class="alignnone size-full wp-image-4675" /></a></p>
<p>The UI combines a Vista-like "Start" menu along with an OS X-like dock (using everyone's favorite fish-eye widget). It also has a built-in widget system that leverages Google Widgets. Overall, it's a pretty nice implementation of a desktop and windowing in Ajax.</p>
<p>The framework itself is "<a href="http://www.gwtphp.com/">GwtPHP</a>" which attempts to take all the advantages of GWT and deploy them to PHP backends in an attempt to solve the problem of limited Java-friendly hosting services. Unfortunately, the framework isn't available for use until sometime in early November.</p>
<p><b>Dual-License</b></p>
<p>The developers intend to use the familiar "free for hobbyists, pay up for commercial use" licensing model (what their <a href="http://www.gwtphp.com/licensing/">licensing page</a> calls a "what for what" model).</p>
<p><b>Give some feedback</b></p>
<p>Viktor says that they are quite keen to <a href="http://www.gwtphp.com/contact-us/">get feedback</a> from folks on the project, so interested folks should get in touch, let them know what you think about the licensing model, and perhaps get early access, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/vista-os-x-mash-up-created-with-gwt-on-php/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Symfony Firebug Extension: Firesymfony</title>
		<link>http://ajaxian.com/archives/symfony-firebug-extension-firesymfony</link>
		<comments>http://ajaxian.com/archives/symfony-firebug-extension-firesymfony#comments</comments>
		<pubDate>Thu, 02 Oct 2008 15:58:51 +0000</pubDate>
		<dc:creator>Ben Galbraith</dc:creator>
				<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4659</guid>
		<description><![CDATA[Alvaro Videla just wrote in to tell us about Firesymfony, a Firebug extension that provides an alternative to Symfony's built-in web debug toolbar. sometimes the toolbar position makes impossible to use some features of the layout of our website, like a link menu on the top right corner. It also happens that while we display <a href="http://ajaxian.com/archives/symfony-firebug-extension-firesymfony">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/firesymfony.jpg" alt="" title="Firesymfony" width="470" height="181" class="alignnone size-full wp-image-4660" /></p>
<p>Alvaro Videla just wrote in to tell us about <a href="http://obvioushints.blogspot.com/2008/09/firesymfony.html">Firesymfony</a>, a Firebug extension that provides an alternative to Symfony's built-in web debug toolbar.</p>
<blockquote><p>
sometimes the toolbar position makes impossible to use some features of the layout of our website, like a link menu on the top right corner. It also happens that while we display a small popup with the resize functionality disabled it’s turns hard to access all the data displayed by the toolbar.</p>
<p>The solution I’ve came up with is to move all the data from the toolbar to Firebug, actually, to port the symfony web debug toolbar as a Firebug extension. This will remove the toolbar from the page html and will show it in a convenient place that almost every web developer is used to.</p>
<p>Taking advantage from the cool new features of symfony 1.2 I started a project to develop a symfony plugin to send the data to the Firebug extension. The later has been smartly called FireSymfony.
</p></blockquote>
<p>Alvaro has another <a href="http://obvioushints.blogspot.com/2008/10/firesymfony-first-release-is-out.html">blog post that talks more about the first release</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/symfony-firebug-extension-firesymfony/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.6: Dojo, SOAP, Testing, Tooling, and more</title>
		<link>http://ajaxian.com/archives/zend-framework-16-dojo-soap-testing-tooling-and-more</link>
		<comments>http://ajaxian.com/archives/zend-framework-16-dojo-soap-testing-tooling-and-more#comments</comments>
		<pubDate>Thu, 04 Sep 2008 14:23:51 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4344</guid>
		<description><![CDATA[Andi Gutmans announced Zend Framework 1.6 which includes the new Dojo support which they put to work on the site itself: With this release we continue to provide enterprise-grade features with our new Zend_Soap component, which brings PHP-style simplicity to building and exposing SOAP web services. This component can operate in both WSDL and non-WSDL <a href="http://ajaxian.com/archives/zend-framework-16-dojo-soap-testing-tooling-and-more">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Andi Gutmans <a href="http://andigutmans.blogspot.com/2008/09/zend-framework-16-featuring-dojo-soap.html">announced Zend Framework 1.6</a> which includes the new <a href="http://andigutmans.blogspot.com/2008/05/dojo-and-zend-framework-partnership.html">Dojo support</a> which they put to work on <a href="http://framework.zend.com/about/faq">the</a> <a href="http://framework.zend.com/community/partners">site itself</a>:</p>
<blockquote><p>
With this release we continue to provide enterprise-grade features with our new Zend_Soap component, which brings PHP-style simplicity to building and exposing SOAP web services.  This component can operate in both WSDL and non-WSDL mode and makes creating or consuming a SOAP service a snap.</p>
<p><em>Preview of Tooling Project:</em>  </p>
<p>Zend_Tool is a component currently under development in the Zend Framework library. It provides services for generating and managing ZF-based projects. We are offering a preview release along with ZF 1.6 to collect feedback from users in a variety of environments and with different requirements. Please let us know how Zend_Tool works for you by visiting the Zend_Tool focus group site at <a href="http://tech.groups.yahoo.com/group/zf-tool/">http://tech.groups.yahoo.com/group/zf-tool/</a>. We will also be posting an overview of Zend_Tool on the <a href="http://devzone.zend.com/">Zend Developer Zone</a> within the next 24 hours.</p>
<p><em>Lucene 2.3 Index File Format Support:</em></p>
<p>Starting with 1.6, ZF supports version 2.3 of Lucene's index file format. This update to the format allows segments to share a single set of doc store (vectors &amp; stored fields) files, which enables faster indexing in certain cases. This also makes Zend_Search_Lucene compatible with the latest version of the Lucene project.</p>
<p><em>Zend_Session save handler for Database Tables:</em></p>
<p>This is a database independent adapter for use with Zend_Session. Saving sessions in the database may be used for supporting sessions which must be maintained across multiple servers or kept for logging purposes.</p>
<p><em>Paginator Component:</em></p>
<p>Zend_Paginator is a new component for displaying large data sets in groups of 'pages' on a website. It can paginate data from virtually any source, and it fetches data lazily to maximize performance and minimize memory use when the data set is particularly large (as is often the case with data stored in a relational database). Zend_Paginator comes with a few data source adapters out of the box, along with an interface for implementing additional data source adapters.</p>
<p><em>Figlet Support:</em></p>
<p>Zend_Text_Figlet can create large ascii-character-based text given a figlet font and a string to render. Although they’ve been around for a long time, Figlets are most useful for captchas nowadays, especially when a lightweight solution is required and/or bandwidth is constrained. In fact, the new captcha form element includes an adapter for figlets.</p>
<p><em>ReCaptcha Service:</em></p>
<p>ReCaptcha is a very cool service that provides text-based captcha images. The answers submitted to ReCaptcha help digitize printed books. The new captcha form element also includes an adapter for the ReCaptcha service. Read more about ReCaptcha here: <a href="http://recaptcha.net/learnmore.html">http://recaptcha.net/learnmore.html</a>.</p>
<p><em>Captcha Form Element:</em></p>
<p>A form element to render and validate captchas, which are commonly used to ensure a human is submitting a form and not a (potentially malicious) bot. The captcha form element is backed by several adapters for different captcha mechanisms, including GD-based graphics, figlets, and the ReCaptcha service. Users can implement their own adapters;each adapter takes care of validation and decorators to ensure the form element looks and behaves correctly, regardless of the captcha mechanism used.</p>
<p><em>Zend_Config_Xml Attribute Support:</em></p>
<p>XML attribute support has been added to Zend_Config_Xml that allows ZF developers to write smaller XML documents that are more human-readable. This attribute support is already seeing a lot of adoption inthe Zend_Tool project.</p>
<p><em>Zend_File_Transfer Component:</em></p>
<p>This is a new component used for transferring files from one machine to another over multiple protocols. It currently supports HTTP, with an adapter interface that can be implemented to support additional protocols in the future. This component also supports validation on the transferred file.</p>
<p><em>File Upload Form Element:</em></p>
<p>This component completes the HTML form element support in Zend_Form. Files can be chosen by the user, validated for properties such as size, and uploaded to the server simply by adding a file upload form element to your forms. The element utilizes Zend_File_Transfer internally to validate the uploaded file and move it to its final destination.</p>
<p><em>Zend_Wildfire Component with FireBug Log Writer:</em></p>
<p>Zend_Wildfire is a new component supporting the Wildfire protocol: <a href="http://www.wildfirehq.org/">http://www.wildfirehq.org/</a>. This feature also adds a FireBug log writer to write server-side log events to a FireBug console. A specialized FireBug Zend_Db profiler is provided to log DB profiler data to the FireBug console, as well.</p>
<p><em>Media View Helpers (Flash, QuickTime, Object, and Page):</em></p>
<p>ZF 1.6 contains new view helpers for embedding Flash, QuickTime, Objects, and Pages in a view.</p>
<p><em>Zend_Translate adds the INI file format:</em></p>
<p>This addition adds to the long list of translation file formats it already supports.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/zend-framework-16-dojo-soap-testing-tooling-and-more/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Dojo and Zend Framework Integration Released</title>
		<link>http://ajaxian.com/archives/dojo-and-zend-framework-integratation-released</link>
		<comments>http://ajaxian.com/archives/dojo-and-zend-framework-integratation-released#comments</comments>
		<pubDate>Wed, 21 May 2008 15:01:10 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Dojo]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3670</guid>
		<description><![CDATA[The Zend Framework aims to be a top notch framework for building next generation Web applications in PHP. Dojo has similar aims on the front-end side, so they decided to join forces to provide an integration layer. If you like the combination you will have a better, tighter, way to build your applications. What we <a href="http://ajaxian.com/archives/dojo-and-zend-framework-integratation-released">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>The Zend Framework aims to be a top notch framework for building next generation Web applications in PHP. Dojo has similar aims on the front-end side, so they <a href="http://andigutmans.blogspot.com/2008/05/dojo-and-zend-framework-partnership.html">decided to join forces</a> to provide an integration layer. If you like the combination you will have a better, tighter, way to build your applications.</p>
<p>What we see in the initial release is:</p>
<ul>
<li>
<p>
        <b>JSON-RPC Server:</b> We are re-working the Zend_Json_Server that has<br />
        been in our incubator since, oh, what? 0.2.0? and never released to<br />
        actually follow a specification:<br />
        <a href="http://groups.google.com/group/json-rpc">JSON-RPC</a>. This<br />
        will allow it to work seamlessly with Dojo, as well as other toolkits<br />
        that have JSON-RPC client implementations. I have actually completed<br />
        work on this, though the proposal is waiting to be approved; if you want<br />
        to check it out, you can find it in the<br />
        <a href="http://framework.zend.com/svn/framework/branch/user/matthew/zed_json_server">ZF svn</a>.
        </p>
<p>
        The original Zend_Json_Server implementation will be abandoned. It was<br />
        never fully tested nor fully documented, which has prevented its<br />
        release. Additionally, since it implemented its own ad-hoc standard, it<br />
        did not provide the type of interoperability that a true JSON-RPC server<br />
        implementation will provide. I am excited that we will finally be able<br />
        to provide a standards-compliant solution for general availability.
        </p>
<p>
        One final note: there are currently two different JSON-RPC<br />
        specifications, 1.0 and 2.0. My goal is to support each, though for the<br />
        time being, only version 1.0 will be supported, as that is the version<br />
        Dojo currently targets.
    </p>
</li>
<li>
        <b>dojo() View Helper:</b> Enabling Dojo for a page is not typically as<br />
        trivial as just loading the <code>dojo.js</code> script -- you have a<br />
        choice of loading it from the AOL CDN or a local path, and also may want<br />
        or need to load additional dojo, dijit, or dojox modules, specify custom<br />
        modules and paths, specify code to run at <code>onLoad()</code>, and<br />
        specify stylesheets for decorating dijits. On top of this, this<br />
        information may change from page to page, and may only be needed for<br />
        a subset of pages. The <code>dojo()</code> view helper will act as a<br />
        <a href="http://framework.zend.com/manual/en/zend.view.helpers.html#zend.view.helpers.initial.placeholder">placeholder</a><br />
        implementation, and facilitate all of the above tasks, as well as take<br />
        care of rendering the necessary <code>style</code> and<br />
        <code>script</code> elements in your page.
    </li>
<li>
        <b>Form Element implementations:</b> One area that developers really<br />
        leverage javascript and ajax toolkits is forms. In particular, many<br />
        types of form input can benefit from advanced and rich user interfaces<br />
        that only javascript can provide: calendar choosers, time selectors,<br />
        etc. Additionally, many like to use client-side validation in order to<br />
        provide instantaneous validation feedback to users (instead of requiring<br />
        a round-trip to the server). We will be identifying a small group of<br />
        form elements that we feel solve the most relevant use cases, and write<br />
        Dojo-specific versions that can be utilized with <code>Zend_Form</code>.<br />
        (One thing to note: <code>Zend_Form</code>'s design already works very<br />
        well with Dojo, allowing many widgets and client-side validations to be<br />
        created by simply setting the appropriate element attributes.)
    </li>
<li>
        <b>dojo.data Compatibility:</b> <code>dojo.data</code> defines a<br />
        standard storage interface; services providing data in this format can<br />
        then be consumed by a variety of Dojo facilities to provide highly<br />
        flexible and dynamic content for your user interfaces. We will be<br />
        building a component that will create dojo.data compatible payloads with<br />
        which to respond to XmlHttpRequests; you will simply need to pass in the<br />
        data, and provide metadata regarding it.
    </li>
</ul>
<p>Of course, you can continue to any Ajax library in conjunction with the Zend Framework, and ditto for Dojo.... but why did this match happen?</p>
<blockquote><p>
There are many synergies and similarities between the two projects and their communities, including:</p>
<ul>
<li>Licensing and IP: Both projects are very business friendly.</li>
<li>Design affinity: Similar philosophies, including a strong emphasis on use-at-will architecture.</li>
<li>JSON format used strongly in both</li>
<li>Comprehensive Ajax Solution: Dojo has it all</li>
<li>Standards: "Dojo not only implements published standards, but also drives them"</li>
<li>Communities and support: Strong communities, with support offerings behind them</li>
</ul>
</blockquote>
<p>And, here is some code from a JSON-RPC demo:</p>
<div class="igBar"><a href="javascript:showCodeTxt('php-20');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">PHP:</span>
<div id="php-20">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;h2&gt;Dojo JSON-RPC Demo&lt;/h2&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&lt;input name=<span style="color:#FF0000;">"foo"</span> type=<span style="color:#FF0000;">"button"</span> value=<span style="color:#FF0000;">"Demo"</span> onClick=<span style="color:#FF0000;">"demoRpc()"</span>/&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?</span> </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">dojo</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>-&gt;<span style="color:#006600;">setLocalPath</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'/js/dojo/dojo.js'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt;<span style="color:#006600;">addStyleSheetModule</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'dijit.themes.tundra'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;-&gt;<span style="color:#006600;">requireModule</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'dojo.rpc.JsonService'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">headScript</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>-&gt;<span style="color:#006600;">captureStart</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color:#000000; font-weight:bold;">?&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">function</span> demoRpc<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">var</span> myObject = <span style="color:#000000; font-weight:bold;">new</span> dojo.rpc.JsonService<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'/json-rpc.php'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; console.log<span style="color:#006600; font-weight:bold;">&#40;</span>myObject.bar<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?</span> <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">headScript</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>-&gt;<span style="color:#006600;">captureEnd</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#000000; font-weight:bold;">?&gt;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/dojo-and-zend-framework-integratation-released/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>To ExtPHP, or to PHP-Ext?</title>
		<link>http://ajaxian.com/archives/to-extphp-or-to-php-ext</link>
		<comments>http://ajaxian.com/archives/to-extphp-or-to-php-ext#comments</comments>
		<pubDate>Thu, 06 Mar 2008 13:54:53 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sencha]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3412</guid>
		<description><![CDATA[I got emails on the same day from two developers letting me know about ExtJS wrappers for PHP. PHP-Ext First, Sergei Walter Guerra told me about PHP-Ext "an open source widget library written for PHP 4 and 5 to empower the UI Layer." The API looks like this: PLAIN TEXT PHP: &#160; echo Ext::onReady&#40; &#160; <a href="http://ajaxian.com/archives/to-extphp-or-to-php-ext">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>I got emails on the same day from two developers letting me know about ExtJS wrappers for PHP.</p>
<p><b>PHP-Ext</b></p>
<p>First, Sergei Walter Guerra told me about <a href="http://php-ext.quimera-solutions.com/">PHP-Ext</a> "an open source widget library written for PHP 4 and 5 to empower the UI Layer."</p>
<p>The API looks like this:</p>
<div class="igBar"><a href="javascript:showCodeTxt('php-23');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">PHP:</span>
<div id="php-23">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/echo"><span style="color:#000066;">echo</span></a> Ext::<span style="color:#006600;">onReady</span><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; Javascript::<span style="color:#006600;">stm</span><span style="color:#006600; font-weight:bold;">&#40;</span>ExtQuickTips::<span style="color:#006600;">init</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; Javascript::<span style="color:#006600;">assign</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">"data"</span>,Javascript::<span style="color:#006600;">valueToJavascript</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$myData</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">//Javascript::valueToJavascript($myData),</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$store</span>-&gt;<span style="color:#006600;">getJavascript</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#000000; font-weight:bold;">false</span>, <span style="color:#FF0000;">"ds"</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$italicRenderer</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$changeRenderer</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$pctChangeRenderer</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$colModel</span>-&gt;<span style="color:#006600;">getJavascript</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#000000; font-weight:bold;">false</span>, <span style="color:#FF0000;">"colModel"</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$gridForm</span>-&gt;<span style="color:#006600;">getJavascript</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#000000; font-weight:bold;">false</span>, <span style="color:#FF0000;">"gridForm"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$gridForm</span> = <span style="color:#000000; font-weight:bold;">new</span> ExtFormPanel<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">"company-form"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$gridForm</span>-&gt;<span style="color:#006600;">Frame</span> = <span style="color:#000000; font-weight:bold;">true</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$gridForm</span>-&gt;<span style="color:#006600;">LabelAlign</span> = EXT_FORM_LABEL_ALIGN_LEFT;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$gridForm</span>-&gt;<span style="color:#006600;">Title</span> = <span style="color:#FF0000;">"Company Data"</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$gridForm</span>-&gt;<span style="color:#006600;">BodyStyle</span> = <span style="color:#FF0000;">"padding: 5px;"</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$gridForm</span>-&gt;<span style="color:#006600;">Width</span> = <span style="color:#800000;">750</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$gridForm</span>-&gt;<span style="color:#006600;">Layout</span> = EXT_CONTAINER_LAYOUTS_COLUMN;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p><b>ExtPHP</b></p>
<p>Then Chris Ravenscroft came to me to announce <a href="http://nexus.zteo.com/2008/03/04/extphp-an-extjs-converterwrapper-for-php-developers/">ExtPHP</a>:</p>
<blockquote><p>
"It is something that I had to think about in my day job, because my team is migrating to PHP for web development and I believe that we simply do not have enough time for them to learn JavaScript's intricacies, I needed to be the one person who would have to wrestle JavaScript when problems happened. I therefore needed a way to insulate them from the gory details, which is why I created ExtPHP."
</p></blockquote>
<p>The API looks like this:</p>
<div class="igBar"><a href="javascript:showCodeTxt('php-24');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">PHP:</span>
<div id="php-24">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$cfg</span> = <span style="color:#000000; font-weight:bold;">new</span> Ext_Viewport_Config<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$viewport</span> = <span style="color:#000000; font-weight:bold;">new</span> Ext_Viewport<span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$cfg</span>-&gt;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600;">layout</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'border'</span><span style="color:#006600; font-weight:bold;">&#41;</span>-&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600;">items</span><span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$actionpanel</span>, <span style="color:#0000FF;">$tabpanel</span>-&gt;<span style="color:#006600;">name</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$viewport</span>-&gt;<span style="color:#006600;">jsrender</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$tabpanel</span>-&gt;<span style="color:#006600;">add</span><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'title'</span>=&gt;<span style="color:#FF0000;">'New Tab'</span>, <span style="color:#FF0000;">'iconCls'</span>=&gt;<span style="color:#FF0000;">'tabs'</span>, <span style="color:#FF0000;">'autoLoad'</span>=&gt;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'url'</span>=&gt;<span style="color:#FF0000;">'extphptest.php?content1'</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'closable'</span>=&gt;true</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">new</span> JsReady<span style="color:#006600; font-weight:bold;">&#40;</span>JsWriter::<span style="color:#006600;">get</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>Maybe you guys can join forces? :)</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/to-extphp-or-to-php-ext/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Every keystroke is a prisoner &#8211; a neat commenting trick</title>
		<link>http://ajaxian.com/archives/every-keystroke-is-a-prisoner-a-neat-commenting-trick</link>
		<comments>http://ajaxian.com/archives/every-keystroke-is-a-prisoner-a-neat-commenting-trick#comments</comments>
		<pubDate>Thu, 28 Feb 2008 08:57:58 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tip]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/every-keystroke-is-a-prisoner-a-neat-commenting-trick</guid>
		<description><![CDATA[My favourite kind of tutorial or trick are the ones that are very easy to do but make a lot of sense - you know the ones that make you slap your forehead and say "why didn't I do that before?". Dirk Ginader blogged about a commenting trick (in German) that is one of these. <a href="http://ajaxian.com/archives/every-keystroke-is-a-prisoner-a-neat-commenting-trick">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>My favourite kind of tutorial or trick are the ones that are very easy to do but make a lot of sense -  you know the ones that make you slap your forehead and say "why didn't I do that before?". </p>
<p>Dirk Ginader blogged about <a href="http://blog.ginader.de/">a commenting trick (in German)</a>  that is one of these. He rightly claims that when you develop, you will comment and uncomment a lot as you optimise and test your code. This means either inserting lines with comment and deleting those lines, adding and deleting the /* */ by hand or using a shortcut of your editor of choice (I loved Homesite for ctrl+shift+m). In any case, it means highlighting several lines to comment in or out.</p>
<p>If you however use the following syntax then you only need to delete one slash to comment and uncomment a section:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-29');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-29">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">foo<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">/*</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">bar();</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">baz.foo = 200;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">return{</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">&nbsp; dolly:clone()</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">}</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// */</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>The trick is the // before the closing */. With this you can just add another slash before the opening one and uncomment the block this way.</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-30');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-30">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">foo<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">//*</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">bar<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">baz.<span style="color: #006600;">foo</span> = <span style="color:#800000;">200</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066; font-weight: bold;">return</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; dolly:clone<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// */</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>This works in many languages, alas not in CSS as there is no single line comment. </p>
<p>Update: in CSS you can just delete and add and remove an asterisk:</p>
<div class="igBar"><a href="javascript:showCodeTxt('css-31');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CSS:</span>
<div id="css-31">
<div class="css">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"> </li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">.test<span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; border<span style="color: #3333ff;">:1px </span>solid <span style="color: #993333;">red</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/*/</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">&nbsp; &nbsp; background-color:blue;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #808080; font-style: italic;">&nbsp; &nbsp; /**/</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">margin</span>:1em;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<div class="igBar"><a href="javascript:showCodeTxt('css-32');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CSS:</span>
<div id="css-32">
<div class="css">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;"> </li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">.test<span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; border<span style="color: #3333ff;">:1px </span>solid <span style="color: #993333;">red</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/**/</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">background-color</span>:<span style="color: #000000; font-weight: bold;">blue</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #808080; font-style: italic;">/**/</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">margin</span>:1em;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/every-keystroke-is-a-prisoner-a-neat-commenting-trick/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>HTML Purifier 3.0</title>
		<link>http://ajaxian.com/archives/html-purifier-30</link>
		<comments>http://ajaxian.com/archives/html-purifier-30#comments</comments>
		<pubDate>Mon, 14 Jan 2008 11:08:08 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=3206</guid>
		<description><![CDATA[HTML Purifier 3.0 has been released. What is HTML Purifier? HTML Purifier is a standards-compliant HTML filter library written in PHP. HTML Purifier will not only remove all malicious code (better known as XSS) with a thoroughly audited, secure yet permissive whitelist, it will also make sure your documents are standards compliant, something only achievable <a href="http://ajaxian.com/archives/html-purifier-30">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://htmlpurifier.org/news.html#news-3.0.0-released">HTML Purifier 3.0 has been released.</a></p>
<p><b>What is HTML Purifier?</b></p>
<p>HTML Purifier is a standards-compliant HTML filter library written in PHP. HTML Purifier will not only remove all malicious code (better known as XSS) with a thoroughly audited, secure yet permissive whitelist, it will also make sure your documents are standards compliant, something only achievable with a comprehensive knowledge of W3C's specifications.</p>
<p><b>What's new in 3.0?</b></p>
<blockquote>
<p xmlns="http://www.w3.org/1999/xhtml" class="lead">
      Release 3.0.0 is the first release of 2008 and also HTML Purifier's first<br />
      <a href="http://gophp5.org/" shape="rect">PHP 5 only</a> release.<br />
      The 2.1 series will still<br />
      <a href="http://htmlpurifier.org/download.html#PHP4" shape="rect">be supported for bug and security fixes,</a><br />
      but will not get new features. This release a number of<br />
      improvements in <abbr title="Cascading Style Sheets">CSS</abbr> handling, including the filter<br />
      <code>HTMLPurifier_Filter_ExtractStyleBlocks</code> which integrates<br />
      HTML Purifier with<br />
      <a href="http://csstidy.sourceforge.net/" shape="rect">CSSTidy</a> for cleaning style sheets<br />
      (see the source code file for more information on usage), contains<br />
      experimental support for<br />
      proprietary <abbr title="Cascading Style Sheets">CSS</abbr> properties with %CSS.Proprietary, case-insensitive<br />
      <abbr title="Cascading Style Sheets">CSS</abbr> properties, and more lenient hexadecimal color codes. Also, all code<br />
      has been upgraded to full <abbr title="PHP: HyperText Preprocessor">PHP</abbr> 5 and is<br />
      <code>E_STRICT</code> clean for all versions of PHP 5 (including the<br />
      5.0 series, which previously had parse-time errors).
    </p>
</blockquote>
<p>You can run a <a href="http://htmlpurifier.org/demo.php">live demo</a> to see it at work.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/html-purifier-30/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Simplicity: PHP Ajax Framework using Ext</title>
		<link>http://ajaxian.com/archives/simplicity-php-ajax-framework-using-ext</link>
		<comments>http://ajaxian.com/archives/simplicity-php-ajax-framework-using-ext#comments</comments>
		<pubDate>Thu, 10 Jan 2008 16:59:25 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/simplicity-php-ajax-framework-using-ext</guid>
		<description><![CDATA[John Le Drew has been working on a PHP framework for a few years, and has now packaged it as Simplicity: The Simplicity PHP Application Framework is an advanced, scalable and extensible PHP application framework to aid developers in creating high traffic, high availability Web 2.0 online applications. Integrating a solid MVC framework with some <a href="http://ajaxian.com/archives/simplicity-php-ajax-framework-using-ext">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>John Le Drew has been working on a PHP framework for a few years, and has now packaged it as <a href="http://www.antz29.com/">Simplicity</a>:</p>
<blockquote><p>
The Simplicity PHP Application Framework is an advanced, scalable and extensible PHP application framework to aid developers in creating high traffic, high availability Web 2.0 online applications. Integrating a solid MVC framework with some of the best Open Source projects around Simplicity aims to assist developers with any amount of experience in taking their applications to a new level.
</p></blockquote>
<p>You can get to the code on the <a href="https://launchpad.net/simplicity/">launchpad for the framework</a>.</p>
<p>One important piece is the Ajax admin console, developed in Ext that allows a developer will be able to configure all aspects of their application via the Ajax interface, this includes database modeling and the creation of stub controllers, and even the addition of predefined actions to speed up development.</p>
<p><a href="http://www.antz29.com/"><img src="http://ajaxian.com/wp-content/images/simplicity.png" alt="Simplicity" border="0" width="530" height="408"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/simplicity-php-ajax-framework-using-ext/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Google Gears for Offline Data Entry</title>
		<link>http://ajaxian.com/archives/google-gears-for-offline-data-entry</link>
		<comments>http://ajaxian.com/archives/google-gears-for-offline-data-entry#comments</comments>
		<pubDate>Fri, 20 Jul 2007 05:01:18 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Gears]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Prototype]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=2595</guid>
		<description><![CDATA[Jack Herrington has written his second article in his series on Gears. The article goes into detail on creating a form based data entry application that works offline. This means that entries are batched up, so when the user goes online they can be sync'd up. The forms are sent using Prototype and Ajax.Updater. Jack <a href="http://ajaxian.com/archives/google-gears-for-offline-data-entry">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Jack Herrington has <a href="http://www.onlamp.com/pub/a/onlamp/2007/07/12/the-power-of-google-gears-part-2.html?page=1">written his second article in his series on Gears</a>.</p>
<p>The article goes into detail on creating a form based data entry application that works offline. This means that entries are batched up, so when the user goes online they can be sync'd up. The forms are sent using Prototype and <code>Ajax.Updater</code>.</p>
<p>Jack iterates on the data model, going from a simple blog, to separate content.</p>
<blockquote><p>
<b>Conclusion</b></p>
<p>For years now, web applications have been stuck at the 90 percent solution mark. Web applications are incredibly easy to develop, but fail utterly when the customer isn't connected to the Web. On the day Google Gears was released, I knew that this status quo had instantly changed. Just as the addition of Ajax functionality to the browser was the one small step that added rich interactivity, this small step of Gears solves one of the few remaining problems of web development. What a powerful tool indeed!
</p></blockquote>
<p><a href="http://www.onlamp.com/pub/a/onlamp/2007/07/12/the-power-of-google-gears-part-2.html?page=1"><img src="http://www.onlamp.com/onlamp/2007/07/12/graphics/image007.jpg" border="0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/google-gears-for-offline-data-entry/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>J4P5: JavaScript interpreter written in PHP 5</title>
		<link>http://ajaxian.com/archives/j4p5-javascript-interpreter-written-in-php-5</link>
		<comments>http://ajaxian.com/archives/j4p5-javascript-interpreter-written-in-php-5#comments</comments>
		<pubDate>Fri, 13 Jul 2007 07:23:33 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/archives/j4p5-javascript-interpreter-written-in-php-5</guid>
		<description><![CDATA[I haven't seen many languages implemented in PHP. J4P5 "is a JavaScript interpreter written in PHP 5, that allows to run untrusted scripts in a sandbox on your server. It aims to implement most of Ecma-262 3d edition." J4P5 uses a modified version of the CFG parser of the MetaPHP project, and is licensed under <a href="http://ajaxian.com/archives/j4p5-javascript-interpreter-written-in-php-5">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>I haven't seen many languages implemented in PHP. <a href="http://j4p5.sourceforge.net/">J4P5</a> "is a JavaScript interpreter written in PHP 5, that allows to run untrusted scripts in a sandbox on your server. It aims to implement most of Ecma-262 3d edition."</p>
<blockquote><p>
J4P5 uses a modified version of the CFG parser of the <a href="http://metaphp.sf.net/">MetaPHP project</a>, and is licensed under the <a href="http://www.gnu.org/copyleft/gpl.html">GPL</a></p>
<p>This project is new. The current version already exposes most of the features commonly associated with JavaScript, such as objects, prototypes, closures.</p>
<p>Notable caveats of this version (aka "the TODO list"):</p>
<ul>
<li> No support for unicode strings
</li>
<li> No support for regular expressions
</li>
<li> Semi-colons at the end of statements are not optional
</li>
<li> Most of the pre-defined objects/methods have not been tested
</li>
<li> The speed is definitely slower than PHP. It's getting better though.
</li>
</ul>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/j4p5-javascript-interpreter-written-in-php-5/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>plainTemplate &amp; phpQuery</title>
		<link>http://ajaxian.com/archives/plaintemplate-phpquery</link>
		<comments>http://ajaxian.com/archives/plaintemplate-phpquery#comments</comments>
		<pubDate>Mon, 18 Jun 2007 12:35:40 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=2495</guid>
		<description><![CDATA[plainTemplate is a new library that aims to separate out an HTML template from design and coding, thanks to selectors. The designer works by simply using HTML in any way they wish, and then the programmer: Write selectors based on HTML structure Pass those selectors and Controller data to plainTemplate plainTemplate parses template, removing designer's <a href="http://ajaxian.com/archives/plaintemplate-phpquery">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://wiadomosc.info/plainTemplate/">plainTemplate</a> is a new library that aims to separate out an HTML template from design and coding, thanks to selectors.</p>
<p>The designer works by simply using HTML in any way they wish, and then the programmer:</p>
<ul>
<li>Write selectors based on HTML structure</li>
<li>Pass those selectors and Controller data to plainTemplate</li>
<li>plainTemplate parses template, removing designer's example data</li>
<li>If there is a need, you can manually write template proccessing rules with phpQuery - a jQuery port to PHP</li>
<li>Everything caches to pure, human-readable PHP file, similar to that one written with no template engine</li>
<li>From one HTML file You can build several templates</li>
<li>Once the Designer updates the file, the cached template updates itself transparently </li>
</ul>
<p>phpQuery is a port of jQuery that let's you do things like this:</p>
<div class="igBar"><a href="javascript:showCodeTxt('php-34');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">PHP:</span>
<div id="php-34">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">_<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'body div.myClass.myClass2 ul&gt; li:first'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; -&gt;<span style="color:#006600;">parent</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt;<span style="color:#006600;">prepend</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'&lt;li&gt;my new first LI&lt;/li&gt;'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt;<span style="color:#006600;">parents</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'.myClass'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt;<span style="color:#006600;">remove</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt;<span style="color:#006600;">end</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -&gt;<span style="color:#006600;">appendTo</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'body'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p><a href="http://wiadomosc.info/plainTemplate/plainTemplate-0.1-alpha.zip">Download plainTemplate</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/plaintemplate-phpquery/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

