<?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>Xavier Perez Blog</title>
	<atom:link href="http://www.4amics.com/x.perez/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.4amics.com/x.perez</link>
	<description>LAMP blog for PHP&#38;MySQL developers</description>
	<lastBuildDate>Wed, 26 Jan 2011 15:56:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Convention over configuration</title>
		<link>http://www.4amics.com/x.perez/2011/01/convention-over-configuration/</link>
		<comments>http://www.4amics.com/x.perez/2011/01/convention-over-configuration/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 15:39:53 +0000</pubDate>
		<dc:creator>Xavier Perez</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://www.4amics.com/x.perez/?p=141</guid>
		<description><![CDATA[Ok, we are sure that convention over configuration it&#8217;s the best practice to reduce time, gaining simplicity, and increasing its readibility. But, what moore ? I have been working with ORM&#8217;s that offers simplicity and also scalability, giving a lot of tools and making easy a complex queries. But&#8230; I need more&#8230; Why I must [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, we are sure that convention over configuration it&#8217;s the best practice to reduce time, gaining simplicity, and increasing its readibility.</p>
<p>But, what moore ?</p>
<p>I have been working with ORM&#8217;s that offers simplicity and also scalability, giving a lot of tools and making easy a complex queries. But&#8230; I need more&#8230;</p>
<p>Why I must to tell the ORM all the tables I use ?</p>
<p>Why I must to tell the ORM any table/column changes made ?</p>
<p>Why I must to tell the ORM that a column named &#8216;email&#8217; must to be processed as an email, valitated as an email and is a required field ?</p>
<p>Why I must to tell the ORM how to set/get values ?</p>
<p>Why I must to tell the ORM how to get/set a double number, a phone number (varchar), a zip code, a password, a boolean, etc.. etc&#8230; etc&#8230;</p>
<p>I think that convention must to take care over this, convention must to be the most ussed and most common uses, convention must to be more conventional, leaving the definition any other no conventional matter.</p>
<p>Let&#8217;s see an example:</p>
<p>Table Users:</p>
<p>`id` int(11) NOT NULL AUTO_INCREMENT,<br />
`pai_id` int(11) DEFAULT &#8217;34&#8242;,<br />
`ent_id` int(11) DEFAULT NULL,<br />
`name` varchar(32) DEFAULT NULL,<br />
`surname` varchar(32) DEFAULT NULL,<br />
`email` varchar(50) DEFAULT NULL,<br />
`telephone` varchar(20) DEFAULT NULL,<br />
`telephone2` varchar(20) DEFAULT NULL,<br />
`address` varchar(50) DEFAULT NULL,<br />
`postal_code` varchar(6) DEFAULT NULL,<br />
`prv_id` int(11) DEFAULT NULL,<br />
`pob_id` int(11) DEFAULT NULL</p>
<p>By default, any field end by ???_id will be a foreing key.<br />
By default, any field as &#8216;%email%&#8217; will be managed as &#8216;email&#8217; rules.<br />
By default, any field as &#8216;%telephone% will be managed as &#8216;phone number&#8217; rules.<br />
By default, any field as &#8216;%postal_code% will be managed as &#8216;postal code&#8217; rules.</p>
<p>Only special fields, as &#8216;international_postal_code&#8217; could be different as normal &#8216;postal code&#8217;. International postal code can have any prefix (2 code language, 3 code language, 2/3 code internation call, etc), adn will the only field that you must to configure to tell that this must NOT to be as supposed.</p>
<p>Continue next week&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.4amics.com/x.perez/2011/01/convention-over-configuration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Basic SEO guidelines</title>
		<link>http://www.4amics.com/x.perez/2010/10/basic-seo-guidelines/</link>
		<comments>http://www.4amics.com/x.perez/2010/10/basic-seo-guidelines/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 07:33:19 +0000</pubDate>
		<dc:creator>Xavier Perez</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Optimization]]></category>

		<guid isPermaLink="false">http://www.4amics.com/x.perez/?p=135</guid>
		<description><![CDATA[1. The internal optimization refers to factors that you can control in your website: * The text on your website. * The number of web pages on your website. * The number of keywords and related keywords in their web pages. * The links on your web pages to other pages on your site. * [...]]]></description>
			<content:encoded><![CDATA[<p>1. The internal optimization refers to factors that you can control in your website:</p>
<p>* The text on your website.<br />
* The number of web pages on your website.<br />
* The number of keywords and related keywords in their web pages.<br />
* The links on your web pages to other pages on your site.<br />
* The links on its website to other websites.<br />
* The structure of your website.<br />
* The robots.txt file on your site.<br />
* The HTML code of your web pages.</p>
<p>2. External optimization. The most important external factor are the links to your site:</p>
<p>* The number of backlinks pointing to your website.<br />
* The quality of the backlinks pointing to your website.<br />
* How often your site is marked on the social bookmarking sites.<br />
* How often your site is mentioned on services like Twitter.</p>
<p>Search  engines determine the position of your web site search results based on  internal and the external factors of your website.</p>
<p>The internal factors that you can do when writing contents, are specified in the 10 basic SEO rules:</p>
<p>1. The web page title should be precise and unique, not more than 50 characters.</p>
<p>2. The contents of a web page must have at least 1 time choice of words in the title, and must be marked with the H1 tag.</p>
<p>3. The  internal description of the page (meta description), must &#8220;explain  better the title, containing the keywords of the most important  text of your page contents.</p>
<p>4. Each web page must have no more than 100 links (internal external)</p>
<p>5. All  pages of the site should have a clear link to its predecessor (breadcrumb type) so that search engines can develop a web site tree.</p>
<p>6. The  contents of a web page must have at least 4 or 5 keywords highlighted  (in bold), referring to the title and header description. Other needed bold less important words must to be highlighted with strong or css.</p>
<p>7. Avoid  loading javascripts at the beginning of the code, and if it&#8217;s possible,  place the most important and prominent text as close to the tag  &#8216;&lt;body&gt;&#8217;.</p>
<p>8. Make a sitemap.xml and upload it to google webmaster tools, monitoring weekly for indexing and guidelines to follow.</p>
<p>9. Have a monitoring program SEO (type WebCEO) to assess weekly chart of inclusion and exclusion of pages in search engines</p>
<p>10. SEO  rules are changing, you should keep in mind that search engines change  their rules, internet changes, and must go including the internal tools  and / or external power users use (facebook, twitter, etc)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.4amics.com/x.perez/2010/10/basic-seo-guidelines/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Language improvements Codeigniter</title>
		<link>http://www.4amics.com/x.perez/2010/09/language-improvements-codeigniter/</link>
		<comments>http://www.4amics.com/x.perez/2010/09/language-improvements-codeigniter/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 07:38:58 +0000</pubDate>
		<dc:creator>Xavier Perez</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.4amics.com/x.perez/?p=132</guid>
		<description><![CDATA[The language library in Codeigniter is very simple, and doesn&#8217;t  support variable substitution, only partial or complete phrases. For this reason, I have made minor changes to allow the variable substitution, thus it&#8217;s not the same espelling in different idiomas. For example: To show a price, every country have it&#8217;s own format, sometimes sig are [...]]]></description>
			<content:encoded><![CDATA[<p>The language library in Codeigniter is very simple, and doesn&#8217;t  support variable substitution, only partial or complete phrases.</p>
<p>For this reason, I have made minor changes to allow the variable substitution, thus it&#8217;s not the same espelling in different idiomas.</p>
<p><span id="more-132"></span>For example:</p>
<p>To show a price, every country have it&#8217;s own format, sometimes sig are before, sometimes after the number ( float or integer). My language helper solves it.</p>
<p>In your language/english directory, you will have your language file with this:</p>
<blockquote><p>$lang[‘product_price’]        = ‘$ %6.0d’;</p></blockquote>
<p>In your language/spanish directory, you will have your kanguage file with this:</p>
<blockquote><p>$lang[‘price’]        = ‘%6.2f €’;</p></blockquote>
<p>Herem the language_helper.php file (must to be create with this name and in the helper appliation/directory):</p>
<blockquote><p>&lt;?php  if (!defined(&#8216;BASEPATH&#8217;)) exit(&#8216;No direct script access allowed&#8217;);<br />
/**<br />
* CodeIgniter<br />
*<br />
* An open source application development framework for PHP 4.3.2 or newer<br />
*<br />
* @package        CodeIgniter<br />
* @author        ExpressionEngine Dev Team<br />
* @copyright    Copyright (c) 2008 &#8211; 2010, EllisLab, Inc.<br />
* @license        http://codeigniter.com/user_guide/license.html<br />
* @link        http://codeigniter.com<br />
* @since        Version 1.0<br />
* @filesource<br />
*/</p>
<p>// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>/**<br />
* CodeIgniter Language Helpers<br />
*<br />
* @package        CodeIgniter<br />
* @subpackage    Helpers<br />
* @category    Helpers<br />
* @author        ExpressionEngine Dev Team<br />
* @link        http://codeigniter.com/user_guide/helpers/language_helper.html<br />
*/</p>
<p>// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>/**<br />
* Lang<br />
*<br />
* Fetches a language variable and optionally outputs a form label<br />
*<br />
* @access    public<br />
* @param    string    the language line<br />
* @param    string    the id of the form element<br />
* @return    string<br />
*/<br />
if ( ! function_exists(&#8216;lang&#8217;))<br />
{<br />
function lang($line, $id = &#8221;)<br />
{<br />
$CI =&amp; get_instance();<br />
$line = $CI-&gt;lang-&gt;line($line);</p>
<p>if ($id != &#8221;)<br />
{<br />
$line = &#8216;&lt;label for=&#8221;&#8216;.$id.&#8217;&#8221;&gt;&#8217;.$line.&#8221;&lt;/label&gt;&#8221;;<br />
}</p>
<p>return $line;<br />
}<br />
}</p>
<p>/**<br />
* SLang<br />
*<br />
* Fetches a language variable, optional substitution vars and optionally outputs a form label<br />
*<br />
* @author    Xavier Pérez<br />
* @version    1.0.1<br />
* @access    public<br />
* @param    string    the language line<br />
* @param    mixed    the substitution values (varchar, integer, or array)<br />
* @param    string    the id of the form element<br />
* @return    string<br />
*/</p>
<p>if ( ! function_exists(&#8216;slang&#8217;))<br />
{<br />
function slang($line, $values=&#8221;, $id = &#8221;)<br />
{<br />
$CI =&amp; get_instance();<br />
$line = $CI-&gt;lang-&gt;line($line);</p>
<p>if (is_array($values) &amp;&amp; count($values) &gt; 0)<br />
$line = vsprintf($line,$values);</p>
<p>if (!is_array($values) &amp;&amp; $values != &#8220;&#8221;)<br />
$line = sprintf($line,$values);</p>
<p>if ($id != &#8221;)<br />
{<br />
$line = &#8216;&lt;label for=&#8221;&#8216;.$id.&#8217;&#8221;&gt;&#8217;.$line.&#8221;&lt;/label&gt;&#8221;;<br />
}</p>
<p>return $line;<br />
}<br />
}</p>
<p>// &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
/* End of file language_helper.php */<br />
/* Location: ./system/helpers/language_helper.php */</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.4amics.com/x.perez/2010/09/language-improvements-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data registry class improvements</title>
		<link>http://www.4amics.com/x.perez/2010/09/data-registry-class-improvements-2/</link>
		<comments>http://www.4amics.com/x.perez/2010/09/data-registry-class-improvements-2/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 06:58:42 +0000</pubDate>
		<dc:creator>Xavier Perez</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.4amics.com/x.perez/?p=130</guid>
		<description><![CDATA[More improvements has been added to this class: Instead of saving data in your session to be retrieved anywhere, I have developed my own registry class (similar to Zend Registry), with more functionalities. Support for namespaces Support for persistent namespaces (any data can be collected in any other page during customer navigation) Support as caching [...]]]></description>
			<content:encoded><![CDATA[<p>More improvements has been added to this class:</p>
<div>
<p>Instead of saving data in your session to be  retrieved anywhere, I have developed my own registry class (similar to  Zend Registry), with more functionalities.</p>
<p>Support for namespaces<br />
Support for persistent namespaces (any data can be collected in any other page during customer navigation)<br />
Support as caching system<br />
Support for saving in session or files<br />
Support for any kind of data (var/array/object/class)<br />
Support flashData (save once, retrieve once)<br />
Support for data compression<br />
Support for data encryption<br />
Support for automatic data deletion on TTL</p>
<p>See demo on : <a href="../../libraries/data_registry/Data_Registry_Examples.php">http://www.4amics.com/libraries/data_registry/Data_Registry_Examples.php</a></p>
<p>Download:  <a href="http://code.google.com/p/data-registry/">DataRegistry</a></p>
<p>To integrate in Codeiginiter, put Data_Registry.php in your libraries folder, and start to work with it anywhere !!<br />
I will apreciate any suggestion or changes needed !!</p>
<p>Thanks.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.4amics.com/x.perez/2010/09/data-registry-class-improvements-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Registry class improvements</title>
		<link>http://www.4amics.com/x.perez/2010/07/data-registry-class-improvements/</link>
		<comments>http://www.4amics.com/x.perez/2010/07/data-registry-class-improvements/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 08:48:07 +0000</pubDate>
		<dc:creator>Xavier Perez</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Tracing & Debuggin]]></category>

		<guid isPermaLink="false">http://www.4amics.com/x.perez/?p=124</guid>
		<description><![CDATA[Data Registry have been improved to handle files, as a normal file storage, as a caching system or as a repository space. Now, in examples, all storage vars are saved in files, with TTL. Any class of var can be saved for every user session, but also Data_Registry can save files for all users, not [...]]]></description>
			<content:encoded><![CDATA[<p>Data Registry have been improved to handle files, as a normal file storage, as a caching system or as a repository space.</p>
<p>Now, in examples, all storage vars are saved in files, with TTL.</p>
<p>Any class of var can be saved for every user session, but also Data_Registry can save files for all users, not only restricted to every user. Allows to save config files, language translations, core data, mysql results&#8230;</p>
<p>Take a look: http://www.4amics.com/libraries/data_registry/Data_Registry_Examples.php</p>
<p>Download:  http://code.google.com/p/data-registry/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.4amics.com/x.perez/2010/07/data-registry-class-improvements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Data_Registry Class</title>
		<link>http://www.4amics.com/x.perez/2010/06/new-datastorage-class/</link>
		<comments>http://www.4amics.com/x.perez/2010/06/new-datastorage-class/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 16:38:09 +0000</pubDate>
		<dc:creator>Xavier Perez</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Tracing & Debuggin]]></category>

		<guid isPermaLink="false">http://www.4amics.com/x.perez/?p=118</guid>
		<description><![CDATA[I have developed a new class to save any kind of data in a php program, and retrieve it in any other php script. The Data_registry class is a singleton class, and all data can have persistence saved in the session files (DB, memcache also). It&#8217;s an great improvement over Zend_Registry class, duo to it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I have developed a new class to save any kind of data in a php program, and retrieve it in any other php script.</p>
<p>The Data_registry class is a singleton class, and all data can have persistence saved in the session files (DB, memcache also). It&#8217;s an great improvement over Zend_Registry class, duo to it&#8217;s better capabilities.</p>
<p>This can help in debugging, tracing code, retrieving errors after page crash (if the error is stored persistent, you can get it in any other page meanwhile you don&#8217;t close your browser).</p>
<p>The class can store any class, can create a new class and make it available in any other script, also can have persistence !!</p>
<p>Take a look at google code: <a title="DataStorage Class Download" href="http://code.google.com/p/data-registry/" target="_blank">http://code.google.com/p/data-registry/</a></p>
<p>Or try it in a simple demo: <a title="Data Registry Demo" href="http://www.4amics.com/libraries/data_registry/Data_Registry_Examples.php">http://www.4amics.com/libraries/data_registry/Data_Registry_Examples.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.4amics.com/x.perez/2010/06/new-datastorage-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codeginiter profiler with FirePHP</title>
		<link>http://www.4amics.com/x.perez/2010/03/codeginiter-profiler-with-firephp/</link>
		<comments>http://www.4amics.com/x.perez/2010/03/codeginiter-profiler-with-firephp/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 16:36:26 +0000</pubDate>
		<dc:creator>Xavier Perez</dc:creator>
				<category><![CDATA[Codeigniter]]></category>
		<category><![CDATA[Tracing & Debuggin]]></category>
		<category><![CDATA[Codeigniter development]]></category>
		<category><![CDATA[PHP Development]]></category>

		<guid isPermaLink="false">http://www.4amics.com/x.perez/?p=91</guid>
		<description><![CDATA[I have added to my own Profiler the hability to display results on Firebug. I have two form of display data: firebar or window.  Window display data on a div over the code, allowing to read enterilly all the page, meanehilr firebar display data on the firebug console (must to have instaled firephp ) &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; Window [...]]]></description>
			<content:encoded><![CDATA[<p>I have added to my own Profiler the hability to display results on Firebug. I have two form of display data: firebar or window.  Window display data on a div over the code, allowing to read enterilly all the page, meanehilr firebar display data on the firebug console (must to have instaled firephp )</p>
<p><span id="more-91"></span></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>Window display data on a div over the code, allowing to read enterilly all the page</p>
<p><a href="http://www.4amics.com/x.perez/wp-content/uploads/2010/03/EasyCapture21.jpg"><img class="aligncenter size-large wp-image-94" title="EasyCapture2" src="http://www.4amics.com/x.perez/wp-content/uploads/2010/03/EasyCapture21-1024x191.jpg" alt="" width="499" height="88" /></a></p>
<p>Firebar display data on the firebug console (must to have instaled firephp ) See : <a href="http://addons.mozilla.org/en-US/firefox/addon/6149" target="_blank">http://addons.mozilla.org/en-US/firefox/addon/6149</a></p>
<p style="text-align: center;"><a href="http://www.4amics.com/x.perez/wp-content/uploads/2010/03/EasyCapture11.jpg"><img class="aligncenter size-medium wp-image-101" title="EasyCapture1" src="http://www.4amics.com/x.perez/wp-content/uploads/2010/03/EasyCapture11-300x92.jpg" alt="" width="300" height="92" /></a></p>
<p style="text-align: center;">
<p>To install MY_Profiler:</p>
<p><span style="color: #993300;">Download FirePHPCore : <a href="http://www.firephp.org/HQ/Install.htm" target="_blank">http://www.firephp.org/HQ/Install.htm</a></span></p>
<p><span style="color: #993300;"><strong><span style="text-decoration: underline;">PLUGIN INSTALL</span></strong><br />
</span></p>
<p><span style="color: #993300;">Unpack and copy FirePHPCore directory under your application/plugin directory</span></p>
<p><span style="color: #993300;">Create a file under application/plugin directory as:  firephp_pi.php with this content:<br />
</span></p>
<blockquote><p><span style="color: #993300;">&lt;?php<br />
$Base_pathinfo = pathinfo(__FILE__);<br />
include $Base_pathinfo['dirname'].DIRECTORY_SEPARATOR.&#8221;FirePHPCore&#8221;.DIRECTORY_SEPARATOR.&#8221;fb.php&#8221;;</span></p></blockquote>
<p>Change your autoload.php file (in config folder), to load firePHP:</p>
<blockquote><p><span style="color: #993300;">$autoload['plugin'] = array(&#8216;FirePHP&#8217;);</span></p></blockquote>
<p><span style="color: #993300;"><strong><span style="text-decoration: underline;">LIBRARY INSTALL</span></strong></span></p>
<p><span style="color: #993300;">Unpack and copy FirePHPCore directory under your application/libraries directory</span></p>
<p><span style="color: #993300;">If you install as library, remember to add this line to the MY_profile.php before firePHP call:</span></p>
<blockquote><p><span style="color: #993300;"><code>$this-&gt;load-&gt;library('firephp');</code></span></p></blockquote>
<p><span style="color: #993300;">This method allows to load firephp library only when you want, or when IP detected, or&#8230; your choice.<br />
</span></p>
<p><strong>NEXT STEEP:</strong></p>
<p>Add a config line to your config.php file:</p>
<blockquote><p><span style="color: #993300;">$config['firePHP'] = &#8216;firebar&#8217;; // Options:   window or firebar</span></p></blockquote>
<p>Be sure your libraries are prefized by &#8220;MY_ &#8220;  or change the filename to your own prefix:</p>
<blockquote><p><span style="color: #993300;">$config['subclass_prefix'] = &#8216;MY_&#8217;;</span></p></blockquote>
<p>Download MY_profiler and copy to your libraries folder:  <span style="text-decoration: underline;"><a href="http://code.google.com/p/codeigniter-profiler-slide/" target="_blank">Download My_profiler</a></span></p>
<p>Remember to enable profiler in your controler/model:</p>
<blockquote><p><span style="color: #993300;">$this-&gt;output-&gt;enable_profiler(TRUE);</span></p></blockquote>
<p>Post your comments if you like it !!</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 640px; width: 1px; height: 1px;">&lt;?php if (!defined(&#8216;BASEPATH&#8217;)) exit(&#8216;No direct script access allowed&#8217;);</p>
<p>class MY_Profiler extends CI_Profiler<br />
{<br />
function MY_profiler()<br />
{<br />
parent::CI_Profiler();<br />
}</p>
<p>function run()<br />
{<br />
if ($this-&gt;CI-&gt;config-&gt;item(&#8220;firePHP&#8221;) == &#8220;window&#8221;)<br />
{<br />
// START JQueryLoad<br />
// Remove if you load Jquery else where<br />
$output = &#8216;&lt;script type=&#8221;text/Javascript&#8221; src=&#8221;/js/jquery.js&#8221;&gt;&lt;/script&gt;&#8217;;<br />
$output = &#8216;&lt;script type=&#8221;text/Javascript&#8221; src=&#8221;http://code.jquery.com/jquery.min.js&#8221;&gt;&lt;/script&gt;&#8217;;<br />
// End JQueryLoad<br />
$i_currentDIV = rand(10,99).substr(md5($_SERVER["REQUEST_URI"]),0,6);<br />
$output .= &#8220;&lt;div id=&#8217;debugTrace&#8221;.$i_currentDIV.&#8221;X&#8217; style=&#8217;position:absolute;top:0px;left:0px;width:20px;height:30px;border:#FFFFEB solid 2px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#80000000,endColorstr=#10000000);background: rgba(135, 135, 135, 0.6);color:red;z-index:9999;&#8217;&gt;&#8221;;<br />
$output .= &#8220;&lt;a href=&#8217;Javascript:;&#8217; onclick=&#8217;$(\&#8221;#debugTrace&#8221;.$i_currentDIV.&#8221;\&#8221;).show();$(\&#8221;.codeigniter_profiler\&#8221;).slideUp();&#8217; style=&#8217;text-decoration:none;font-size: 1em;&#8217;&gt; &lt;font color=&#8217;red&#8217; size=&#8217;5&#8242;&gt;X&lt;/font&gt; &lt;/a&gt;&#8221;;<br />
$output .= &#8220;&lt;/div&gt;&#8221;;<br />
$output .= &#8220;&lt;div id=&#8217;debugTrace&#8221;.$i_currentDIV.&#8221;&#8216; style=&#8217;position:absolute;top:0px;left:20px;width:100%;border:#FFFFEB solid 2px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#80000000,endColorstr=#10000000);background: rgba(135, 135, 135, 0.6);color:red;z-index:9999;&#8217;&gt;&#8221;;<br />
$output .= &#8220;&lt;table align=&#8217;center&#8217; border=&#8217;0&#8242; width=&#8217;98%&#8217;&gt;&#8221;;<br />
$output .= &#8220;&lt;tr&gt;&#8221;;<br />
$output .= &#8220;&lt;td align=&#8217;left&#8217; width=&#8217;10%&#8217;&gt;&lt;a href=&#8217;Javascript:;&#8217; onclick=&#8217;$(\&#8221;.codeigniter_profiler\&#8221;).slideUp();$(\&#8221;#codeigniter_profiler_URI\&#8221;).slideDown();&#8217; style=&#8217;text-decoration:none;font-size: 1em;color:#fff&#8217;&gt; URI &lt;/a&gt;&lt;/td&gt;&#8221;;<br />
$output .= &#8220;&lt;td align=&#8217;left&#8217; width=&#8217;10%&#8217;&gt;&lt;a href=&#8217;Javascript:;&#8217; onclick=&#8217;$(\&#8221;.codeigniter_profiler\&#8221;).slideUp();$(\&#8221;#codeigniter_profiler_CTRL\&#8221;).slideToggle();&#8217; style=&#8217;text-decoration:none;font-size: 1em;color:#fff&#8217;&gt; Controler &lt;/a&gt;&lt;/td&gt;&#8221;;<br />
$output .= &#8220;&lt;td align=&#8217;left&#8217; width=&#8217;10%&#8217;&gt;&lt;a href=&#8217;Javascript:;&#8217; onclick=&#8217;$(\&#8221;.codeigniter_profiler\&#8221;).slideUp();$(\&#8221;#codeigniter_profiler_MEM\&#8221;).slideToggle();&#8217; style=&#8217;text-decoration:none;font-size: 1em;color:#fff&#8217;&gt; Memory &lt;/a&gt;&lt;/td&gt;&#8221;;<br />
$output .= &#8220;&lt;td align=&#8217;left&#8217; width=&#8217;10%&#8217;&gt;&lt;a href=&#8217;Javascript:;&#8217; onclick=&#8217;$(\&#8221;.codeigniter_profiler\&#8221;).slideUp();$(\&#8221;#codeigniter_profiler_BENCH\&#8221;).slideToggle();&#8217; style=&#8217;text-decoration:none;font-size: 1em;color:#fff&#8217;&gt; Benchmarks &lt;/a&gt;&lt;/td&gt;&#8221;;<br />
$output .= &#8220;&lt;td align=&#8217;left&#8217; width=&#8217;10%&#8217;&gt;&lt;a href=&#8217;Javascript:;&#8217; onclick=&#8217;$(\&#8221;.codeigniter_profiler\&#8221;).slideUp();$(\&#8221;#codeigniter_profiler_VARS\&#8221;).slideToggle();&#8217; style=&#8217;text-decoration:none;font-size: 1em;color:#fff&#8217;&gt; Variables &lt;/a&gt;&lt;/td&gt;&#8221;;<br />
$output .= &#8220;&lt;td align=&#8217;left&#8217; width=&#8217;10%&#8217;&gt;&lt;a href=&#8217;Javascript:;&#8217; onclick=&#8217;$(\&#8221;.codeigniter_profiler\&#8221;).slideUp();$(\&#8221;#codeigniter_profiler_SQL\&#8221;).slideToggle();&#8217; style=&#8217;text-decoration:none;font-size: 1em;color:#fff&#8217;&gt; SQL &lt;/a&gt;&lt;/td&gt;&#8221;;<br />
$output .= &#8220;&lt;td align=&#8217;right&#8217; width=&#8217;80%&#8217;&gt;&lt;a href=&#8217;Javascript:;&#8217; onclick=&#8217;$(\&#8221;.codeigniter_profiler\&#8221;).slideUp();$(\&#8221;#debugTrace&#8221;.$i_currentDIV.&#8221;\&#8221;).hide();&#8217; style=&#8217;text-decoration:none;font-size: 1em;color:#fff&#8217;&gt; &lt;strong&gt;&amp;lt;&amp;lt;&amp;lt;&lt;/strong&gt; &lt;/a&gt;&lt;/td&gt;&#8221;;<br />
$output .= &#8220;&lt;td align=&#8217;right&#8217;&gt;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&#8221;;<br />
$output .= &#8220;&lt;/tr&gt;&#8221;;<br />
$output .= &#8220;&lt;tr&gt;&#8221;;<br />
$output .= &#8220;&lt;td colspan=&#8217;99&#8242; onclick=&#8217;$(\&#8221;.codeigniter_profiler\&#8221;).slideUp();&#8217;&gt;&#8221;;<br />
$output .= &#8220;&lt;div id=&#8217;codeigniter_profiler_URI&#8217; class=&#8217;codeigniter_profiler&#8217; style=&#8217;position:relative;top:0px;padding:10px;width:90%;text-align:left;background-color:#fff;border:1px solid silver;z-index:9999;display:none;color:silver;&#8217;&gt;&#8221;;<br />
$output .= $this-&gt;_compile_uri_string();<br />
$output .= &#8220;&lt;/div&gt;&#8221;;<br />
$output .= &#8220;&lt;div id=&#8217;codeigniter_profiler_CTRL&#8217; class=&#8217;codeigniter_profiler&#8217; style=&#8217;position:relative;top:0px;padding:10px;width:90%;text-align:left;background-color:#fff;border:1px solid silver;z-index:9999;display:none;color:silver;&#8217;&gt;&#8221;;<br />
$output .= $this-&gt;_compile_controller_info();<br />
$output .= &#8220;&lt;/div&gt;&#8221;;<br />
$output .= &#8220;&lt;div id=&#8217;codeigniter_profiler_MEM&#8217; class=&#8217;codeigniter_profiler&#8217; style=&#8217;position:relative;top:0px;padding:10px;width:90%;text-align:left;background-color:#fff;border:1px solid silver;z-index:9999;display:none;color:silver;&#8217;&gt;&#8221;;<br />
$output .= $this-&gt;_compile_memory_usage();<br />
$output .= &#8220;&lt;/div&gt;&#8221;;<br />
$output .= &#8220;&lt;div id=&#8217;codeigniter_profiler_BENCH&#8217; class=&#8217;codeigniter_profiler&#8217; style=&#8217;position:relative;top:0px;padding:10px;width:90%;text-align:left;background-color:#fff;border:1px solid silver;z-index:9999;display:none;color:silver;&#8217;&gt;&#8221;;<br />
$output .= $this-&gt;_compile_benchmarks();<br />
$output .= &#8220;&lt;/div&gt;&#8221;;<br />
$output .= &#8220;&lt;div id=&#8217;codeigniter_profiler_VARS&#8217; class=&#8217;codeigniter_profiler&#8217; style=&#8217;position:relative;top:0px;padding:10px;width:90%;text-align:left;background-color:#fff;border:1px solid silver;z-index:9999;display:none;color:silver;&#8217;&gt;&#8221;;<br />
$output .= $this-&gt;_compile_get();<br />
$output .= $this-&gt;_compile_post();<br />
$output .= &#8220;&lt;/div&gt;&#8221;;<br />
$output .= &#8220;&lt;div id=&#8217;codeigniter_profiler_SQL&#8217; class=&#8217;codeigniter_profiler&#8217; style=&#8217;position:relative;top:0px;padding:10px;width:90%;text-align:left;background-color:#fff;border:1px solid silver;z-index:9999;display:none;color:silver;&#8217;&gt;&#8221;;<br />
$output .= $this-&gt;_compile_queries();<br />
$output .= &#8220;&lt;/div&gt;&#8221;;<br />
$output .= &#8220;&lt;/td&gt;&#8221;;<br />
$output .= &#8220;&lt;/tr&gt;&#8221;;<br />
$output .= &#8220;&lt;/table&gt;&#8221;;<br />
$output .= &#8220;&lt;/div&gt;&#8221;;<br />
return $output;<br />
}<br />
if ($this-&gt;CI-&gt;config-&gt;item(&#8220;firePHP&#8221;) == &#8220;firebar&#8221;)<br />
$this-&gt;firePHP();<br />
}</p>
<p>function firePHP()<br />
{<br />
/**<br />
* Add toolbar data to FirePHP console<br />
*/</p>
<p>$firephp = FirePHP::getInstance(TRUE);</p>
<p>$firephp-&gt;fb(&#8216;FirePHP DEBUG TOOLBAR:&#8217;);</p>
<p>// Global VARS<br />
$globals = array(<br />
&#8216;Post&#8217;    =&gt; empty($_POST)    ? array() : $_POST,<br />
&#8216;Get&#8217;     =&gt; empty($_GET)     ? array() : $_GET,<br />
&#8216;Cookie&#8217;  =&gt; empty($_COOKIE)  ? array() : $_COOKIE,<br />
&#8216;Session&#8217; =&gt; empty($_SESSION) ? array() : $_SESSION<br />
);</p>
<p>$tableT = array();<br />
$tableT[] = array(&#8220;Vars&#8221;,&#8221;Values&#8221;);<br />
$numVars = 0;<br />
foreach ($globals as $name =&gt; $global)<br />
{<br />
$table = array();</p>
<p>foreach((array)$global as $key =&gt; $value)<br />
{<br />
if (is_object($value))<br />
{<br />
$value = get_class($value).&#8217; [object]&#8216;;<br />
}</p>
<p>$table[][$key]= $value;<br />
$numVars ++;<br />
}</p>
<p>$message = &#8220;$name: &#8220;.count($global).&#8217; variables&#8217;;<br />
$tableT[] = array($message,$table);<br />
}</p>
<p>$message = &#8220;VARS: &#8220;.$numVars.&#8217; variables&#8217;;</p>
<p>$firephp-&gt;fb(array($message,$tableT), FirePHP::TABLE);</p>
<p>// Benchmarks<br />
$benchmarks = $this-&gt;compile_benchmarks();<br />
$tableT = array();<br />
$tableT[] = array(&#8220;Type&#8221;,&#8221;Time&#8221;);<br />
$totalTime = 0;<br />
foreach ($benchmarks as $key =&gt; $val)<br />
{<br />
$tableT[] = array($key,$val);<br />
$totalTime = $val;<br />
}</p>
<p>$firephp-&gt;fb(array(&#8220;Benchmarks: &#8220;.number_format($totalTime,4),$tableT), FirePHP::TABLE);</p>
<p>// SQL statements</p>
<p>$dbs = array();</p>
<p>// Let&#8217;s determine which databases are currently connected to<br />
foreach (get_object_vars($this-&gt;CI) as $CI_object)<br />
{<br />
if (is_object($CI_object) &amp;&amp; is_subclass_of(get_class($CI_object), &#8216;CI_DB&#8217;) )<br />
{<br />
$dbs[] = $CI_object;<br />
}<br />
}</p>
<p>$tableT = array();<br />
$tableT[] = array(&#8220;SQL&#8221;,&#8221;Time&#8221;);<br />
$totalTime = 0;<br />
foreach ($dbs as $key =&gt; $val)<br />
{<br />
foreach ($val-&gt;queries as $key2 =&gt; $val2)<br />
{<br />
$tableT[] = array($val2,number_format($val-&gt;query_times[$key2],4));<br />
$totalTime += $val-&gt;query_times[$key2];<br />
}<br />
}<br />
$tableT[] = array(&#8220;Total: &#8220;,number_format($totalTime,4));<br />
$firephp-&gt;fb(array(&#8220;SQL : &#8220;.number_format($totalTime,4),$tableT),FirePHP::TABLE);</p>
<p>$tableT = array();<br />
$tableT[] = array(&#8220;Memory&#8221;,&#8221;Time&#8221;);<br />
$tableT[] = array(&#8220;Program&#8221;,number_format(memory_get_usage()));<br />
$tableT[] = array(&#8220;Max&#8221;,number_format(memory_get_peak_usage()));<br />
$firephp-&gt;fb(array(&#8220;Memory&#8221;,$tableT),FirePHP::TABLE);</p>
<p>$tableT = array();<br />
$tableT[] = array(&#8220;Class&#8221;,&#8221;Function&#8221;,&#8221;File&#8221;);<br />
$tableT = array_merge($tableT,debug_backtrace());<br />
$firephp-&gt;fb(array(&#8220;Files: &#8220;,$tableT), FirePHP::TABLE);</p>
<p>return;<br />
}</p>
<p>function compile_benchmarks()<br />
{<br />
$profile = array();<br />
foreach ($this-&gt;CI-&gt;benchmark-&gt;marker as $key =&gt; $val)<br />
{<br />
// We match the &#8220;end&#8221; marker so that the list ends<br />
// up in the order that it was defined<br />
if (preg_match(&#8220;/(.+?)_end/i&#8221;, $key, $match))<br />
{<br />
if (isset($this-&gt;CI-&gt;benchmark-&gt;marker[$match[1].&#8217;_end&#8217;]) AND isset($this-&gt;CI-&gt;benchmark-&gt;marker[$match[1].&#8217;_start&#8217;]))<br />
{<br />
$profile[$match[1]] = $this-&gt;CI-&gt;benchmark-&gt;elapsed_time($match[1].&#8217;_start&#8217;, $key);<br />
}<br />
}<br />
}</p>
<p>return $profile;<br />
}<br />
}</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.4amics.com/x.perez/2010/03/codeginiter-profiler-with-firephp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Zend Server can improve high foot print frameworks</title>
		<link>http://www.4amics.com/x.perez/2010/03/how-zend-server-can-improve-high-foot-print-frameworks/</link>
		<comments>http://www.4amics.com/x.perez/2010/03/how-zend-server-can-improve-high-foot-print-frameworks/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 12:19:35 +0000</pubDate>
		<dc:creator>Xavier Perez</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[LAMP Optimization]]></category>

		<guid isPermaLink="false">http://www.4amics.com/x.perez/?p=85</guid>
		<description><![CDATA[Zend Server (and also Zend Server Comunity Edition), comes with own APC, cache and some more improvements all together, and also two servers: Apache with php as cgi, and a lighthttpd, allowing to server static pages and dinamyc pages separatelly, and decreasing foot print in almost 300%. Frameworks as Zend, with a foot print of [...]]]></description>
			<content:encoded><![CDATA[<p>Zend Server (and also Zend Server Comunity Edition), comes with own APC, cache and some more improvements all together, and also two servers: Apache with php as cgi, and a lighthttpd, allowing to server static pages and dinamyc pages separatelly, and decreasing foot print in almost 300%. Frameworks as Zend, with a foot print of 12MB RAM, takes only 4MB RAM served with Zend Server, allowing the system to be more escalable and accepting more requests per second.</p>
<p>It&#8217;s not a &#8216;panacea&#8217;, obviously it&#8217;s better to desing your framework with low foot print. Zend Server can decrease low foot print frameworks (with 4MB RAM), as los as 800KB RAM per page, but if you have a framework or CMS that are rising system full, would be a great opportunity to breath again and make some considerations and to take time for think about future measures to take.</p>
<p style="text-align: center;"><a href="http://www.4amics.com/x.perez/wp-content/uploads/2010/03/Web-Application-Server-for-Business-Critical-PHP-Applications-Zend.com_1269261628311.png"><img class="size-thumbnail wp-image-88 alignnone" title="Web Application Server for Business-Critical PHP Applications - Zend.com_1269261628311" src="http://www.4amics.com/x.perez/wp-content/uploads/2010/03/Web-Application-Server-for-Business-Critical-PHP-Applications-Zend.com_1269261628311-150x150.png" alt="" width="150" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.4amics.com/x.perez/2010/03/how-zend-server-can-improve-high-foot-print-frameworks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best PHP framework ?</title>
		<link>http://www.4amics.com/x.perez/2010/03/best-php-framework/</link>
		<comments>http://www.4amics.com/x.perez/2010/03/best-php-framework/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 10:14:08 +0000</pubDate>
		<dc:creator>Xavier Perez</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Php Frameworks]]></category>

		<guid isPermaLink="false">http://www.4amics.com/x.perez/?p=66</guid>
		<description><![CDATA[Which is the best PHP framwework to develop your applications ? There are a lot of frameworks out there that can do your requeriments without problems, but you must to make another important questions: How many visitors are expected to have your site ? How much important it&#8217;s the quick development versus maintainability ? How [...]]]></description>
			<content:encoded><![CDATA[<p>Which is the best PHP framwework to develop your applications ?</p>
<p>There are a lot of frameworks out there that can do your requeriments without problems, but you must to make another important questions:</p>
<ol>
<li>How many visitors are expected to have your site ?</li>
<li>How much important it&#8217;s the quick development versus maintainability ?</li>
<li>How many developers will work on it ?</li>
<li>What kind of helpers and custom functionality you need ?</li>
</ol>
<p>1) If your site expects to have high trafic, you need to choice a light framework, with low foot print, because if not,  your site will be more time down than up, and you will loss customer interests. Low foot print means less than 6MB RAM per page. If you waste 10MB RAM per page, you needed total RAM would be more that 1GB RAM to allow 100 concurrent pages !!.</p>
<p>2) Quick develpment time it&#8217;s very important, you will have your site running and ready to have page rank in few months, but &#8230; how much would costs it ? I have seen many developments made with wordpress, it&#8217;s very quick to implements a site with low effort, but haven&#8217;t any structure, neither MVC pattern and needs a lot fo time to implements new functionalities. You must to decide if you can be delimited by your own development or you prefer to have less functionality at start or scale it to better approach to your final idea.</p>
<p>3) As many developers works on a site, better structure must to have it. All developers must to know perfectlly where to find functionality, where to find business units, where to find components and be carefully in duplicate content that can make an application hard to mantain. MVC pattern and also HMVC pattern must to be implemented strictlly, assure that every component are unique and all developers uses the same components.</p>
<p>4) It&#8217;s preferable that the framework comes with all standard functionality that you need, MVC pattern, multiple database access, string, uri, date and number formatters and helpers, template parser, subtemplate calls, as well as multi language capable (utf8) and multi application capable.</p>
<p>Having all considerations made, you can start to evaluate one by one your desired framework. I have made a list of all the frameworks that can acomplish all requeriments exposed.</p>
<p><span style="text-decoration: underline;"><strong>Codeigniter</strong></span></p>
<p><span style="text-decoration: underline;"><strong><a href="http://www.4amics.com/x.perez/wp-content/uploads/2010/03/php-1.png"><img class="size-full wp-image-72 alignnone" title="php-1" src="http://www.4amics.com/x.perez/wp-content/uploads/2010/03/php-1.png" alt="" width="150" height="100" /></a><br />
</strong></span></p>
<p>Low foot print, easy to expand, quick development from scratch. Good documentation and great comunity. Easy to expand, mods and plugins.</p>
<p><span style="text-decoration: underline;"><strong>KohanaPHP</strong></span></p>
<p>Low foot print (not so as codeigniter), easy to expand, OO 100%, quick development from scratch, easy to mod functionality.</p>
<p><strong><span style="text-decoration: underline;">KumbiaPHP</span></strong></p>
<p>Low foot print(as low as codeigniter), easy to expand, spanish comunity, quick development from scratch, easy to mod.</p>
<p><span style="text-decoration: underline;"><strong>Othe frameworks out of this list:</strong></span></p>
<p>CakePHP, Prado, Zend, Solar, takes more than 10MB of RAM for any simple page, not being considered on this analisys.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.4amics.com/x.perez/2010/03/best-php-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Server 5.0 released</title>
		<link>http://www.4amics.com/x.perez/2010/03/zend-server-5-0-released/</link>
		<comments>http://www.4amics.com/x.perez/2010/03/zend-server-5-0-released/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 21:04:59 +0000</pubDate>
		<dc:creator>Xavier Perez</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[LAMP Scalability]]></category>

		<guid isPermaLink="false">http://www.4amics.com/x.perez/?p=60</guid>
		<description><![CDATA[Zend server 5.0 have been released, and bring the opportinuty to try&#38;by or download the Zend Server Comunity Edition. Zend Server Community Edition is a pre-integrated PHP application stack that’s been tested by Zend to ensure the highest levels of reliability. You can use it to run your application in production, during development and testing, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="border: 1px solid black; margin: 10px;" src="http://static.zend.com/topics/prodcut-ZendServer-5.jpg" alt="" width="240" height="84" />Zend server 5.0 have been released, and bring the opportinuty to try&amp;by or download the Zend Server Comunity Edition.</p>
<p>Zend Server Community Edition   is a pre-integrated PHP application stack that’s been tested by Zend to   ensure the highest levels of reliability. You can use it to run your application   in production, during development and testing, ensuring a consistent environment   throughout the application lifecycle.</p>
<p>If at any point you require technical   support, software updates, security patches, application monitoring or   extra performance, you can simply upgrade to Zend Server, the commercial   version of Zend Server Community Edition.</p>
<p>Zend Server CE, comes with:</p>
<ul>
<li>Bytecode accelerator (Optimizer+)</li>
<li>Zend Data Cache</li>
<li>A certified PHP distribution</li>
<li>Zend Framework</li>
<li>Apache (or IIS integration)</li>
<li>MySQL (on Windows and Mac OS X)</li>
<li>Out-of-the-box connectivity to all common databases</li>
<li>Java code connectivity</li>
<li>Web-based PHP administrator console</li>
</ul>
<p>Also, Zend Server:</p>
<ul>
<li>All features of Zend Server CE</li>
<li>Partial cache</li>
<li>PHP tracer and debugger</li>
<li>Job Queue</li>
</ul>
<p>Check online the differences:  <a href="http://www.zend.com/en/products/server/editions" target="_blank">Zend Server Editions</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.4amics.com/x.perez/2010/03/zend-server-5-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

