<?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>Code et ornithorynques insectes &#187; CakePHP</title>
	<atom:link href="http://www.eiodal.com/category/cakephp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.eiodal.com</link>
	<description>Un blog utilisant très probablement WordPress</description>
	<lastBuildDate>Wed, 16 Dec 2009 11:21:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CakePHP : lenteurs et optimisation</title>
		<link>http://www.eiodal.com/cakephp-lenteurs-optimisation/</link>
		<comments>http://www.eiodal.com/cakephp-lenteurs-optimisation/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 06:24:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[lenteur]]></category>
		<category><![CDATA[optimisation]]></category>

		<guid isPermaLink="false">http://www.eiodal.com/?p=325</guid>
		<description><![CDATA[On entend souvent parler de la lourdeur des applications CakePHP. Même si ce n&#8217;est pas entièrement faux, une appli CakePHP n&#8217;est pas aussi rapide à charger qu&#8217;un site en PHP &#171;&#160;classique&#160;&#187;, ce n&#8217;est pas dramatique non plus. Je l&#8217;ai utilisé pour des applications riches en éléments et en requêtes, et je n&#8217;ai pas eu de [...]<p>Source : <a href="http://www.eiodal.com">Blog cakephp, sql, seo, hébergements, improbabilités</a><br/><br/><a href="http://www.eiodal.com/cakephp-lenteurs-optimisation/">CakePHP : lenteurs et optimisation</a></p>
]]></description>
			<content:encoded><![CDATA[<p>On entend souvent parler de la<strong> lourdeur des applications CakePHP</strong>. Même si ce n&#8217;est pas entièrement faux, une appli CakePHP n&#8217;est pas aussi rapide à charger qu&#8217;un site en PHP &laquo;&nbsp;classique&nbsp;&raquo;, ce n&#8217;est pas dramatique non plus. Je l&#8217;ai utilisé pour des applications riches en éléments et en requêtes, et je n&#8217;ai pas eu de problèmes particuliers. Il y a juste quelques précautions à prendre.</p>
<p><span id="more-325"></span></p>
<p>Matt Curry, un &laquo;&nbsp;gourou&nbsp;&raquo; CakePHP a <a href="http://www.pseudocoder.com/archives/2009/03/17/8-ways-to-speed-up-cakephp-apps/">écris un post</a> il y a quelques temps déjà sur une <strong>série de conseils et précautions</strong> à prendre pour accélérer ses applications CakePHP. Si vous avez des problèmes de lenteur essayez d&#8217;appliquer ces méthodes.</p>
<p>Je ne ferais pas mieux que lui. Juste vous conseillez très fortement d&#8217;utiliser le behavior &laquo;&nbsp;Containable&nbsp;&raquo; pour vos requêtes, de bannir le &laquo;&nbsp;recursive&nbsp;&raquo; et d&#8217;utiliser &laquo;&nbsp;gzip&nbsp;&raquo; pour vos css et js. Mais ça aussi il le conseil &#8230;</p>
<p>Gardez à l&#8217;esprit que la plupart des lenteurs sont dû le plus souvent à des requêtes trop nombreuses et/ou mal construites, des fichiers trop lourds ou un serveur pas très performant. J&#8217;ai une application qui traite plusieurs millions d&#8217;enregistrements, et quand ça rame c&#8217;est à chaque fois de ma faute et pas de celle de CakePHP.</p>
<p><strong>Note :</strong> CakePHP est compatible PHP4, et n&#8217;utilise pas quelques fonctions magique de PHP5. Ces fonctions peuvent faire gagner un précieux temps de chargement. En version 2.0 CakePHP sera compatible essentiellement PHP5, utilisera donc ces fonctions, et sera donc bien plus rapide ! Patience &#8230;</p>
<p>Source : <a href="http://www.eiodal.com">Blog cakephp, sql, seo, hébergements, improbabilités</a><br/><br/><a href="http://www.eiodal.com/cakephp-lenteurs-optimisation/">CakePHP : lenteurs et optimisation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eiodal.com/cakephp-lenteurs-optimisation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CakePHP : Ne pas avoir à répéter le code du &#171;&#160;paginator&#160;&#187;</title>
		<link>http://www.eiodal.com/cakephp-ne-pas-repeter-code-paginator/</link>
		<comments>http://www.eiodal.com/cakephp-ne-pas-repeter-code-paginator/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 22:21:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[paginator]]></category>

		<guid isPermaLink="false">http://www.eiodal.com/?p=318</guid>
		<description><![CDATA[Depuis de long mois vous copier/coller votre code de navigation du &#171;&#160;paginator&#160;&#187; sur toutes vos pages. Oui, le truc pour afficher précédent/suivant sous vos données paginées. Et bien miracle ! J&#8217;ai eu l&#8217;idée du siècle : faites un &#160;&#187;element&#160;&#187;.
Oui c&#8217;est bidon, mais je viens d&#8217;y penser &#8230; après de longs mois  &#8230;

Créer un une page paginate.ctp [...]<p>Source : <a href="http://www.eiodal.com">Blog cakephp, sql, seo, hébergements, improbabilités</a><br/><br/><a href="http://www.eiodal.com/cakephp-ne-pas-repeter-code-paginator/">CakePHP : Ne pas avoir à répéter le code du &laquo;&nbsp;paginator&nbsp;&raquo;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Depuis de long mois vous copier/coller votre code de navigation du &laquo;&nbsp;paginator&nbsp;&raquo; sur toutes vos pages. Oui, le truc pour afficher précédent/suivant sous vos données paginées. Et bien miracle ! J&#8217;ai eu l&#8217;idée du siècle : faites un &nbsp;&raquo;element&nbsp;&raquo;.</p>
<p>Oui c&#8217;est bidon, mais je viens d&#8217;y penser &#8230; après de longs mois  &#8230;</p>
<p><span id="more-318"></span></p>
<p>Créer un une page paginate.ctp dans /app/view/elements/paginate.ctp avec le code suivant</p>
<pre class="brush: php;">

&amp;lt;div class='paging'&amp;gt;

&amp;lt;?php
echo $paginator-&amp;gt;prev(__(&amp;quot;&amp;lt;&amp;lt;&amp;lt; Précédent&amp;quot;), null, null, array('class' =&amp;gt; 'disabled'));
echo $paginator-&amp;gt;numbers();
echo $paginator-&amp;gt;next(__(&amp;quot; Suivant &amp;gt;&amp;gt;&amp;gt;&amp;quot;), null, null, array('class' =&amp;gt; 'disabled'));
echo $paginator-&amp;gt;counter();
?&amp;gt;

&amp;lt;/div&amp;gt;
</pre>
<p>Dans vos vues appeler &laquo;&nbsp;l&#8217;element&nbsp;&raquo; :</p>
<pre class="brush: php;">

&amp;lt;?php echo $this-&amp;gt;element('paginate'); ?&amp;gt;
</pre>
<p>Source : <a href="http://www.eiodal.com">Blog cakephp, sql, seo, hébergements, improbabilités</a><br/><br/><a href="http://www.eiodal.com/cakephp-ne-pas-repeter-code-paginator/">CakePHP : Ne pas avoir à répéter le code du &laquo;&nbsp;paginator&nbsp;&raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eiodal.com/cakephp-ne-pas-repeter-code-paginator/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>CakePHP : encoder son site en UTF-8</title>
		<link>http://www.eiodal.com/cakephp-encoder-son-site-en-utf-8/</link>
		<comments>http://www.eiodal.com/cakephp-encoder-son-site-en-utf-8/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 19:15:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[accents]]></category>
		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://www.eiodal.com/?p=28</guid>
		<description><![CDATA[Si vous réalisez des sites en français (ou biélorusses) avec CakePHP, vous allez tomber sur l&#8217;éternel problème des caractères accentués et d&#8217;encodage de vos pages. C&#8217;est très simple à résoudre en cinq points qu&#8217;il faut retenir sous peine de tapage de tête contre le mur.

Encoder les fichiers en UTF-8
Première chose à faire, configurer votre éditeur [...]<p>Source : <a href="http://www.eiodal.com">Blog cakephp, sql, seo, hébergements, improbabilités</a><br/><br/><a href="http://www.eiodal.com/cakephp-encoder-son-site-en-utf-8/">CakePHP : encoder son site en UTF-8</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Si vous réalisez des sites en français (ou biélorusses) avec CakePHP, vous allez tomber sur l&#8217;éternel problème des caractères accentués et d&#8217;encodage de vos pages. C&#8217;est très simple à résoudre en cinq points qu&#8217;il faut retenir sous peine de tapage de tête contre le mur.</p>
<p><span id="more-28"></span></p>
<h3>Encoder les fichiers en UTF-8</h3>
<p>Première chose à faire, configurer votre éditeur pour qu&#8217;il enregistre tout les fichiers en UTF-8. Certains le font de base (Netbeans), d&#8217;autres non (Eclipse). Une fois que c&#8217;est fait c&#8217;est pour la vie.</p>
<h3>Encodage de l&#8217;application CakePHP</h3>
<p>Dans le fichier /config/core vous devez avec la variable de configuration &laquo;&nbsp;App.encoding&nbsp;&raquo; définie à &laquo;&nbsp;UTF-8&#8243;. Quand vous créez une nouvelle application c&#8217;est la valeur par défaut.</p>
<pre class="brush: php;">Configure::write('App.encoding', 'UTF-8');</pre>
<h3>Encodage des vues</h3>
<p>Dans vos layouts, pensez bien à définir l&#8217;encodage de la page en utf-8. Avec CakePHP c&#8217;est simple, ajoutez la ligne suivante entre les balises &laquo;&nbsp;head&nbsp;&raquo; :</p>
<pre class="brush: php;">echo $html-&gt;charset();</pre>
<h3>La base de données</h3>
<p>Quand vous créez votre base enregistrez la en utf-8 aussi. Avec Mysql et phpmyadmin, définir : &laquo;&nbsp;Interclassement&nbsp;&raquo; et &laquo;&nbsp;Interclassement pour la connexion MySQL&nbsp;&raquo; en  &laquo;&nbsp;utf8_unicode_ci&nbsp;&raquo;. Ça vous évitera des problèmes d&#8217;enregistrements de données et c&#8217;est conseillé pour le multilangue.</p>
<h3>Connexion de CakePHP à la base de donnée</h3>
<p>Assurez vous que la connexion à la base de donnée s&#8217;effectue elle aussi en UTF-8. Le fichier de config c&#8217;est /config/database.php et vous devez avoir un truc du genre :</p>
<pre class="brush: php;">

var $default = array(
'driver' =&gt; 'mysql',
'database' =&gt; 'bdd',
...
'encoding'=&gt;'utf8'
);
</pre>
<p>Ça s&#8217;écrit différemment en fonction du type de base  (MySQL, Oracle etc.). Mysql c&#8217;est &laquo;&nbsp;&#8216;encoding&#8217;=&gt;&#8217;utf8&#8242;&nbsp;&raquo;, Oracle c&#8217;est &laquo;&nbsp;&#8216;charset&#8217; =&gt; &#8216;UTF8&#8242;&nbsp;&raquo;, et PostgreSQL je sais plus.</p>
<p>Source : <a href="http://www.eiodal.com">Blog cakephp, sql, seo, hébergements, improbabilités</a><br/><br/><a href="http://www.eiodal.com/cakephp-encoder-son-site-en-utf-8/">CakePHP : encoder son site en UTF-8</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eiodal.com/cakephp-encoder-son-site-en-utf-8/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>SQL : Plusieurs &#171;&#160;Count&#160;&#187; dans une requete</title>
		<link>http://www.eiodal.com/sql-plusieurs-count-dans-une-requete/</link>
		<comments>http://www.eiodal.com/sql-plusieurs-count-dans-une-requete/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 17:52:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.eiodal.com/?p=8</guid>
		<description><![CDATA[Il peut arriver que vous ayez besoin lors d&#8217;une requête SQL de compter le nombre de lignes suivant plusieurs paramètres. Ce n&#8217;est pas possible avec un simple &#171;&#160;COUNT&#160;&#187; il va donc falloir être plus subtile.

Imaginons que l&#8217;on a une table de la forme :



id
statut
nom


1
0
aaaaaaaa


2
1
bbbbbbb


3
0
ccccccc


4
2
dddddd


5
1
eeeeee


6
1
fffffffff



Pour connaitre le nombre de lignes où le statut est à 0, [...]<p>Source : <a href="http://www.eiodal.com">Blog cakephp, sql, seo, hébergements, improbabilités</a><br/><br/><a href="http://www.eiodal.com/sql-plusieurs-count-dans-une-requete/">SQL : Plusieurs &laquo;&nbsp;Count&nbsp;&raquo; dans une requete</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Il peut arriver que vous ayez besoin lors d&#8217;une requête SQL de <strong>compter le nombre de lignes suivant plusieurs paramètres</strong>. Ce n&#8217;est pas possible avec un simple &laquo;&nbsp;COUNT&nbsp;&raquo; il va donc falloir être plus subtile.</p>
<p><span id="more-8"></span></p>
<p>Imaginons que l&#8217;on a une table de la forme :</p>
<table class="table_sql" border="0">
<tbody>
<tr>
<th>id</th>
<th>statut</th>
<th>nom</th>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>aaaaaaaa</td>
</tr>
<tr>
<td>2</td>
<td>1</td>
<td>bbbbbbb</td>
</tr>
<tr>
<td>3</td>
<td>0</td>
<td>ccccccc</td>
</tr>
<tr>
<td>4</td>
<td>2</td>
<td>dddddd</td>
</tr>
<tr>
<td>5</td>
<td>1</td>
<td>eeeeee</td>
</tr>
<tr>
<td>6</td>
<td>1</td>
<td>fffffffff</td>
</tr>
</tbody>
</table>
<p>Pour connaitre le nombre de lignes où le statut est à 0, un COUNT classique suffit :</p>
<pre class="brush: sql;">SELECT COUNT(id) FROM table WHERE statut = 0;</pre>
<p>Cette requête va simplement compter le nombre de ligne où le champ &laquo;&nbsp;statut&nbsp;&raquo; est à 0, et va renvoyer 2 dans notre cas.</p>
<p>Mais comment faire si on veut compter le nombre de lignes où le statut est égale à 0, mais aussi à 1 et 2, tout ça dans la même requête ? Et bien il faut utiliser une structure conditionnelle pardi. C&#8217;est du SQL donc ça marche aussi bien avec MySQL que PostgreSQL ou autres.</p>
<pre class="brush: sql;">
SELECT
SUM(CASE statut WHEN 0 THEN 1 ELSE 0 END),
SUM(CASE statut WHEN 1 THEN 1 ELSE 0 END),
SUM(CASE statut WHEN 2 THEN 1 ELSE 0 END)
FROM table
GROUP BY statut
</pre>
<p>Cette requête va nous renvoyer le nombre de lignes qui ont un statut à 0, puis 1 et 2. Attention à bien utiliser un &laquo;&nbsp;GROUP By&nbsp;&raquo; autrement les résultats renvoyés vont être faussés.</p>
<p>Avec CakePHP ça va s&#8217;écrire comme ça :</p>
<pre class="brush: php;">
$this-&gt;Model-&gt;find('all', array(
'fields' =&gt; array(
'SUM(CASE Model.statut WHEN 0 THEN 1 ELSE 0 END)',
'SUM(CASE Model.statut WHEN 1 THEN 1 ELSE 0 END)',
'SUM(CASE Model.statut WHEN 2 THEN 1 ELSE 0 END)',
),
'group' =&gt; array('Model.statut'),
));
</pre>
<p>En esperant que ça aide !</p>
<p>Source : <a href="http://www.eiodal.com">Blog cakephp, sql, seo, hébergements, improbabilités</a><br/><br/><a href="http://www.eiodal.com/sql-plusieurs-count-dans-une-requete/">SQL : Plusieurs &laquo;&nbsp;Count&nbsp;&raquo; dans une requete</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eiodal.com/sql-plusieurs-count-dans-une-requete/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
