<?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; Développement</title>
	<atom:link href="http://www.ze-technology.com/category/developpement/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>Message au père-noël : de la programmation fonctionnelle, STP !</title>
		<link>http://www.ze-technology.com/2011/12/11/functionnal-programming/</link>
		<comments>http://www.ze-technology.com/2011/12/11/functionnal-programming/#comments</comments>
		<pubDate>Sun, 11 Dec 2011 12:59:35 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[chaitin]]></category>
		<category><![CDATA[FP]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[ocaml]]></category>
		<category><![CDATA[omega]]></category>
		<category><![CDATA[programmation fonctionnelle]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=742</guid>
		<description><![CDATA[.Une guise de petite entrée en matière, laissez moi vous faire compiler une ligne : factorielle n = product[1..n] Un tel snippet semblera peut-être quelque peu ambitieux pour ceux qui ne jurent que par la programmation impérative. PHP, Java, C++ et consort. C&#8217;est pourtant une ligne parfaitement valide en Haskell. Bienvenue dans l&#8217;univers de la [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color:#fff">.</span><br />Une guise de petite entrée en matière, laissez moi vous faire compiler une ligne :<br />
<code>factorielle n = product[1..n]</code></p>
<p>Un tel snippet semblera peut-être quelque peu ambitieux pour ceux qui ne jurent que par la programmation impérative. PHP, Java, C++ et consort. C&#8217;est pourtant une ligne parfaitement valide en <span class="code">Haskell</span>. Bienvenue dans l&#8217;univers de la programmation fonctionnelle. On ne gère plus des changements d&#8217;états, mais des évaluations de fonctions.</p>
<h3>Des bouquins</h3>
<p>C&#8217;est un univers que j&#8217;avais découvert avec <span class="code">OCaml</span> durant mes classes prépa, et voilà que je replonge dedans. La &laquo;&nbsp;faute&nbsp;&raquo; à un excellent bouquin, <em>&laquo;&nbsp;Hasard et complexité en mathématiques&nbsp;&raquo;</em>, écrit par Grégory-J Chaitin, le découvreur du nombre oméga &laquo;&nbsp;Ω&nbsp;&raquo; &#8211; mon nombre préféré, mais ce n&#8217;est pas le sujet ici.</p>
<p style="text-align: center"><img src="http://ecx.images-amazon.com/images/I/51dlBv4ii6L._SL500_AA300_.jpg" alt="Hasard et complexités en mathématiques" /></p>
<p>Dans son ouvrage, Grégory Chaitin avoue son amour sans nom à <span class="code">Lisp</span>, un des plus anciens langages apportant le paradigme de programmation fonctionnelle. Un amour qu&#8217;il a ma foi su fort bien communiquer puisqu&#8217;il ma donné envie de remettre en questions mes développements actuels.</p>
<p>J&#8217;étais assez rebuté par la lisibilité du code en <span class="code">Lisp</span> et après pas mal de lectures auxiliaires, je découvre à quel point <span class="code">Haskell</span> est séduisant autant dans ses concepts que dans sa syntaxe. Gérer des ensembles infinis, ou des nombres à précision potentiellement infinie n&#8217;est sans doute pas une situation que tous les développeurs rencontrent tous les jours, mais c&#8217;est toujours source de nombreux problèmes dès que le cas fait surface. Ceux qui aiment les problématiques de typage seront ravis d&#8217;apprendre que <span class="code">Haskell</span> est, parait-il, muni d&#8217;un système de typage à toute épreuve. J&#8217;aurai sans doute l&#8217;occasion de vous en dire un peu plus une fois mon apprentissage approfondi. Toujours est-il que j&#8217;ai commandé au monsieur tout-en-rouge le livre de la collection d&#8217;O'Reilly :</p>
<p style="text-align: center"><img src="http://akamaicovers.oreilly.com/images/9780596514983/cat.gif" alt="Haskell Oreilly"><br /><a href="http://shop.oreilly.com/product/9780596514983.do">Voir sur O&#8217;Reilly</a></p>
<p>Un autre langage, qui fait sans doute plus parler de lui : <span class="code">Scala</span>. Comme <span class="code">OCaml</span>, il est multi-paradigme. Utilisé notamment chez Twitter, LinkedIn, Foursquare ou d&#8217;autres grands noms de la toile, on peut sûrement expliquer cette nouvelle popularité par son interopérabilité avec <span class="code">Java</span>. Le langage fonctionne en effet tout aussi bien sous forme de scripts que de <em>bytecode</em> compilé à destination de la JVM, et il est en ce sens possible &#8211; et aisé &#8211; d&#8217;exécuter du code <span class="code">Java</span> depuis <span class="code">Scala</span>. Sans avoir encore trop farfouillé, j&#8217;ai tout de même l&#8217;impression que l&#8217;approche est assez différente de ce qu&#8217;on retrouve en <span class="code">Haskell</span> ; j&#8217;ai ainsi constaté que beaucoup de codes ne pouvait s&#8217;offrir le luxe de faire l&#8217;impasse sur le cas des valeurs <span class="code">null</span>. Peut-être du travail à faire du côté des <a href="http://fr.wikipedia.org/wiki/Monade_(informatique)">monades</a> ? J&#8217;en saurai sûrement davantage après une vraie découverte du langage et une lecture approfondie de cette autre idée cadeau :</p>
<p style="text-align: center"><img src="http://akamaicovers.oreilly.com/images/9780596155964/cat.gif" alt="Haskell Oreilly" /><br /><a href="http://shop.oreilly.com/product/9780596155964.do?sortby=publicationDate">Voir sur O&#8217;Reilly</a></p>
<h3>Pourquoi quitter le monde impératif ?</h3>
<p>Pourquoi un attrait si soudain pour la programmation fonctionnelle ? Pourquoi devriez-vous essayer, à votre tour, de voir autrement vos suites de <span class="code">0</span> et de <span class="code">1</span> ? En ce qui me concerne, le livre de Grégory Chaitin fut le véritable élément déclencheur, mais c&#8217;est aussi le désir de <em>remettre plein de choses en question</em>, de continuer à se <em>maintenir éveillé</em> sur ce qui se fait de nouveau (Scala), et peut-être de reprendre <em>davantage de plaisir</em> à développer en utilisant de nouvelles approches lorsque cela est nécessaire.</p>
<p>Je suis par exemple régulièrement amené à développer de nouveaux outils statistiques (des simples moyennes arithmétiques ou harmoniques aux matrices de covariance) et il n&#8217;est pas rare d&#8217;observer que le langage fait parfois partie integrante du problème que de la solution, pour reprendre l&#8217;expression de certains auteurs : dépassement de capacité des types <span class="code">integer</span> et assimilés ; jonglage fréquent entre types signés, non signés, flottants ; impossibilité de redéfinir l&#8217;opérateur &laquo;&nbsp;+&nbsp;&raquo; dans certains langages, etc.</p>
<p>Je ne sais pas vraiment ce que j&#8217;attends de la programmation fonctionnelle dans mon usage quotidien, ou si <span class="code">Haskell</span> sera strictement supérieur à <span class="code">Scala</span> dans mon cas ou s&#8217;il sera juste un complément pertinent. Des concepts tels que les <a href="http://en.wikipedia.org/wiki/Arrow_(computer_science)">flèches</a> me laissent penser que mes systèmes hautement concurrents pourraient s&#8217;en retrouver un peu plus concis et formels qu&#8217;avec les actuels langages impératifs. Alors, je vous donne rendez-vous pour de prochains billets  pour de nouvelles critiques !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2011/12/11/functionnal-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ant pour les projets PHP</title>
		<link>http://www.ze-technology.com/2010/03/06/ant-pour-les-projets-php/</link>
		<comments>http://www.ze-technology.com/2010/03/06/ant-pour-les-projets-php/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 09:58:40 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=667</guid>
		<description><![CDATA[Bien connu des développeurs Java, Ant est un build-system, à l&#8217;instar des Makefiles, permettant d&#8217;automatiser le déploiement d&#8217;un projet. Bon nombre de projets PHP ne sont en effet pas directement utilisables tout de suite après récupération des sources, et/ou nécessitent un certain nombre d&#8217;adaptation en fonction du serveur sur lequel le projet est déployé. Voire [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-668" title="Ant" src="http://www.ze-technology.com/wp-content/uploads/2010/03/ant.jpg" alt="Ant" width="600" height="115" /></p>
<p>Bien connu des développeurs Java, <strong>Ant</strong> est un <em>build-system</em>, à l&#8217;instar des <strong>Makefiles</strong>, permettant d&#8217;automatiser le déploiement d&#8217;un projet. Bon nombre de projets PHP ne sont en effet pas directement utilisables tout de suite après récupération des sources, et/ou nécessitent un certain nombre d&#8217;adaptation en fonction du serveur sur lequel le projet est déployé. Voire même, parfois, certaines tâches de maintenances assez rébarbatives pourraient être automatisées.</p>
<h3>Je ne connais même pas Ant !</h3>
<p>Pour ceux qui ne connaissent pas du tout <strong>Ant</strong> (et je ne parle pas d&#8217;un diminutif d&#8217;Antoine&#8230;), les rouages tournent concrètement grâce à un fichier XML classiquement nommé &laquo;&nbsp;build.xml&nbsp;&raquo;, comprenant une succession de balises du style :</p>
<pre>
<pre class="brush: xml; title: ; notranslate">
&lt;target name=&quot;NOM_REGLE&quot; depends=&quot;REGLES À EFFECTUER AUPARAVANT&quot;&gt;
     &lt;actions à effectuer ... /&gt;
&lt;/target&gt;
</pre>
</pre>
<p>Une fois ce fichier XML dûment rempli, vos règles s&#8217;exécutent par le biais d&#8217;une ligne de commande, après bien entendu avoir vérifié qu&#8217;Ant était bien installé sur votre machine :<br />
<code>&gt; ant NOM_REGLE</code></p>
<p>Il y a un certain nombre d&#8217;options disponibles, il est par exemple possible d&#8217;afficher les règles disponibles et leur rôle respectif via <span class="code">ant -p</span>  pour peu que vous ayez renseigné un champ &laquo;&nbsp;description&nbsp;&raquo; dans le fichier build.xml.</p>
<h3>Bon, et pour mon projet, ça sert à quoi ?</h3>
<p>Vous manquez d&#8217;imagination ? Voici à titre d&#8217;exemple la liste de règles que j&#8217;ai définie pour <a href="http://www.piwam.org">Piwam</a> :</p>
<ul>
<li><strong>init</strong>: Créer les répertoires manquants (log, cache, build&#8230;</li>
<li><strong>cc</strong>: Vider le cache</li>
<li><strong>doc</strong>: Générer la documentation Doxygen</li>
<li><strong>up</strong>: Update SVN</li>
<li><strong>phpcpd</strong>: Cherche le code PHP dupliqué au sein du projet</li>
<li><strong>pdepend</strong>: Génère un rapport de dépendance des classes</li>
<li><strong>phpcs</strong>: Vérifie la conformité du code avec une norme donnée</li>
<li><strong>lint</strong>: Vérifie qu&#8217;aucun fichier ne contient une erreur de syntaxe</li>
<li><strong>test</strong>: Lance les tests unitaires et fonctionnels</li>
<li><strong>css</strong>: Concatène l&#8217;ensemble des fichiers CSS en un seul grand fichier CSS</li>
<li><strong>css.min</strong>: Minimise la taille du gros fichier CSS. (appelle automatiquement la règle <strong>css</strong> en amont)</li>
<li><strong>clear</strong>: Nettoie les fichiers générés</li>
<li><strong>build</strong>: Lance l&#8217;ensemble des tâches permettant de vérifier la qualité du projet</li>
</ul>
<p>je vous invite à découvrir le fichier XML correspondant sur le <a href="http://code.google.com/p/piwam/source/browse/branches/1.2/build.xml">dépôt SVN du projet</a>. Ce fichier vous permet alors d&#8217;effectuer toute une batterie d&#8217;actions de manière extrêmement simplifiée. Ant est utilisé au sein d&#8217;une multitude d&#8217;outils du monde Java, des IDE (Eclipse&#8230;) aux outils d&#8217;intégration (Hudson, CruiseControl&#8230;). En pratique, ces outils vont aller lire votre fichier build.xml et appeler les commandes correspondant aux tests (dans mon cas : phpcs, pdepend, etc.) de manière 100% automatisée afin de vous permettre de suivre l&#8217;évolution de votre projet au fil des révisions.<br />
Sur ce, je vous laisse rédiger votre propre antfile, en attendant de vous présenter comment l&#8217;exploiter au sein d&#8217;<a href="http://hudson-ci.org/">Hudson</a> dans un projet article !</p>
<h3>Liens utiles</h3>
<ul>
<li><a href="http://ant.apache.org/">http://ant.apache.org</a> : Site officiel de Ant, par la fondation Apache</li>
<li><a href="http://phing.info/">http://phing.info</a> : Alternative à Ant spécialement conçue pour les outils PHP. (Basée sur Ant)</li>
<li><a href="http://hudson-ci.org/">http://hudson-ci.org</a> : Hudson, outil d&#8217;intégration continue</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2010/03/06/ant-pour-les-projets-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Supprimer toutes les Foreign Keys non nommées</title>
		<link>http://www.ze-technology.com/2009/12/05/supprimer-toutes-les-foreign-keys-non-nommees/</link>
		<comments>http://www.ze-technology.com/2009/12/05/supprimer-toutes-les-foreign-keys-non-nommees/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 23:45:34 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=529</guid>
		<description><![CDATA[Aux débuts de Piwam, les relations décrites dans le fichier schema.yml n&#8217;étaient pas nommées explicitement. Du coup, lors de la génération du schmilblick par Propel (Model + SQL), c&#8217;est InnoDB qui s&#8217;occupait de trouver un nom à ces relations. Aujourd&#8217;hui, j&#8217;écris le script permettant de migrer de Piwam 1.1.2 vers Piwam 1.2, script qui nécessite [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-530" title="fk_breaker" src="http://www.ze-technology.com/wp-content/uploads/2009/12/fk_breaker.jpg" alt="fk_breaker" width="600" height="100" /></p>
<p>Aux débuts de <a href="http://www.piwam.org">Piwam</a>, les relations décrites dans le fichier schema.yml n&#8217;étaient pas nommées explicitement. Du coup, lors de la génération du <em>schmilblick</em> par <a href="http://propel.phpdb.org/">Propel</a> (Model + SQL), c&#8217;est <a href="http://www.innodb.com/">InnoDB</a> qui s&#8217;occupait de trouver un nom à ces relations.</p>
<p>Aujourd&#8217;hui, j&#8217;écris le script permettant de migrer de <a href="http://www.piwam.org">Piwam</a> 1.1.2 vers <a href="http://www.piwam.org">Piwam</a> 1.2, script qui nécessite d&#8217;effectuer des opérations sur des <a href="http://fr.wikipedia.org/wiki/Cl%C3%A9_%C3%A9trang%C3%A8re"><em>foreign keys</em></a>, en l&#8217;occurence les supprimer&#8230; Comment diable alors faire référence à une clé étrangère dont on ne connait pas le nom ? Après avoir farfouillé partout sur la toile, il apparaît qu&#8217;il n&#8217;y a pas moult solutions pour arriver à mes fins. On se retrouve ainsi soit à écrire des procédures, soit à faire appel à l&#8217;<span style="font-family: courier">information_schema</span>. Enfin, certains proposent une utilisation de <span style="font-family: courier">SHOW TABLE</span> avec les arguments qui vont bien, puis parser la sortie pour récupérer les noms des contraintes. J&#8217;ai pu par ailleurs découvrir la version <a href="http://fr.wikipedia.org/wiki/Firebird_%28SGBDR%29">Firebird</a> :</p>
<p><code>SELECT RDB$CONSTRAINT_NAME<br />
FROM RDB$RELATION_CONSTRAINTS<br />
WHERE RDB$CONSTRAINT_NAME LIKE 'FK%' AND<br />
RDB$RELATION_NAME='MATABLEAMOI'<br />
ORDER BY RDB$CONSTRAINT_NAME</code></p>
<p>Ne pouvant exécuter de requêtes propres à Firebird, ni même de procédures (<a href="http://www.piwam.org">Piwam</a> tourne sous trop de types de serveurs différents aux configurations et autorisations bien différentes), j&#8217;ai finalement opté pour une solution ma foi fort simple. Accrochez-vous, c&#8217;est du SQL de très <span style="text-decoration: line-through;">haut</span> niveau (hum&#8230;).</p>
<p><code>CREATE TABLE ma_table_copy AS SELECT * FROM ma_table;</code></p>
<p>Une copie réalisée de la sorte a pour effet de ne copier que la structure et la table, en omettant indexes et contraintes. Lent, mais <strong>portable</strong> (je ne sais pas si l&#8217;adjectif est vraiment adapté) et <strong>pratique</strong>. Tout ça pour dire, bordel, une bonne fois pour toutes, n&#8217;oubliez pas de nommer vos contraintes <strong>explicitement</strong>, ça facilite grandement la maintenance !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/12/05/supprimer-toutes-les-foreign-keys-non-nommees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimisation de ses applications PHP : complément</title>
		<link>http://www.ze-technology.com/2009/09/21/optimisation-de-ses-applications-php-complement/</link>
		<comments>http://www.ze-technology.com/2009/09/21/optimisation-de-ses-applications-php-complement/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 06:00:56 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Bonnes Pratiques]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=292</guid>
		<description><![CDATA[Ce billet fait suite à l&#8217;article &#171;&#160;Comment je teste #2&#8243;, qui se finissait par quelques conseils sur le profiling et l&#8217;amélioration de son code. Je vous propose de consulter une présentation réalisée par un certain George S, présentation qui fait le tour d&#8217;un large panel de possibilité pour développer du code dit &#171;&#160;scalable&#160;&#187; en passant [...]]]></description>
			<content:encoded><![CDATA[<p>Ce billet fait suite à l&#8217;article &laquo;&nbsp;Comment je teste #2&#8243;, qui se finissait par quelques conseils sur le <em>profiling</em> et l&#8217;amélioration de son code. Je vous propose de consulter une présentation réalisée par un certain George S, présentation qui fait le tour d&#8217;un large panel de possibilité pour développer du code dit &laquo;&nbsp;<em>scalable</em>&nbsp;&raquo; en passant donc par la configuration du serveur, l&#8217;analyse des soucis et les bonnes pratiques à adopter.</p>
<div style="width:425px;text-align:center; margin: auto;" id="__ss_241691"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/techdude/building-scalable-php-applications" title="Building Scalable php applications">Building Scalable php applications</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=building-scalable-php-applications-1201306771494170-3&#038;rel=0&#038;stripped_title=building-scalable-php-applications" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=building-scalable-php-applications-1201306771494170-3&#038;rel=0&#038;stripped_title=building-scalable-php-applications" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">documents</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/techdude">techdude</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/09/21/optimisation-de-ses-applications-php-complement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple : Grand Central Dispatch en OpenSource</title>
		<link>http://www.ze-technology.com/2009/09/11/apple-grand-central-dispatch-en-opensource/</link>
		<comments>http://www.ze-technology.com/2009/09/11/apple-grand-central-dispatch-en-opensource/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 18:26:58 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Open-source]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=273</guid>
		<description><![CDATA[GCD, comme on l&#8217;appelle, est disponible sous forme d&#8217;une bibliothèque libre, publiée par la firme de Cupertino. GCD introduit avec Snow Leopard des possibilités aisées de parallèlisation, offrant aux développeurs un moyen simple de tirer partie des processeurs multi-coeurs. Site officiel]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-274" title="Libdispatch" src="http://www.ze-technology.com/wp-content/uploads/2009/09/libdispatch-icon.png" alt="Libdispatch" width="102" height="64" />GCD, comme on l&#8217;appelle, est disponible sous forme d&#8217;une bibliothèque libre, publiée par la firme de Cupertino. GCD introduit avec Snow Leopard des possibilités aisées de parallèlisation, offrant aux développeurs un moyen simple de tirer partie des processeurs multi-coeurs.<br />
<span style="background-color: #ffffff;"><a href="http://libdispatch.macosforge.org/">Site officiel</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/09/11/apple-grand-central-dispatch-en-opensource/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comment je teste #1 : L&#8217;indispensable virtualisation</title>
		<link>http://www.ze-technology.com/2009/09/10/comment-je-teste-1/</link>
		<comments>http://www.ze-technology.com/2009/09/10/comment-je-teste-1/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 06:00:50 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Bonnes Pratiques]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Méthode]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=220</guid>
		<description><![CDATA[Et c&#8217;est partie pour le premier article de la série. Après une entrée en matière, voici l&#8217;heure pour moi d&#8217;écrire, et pour vous de lire, l&#8217;épisode #1 de la série. Il n&#8217;y a pas d&#8217;ordre particulier, les sujets seront abordés assez indépendamment. En revanche, les articles seront illustrés d&#8217;un cas d&#8217;utilisation réel : Piwam. Aujourd&#8217;hui, [...]]]></description>
			<content:encoded><![CDATA[<p>Et c&#8217;est partie pour le premier article de la série. Après une <a href="http://www.ze-technology.com/2009/08/18/comment-je-teste-nouvelle-serie-darticles/">entrée en matière</a>, voici l&#8217;heure pour moi d&#8217;écrire, et pour vous de lire, l&#8217;épisode #1 de la série. Il n&#8217;y a pas d&#8217;ordre particulier, les sujets seront abordés assez indépendamment. En revanche, les articles seront illustrés d&#8217;un cas d&#8217;utilisation réel : <em><a href="http://www.piwam.org">Piwam</a></em>.</p>
<p>Aujourd&#8217;hui, je vous propose, et vous n&#8217;avez pas vraiment le choix, de découvrir la manière dont je teste le déploiement de l&#8217;application. Quels sont les pièges, les méthodes, bref, tout.</p>
<h3>Virtualiser, c&#8217;est la mode.</h3>
<p>Je ne possède pas de serveur de test. Et de toute manière, si j&#8217;en possédais un, je me servirais tout de même d&#8217;un système virtualisé, afin d&#8217;éviter d&#8217;utiliser inutilement le vrai serveur. Voilà donc le premier point : le déploiement est testé <strong>en conditions réelles</strong> au sein d&#8217;une machine virtuelle. Le système virtualisé est le plus proche possible de celui qui tourne en production : OS, noyau, mémoire disponible, swap, version de PHP, MySQL, fichiers de configuration&#8230;</p>
<p><img class="aligncenter size-full wp-image-240" title="VirtualBox" src="http://www.ze-technology.com/wp-content/uploads/2009/09/VirtualBox.png" alt="VirtualBox" width="600" height="358" /></p>
<p style="text-align: center;">Serveur Debian virtualisé, lancé depuis WindowsXP</p>
<p>Cette précaution permet de s&#8217;affranchir au maximum des mauvaises surprises liées à l&#8217;environnement. Imaginez un peu, votre système sur lequel vous développez possède le paramètre <a href="http://www.php.net/manual/fr/ini.core.php"><span style="font-family: courier">memory_limit</span></a> fixé à <span style="font-family: courier">128M</span>. Tout fonctionne parfaitement. Sans passer par le scénario de test de déploiement présenté ici, vous décidez de mettre tout de suite à jour la version en production. Tout fonctionne parfaitement. Erreur. Tout <strong>semble</strong> fonctionner parfaitement. C&#8217;était sans compter cet utilisateur qui, voulant lister 100 résultats de recherche par page, obtient une magnifique erreur d&#8217;explosion de la mémoire allouée, dont le maximum était fixé à <span style="font-family: courier">64M</span> sur le serveur de production.</p>
<h3>Quelle solution choisir ?</h3>
<p>Les solutions de virtualisation ont le vent en poupe actuellement. Citons <a href="http://www.vmware.com/fr/">VM Ware</a>, <a href="http://www.virtualbox.org/">VirtualBox</a>, <a href="http://www.parallels.com/fr/">Parallels</a> (MacOSX)&#8230; Pour laquelle opter ? Après un essai des différentes solutions, je ne peux que vous conseiller la solution de Sun (Oracle&#8230;) : <a href="http://www.virtualbox.org/">VirtualBox</a>. Disponible sous toutes les plate-formes, gratuite, libre, cette box magique satisfaira toute nos exigences. Une fois installée, installez votre système virtualisé (dans mon cas : Debian 5.0), installez / configurez vos applications (ici : Apache 2, PHP 5.3 + modules, MySQL 5.1, <a href="http://symfony-project.com">symfony</a> 1.2).</p>
<div class="note">
<h4>Note :</h4>
<p>Votre serveur virtualisé possède un accés à votre réseau local, et après un petit peu de configuration, il est également accéssible au sein de celui-ci (configuration de la carte réseau en mode <em>bridge</em>) à l&#8217;instar d&#8217;un véritable serveur.</div>
<h3>Envoyer ses fichiers au serveur</h3>
<p>C&#8217;est bien joli d&#8217;avoir maintenant une réplique de son serveur de production, mais comment y tester son application ? Plusieurs solutions :</p>
<ol>
<li><span style="text-decoration: line-through;">Vous recodez intégralement votre projet au sein de votre serveur virtualisé </span>(&#8230;)</li>
<li>Vous avez pris la bonne habitude d&#8217;utiliser un serveur <span style="text-decoration: line-through;">CVS,</span> <a href="http://subversion.tigris.org/">SVN</a> ou <a href="http://git-scm.com/">Git</a>. Dans cas là, un <em>commit</em> d&#8217;un côté et un <em>update</em> de l&#8217;autre fera très bien l&#8217;affaire.</li>
<li>Vous avez configuré un répertoire partagé sous VirtualBox, accessible aussi bien sous votre système hôte que depuis votre serveur. Placez donc juste l&#8217;archive du projet à tester dans ce répertoire.</li>
</ol>
<div class="warning">
<h4>Piège à éviter :</h4>
<p>Alors que je découvrais VirtualBox, la solution me paraissait si puissante que j&#8217;avais décidé d&#8217;en faire directement mon serveur de développement, via un répertoire partagé entre le système hôte (alors un Windows XP) et virtualisé (la Debian). Je continuais à développer sous Windows, mais le code était directement interprété par le serveur virtualisé. &laquo;&nbsp;<em>Chouette, je peux tester en temps réel en conditions réelles !</em>&laquo;&nbsp;. MAIS, un problème d&#8217;implémentation du &laquo;&nbsp;pilote&nbsp;&raquo; permettant le partage de répertoires rendait l&#8217;exécution d&#8217;un projet <a href="http://symfony-project.com">symfony</a> complexe extrêmement lente (plus de 30 secondes par page).</div>
<h3>Et maintenant, je fais quoi ?</h3>
<p>Pour résumer, vous possédez maintenant une version à jour de votre application, disponible sur un serveur (virtualisé), réplique parfaite (normalement) du serveur qui l&#8217;accueillera. Et bien, rappelez vous pourquoi vous venez de faire toutes ces manipulations : <strong>pour tester</strong> ! Suivez donc la procédure de déploiement de votre application que vous avez pu décrire au sein de votre documentation. Pour certains projets, il n&#8217;y a rien à faire de particulier, le projet est directement fonctionnel, mais pour d&#8217;autres, c&#8217;est le moment de vérifier que votre documentation, bêtement suivie à la lettre, permet d&#8217;arriver à une application qui fonctionne ; quelques exemples en vrac :</p>
<ul>
<li>Configuration de l&#8217;accès au SGBDR</li>
<li>Droits en lecture/écriture de certains répertoires</li>
<li>Mises à jour de fichiers</li>
<li>Exécution de requêtes pré-requises</li>
</ul>
<p>Si, une fois, les instructions de la documentation suivies, votre application ne fonctionne pas, c&#8217;est qu&#8217;il y a bien un <strong>problème</strong>, lié à la documentation ou à l&#8217;application.</p>
<h3>Youpi ! Ça fonctionne !</h3>
<p>Allons allons, calmons nous. Le déploiement du projet (ou de la mise à jour) fonctionne. Nous ne sommes pas encore en mesure de savoir si le projet fonctionne à 100% comme il devrait. Il vous faut maintenant torturer votre application dans tous les sens afin de déceler les <em>bugs</em> éventuels. Ou alors, et je vais peut-être créer une certaine frustration en m&#8217;arrêtant ici, c&#8217;est le moment de lancer vos 2000 tests unitaires et fonctionnels, qui vérifieront <strong>automatiquement</strong> le bon fonctionnement de votre application sur le système courant.</p>
<h3>Virtualiser, encore +</h3>
<p><img class="alignleft size-full wp-image-227" title="VServer" src="http://www.ze-technology.com/wp-content/uploads/2009/09/Image-10.png" alt="VServer" width="280" height="179" />Il est fort possible que votre application ne soit pas destinée à une plate-forme en particulier mais  à être déployée sur un grand nombre de serveurs très différents, aux versions et configurations de PHP différentes. Vous pouvez alors virtualiser d&#8217;autres OS, aux configurations différentes. Ou vous pouvez pousser la virtualisation encore plus loin en optant pour <a href="http://fr.wikipedia.org/wiki/Linux-VServer">VServer</a>. Une fois VServer installé sur votre serveur de test, vous serez en mesure d&#8217;isoler parfaitement différents &laquo;&nbsp;sous-environnements&nbsp;&raquo; différents et de <em>switcher</em> d&#8217;une configuration à une autre extrêmement facilement, rapidement, et de manière très fiable, sécurisée parfaitement isolée.</p>
<h3>En bref :</h3>
<ol>
<li>Installez VirtualBox</li>
<li>Virtualisez l&#8217;OS de votre choix</li>
<li>Configurez cet OS virtualisé</li>
<li>Testez, lancez vos tests</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/09/10/comment-je-teste-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comment je teste : nouvelle série d&#8217;articles</title>
		<link>http://www.ze-technology.com/2009/08/18/comment-je-teste-nouvelle-serie-darticles/</link>
		<comments>http://www.ze-technology.com/2009/08/18/comment-je-teste-nouvelle-serie-darticles/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 06:00:03 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Bonnes Pratiques]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Méthode]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=145</guid>
		<description><![CDATA[On regrette très vite de ne pas tester son application. Pendant les différentes phases du développement, il est on ne peut plus utile d&#8217;avoir un aperçu fidèle à la réalité de la qualité du produit qu&#8217;on s&#8217;apprête à délivrer. Tests unitaires, tests fonctionnels. tests de déploiement, tests de non-régression&#8230; la batterie n&#8217;est pas mince, et [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-161" title="Tester" src="http://www.ze-technology.com/wp-content/uploads/2009/08/tester.gif" alt="Tester" width="280" height="220" /></p>
<p>On regrette très vite de ne pas tester son application. Pendant les différentes phases du développement, il est on ne peut plus utile d&#8217;avoir un aperçu fidèle à la réalité de la qualité du produit qu&#8217;on s&#8217;apprête à délivrer.</p>
<p>Tests unitaires, tests fonctionnels. tests de déploiement, tests de non-régression&#8230; la batterie n&#8217;est pas mince, et automatiser un maximum de tâche s&#8217;avère payant.</p>
<p>La raison d&#8217;exister de cette nouvelle série d&#8217;article ne vas pas être de vous présenter une énième fois des cours théoriques sur les méthodologies de tests, mais de faire le point sur certaines problématiques, et d&#8217;apporter un élément de réponse parmi tant d&#8217;autres : le mien.</p>
<p>Vous retrouverez donc dès la rentrée une série d&#8217;articles sur cette passionnante thématique, permettant à chacun d&#8217;améliorer :</p>
<ul>
<li>sa productivité</li>
<li>la qualité de son travail</li>
<li>ses habitudes de développement</li>
</ul>
<p>Le premier article est prévu pour la fin du mois, avec un case-study sur la manière dont je teste le déploiement de <a href="http://www.ze-technology.com/category/piwam/"><a href="http://www.piwam.org">Piwam</a></a>.</p>
<p><strong>PS </strong>: Vous noterez les images très très drôles qui accompagneront dorénavant les articles dans la mesure du possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/08/18/comment-je-teste-nouvelle-serie-darticles/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Flex, PureMVC, AmfPHP&#8230; retour d&#8217;expérience</title>
		<link>http://www.ze-technology.com/2009/07/17/flex-puremvc-amfphp-retour-dexperience/</link>
		<comments>http://www.ze-technology.com/2009/07/17/flex-puremvc-amfphp-retour-dexperience/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 21:13:06 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Air]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=122</guid>
		<description><![CDATA[Cher ZeTechnology, C&#8217;est aujourd&#8217;hui que je viens d&#8217;achever ma première application Flex. Flex ? Kézako ? Pour ceux qui ne connaîtraient pas du tout ce terme, Flex est une technologie développée par Adobe, basée sur ActionScript. Flex permet de mettre en place facilement des RIA (application avec interface riche) et, nous le verrons, c&#8217;est dans [...]]]></description>
			<content:encoded><![CDATA[<p>Cher <strong>ZeTechnology</strong>,</p>
<p>C&#8217;est aujourd&#8217;hui que je viens d&#8217;achever ma première application <em>Flex</em>. <em>Flex</em> ? Kézako ? Pour ceux qui ne connaîtraient pas du tout ce terme, <em>Flex</em> est une technologie développée par <a href="http://www.adobe.com/fr/"><em>Adobe</em></a>, basée sur <em>ActionScript</em>. <em>Flex</em> permet de mettre en place facilement des <strong>RIA</strong> (application avec interface riche) et, nous le verrons, c&#8217;est dans ce domaine qu&#8217;il excelle. Concrètement, une fois votre projet <em>Flex</em> compilé vous obtenez une application exécutable au sein d&#8217;un player Flash (ou très facilement en tant qu&#8217;application <em>desktop</em> grâce à <em>Adobe Air</em>). Des exemples d&#8217;utilisation de <em>Flex</em> :</p>
<ul>
<li><a href="http://examples.adobe.com/flex2/consulting/styleexplorer/Flex2StyleExplorer.html">Un explorateur de styles</a></li>
<li><a href="http://www.adobe.com/devnet/flex/community_samples.html">Plein de samples sur les possibilités offertes</a></li>
<li><a href="http://flex.org/showcase/">Applications professionnelles</a></li>
</ul>
<p><em>PureMVC</em> est un framework <a href="http://fr.wikipedia.org/wiki/Mod%C3%A8le-Vue-Contr%C3%B4leur">MVC</a> à l&#8217;origine mis en place pour <em>ActionScript</em>, qui depuis a été porté pour différentes plate-formes : <em>PHP</em>, <em>ColdFusion</em>, <em>Java</em>&#8230;</p>
<ul>
<li><a href="http://puremvc.org/content/blogsection/9/176/">Exemples d&#8217;utilisations de PureMVC</a></li>
</ul>
<p><em>AmfPHP</em> est une implémentation <em>PHP</em> de <em>Action Message Format</em> (AMF). <em>AmfPHP</em> permet ainsi une communication entre votre application <em>Flex</em> et un service écrit en <em>PHP</em>.</p>
<ul>
<li><a href="http://www.amfphp.org/showcase.html">Exemples d&#8217;utilisations d&#8217;AmfPHP</a></li>
</ul>
<p>Maintenant que les présentations sont faites, l&#8217;heure des comptes est venue. Je viens de réaliser un gestionnaire de quizz. Mon application permet de gérer des listes de questionnaires, d&#8217;y ajouter des questions, réponses, images d&#8217;illustration&#8230; puis de &laquo;&nbsp;jouer&nbsp;&raquo; à ces questionnaires. L&#8217;application <em>Flex</em>, développée autour de <em>PureMVC</em>, appelle donc sans cesse mon script <em>PHP</em> s&#8217;occupant d&#8217;interagir avec <em>MySQL</em> pour enregistrer une nouvelle question, récupérer la liste des quizz, etc.</p>
<p><img class="aligncenter size-full wp-image-125" title="Skin Flex" src="http://www.ze-technology.com/wp-content/uploads/2009/07/skin18.png" alt="Skin Flex" width="500" height="201" /></p>
<p>Ce que je retiens au final, c&#8217;est :</p>
<p>Une <strong>mise en place</strong> très <strong>rapide</strong>. L&#8217;installation de Flex Builder (l&#8217;IDE est basé sur Eclipse, disponible par ailleurs directement sous forme de plug-in),  de <em>PureMVC</em> et d&#8217;<em>AmfPHP</em> est très rapide, sans mauvaise surprise. La seule surprise était un soucis de fonctionnement du plugin Flex Builder avec Eclipse 3.5, qui venait juste de sortir à ce moment là. On excusera donc <em>Adobe</em>. Attention toutefois, Flex Builder n&#8217;est <strong>PAS</strong> gratuit, sauf pour les étudiants (licence sur simple demande).</p>
<p>L&#8217;apprentissage de <em>Flex</em> est assez rapide, l&#8217;IDE aidant. Le bon lot de composants existant permet de concevoir visuellement ses interfaces en <em>Wysiwyg</em>. Un des concepts à bien maitriser pour bien positionner ses éléments est celui des <em>layouts</em> assurant la mise en place des éléments, concept qu&#8217;on retrouve déjà dans pas mal d&#8217;autres technos. On apprend très vite à apprécier une propriété, <span style="font-family: courier">[Bindable]</span>, permettant de lier constamment des éléments et valeurs. Le thème de base lassera très vite celui qui connaît bien la technologie mais est tout de même très <strong>agréable à l&#8217;oeil</strong>. Les composants sont immédiatement exploitables pour une vraie application, il y a même un système de barre de chargement lancée automatiquement au chargement votre interface.</p>
<p><em>PureMVC</em>, quant à lui, nécessite une phase un peu plus longue d&#8217;apprentissage. Les <strong>notifications</strong> sont utilisées à outrance, ce qui autorise le développeur à commettre les pires goritudes dans son code. Les différentes couches (modèle, vue, contrôleur) communiquement efficacement entre elles, mais dans le cadre d&#8217;un développement en équipe, il faut bien veiller à ce que chacun aie les même habitudes que son collègue. Autrement, c&#8217;est l&#8217;anarchie chez les notifications.</p>
<p>En ce qui concerne <em>AmfPHP</em>, c&#8217;est quasiment que du bonheur.  Ça fonctionne très vite, très bien, il est vraiment <strong>aisé</strong> et <strong>rapide</strong> de transmettre des objets, des tableaux, du <em>XML</em> entre <em>Flex</em> et <em>PHP</em>.</p>
<p>À noter, une communauté vraiment active, et une documentation que je considère &laquo;&nbsp;correcte&nbsp;&raquo;, qui manque peut être d&#8217;exemples. Au final, cette première expérience avec <em>Flex</em>, <em>AmfPHP</em> et <em>PureMVC</em> est <strong>plutôt concluante</strong>. <em>Flex</em> est à ce jour une solution qui commence à devenir assez mature. À retenir pour la réalisation d&#8217;<strong>interfaces homme-machine</strong>, de backoffices ou applications mettant en oeuvre génération de graphiques, saisie de données&#8230;</p>
<p>N&#8217;oubliez pas de visiter les démonstrations !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/07/17/flex-puremvc-amfphp-retour-dexperience/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Sismo, outil d&#8217;intégration continue pour fin juin ?</title>
		<link>http://www.ze-technology.com/2009/06/15/sismo-outil-dintegration-continue-pour-fin-juin/</link>
		<comments>http://www.ze-technology.com/2009/06/15/sismo-outil-dintegration-continue-pour-fin-juin/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 19:18:54 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Méthode]]></category>
		<category><![CDATA[Outil]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://www.ze-technology.com/?p=66</guid>
		<description><![CDATA[Sismo est un outil d&#8217;intégration continue développé par Sensio Labs (vous savez, symfony&#8230;). L&#8217;intégration continue, c&#8217;est la possibilité de détecter tout ce qui ne va pas au fil des versions. Du vert ou du rouge, ça passe ou ça ne passe pas, Sismo présente une interface très simple permettant de contrôler le comportement de ses [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-67" title="Sismo" src="http://www.ze-technology.com/wp-content/uploads/2009/06/Image-3.png" alt="Sismo" width="600" height="196" /></p>
<p>Sismo est un outil d&#8217;intégration continue développé par Sensio Labs (vous savez, <a href="http://symfony-project.com">symfony</a>&#8230;). L&#8217;intégration continue, c&#8217;est la possibilité de détecter tout ce qui ne va pas au fil des versions. Du vert ou du rouge, ça passe ou ça ne passe pas, Sismo présente une interface très simple permettant de contrôler le comportement de ses projets au fil des <em>releases</em>. Fabien Potencier a annoncé sur le groupe de discussion &laquo;&nbsp;<a href="http://groups.google.fr/group/symfony-devs/browse_thread/thread/d0c19cdc1f1a1338"><a href="http://symfony-project.com">symfony</a> developers</a>&laquo;&nbsp;, une éventuelle disponibilité de ce projet libre à la fin du mois de juin.</p>
<p>Une démonstration en ligne du produit est disponible sur <a href="http://ci.symfony-project.org/">http://ci.<a href="http://symfony-project.com">symfony</a>-project.org</a>. Hâte d&#8217;essayer cette alternative à <a href="http://code.google.com/p/xinc/">Xinc</a> et consorts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/06/15/sismo-outil-dintegration-continue-pour-fin-juin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nouveau modèle de release pour MySQL</title>
		<link>http://www.ze-technology.com/2009/06/11/nouveau-modele-de-release-pour-mysql/</link>
		<comments>http://www.ze-technology.com/2009/06/11/nouveau-modele-de-release-pour-mysql/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 20:07:00 +0000</pubDate>
		<dc:creator>Adrien Mogenet</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://adrien.frenchcomp.net/blog/?p=48</guid>
		<description><![CDATA[Il y a peu, une annonce était faite comme quoi MySQL travaillait sur un nouveau modèle de release. La trame générale de celui-ci est maintenant fixée et approuvée. Dans les grandes lignes, on retrouve : Le trunk est toujours laissé dans une qualité de beta Les GA sortiront tous les 12 à 18 mois Pas [...]]]></description>
			<content:encoded><![CDATA[<p>Il y a peu, une annonce était faite comme quoi <a href="http://ze-technology.blogspot.com/search/label/mysql">MySQL</a> travaillait sur un nouveau modèle de release. La trame générale de celui-ci est maintenant fixée et approuvée.</p>
<p><a href="http://blogs.sun.com/datacharmer/resource/milestone_release_4.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 579px; height: 386px;" src="http://blogs.sun.com/datacharmer/resource/milestone_release_4.png" alt="" border="0" /></a>Dans les grandes lignes, on retrouve :</p>
<ul>
<li>Le <span style="font-style: italic;">trunk</span> est toujours laissé dans une qualité de beta</li>
<li>Les <span style="font-style: italic;">GA</span> sortiront tous les 12 à 18 mois</li>
<li>Pas plus de 2 releases avec un support actif</li>
<li>Les milestones commencent lors de <span style="font-style: italic;">beta</span> (jamais lors d&#8217;<span style="font-style: italic;">alpha</span>) par un merge entre le <span style="font-style: italic;">trunk</span> et le <span style="font-style: italic;">stage tree</span>.</li>
</ul>
<p>Pourquoi cet article ? Pas seulement pour relayer l&#8217;actualité <a href="http://ze-technology.blogspot.com/search/label/mysql">MySQL</a>, mais aussi pour tenter de sensibiliser un maximum de lecteurs sur l&#8217;importance d&#8217;un modèle de release adapté. Pour un logiciel prétendant à un minimum d&#8217;évolutions et d&#8217;activité, il est capital de trouver un compromis entre ce que je nommerai la rétro-utilisabilité et la publication des nouvelles versions. J&#8217;entends par &laquo;&nbsp;rétro-utilisabilité&nbsp;&raquo; le fait d&#8217;assurer aux utilisateurs des versions passées un support, un moyen de passer aux versions supérieures efficacement.</p>
<p>Source : <a href="http://blogs.sun.com/datacharmer/entry/mysql_has_a_new_release">Planet MySQL (En)</a>
<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1394095790770446638-7385600373382270397?l=ze-technology.blogspot.com'/></div>
]]></content:encoded>
			<wfw:commentRss>http://www.ze-technology.com/2009/06/11/nouveau-modele-de-release-pour-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

