<?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>D-Sites</title>
	<atom:link href="http://www.d-sites.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.d-sites.com</link>
	<description>Codes sources, nouveautées, méthodes et compagnie…</description>
	<lastBuildDate>Sat, 27 Feb 2010 16:27:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>socket_stream_select: Attendre un flux (stream) et un socket en même temps</title>
		<link>http://www.d-sites.com/2010/02/27/socket_stream_select-attendre-un-flux-stream-et-un-socket-en-meme-temps/</link>
		<comments>http://www.d-sites.com/2010/02/27/socket_stream_select-attendre-un-flux-stream-et-un-socket-en-meme-temps/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 15:36:04 +0000</pubDate>
		<dc:creator>Samuel ROZE</dc:creator>
				<category><![CDATA[Adm. Système]]></category>
		<category><![CDATA[D-Sites]]></category>
		<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[multiple]]></category>
		<category><![CDATA[select]]></category>
		<category><![CDATA[simultaneous]]></category>
		<category><![CDATA[socket]]></category>
		<category><![CDATA[stream]]></category>
		<category><![CDATA[wait]]></category>

		<guid isPermaLink="false">http://www.d-sites.com/?p=655</guid>
		<description><![CDATA[Avec PHP, on peut interagir avec l&#8217;extérieur (et l&#8217;intérieur) du serveur sur lequel est exécuté le PHP à l&#8217;aide de flux et de sockets. Pour PHP, les flux &#8211; ou streams &#8211; et les sockets sont différents, alors qu&#8217;au niveau système, ce sont en réalité tous les deux des sockets (différents des sockets tels que [...]]]></description>
			<content:encoded><![CDATA[<p>Avec PHP, on peut interagir avec l&#8217;extérieur (et l&#8217;intérieur) du serveur sur lequel est exécuté le PHP à l&#8217;aide de flux et de sockets. Pour PHP, les flux &#8211; ou <em>streams</em> &#8211; et les sockets sont différents, alors qu&#8217;au niveau système, ce sont en réalité tous les deux des sockets (différents des sockets tels que l&#8217;entend PHP).</p>
<p>L&#8217;on travaille sur les deux en utilisant des fonctions toutes distinctes:</p>
<ul>
<li>Pour les flux, se sont <a href="http://fr.php.net/manual/fr/ref.stream.php" onclick="pageTracker._trackPageview('/outgoing/fr.php.net/manual/fr/ref.stream.php?referer=');">les fonctions <code>stream_*</code></a></li>
<li>Pour les sockets, se sont <a href="http://fr.php.net/manual/fr/ref.sockets.php" onclick="pageTracker._trackPageview('/outgoing/fr.php.net/manual/fr/ref.sockets.php?referer=');">les fonctions <code>socket_*</code></a></li>
</ul>
<p>Parmi celles-ci, il y a deux fonctions extrêmement utiles: <code>stream_select</code> et <code>socket_select</code>. Elles permettent d&#8217;attendre de nouvelles données respectivement depuis un flux et un socket.</p>
<p>Vous pouvez par exemple attendre deux flux de données en même temps avec <code>stream_select</code>. Si l&#8217;un des deux a de nouvelles informations, la fonction retourne un entier décrivant le nombre de flux qui ont eu de nouvelles notifications. Vous pouvez aussi ajouter un <em>timeout</em>, etc&#8230; De la même manière, vous pouvez attendre un ou plusieurs sockets avec <code>socket_select</code>.</p>
<p>Seulement, si vous travaillez à la fois avec des flux et des sockets&#8230; Comment faire?</p>
<ol>
<li>Vous pouvez très bien mettre des <em>timeout</em> à quelques dizaines de millisecondes, regarder pendant <code>x</code> ms le flux, <code>x</code> ms le socket, puis on recommence&#8230; C&#8217;est une solution comme une autre mais très peu propre, et qui ne sera jamais &laquo;&nbsp;instantanée&nbsp;&raquo;.</li>
<li>Vous pouvez utiliser un système, auquel vous vous connecterez en socket, qui écoutera un flux et dès que le flux recevra des données, il vous l&#8217;enverra par le socket. Ainsi, vous aurez que des sockets, vous pouvez donc utiliser <code>socket_select</code>.</li>
<li>Mais, pourquoi ne pas créer une fonction <code>socket_stream_select</code>, ou <code>stream_socket_select</code>, comme vous voulez, dans le coeur de PHP, qui transformera les flux et les sockets PHP en sockets systèmes pour les écouter avec la fonction C <code>select</code> ?</li>
</ol>
<p><span id="more-655"></span></p>
<h2>Une fonction <code>socket_stream_select</code></h2>
<p>Elle aurait très bien pu s&#8217;appeller <code>stream_socket_select</code> mais les fonctions <code>socket_*</code> étant présentes uniquement lorsque PHP est compilé avec <code>--enable-socket</code>, et que les flux sont toujours présents, a fait que mon choix s&#8217;est porté vers l&#8217;ajout d&#8217;une fonction à l&#8217;extension &laquo;&nbsp;socket&nbsp;&raquo; de PHP.</p>
<p>La fonction socket_stream_select ressemble à <a href="http://fr.php.net/socket_select" onclick="pageTracker._trackPageview('/outgoing/fr.php.net/socket_select?referer=');">socket_select</a> et <a href="http://fr.php.net/stream_select" onclick="pageTracker._trackPageview('/outgoing/fr.php.net/stream_select?referer=');">stream_select</a>, mais elle prend 8 paramètres, qui sont décrit après son prototype que voilà:</p>
<blockquote><p>int <strong>socket_stream_select</strong> ( array <em>&amp;$read_streams</em>, array <em>&amp;$read_sockets</em>, array <em>&amp;$write_streams</em>, array <em>&amp;$write_sockets</em>, array <em>&amp;$except_streams</em>, array <em>&amp;$except_sockets</em>, int <em>$tv_sec</em> [, int <em>$tv_usec</em>])</p></blockquote>
<ul>
<li><strong>$read_streams</strong><br />
Flux surveillés pour la lecture</li>
<li><strong>$read_sockets</strong><br />
Sockets surveillés pour la lecture</li>
<li><strong>$write_streams</strong><br />
Flux surveillés pour l&#8217;écriture</li>
<li><strong>$write_sockets</strong><br />
Sockets surveillés pour l&#8217;écriture</li>
<li><strong>$except_streams</strong><br />
Flux surveillés pour leurs exceptions</li>
<li><strong>$except_sockets</strong><br />
Sockets surveillés pour leurs exceptions</li>
<li>Les paramètres <strong>$tv_sec</strong> (en secondes) et <strong>$tv_usec</strong> (en millisecondes) forment le paramètre <em>timeout</em> (durée de vie). Le timeout est la durée maximale de temps avant que socket_stream_select() ne se termine. <strong>$tv_sec</strong> peut être zéro, ce qui fera que socket_stream_select() retournera immédiatement. C&#8217;est très pratique pour faire du polling (sondage). Si <strong>$tv_sec</strong> est NULL  (pas de timeout), socket_stream_select() peut se bloquer indéfiniment.</li>
</ul>
<h2>Installation de la fonction socket_stream_select</h2>
<p>Pour pouvoir bénéficier de la fonction socket_stream_select, vous devez utiliser votre propre version de PHP, que vous aurez préalablement patchée avec le patch pour socket_stream_select, puis compiler avec l&#8217;option &#8211;enable-socket.</p>
<p>Le patch se trouve à cette adresse:</p>
<ul>
<li><a href="http://www.d-sites.com/wp-content/uploads/2009/12/socket_stream_select.patch">http://www.d-sites.com/wp-content/uploads/2009/12/socket_stream_select.patch</a></li>
</ul>
<p>Dans le dossier des sources de PHP 5.3, il vous suffit d&#8217;exécuter ces deux commandes afin de créer cette fonction socket_stream_select dans le coeur de PHP:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">wget http://www.d-sites.com/wp-content/uploads/2009/12/socket_stream_select.patch -O socket_stream_select.patch
patch -p0 &lt; socket_stream_select.patch</pre></div></div>

<p>Bonne continuation. <img src='http://www.d-sites.com/wp-content/plugins/tango-smilies/tango/face-smile.png' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-sites.com/2010/02/27/socket_stream_select-attendre-un-flux-stream-et-un-socket-en-meme-temps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flux RSS 2.0 de Wordpress cassé</title>
		<link>http://www.d-sites.com/2010/02/14/flux-rss-2-0-de-wordpress-casse/</link>
		<comments>http://www.d-sites.com/2010/02/14/flux-rss-2-0-de-wordpress-casse/#comments</comments>
		<pubDate>Sun, 14 Feb 2010 10:00:22 +0000</pubDate>
		<dc:creator>Samuel ROZE</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[broken]]></category>
		<category><![CDATA[rss2]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.d-sites.com/?p=761</guid>
		<description><![CDATA[À l&#8217;heure actuelle, le flux RSS 2.0 fourni par Wordpress est cassé, il n&#8217;a pas correctement été généré. J&#8217;essaye de publier un nouvel article pour le regénérer, je désactive tous les caches et on verra
Edit 11h01: C&#8217;est en fait l&#8217;article HipHop pour PHP, qu&#8217;est-ce que c&#8217;est ? qui met la pagaille&#8230; Je le supprime puis [...]]]></description>
			<content:encoded><![CDATA[<p>À l&#8217;heure actuelle, le flux RSS 2.0 fourni par Wordpress est cassé, il n&#8217;a pas correctement été généré. J&#8217;essaye de publier un nouvel article pour le regénérer, je désactive tous les caches et on verra</p>
<p><strong>Edit 11h01:</strong> C&#8217;est en fait l&#8217;article <a href="http://www.d-sites.com/2010/02/03/hiphop-pour-php-quest-ce-que-cest/">HipHop pour PHP, qu&#8217;est-ce que c&#8217;est ?</a> qui met la pagaille&#8230; Je le supprime puis le remet.</p>
<p><strong>Edit 11h05:</strong> Une simple édition, mise à jour puis réédition et mise à jour a permis de remettre en marche le flux RSS. Plus d&#8217;alertes de <em>ismyblogworking.com</em> maintenant <img src='http://www.d-sites.com/wp-content/plugins/tango-smilies/tango/face-smile.png' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Edit 11h07:</strong> Tous les caches sont réactivés et le flux est toujours en état. C&#8217;est fait, désolé pour le dérangement.</p>
<p>Samuel.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-sites.com/2010/02/14/flux-rss-2-0-de-wordpress-casse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HipHop pour PHP, qu&#8217;est-ce que c&#8217;est ?</title>
		<link>http://www.d-sites.com/2010/02/03/hiphop-pour-php-quest-ce-que-cest/</link>
		<comments>http://www.d-sites.com/2010/02/03/hiphop-pour-php-quest-ce-que-cest/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 14:11:40 +0000</pubDate>
		<dc:creator>Samuel ROZE</dc:creator>
				<category><![CDATA[Actualités]]></category>
		<category><![CDATA[Nouveautées]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Performances]]></category>
		<category><![CDATA[Production]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[hiphop]]></category>
		<category><![CDATA[hphpi]]></category>
		<category><![CDATA[Hyper-PHP]]></category>

		<guid isPermaLink="false">http://www.d-sites.com/?p=755</guid>
		<description><![CDATA[Le nouveau projet Open Source pour PHP du moment, c&#8217;est bien HipHop, développé pour PHP, qui consiste à transformer le code PHP en C++ puis de le compiler en utilisant g++. Présenté dans l&#8217;article précédent Facebook &#38; PHP II: HipHop et HPHPi, voici de nouvelles informations, issues de la conférence de cette nuit.
Facebook qui utilise [...]]]></description>
			<content:encoded><![CDATA[<p>Le nouveau projet Open Source pour PHP du moment, c&#8217;est bien HipHop, développé pour PHP, qui consiste à transformer le code PHP en C++ puis de le compiler en utilisant g++. Présenté dans l&#8217;article précédent <a href="http://www.d-sites.com/2010/02/02/facebook-php-ii-hiphop-et-hphpi/">Facebook &amp; PHP II: HipHop et HPHPi</a>, voici de nouvelles informations, issues de <a href="http://www.ustream.tv/recorded/4409735" onclick="pageTracker._trackPageview('/outgoing/www.ustream.tv/recorded/4409735?referer=');">la conférence de cette nuit</a>.</p>
<p>Facebook qui utilise déjà HipHop sur 90% de ses serveurs a constaté:</p>
<ul>
<li>Sur les serveurs Web: <strong>50%</strong> de consommation CPU en moins pour un même trafic, par rapport à PHP 5.2 <strong>avec APC</strong></li>
<li>Sur les serveurs API: <strong>30%</strong> de consommation CPU en moins pour <strong>deux fois plus de trafic</strong></li>
</ul>
<p>HipHop transforme le code en C++ et le compile avec <code>g++</code> mais l&#8217;utilisateur n&#8217;a pas besoin de compiler à la main son code PHP avec un outils, tout reste comme avant, avec l&#8217;édition de fichiers PHP à la volée.</p>
<p>Néanmoins, les fonctionnalités qui ne seront pas disponibles:</p>
<ul>
<li>La fonction <code>eval</code></li>
<li>La fonction <code>create_function</code>, qui est du même acabit que <code>eval</code></li>
<li>La fonction <code>preg_replace</code>, avec le paramètre <code>e</code>, qui permet l&#8217;application de <code>eval</code> sur le résultat</li>
<li>De manière plus générale, l&#8217;ordre des objets ne peu pas être respecté, du fait d&#8217;une exécution non-linéaire du code. Ainsi, la fonction <code>function_exists</code> retourne la valeur vraie dans ce code:

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">function_exists</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'foo'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Vrai avec HipHop</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">// Faux avec PHP</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> foo <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
?<span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span></pre></div></div>

</li>
</ul>
<p>En plus de HipHop, l&#8217;équipe de Facebook a développé HPHPi, c&#8217;est un interpréteur PHP, il semblerait que ça soit grâce à lui qu&#8217;il ne sera pas nécessaire de compiler le code PHP. Il fait aussi des analyses du code pour y détecter des éventuelles erreurs dues à l&#8217;utilisation de HipHop et non de PHP.</p>
<p>HipHop embarque son propre serveur Web et n&#8217;est pas le moment pas compatible/prêt à fonctionner avec Apache ou un autre serveur. C&#8217;est pourquoi HipHop c&#8217;est un seul processus, contrairement à PHP mais qui utilise le principe de multi-thread, plus rapide que le multi-processus car créer un processus, c&#8217;est assez long par rapport aux threads. Comme HipHop utilise sont propre Web serveur allégé, il est plus rapide et permet de mieux gérer les ressources partagées entre les threads, il permet aussi de ne pas avoir de downtime, c&#8217;est-à-dire de temps d&#8217;inaccessibilité lors d&#8217;un redémarrage de HipHop.</p>
<p>HipHop est pour le moment basé sur PHP 5.2, et l&#8217;équipe de chez Facebook compte bien avancer encore plus sur ce projet et voici leur Roadmap, ou liste de choses à faire:</p>
<ul>
<li>Apport des fonctionnalités de PHP 5.3</li>
<li>Utilisation possible avec Apache</li>
<li>&#8230;et plus généralement la réduction de l&#8217;écart entre HipHop et PHP</li>
</ul>
<p>Le code source qui était sensé être mis en ligne cette nuit sera maintenant mis en ligne &laquo;&nbsp;soon&nbsp;&raquo; !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-sites.com/2010/02/03/hiphop-pour-php-quest-ce-que-cest/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Facebook &amp; PHP II: HipHop et HPHPi</title>
		<link>http://www.d-sites.com/2010/02/02/facebook-php-ii-hiphop-et-hphpi/</link>
		<comments>http://www.d-sites.com/2010/02/02/facebook-php-ii-hiphop-et-hphpi/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 19:02:29 +0000</pubDate>
		<dc:creator>Samuel ROZE</dc:creator>
				<category><![CDATA[Actualités]]></category>
		<category><![CDATA[Nouveautées]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Performances]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[hiphop]]></category>
		<category><![CDATA[hphpi]]></category>
		<category><![CDATA[Hyper-PHP]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.d-sites.com/?p=750</guid>
		<description><![CDATA[Apprenez en plus dans le nouvel article, HipHop pour PHP, qu&#8217;est-ce que c&#8217;est ?
Comme prévu et annoncé dans l&#8217;article précédent &#171;&#160;Facebook + PHP = Hyper-PHP&#160;&#187;, l&#8217;équipe de développement de Facebook a bien annoncer son projet de faire une sorte de compilateur pour PHP cet après-midi, vous pouvez la retrouver en anglais à cette adresse.
Ce n&#8217;est [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><strong>Apprenez en plus dans le nouvel article, <a href="http://www.d-sites.com/2010/02/03/hiphop-pour-php-quest-ce-que-cest/">HipHop pour PHP, qu&#8217;est-ce que c&#8217;est ?</a></strong></p>
<p>Comme prévu et annoncé dans l&#8217;<a href="http://www.d-sites.com/2010/02/02/facebook-php-hyper-php/">article précédent &laquo;&nbsp;Facebook + PHP = Hyper-PHP&nbsp;&raquo;</a>, l&#8217;équipe de développement de Facebook a bien annoncer son projet de faire une sorte de compilateur pour PHP cet après-midi, vous pouvez la retrouver en anglais à <a href="http://developers.facebook.com/news.php?blog=1&amp;story=358" onclick="pageTracker._trackPageview('/outgoing/developers.facebook.com/news.php?blog=1_amp_story=358&amp;referer=');">cette adresse</a>.</p>
<p>Ce n&#8217;est en fait pas sous le nom de Hyper-PHP que les développeurs de Facebook ont décider de sortir leur moteur, mais sous le nom de <strong>HipHop</strong>, accompagné de <strong>HPHPi</strong>.</p>
<p>Facebook n&#8217;a en réalité pas tout à fait réécrit PHP depuis le début, mais a décidé de créer une extension PHP qui <strong>transforme un code PHP en un code C++</strong>, puis qui le compile. HipHop, c&#8217;est le nom du module/programme/de l&#8217;extention PHP qui va transformer votre code PHP en code C++, puis le compiler en utilisant le traditionnel g++. HPHPi, lui, permet de ne pas avoir à mettre en place un système de compilation en plus, et d&#8217;avoir simplement a <strong>utiliser PHP comme avant</strong>, mais en beaucoup plus rapide.</p>
<p>Les chiffres ont néanmoins changer car on ne parle ici que d&#8217;une <strong>diminution de 50%</strong> &#8211; <em>contre 80% d&#8217;après les rumeurs précédentes</em> &#8211; <strong>de la consommation du CPU</strong>, sans même avancer de chiffres d&#8217;augmentation de performances, même si il est tout de même le sujet de tout l&#8217;article de Facebook, c&#8217;est donc sans douter que ça a très certainement un gros bénéfice, puisque <strong>Facebook.com l&#8217;utilise déjà sur près de 90% de ses serveurs</strong>!</p>
<p>À noter tout de même que dans l&#8217;article, il est précisé que des fonctions sont perdues, comme la fonction <code>eval</code> par exemple <em>(ce n&#8217;est pas plus mal pour celle-ci)</em> et que l&#8217;équipe de développement a réécrit de nombreuses extensions pour les adapter à leur HipHop PHP, ce qui fera sans aucun doute que cette innovation pour PHP ne sera pas ajoutée à PHP, contrairement aux caches OPCodes qui le seront pour PHP 6, et restera un projet distant externe à PHP pour un petit moment.</p>
<p>C&#8217;est donc à tester sans attendre, lorsque que les sources seront disponibles dans la nuit (fin d&#8217;après-midi chez nos amis américains) à cette adresse, qui ne marchera que lorsque les sources seront disponibles:</p>
<ul>
<li><a href="http://github.com/facebook/hiphop-php/" onclick="pageTracker._trackPageview('/outgoing/github.com/facebook/hiphop-php/?referer=');">http://github.com/facebook/hiphop-php/</a></li>
</ul>
<p>Dès possible je ferais des tests et des benchmarks, que je ne manquerait pas de diffuser ici.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-sites.com/2010/02/02/facebook-php-ii-hiphop-et-hphpi/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Facebook + PHP = Hyper-PHP</title>
		<link>http://www.d-sites.com/2010/02/02/facebook-php-hyper-php/</link>
		<comments>http://www.d-sites.com/2010/02/02/facebook-php-hyper-php/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 08:22:24 +0000</pubDate>
		<dc:creator>Samuel ROZE</dc:creator>
				<category><![CDATA[Actualités]]></category>
		<category><![CDATA[Nouveautées]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Performances]]></category>
		<category><![CDATA[Production]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Hyper-PHP]]></category>

		<guid isPermaLink="false">http://www.d-sites.com/?p=747</guid>
		<description><![CDATA[Lisez l&#8217;article plus récent: PHP &#38; Facebook II: HipHop et HPHPi &#187;
Voilà quelques temps que les rumeurs circulent, je vais donc faire un petit résumé de ce que l&#8217;on appelle Hyper-PHP, ou HPHP. Le site web de l&#8217;entreprise Facebook est composé à 90% de PHP, un langage de programmation tourné vers le Web, qui est [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><strong>Lisez l&#8217;article plus récent: <a href="http://www.d-sites.com/2010/02/02/facebook-php-ii-hiphop-et-hphpi/">PHP &amp; Facebook II: HipHop et HPHPi</a> &raquo;</strong></p>
<p>Voilà quelques temps que les rumeurs circulent, je vais donc faire un petit résumé de ce que l&#8217;on appelle Hyper-PHP, ou HPHP. Le site web de l&#8217;entreprise Facebook est composé à 90% de PHP, un langage de programmation tourné vers le Web, qui est ré-analysé depuis de début à chaque fois, c&#8217;est-à-dire qu&#8217;a chaque installation, le runtime PHP doit analyser toute la source pour faire tourner le script PHP, c&#8217;est ce qui lui confère une lenteur par rapport aux applications compilées.</p>
<p>Et bien Facebook aurait décidé, il y a 2 ans, de mettre un développeur à part entière sur ce projet, qui aurait pour but de créer une sorte de compilateur pour PHP. C&#8217;est en effet ce que ressort d&#8217;une <a href="http://therumpus.net/2010/01/conversations-about-the-internet-5-anonymous-facebook-employee/?full=yes" onclick="pageTracker._trackPageview('/outgoing/therumpus.net/2010/01/conversations-about-the-internet-5-anonymous-facebook-employee/?full=yes&amp;referer=');">interview anonyme recueilli par TheRumpus.net</a>.</p>
<blockquote><p>He is creating HPHP, Hyper-PHP, which means he’s literally rewriting the  entire language. […] So this engineer is converting the site from one  that runs on a scripted language to one that runs on a compiled  language.</p></blockquote>
<p>Alors que l&#8217;annonce doit avoir lieu aujourd&#8217;hui, le 2 février 2010, cette nouvelle mouture de PHP, si l&#8217;on peux l&#8217;appeler comme ça, va très certainement changer beaucoup de choses car d&#8217;après l&#8217;ingénieur Facebook chargé de ce projet, Hyper-PHP consommerait <strong>80% de CPU en moins</strong> tout en ayant des <strong>performances augmentées de 80%</strong> ! Il sera de plus partagé en Open Source, comme <a href="http://developers.facebook.com/opensource.php" onclick="pageTracker._trackPageview('/outgoing/developers.facebook.com/opensource.php?referer=');">un grand nombre de projets de Facebook</a>.</p>
<p>A bientôt pour la suite! <img src='http://www.d-sites.com/wp-content/plugins/tango-smilies/tango/face-smile.png' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-sites.com/2010/02/02/facebook-php-hyper-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Plusieurs fancybox simultanément</title>
		<link>http://www.d-sites.com/2010/01/29/plusieurs-fancybox-simultanement/</link>
		<comments>http://www.d-sites.com/2010/01/29/plusieurs-fancybox-simultanement/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 22:24:43 +0000</pubDate>
		<dc:creator>Samuel ROZE</dc:creator>
				<category><![CDATA[Affichage]]></category>
		<category><![CDATA[Nouveautées]]></category>
		<category><![CDATA[fancybox]]></category>
		<category><![CDATA[multiple]]></category>
		<category><![CDATA[simultanée]]></category>
		<category><![CDATA[simultaneous]]></category>

		<guid isPermaLink="false">http://www.d-sites.com/?p=737</guid>
		<description><![CDATA[Si vous ne connaissez pas, FancyBox est une petite librairie jQuery permettant de mettre en place de manière très simple de petites nouvelles petites sur-fenêtres, ou popup au sein de votre page Web. Le problème de FancyBox, en tous les cas pour la version actuelle, la 1.2.6, c&#8217;est qu&#8217;il est impossible de créer deux popups [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous ne connaissez pas, <a href="http://www.fancybox.net/" onclick="pageTracker._trackPageview('/outgoing/www.fancybox.net/?referer=');">FancyBox</a> est une petite librairie jQuery permettant de mettre en place de manière très simple de petites nouvelles petites sur-fenêtres, ou popup au sein de votre page Web. Le problème de FancyBox, en tous les cas pour la version actuelle, la 1.2.6, c&#8217;est qu&#8217;il est impossible de créer deux popups en même temps, par exemple on ouvre une popup &laquo;&nbsp;inline&nbsp;&raquo;, puis dans celle-ci on a par exemple une nouvelle popup, qui affiche des photos, hé bien c&#8217;est impossible&#8230;</p>
<p>Pour ça, j&#8217;ai donc développé une version &laquo;&nbsp;multiple&nbsp;&raquo; de FancyBox 1.2.6, dont le fichier JavaScript (et CSS) se nomment <code>jquery.fancybox-1.2.6.multiple.js</code> et <code>.css</code>. Vous pouvez les télécharger à ces adresses:</p>
<ul>
<li><a href="http://www.d-sites.com/wp-content/uploads/2010/01/jquery.fancybox-1.2.6.multiple.js">http://www.d-sites.com/wp-content/uploads/2010/01/jquery.fancybox-1.2.6.multiple.js</a></li>
<li><a href="http://www.d-sites.com/wp-content/uploads/2010/01/jquery.fancybox-1.2.6.multiple.css">http://www.d-sites.com/wp-content/uploads/2010/01/jquery.fancybox-1.2.6.multiple.css</a></li>
</ul>
<p>L&#8217;utilisation est quasi identique, sauf qu&#8217;un nouvel argument est possible lors de l&#8217;appel de la méthode fancybox sur un élément. Le deuxième argument attendu est le parent de la fancybox, ce qui permet ainsi de les différencier (un parent par fancybox), qui est par défaut <code>$('body')</code>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'a#i2'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fancybox</span><span style="color: #009900;">&#40;</span>
	<span style="color: #009900;">&#123;</span>
		hideOnContentClick<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">false</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> 
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'div#inline'</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>N&#8217;hésitez pas à me faire des retours. <img src='http://www.d-sites.com/wp-content/plugins/tango-smilies/tango/face-smile.png' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-sites.com/2010/01/29/plusieurs-fancybox-simultanement/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MyOnlineSSH: Version anglaise</title>
		<link>http://www.d-sites.com/2010/01/12/myonlinessh-version-anglaise/</link>
		<comments>http://www.d-sites.com/2010/01/12/myonlinessh-version-anglaise/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 23:29:14 +0000</pubDate>
		<dc:creator>Samuel ROZE</dc:creator>
				<category><![CDATA[Actualités]]></category>
		<category><![CDATA[D-Sites]]></category>
		<category><![CDATA[MyOnlineSSH]]></category>
		<category><![CDATA[Nouveautées]]></category>
		<category><![CDATA[Production]]></category>
		<category><![CDATA[php-gettext-edit]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[translation]]></category>

		<guid isPermaLink="false">http://www.d-sites.com/?p=726</guid>
		<description><![CDATA[La version anglaise de MyOnlineSSH est mise en ligne permettant à tous les anglophones de se connecter en SSH depuis leur navigateur Internet, éditée avec PHP-Gettext-Edit, un outils permettant la gestion extrêmement facile des fichiers de traduction d&#8217;une application Internet (dont la version 2, avec gestion de comptes utilisateurs ne devrait pas tarder).
]]></description>
			<content:encoded><![CDATA[<p>La <a href="http://www.myonlinessh.com/en/index.html" onclick="pageTracker._trackPageview('/outgoing/www.myonlinessh.com/en/index.html?referer=');">version anglaise</a> de <a href="http://www.d-sites.com/projets/myonlinessh/">MyOnlineSSH</a> est mise en ligne permettant à tous les anglophones de se connecter en SSH depuis leur navigateur Internet, éditée avec <a href="http://www.d-sites.com/projets/php-gettext-edit/">PHP-Gettext-Edit</a>, un outils permettant la gestion extrêmement facile des fichiers de traduction d&#8217;une application Internet (dont la version 2, avec gestion de comptes utilisateurs ne devrait pas tarder).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-sites.com/2010/01/12/myonlinessh-version-anglaise/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SVN: Créer des liens entre les dépôts avec svn:externals</title>
		<link>http://www.d-sites.com/2010/01/10/svn-creer-des-liens-entre-les-depots-avec-svnexternals/</link>
		<comments>http://www.d-sites.com/2010/01/10/svn-creer-des-liens-entre-les-depots-avec-svnexternals/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 11:41:37 +0000</pubDate>
		<dc:creator>Samuel ROZE</dc:creator>
				<category><![CDATA[Adm. Système]]></category>
		<category><![CDATA[Conception]]></category>
		<category><![CDATA[Production]]></category>
		<category><![CDATA[externals]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.d-sites.com/?p=719</guid>
		<description><![CDATA[Il est possible que dans certains projets, vous ayez besoin d&#8217;une librairie, d&#8217;une autre projet ou d&#8217;un dossier précis d&#8217;un autre projet, que vous l&#8217;ayez développer ou pas. Seulement, vous ce dont vous avez besoin est voué à être mis à jour régulièrement et que vous voulez profiter de manière automatique de ces mises à [...]]]></description>
			<content:encoded><![CDATA[<p>Il est possible que dans certains projets, vous ayez besoin d&#8217;une librairie, d&#8217;une autre projet ou d&#8217;un dossier précis d&#8217;un autre projet, que vous l&#8217;ayez développer ou pas. Seulement, vous ce dont vous avez besoin est voué à être mis à jour régulièrement et que vous voulez profiter de manière automatique de ces mises à jour, il y a une solution avec SVN: <code>svn:externals</code>.</p>
<p>Comme nous <a href="http://svnbook.red-bean.com/en/1.1/ch07s04.html" onclick="pageTracker._trackPageview('/outgoing/svnbook.red-bean.com/en/1.1/ch07s04.html?referer=');">le montre le &laquo;&nbsp;livre de SVN&nbsp;&raquo;</a>, <code>svn:externals</code> est une propriété associée à un dossier parent, qui permet de déclarer un dossier fils comme un contenu externe. Ainsi, vous pouvez configurer la propriété sur votre dossier <code>/project1/trunk/includes/</code> pour que le dossier fils <code>lib1</code> contienne <code>/project-lib1/trunk</code> par exemple.</p>
<p>Ainsi, à chaque mise à jour (<code>svn update</code>) de votre project1, votre client SVN ira voir à l&#8217;adresse associée pour le dossier <code>trunk/includes/lib1</code> pour vérifier qu&#8217;aucune nouvelle révision n&#8217;éxiste.</p>
<p><strong>Note:</strong> Vous pouvez très bien lors de la création de la propriété <code>svn:externals</code> spécifier une révision précise du dépôt externe, mais je ne voit pas vraiment l&#8217;intérêt dans le sens où, dans ce cas là, un <code>svn copy</code> ou un simple copier/coller suffit.<br />
<span id="more-719"></span><br />
<h2>Mettre <code>svn:externals</code> en place en ligne de commande</h2>
<p>Si vous avez une &laquo;&nbsp;working copy&nbsp;&raquo; de /project1/trunk, allez dans le dossier includes (cd includes) puis faites:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">svn propset svn:externals 'lib1 http://my.svn.repository.tld/project-lib1/trunk' .</pre></div></div>

<p>Puis <code>svn commit</code>. À partir de maintenant, toute personne faisant un <code>svn update</code> (ou <code>svn co</code>) ira chercher le contenu externe du dossier <code>includes/lib1</code> à l&#8217;adresse <code>http://my.svn.repository.tld/project-lib1/trunk</code>.</p>
<h2>Avec Subclipse, dans Eclipse IDE</h2>
<p>C&#8217;est le même principe, on fixe la propriété svn:externals, comme nous le montre <a href="http://www.thecrumb.com/2008/02/22/svnexternals-setting-in-cfeclipsesubclipse/" onclick="pageTracker._trackPageview('/outgoing/www.thecrumb.com/2008/02/22/svnexternals-setting-in-cfeclipsesubclipse/?referer=');">cet exellent article</a>:</p>
<p><a href="http://www.d-sites.com/wp-content/uploads/2010/01/svn-externals.gif"><img class="aligncenter size-full wp-image-722" title="svn-externals" src="http://www.d-sites.com/wp-content/uploads/2010/01/svn-externals.gif" alt="" width="500" height="320" /></a></p>
<p>Puis, dans &laquo;&nbsp;Property name&nbsp;&raquo;, mettez &laquo;&nbsp;svn:externals&nbsp;&raquo;, et dans &laquo;&nbsp;Property Contents&nbsp;&raquo;:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;">lib1 http://my.svn.repository.tld/project-lib1/trunk</pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.d-sites.com/2010/01/10/svn-creer-des-liens-entre-les-depots-avec-svnexternals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP-Gettext-Edit: Gérez vos traductions Gettext simplement!</title>
		<link>http://www.d-sites.com/2010/01/09/php-gettext-edit-gerez-vos-traductions-gettext-simplement/</link>
		<comments>http://www.d-sites.com/2010/01/09/php-gettext-edit-gerez-vos-traductions-gettext-simplement/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 15:12:46 +0000</pubDate>
		<dc:creator>Samuel ROZE</dc:creator>
				<category><![CDATA[Conception]]></category>
		<category><![CDATA[D-Sites]]></category>
		<category><![CDATA[Nouveautées]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Production]]></category>
		<category><![CDATA[php-gettext-edit]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[gettext]]></category>
		<category><![CDATA[traduction]]></category>

		<guid isPermaLink="false">http://www.d-sites.com/?p=708</guid>
		<description><![CDATA[PHP-Gettext-Edit est une application PHP qui permet de gérer très simplement les différentes traduction d&#8217;un site Internet par exemple, plus généralement d&#8217;une application (qu&#8217;elle soit écrite en PHP, C, Java, JavaScript&#8230;) utilisant des fichiers de traduction Gettext.
En utilisant PHP-Gettext-Edit, vous pouvez en quelques clics analyser votre code, faire les traductions et compiler les fichiers de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.php-gettext-edit.net" onclick="pageTracker._trackPageview('/outgoing/www.php-gettext-edit.net?referer=');">PHP-Gettext-Edit</a> est une application PHP qui permet de gérer très simplement les différentes traduction d&#8217;un site Internet par exemple, plus généralement d&#8217;une application (qu&#8217;elle soit écrite en PHP, C, Java, JavaScript&#8230;) utilisant des fichiers de traduction Gettext.</p>
<p>En utilisant PHP-Gettext-Edit, vous pouvez en quelques clics analyser votre code, faire les traductions et compiler les fichiers de traductions! PHP-Gettext-Edit vous permet de:</p>
<ul>
<li>Analyser un code source pour en générer un modèle de traduction, contenant toutes les chaines de caractère à traduire</li>
<li>Créer des fichiers de traduction à partir de modèles</li>
<li>Éditer directement depuis votre navigateur un fichier de traduction</li>
<li>Compiler en .mo ou en JSON un fichier de traduction</li>
<li>Contrôler la validité
<ul>
<li>Des modèles par rapport au code source</li>
<li>Des fichiers de traductions par rapport à leurs modèles</li>
<li>Des fichiers compilés par rapport à leurs fichiers de traduction</li>
<li>Des langues entre-elles par rapports aux fichiers qu&#8217;elles contiennent</li>
</ul>
</li>
<li>Éffectuer les opérations précédentes de manière collective</li>
</ul>
<p style="text-align: center;"><strong>Rendez-vous sur le site du projet, <a href="http://www.php-gettext-edit.net" onclick="pageTracker._trackPageview('/outgoing/www.php-gettext-edit.net?referer=');">www.php-gettext-edit.net</a> &raquo;</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-sites.com/2010/01/09/php-gettext-edit-gerez-vos-traductions-gettext-simplement/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MyOnlineSSH: Connectez-vous en SSH depuis un simple navigateur Internet</title>
		<link>http://www.d-sites.com/2010/01/03/myonlinessh-connectez-vous-en-ssh-depuis-un-simple-navigateur-internet/</link>
		<comments>http://www.d-sites.com/2010/01/03/myonlinessh-connectez-vous-en-ssh-depuis-un-simple-navigateur-internet/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 18:16:03 +0000</pubDate>
		<dc:creator>Samuel ROZE</dc:creator>
				<category><![CDATA[D-Sites]]></category>
		<category><![CDATA[Linux/Unix]]></category>
		<category><![CDATA[Nouveautées]]></category>
		<category><![CDATA[Production]]></category>
		<category><![CDATA[Shell]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[navigateur]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.d-sites.com/?p=704</guid>
		<description><![CDATA[Vous pouvez aussi voir la page du projet MyOnlineSSH.
MyOnlineSSH est un service permettant de se connecter à un serveur en SSH directement depuis votre navigateur. La configuration necessaire est très petite:

Un navigateur avec le JavaScript activé
Flash Player installé
Le port 80 ouvert

En effet, seul le port 80 suffit pour se connecter au SSH à l&#8217;aide de [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Vous pouvez aussi <a href="http://www.d-sites.com/projets/myonlinessh/">voir la page du projet MyOnlineSSH</a>.</strong></p>
<p><a href="http://www.myonlinessh.com" onclick="pageTracker._trackPageview('/outgoing/www.myonlinessh.com?referer=');">MyOnlineSSH</a> est un service permettant de se connecter à un serveur en SSH directement depuis votre navigateur. La configuration necessaire est très petite:</p>
<ul>
<li>Un navigateur avec le JavaScript activé</li>
<li>Flash Player installé</li>
<li>Le port 80 ouvert</li>
</ul>
<p>En effet, seul le port 80 suffit pour se connecter au SSH à l&#8217;aide de MyOnlineSSH comme vous pouvez le voir dans la page <a href="http://www.myonlinessh.com/help.html" onclick="pageTracker._trackPageview('/outgoing/www.myonlinessh.com/help.html?referer=');">Aide de MyOnlineSSH</a>.</p>
<p><img class="aligncenter" src="http://www.myonlinessh.com/template/images/examples/m_port-80.png" alt="" width="800" height="169" />Je vous invite donc à tester dès à présent MyOnlineSSH:</p>
<p style="text-align: center;"><a href="http://www.myonlinessh.com" onclick="pageTracker._trackPageview('/outgoing/www.myonlinessh.com?referer=');">http://www.myonlinessh.com</a></p>
<p style="text-align: left;">D&#8217;ici peu, une traduction anglaise de MyOnlineSSH verra le jour pour nos amis anglophones.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.d-sites.com/2010/01/03/myonlinessh-connectez-vous-en-ssh-depuis-un-simple-navigateur-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.270 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-09-10 04:10:43 -->
<!-- Compression = gzip -->