<?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>Ze Technology &#187; Projet de la semaine</title>
	<atom:link href="http://www.ze-technology.com/category/projet-de-la-semaine/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ze-technology.com</link>
	<description>Ze Blog qui parle de Ze Technology. Univers du libre, programmation, société, business...</description>
	<lastBuildDate>Sat, 17 Dec 2011 08:35:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Projet de la semaine #3 : HipHop</title>
		<link>http://www.ze-technology.com/2010/02/03/projet-de-la-semaine-3-hiphop/</link>
		<comments>http://www.ze-technology.com/2010/02/03/projet-de-la-semaine-3-hiphop/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 08:27:47 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[Projet de la semaine]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=645</guid>
		<description><![CDATA[Certains d&#8217;entre vous ont peut être entendu parler d&#8217;&#160;&#187;Hyper PHP&#160;&#187;. Le nom du projet est apparemment &#171;&#160;HipHop&#160;&#187;. Il s&#8217;agit là du compilateur complètement customisé par Facebook, pour ses propres besoins liés à la scalabilité et la montée en charge. Ce compilateur réécrit le code PHP en C++, puis le  compile avec le bien connu compilateur [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-646" title="hiphop" src="http://www.ze-technology.com/wp-content/uploads/2010/02/hiphop.jpg" alt="hiphop" width="600" height="60" /></p>
<p>Certains d&#8217;entre vous ont peut être entendu parler d&#8217;&nbsp;&raquo;Hyper PHP&nbsp;&raquo;. Le nom du projet est apparemment &laquo;&nbsp;HipHop&nbsp;&raquo;. Il s&#8217;agit là du compilateur complètement customisé par Facebook, pour ses propres besoins liés à la scalabilité et la montée en charge.</p>
<p>Ce compilateur réécrit le code PHP en C++, puis le  compile avec le bien connu compilateur G++. Chez Facebook, ils nous font part d&#8217;un gain de 50% en terme d&#8217;utilisation du CPU.</p>
<p><img class="aligncenter size-full wp-image-647" title="hiphop2" src="http://www.ze-technology.com/wp-content/uploads/2010/02/hiphop2.jpg" alt="hiphop2" width="600" height="375" />Utilisé en production depuis 2 ans mais présenté seulement aujourd&#8217;hui à la communauté, le projet HipHop est d&#8217;ores et déjà disponible, n&#8217;hésitez pas à <a href="http://developers.facebook.com/hiphop-php/">l&#8217;essayer</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2010/02/03/projet-de-la-semaine-3-hiphop/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Projet de la semaine #2 : Diem</title>
		<link>http://www.ze-technology.com/2009/12/23/projet-de-la-semaine-2-diem/</link>
		<comments>http://www.ze-technology.com/2009/12/23/projet-de-la-semaine-2-diem/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 12:59:37 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Projet de la semaine]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=577</guid>
		<description><![CDATA[Découvrez Diem, un CMS. Ou plutôt, un CMF pour Content Management Framework. Open Source, le projet affiche fièrement sa ligne de conduite : conçu pour les sites &#8211; pas si simples. Basé sur le framework symfony 1.4 (au lieu de la 1.1 dans la précédente mouture), Diem va en effet vous permettre de mettre en [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-578" title="Diem" src="http://www.ze-technology.com/wp-content/uploads/2009/12/Capture1.png" alt="Diem" width="600" height="155" /></p>
<p>Découvrez Diem, un <a href="http://fr.wikipedia.org/wiki/Syst%C3%A8me_de_gestion_de_contenu">CMS</a>. Ou plutôt, un CMF pour Content Management Framework. Open Source, le projet affiche fièrement sa ligne de conduite : conçu pour les sites &#8211; pas si simples. Basé sur le framework <a href="http://symfony-project.com">symfony</a> 1.4 (au lieu de la 1.1 dans la précédente mouture), Diem va en effet vous permettre de mettre en place vos systèmes de gestion de contenu totalement sur mesure. Un effort a été fait sur l&#8217;interface d&#8217;administration, le <a href="http://fr.wikipedia.org/wiki/Seo">SEO</a>, l&#8217;édition <em>inline</em>, les outils pour développeurs, les performances&#8230; Bref, un beau projet qui promet.</p>
<p>Si vous êtes à la recherche d&#8217;une solution de gestion de contenu parfaitement calquée sur vos besoins spécifiques, vous devriez faire un tour du côté de Diem et des modules fournis.</p>
<p><a href="http://diem-project.org/">Site officiel</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/12/23/projet-de-la-semaine-2-diem/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Projet de la semaine #1 : Patchwork</title>
		<link>http://www.ze-technology.com/2009/12/07/projet-de-la-semaine-1-projet-patchwork/</link>
		<comments>http://www.ze-technology.com/2009/12/07/projet-de-la-semaine-1-projet-patchwork/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 18:39:13 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Open-source]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Projet de la semaine]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=446</guid>
		<description><![CDATA[Encore un framework Vous étiez prévenu, le forum PHP 2009 fût une excellente occasion de découvrir un certain nombre de projets, apportant chacun leur lot d&#8217;innovations. Suite à la première conférence à laquelle j&#8217;ai pu assister, &#171;&#160;Optimiser PHP avec un préprocesseur&#171;&#160;, Nicolas Grekas a présenté &#8211; et tenté d&#8217;évangéliser &#8211; son framework fait maison : [...]]]></description>
			<content:encoded><![CDATA[<h2>Encore un framework</h2>
<p>Vous étiez prévenu, le forum PHP 2009 fût une excellente occasion de découvrir un certain nombre de projets, apportant chacun leur lot d&#8217;innovations. Suite à la première conférence à laquelle j&#8217;ai pu assister, &laquo;&nbsp;<em>Optimiser PHP avec un préprocesseur</em>&laquo;&nbsp;, Nicolas Grekas a présenté &#8211; et tenté d&#8217;évangéliser &#8211; son framework fait maison : <em>Patchwork</em>.</p>
<p>Développé en interne, <em>Patchwork</em> est né comme souvent pour résoudre certaines problématiques. Ici, c&#8217;est la portabilité et la &laquo;&nbsp;cohérence&nbsp;&raquo; des applications qui intéressent son auteur.</p>
<h3>Portabilité ?</h3>
<p>L&#8217;objectif est ici de faciliter le déploiement des applications PHP en fonction du serveur de destination. Une fonction pas disponible ? Une autre qui a un comportement différent selon la version ? À l&#8217;instar des <a href="http://fr.wikipedia.org/wiki/Autotools"><em>autotools</em></a> de l&#8217;univers C/C++, <em>Patchwork</em> permet de se prémunir contre ce genre de situations. Concrètement, voici la manière de spécialiser un appel en fonction du contexte :</p>
<p><code>/**/if (! function_exists('utf8_decode'))<br />
/**/{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function utf8_decode($string)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// ...<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
/**/}</code></p>
<h3>Cohérence ?</h3>
<p>Le mot est peut être mal choisi, mais l&#8217;idée est là. L&#8217;idée est d&#8217;homogénéiser le code en appliquant un certain nombre de règles :</p>
<ul>
<li>Le même encodage (UTF-8) partout</li>
<li>CRLF <em>vs</em> CR <em>vs</em> LF</li>
<li>&#8216;@&#8217; (opérateur de silence) ou non ?</li>
<li>Fonctions à substituer&#8230;</li>
</ul>
<p>Le dernier point s&#8217;avère utile dans bien des cas : utiliser une fonction plus optimisée, rajouter des fonctionnalités&#8230; Quelques exemples concrets de substitutions ?</p>
<p><code>rand =&gt; mt_rand<br />
md5  =&gt; hash('md5', ...)</code></p>
<p>Le préprocesseur de <em>Patchwork</em> se charge également de booster le mécanisme d&#8217;<em><a href="http://php.net/manual/fr/language.oop5.autoload.php">autoload</a> </em>de PHP5, et bien entendu place tous les résultats de compilation en cache afin de ne pas tout recalculer à chaque appel ; d&#8217;où le nom de pré-processeur. Les <em>benchmarks</em> effectués laissent apparaître un gain de performances de l&#8217;ordre de 5%.</p>
<h2>Mon avis</h2>
<p>Patchwork part d&#8217;un très bon sentiment et d&#8217;une problématique qui existe au sein de nombreux projets. C&#8217;est un projet jeune, déjà utilisé en production, et documenté (en français). <em>Patchwork</em> est une opportunité de s&#8217;amuser avec toutes les possibilités offertes par PHP5, et peut aisément servir pour &laquo;&nbsp;maintenir&nbsp;&raquo; une application vieillissante, ou sur laquelle on a peu de contrôle. En revanche, certains points pourraient être un non-sens dans bien des cas. Ainsi, la substitution de fonctions par leurs cousines plus performantes pourrait ne plus avoir de sens dès lors que l&#8217;équipe de développement intègre directement ces <em>best-practices</em>.</p>
<p>Liens :</p>
<ul>
<li><a href="http://pa.tchwork.com/wiki/Accueil">Site officiel de Patchwork</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/12/07/projet-de-la-semaine-1-projet-patchwork/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

