<?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>Trinidev</title>
	<atom:link href="http://www.trinidev.fr/feed" rel="self" type="application/rss+xml" />
	<link>http://www.trinidev.fr</link>
	<description>Revue de toutes les technos du Web... et d&#039;ailleurs</description>
	<lastBuildDate>Fri, 30 Sep 2011 16:48:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Yii Framework &#8211; Une extension pour la mise en cache des data providers (et plus encore&#8230;)</title>
		<link>http://www.trinidev.fr/2011/08/yii-framework-une-extension-pour-la-mise-en-cache-des-data-providers/</link>
		<comments>http://www.trinidev.fr/2011/08/yii-framework-une-extension-pour-la-mise-en-cache-des-data-providers/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 14:05:40 +0000</pubDate>
		<dc:creator>Alban Jubert</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Yii framework]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=1294</guid>
		<description><![CDATA[
De retour avec une petite extension pour Yii Framework concoctée par votre serviteur.
Yii 1.1 a introduit un certain nombre de classes assez pratiques dont une classe reprenant le concept de data provider pour les active record : CActiveDataProvider.
Cette classe est intensivement utilisée par certains widgets dont CGridView en particulier.
Par ailleurs, Yii 1.1.7 permet désormais de gérer [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-medium wp-image-1225" title="Yii Framework" src="http://www.trinidev.fr/wp-content/uploads/2010/11/yii-300x64.png" alt="Yii Framework" width="300" height="64" /></p>
<p>De retour avec une petite <strong>extension</strong> pour <strong>Yii Framework</strong> concoctée par votre serviteur.</p>
<p>Yii 1.1 a introduit un certain nombre de classes assez pratiques dont une classe reprenant le concept de data provider pour les active record : <a href="http://www.yiiframework.com/doc/api/1.1/CActiveDataProvider" target="_blank"><strong>CActiveDataProvider</strong></a>.</p>
<p>Cette classe est intensivement utilisée par certains widgets dont <a href="http://www.yiiframework.com/doc/api/1.1/CGridView" target="_blank">CGridView</a> en particulier.</p>
<p>Par ailleurs, <strong>Yii 1.1.7</strong> permet désormais de gérer <strong><a href="http://www.yiiframework.com/doc/guide/1.1/en/caching.data#query-caching" target="_blank">la mise en cache aisée des requêtes des Active Record</a></strong> permettant des gains de performance et un soulagement de la base de données. Malheureusement,  <a href="http://www.yiiframework.com/doc/api/1.1/CActiveDataProvider" target="_blank">CActiveDataProvider</a> n&#8217;a pas été adaptée pour tirer partie de cette possibilité. Qui plus est, cette classe comporte un bug assez embêtant : dès lors que votre Active Record utilise des critères &#8216;having&#8217; et/ou &#8216;group&#8217;, le nombre d&#8217;éléments résultants calculés par le data provider n&#8217;en tient pas compte (produisant des effets indésirables, notamment sur les paginateurs qui affichent un nombre de pages incohérent).</p>
<p>En attendant d&#8217;éventuelles évolutions et corrections natives, vous pouvez utiliser mon extension <strong><a href="http://www.yiiframework.com/extension/eactivedataproviderex/">EActiveDataProviderEx</a> </strong>afin de pouvoir bénéficier du cache et de la correction du compte du nombre d&#8217;éléments à <a href="http://www.yiiframework.com/extension/eactivedataproviderex/">télécharger sur le site officiel de Yii Framework</a>.</p>
<p> <span id="more-1294"></span><br />
<h3>Configuration requise</h3>
<p>Yii Framework 1.1.7 ou supérieur</p>
<h3>Installation</h3>
<p>Extraire le fichier dans <code>protected/components</code><br />Assurez-vous d&#8217;importer le composant en utilisant le paramètre <code>import</code> du fichier de configuration</p>
<h3>Utilisation</h3>
<p>Utilisez EActiveDataProviderEx de la même manière que CActiveDataPrivider.<br/>En plus, vous pouvez spécifier une propriété cache sous la forme d&#8217;un tableau de deux paramètres :<code> array($cache_duration, $cache_dependency)</code><br/><code>$cache_duration</code> est la durée du cache exprimé en secondes<br/><code>$cache_dependency</code> est une objet CCacheDependency optionnel</p>
<h3>Exemple</h3>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1294code2'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p12942"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p1294code2"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$criteria</span><span style="color: #339933;">=</span><span style="color: #000000; font-weight: bold;">new</span> CDbCriteria<span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// add some criteria here</span>
<span style="color: #000088;">$dependency</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> CDbCacheDependency<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SELECT MAX(UNIX_TIMESTAMP(`modified`)) FROM yourModelTable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Optional</span>
<span style="color: #000088;">$activeDataProviderEx</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> EActiveDataProviderEx<span style="color: #009900;">&#40;</span>yourModel<span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
     <span style="color: #0000ff;">'criteria'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$criteria</span><span style="color: #339933;">,</span>
     <span style="color: #0000ff;">'pagination'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'pageSize'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
     <span style="color: #0000ff;">'sort'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'defaultOrder'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'`t`.`name`'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
     <span style="color: #0000ff;">'cache'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3600</span><span style="color: #339933;">,</span> <span style="color: #000088;">$dependency</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2011%2F08%2Fyii-framework-une-extension-pour-la-mise-en-cache-des-data-providers%2F&amp;title=Yii%20Framework%20%26%238211%3B%20Une%20extension%20pour%20la%20mise%20en%20cache%20des%20data%20providers%20%28et%20plus%20encore%26%238230%3B%29" id="wpa2a_2">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2011/08/yii-framework-une-extension-pour-la-mise-en-cache-des-data-providers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP :  c&#8217;est de l&#8217;hébreu&#8230;</title>
		<link>http://www.trinidev.fr/2011/01/php-cest-de-lhebreu/</link>
		<comments>http://www.trinidev.fr/2011/01/php-cest-de-lhebreu/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 12:08:43 +0000</pubDate>
		<dc:creator>Alban Jubert</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Insolite]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=1268</guid>
		<description><![CDATA[&#8230;et ce n&#8217;est pas qu&#8217;une expression  
Petite aventure qui m&#8217;est arrivée cette semaine. Je testais une nouvelle extension Yii lorsque, une fois installée sur mon serveur, j&#8217;obtiens ce message d&#8217;erreur en la testant :
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM
Woaou ! Je vous demande pardon ? Ca y-est, mon serveur devient dingue ou alors je suis [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;et ce n&#8217;est pas qu&#8217;une expression <img src='http://www.trinidev.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Petite aventure qui m&#8217;est arrivée cette semaine. Je testais une nouvelle extension Yii lorsque, une fois installée sur mon serveur, j&#8217;obtiens ce message d&#8217;erreur en la testant :</p>
<p><strong><code>Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM</code></strong></p>
<p>Woaou ! Je vous demande pardon ? Ca y-est, mon serveur devient dingue ou alors je suis dans un épisode de Fringe&#8230;</p>
<p>Après quelques recherches sur le net, en réalité, il s&#8217;avère que mon serveur n&#8217;y est pour rien (pas plus de Massive Dynamics). Il s&#8217;agissait en fait d&#8217;une petite erreur de syntaxe dans l&#8217;extension qui, si elle est exécutée sur un PHP avec APC activée (optimiseur de code), déclenche le dit message.</p>
<p><strong>Explication :</strong></p>
<p>Le message d&#8217;erreur est en hébreu, littéralement. Deux développeurs de PHP 3 et Zend Engine 0.5 (<a title="Zeev Suraski" href="http://fr.wikipedia.org/w/index.php?title=Zeev_Suraski&amp;action=edit">Zeev Suraski</a> et <a title="Andi Gutmans" href="http://fr.wikipedia.org/wiki/Andi_Gutmans">Andi Gutmans</a>) qui sont les auteurs du message en quetion sont d&#8217;origine israélienne. En traduisant, T_PAAMAYIM_NEKUDOTAYIM veut dire &laquo;&nbsp;Token double deux-points&nbsp;&raquo;. Initialement, il ne devait s&#8217;agir que d&#8217;un message à destination interne. Seulement voila, dans certaines conditions, le message fait surface.</p>
<p>En l&#8217;occurrence, dans mon cas, il s&#8217;agissait d&#8217;une mauvaise utilisation d&#8217;un accès à une méthode statique d&#8217;une classe. Pour les non-familiers avec le concept, <a href="http://www.php.net/manual/fr/language.oop5.paamayim-nekudotayim.php">un petit tour vers la documentation officielle s&#8217;impose</a>. Par exemple dans Yii, pour ne pas être obligé d&#8217;instancer un nouvel objet AR, on peut accéder à la méthode <code>model</code> grace à la notation <code><em>NomClasseAR</em>::model()</code> (notez les doubles deux-points). APC cependant ne semble pas trop apprécier le fait d&#8217;accéder à ces méthodes via une variable plutôt que directement via le nom de la classe (normalement supporté depuis PHP 5.3). Un code comme <code>$model::model()</code> (ou $model contient le nom de la classe) provoque le fameux message. Dans ce cas, pas le choix, il faut instancier un objet via <code>new $model</code> qui retourne le modèle en question.</p>
<p>Si les voyages forment la jeunesse, PHP forme aux langues étrangères <img src='http://www.trinidev.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2011%2F01%2Fphp-cest-de-lhebreu%2F&amp;title=PHP%20%3A%20%20c%26%238217%3Best%20de%20l%26%238217%3Bh%C3%A9breu%26%238230%3B" id="wpa2a_4">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2011/01/php-cest-de-lhebreu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii news &#8211; Nouveau tutorial &#171;&#160;barre de progression&#160;&#187;</title>
		<link>http://www.trinidev.fr/2010/12/yii-news-nouveau-tutorial-barre-de-progression/</link>
		<comments>http://www.trinidev.fr/2010/12/yii-news-nouveau-tutorial-barre-de-progression/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 13:27:08 +0000</pubDate>
		<dc:creator>Alban Jubert</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Mise à jour]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Yii framework]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=1261</guid>
		<description><![CDATA[
Bon. Le blog a été particulièrement calme ces derniers temps&#8230; On va tenter de le ranimer un peu  
Quelques nouvelles de mon Framework PHP préféré (et j&#8217;espère le votre aussi).
Yii 1.1 continu à évoluer en intégrant à chaque version sont lot d&#8217;améliorations et corrections. A noter que la prochaine version 1.1.6 se verra dotée [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-medium wp-image-1225" title="Yii Framework" src="http://www.trinidev.fr/wp-content/uploads/2010/11/yii-300x64.png" alt="Yii Framework" width="300" height="64" /></p>
<p>Bon. Le blog a été particulièrement calme ces derniers temps&#8230; On va tenter de le ranimer un peu <img src='http://www.trinidev.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Quelques nouvelles de mon Framework PHP préféré (et j&#8217;espère le votre aussi).</p>
<p>Yii 1.1 continu à évoluer en intégrant à chaque version sont lot d&#8217;<a href="http://www.yiiframework.com/files/CHANGELOG-1.1.5.txt" target="_blank">améliorations et corrections</a>. A noter que la prochaine version 1.1.6 se verra dotée d&#8217;un bien pratique générateur de requêtes.</p>
<p>Le site de Yii Framework a également connu une petite révolution en octobre dernier en changeant son thème graphique (il était temps). J&#8217;apprécie particulièrement la section <a href="http://www.yiiframework.com/doc/api/" target="_blank">référence à l&#8217;API</a> très bien repensée (avec affichage des portions de code de chaque méthode, super idée).</p>
<p>Signe que ce framework rencontre de plus en plus d&#8217;adeptes, le nombre d&#8217;extensions publiées est en littérale explosion. Bien sûre, le niveau de qualité et d&#8217;intérêt n&#8217;est pas toujours au rendez-vous, mais on trouve quelques perles bien pratiques pour certains projets, notamment des projets de partage de générateurs de code pour Gii dont certains sont très prometteurs (<a href="http://www.yiiframework.com/extension/giix/" target="_blank">Giix</a>).</p>
<p>Mon extension personnelle <a style="color: #2970a6; text-decoration: none; padding: 0px; margin: 0px;" title="CSaveRelationsBehavior" href="http://www.yiiframework.com/extension/save-relations-ar-behavior" target="_blank"><strong>CSaveRelationsBehavior</strong></a> n&#8217;a guère évoluée. Quelques optimisation et correctifs sont en préparation et son utilisation au quotidien dans le cadre de mes projets professionnels actuels se révèle maintenant indispensable.</p>
<p>Enfin, chose promise depuis un bout de temps, la section <strong>Tutoriaux</strong> du blog vient de s&#8217;enrichir d&#8217;une nouvelle page : <a href="http://www.trinidev.fr/tutoriaux/yii-une-barre-de-progression-pour-les-processus-longs/">Yii : Une barre de progression pour les processus longs</a>. Vous y découvrirez comment faire patienter élégamment vos utilisateurs pendant le traitement de tâches lourdes. Bonne lecture et vos suggestions sont toujours les bienvenues.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2010%2F12%2Fyii-news-nouveau-tutorial-barre-de-progression%2F&amp;title=Yii%20news%20%26%238211%3B%20Nouveau%20tutorial%20%26laquo%3B%26nbsp%3Bbarre%20de%20progression%26nbsp%3B%26raquo%3B" id="wpa2a_6">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2010/12/yii-news-nouveau-tutorial-barre-de-progression/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Open Source Media Framework (OSMF)</title>
		<link>http://www.trinidev.fr/2010/06/open-source-media-framework-osmf/</link>
		<comments>http://www.trinidev.fr/2010/06/open-source-media-framework-osmf/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 08:48:24 +0000</pubDate>
		<dc:creator>Pascal Achard</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Divers]]></category>
		<category><![CDATA[Technologies coté client]]></category>
		<category><![CDATA[Adobe Flash Platform]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[OSMF]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=1217</guid>
		<description><![CDATA[
OSMF (Open Source Media Framework) est, comme son nom l&#8217;indique, un framework open source (qui a dit qu&#8217;Adobe proposait que des solutions propriétaires ?   ) qui permet aux développeurs de réaliser des lecteurs vidéos et des applications basées sur la solution Adobe® Flash® Platform.
Pour un dev Flash, c&#8217;est n&#8217;est pas très compliqué de faire [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://opensource.adobe.com/wiki/display/osmf/Open+Source+Media+Framework" target="_blank"><img class="alignnone size-full wp-image-1219" title="OSMF" src="http://www.trinidev.fr/wp-content/uploads/2010/06/OSMF.jpg" alt="OSMF" width="600" height="93" /></a></p>
<p><a href="http://opensource.adobe.com/wiki/display/osmf/Open+Source+Media+Framework" target="_blank">OSMF</a> (Open Source Media Framework) est, comme son nom l&#8217;indique, un framework open source (qui a dit qu&#8217;Adobe proposait que des solutions propriétaires ? <img src='http://www.trinidev.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) qui permet aux développeurs de réaliser des lecteurs vidéos et des applications basées sur la solution <a href="http://www.adobe.com/flashplatform/" target="_blank">Adobe® Flash® Platform</a>.</p>
<p>Pour un dev Flash, c&#8217;est n&#8217;est pas très compliqué de faire un player vidéo tant que les fonctionnalités restes basiques : play, pause, stop, scrub, volume&#8230; Mais ça se complique sérieusement dés qu&#8217;on veut ajouter des fonctionnalités plus poussées comme : sous-titres, playlists, HD, publicités et surtout du vrai streaming&#8230; C&#8217;est là que vient se positionner OSMF. Adobe à pour objectifs de proposer une solution robuste et éprouvée qui permet d&#8217;accélérer le temps de développement.<br />
La finalité de cet outil c&#8217;est de définir des &laquo;&nbsp;standards&nbsp;&raquo; de développement s&#8217;intégrant à <a href="http://www.openscreenproject.org/about/">Open Screen Project</a>.</p>
<p>L&#8217;intérêt que je vois à utiliser OSMF c&#8217;est de pouvoir intégrer rapidement et facilement un player vidéo riche à  mes développements grâce à une API simple est claire. Je vais faire quelques tests pour voir si ça tient ses promesses.</p>
<p>[Edit] Le <a href="http://www.osmf.org/" target="_blank">site</a> dédié.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2010%2F06%2Fopen-source-media-framework-osmf%2F&amp;title=Open%20Source%20Media%20Framework%20%28OSMF%29" id="wpa2a_8">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2010/06/open-source-media-framework-osmf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RobotLegs, un framework Flash/Flex/Air 100% AS3</title>
		<link>http://www.trinidev.fr/2010/05/robotlegs-un-framework-flashflexair-100-as3/</link>
		<comments>http://www.trinidev.fr/2010/05/robotlegs-un-framework-flashflexair-100-as3/#comments</comments>
		<pubDate>Thu, 20 May 2010 15:31:00 +0000</pubDate>
		<dc:creator>Pascal Achard</dc:creator>
				<category><![CDATA[Adobe Air]]></category>
		<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Technologies coté client]]></category>
		<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[robotlegs]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=1206</guid>
		<description><![CDATA[
Robotlegs est un framework AS3 basé sur une micro-architecture MVC-S 100% AS3 pour Flash, Flex et Air. Il y a eu beaucoup de buzz sur Twitter de la part de la communauté Flash/Flex (merci à @Palleas) concernant Robotlegs du coup je m&#8217;y suis intéressé.
Ce framework m&#8217;a tout de suite fait penser à PureMVC mais en plus [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.robotlegs.org/" target="_blank"><img class="alignnone size-full wp-image-1207" title="robotlegs" src="http://www.trinidev.fr/wp-content/uploads/2010/05/robotlegs.jpg" alt="robotlegs" width="600" height="111" /></a></p>
<p><a href="http://www.robotlegs.org/" target="_blank">Robotlegs</a> est un framework AS3 basé sur une micro-architecture MVC-S 100% AS3 pour Flash, Flex et Air. Il y a eu beaucoup de buzz sur Twitter de la part de la communauté Flash/Flex (merci à @Palleas) concernant Robotlegs du coup je m&#8217;y suis intéressé.</p>
<p>Ce framework m&#8217;a tout de suite fait penser à <a href="http://puremvc.org/" target="_blank">PureMVC</a> mais en plus accessible. Contrairement à PureMVC, Robotlegs utilise le model événementiel intégré à l&#8217;AS3 pour communiquer entre les éléments MVC. RobotLegs utilise l&#8217;injection de dépendances  pour &laquo;&nbsp;lier&nbsp;&raquo; les objets entre eux à travers des tags spécifiques ([Inject], &#8230;). L&#8217;inconvénient de ces tags c&#8217;est que le compilateur de l&#8217;IDE de Flash ne sait pas les interpréter du coup il faut privilégier un workflow avec le compilateur de Flex. L&#8217;utilisation de l&#8217;IDE Flash reste cependant possible mais j&#8217;avoue ne pas avoir encore tout compris <img src='http://www.trinidev.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
<p>Le diagramme de l&#8217;implémentation MVC-S de RobotLegs (ici un exemple de slideshow).</p>
<p><img class="alignnone size-full wp-image-1209" title="robotlegs-diagram" src="http://www.trinidev.fr/wp-content/uploads/2010/05/robotlegs-diagram.jpg" alt="robotlegs-diagram" width="600" height="413" /></p>
<p>Ce diagramme est tiré de slides d&#8217;une conférence disponible <a href="http://www.slideshare.net/joelhooks/fatc-2010" target="_blank">ici</a>, à lire pour tout comprendre <img src='http://www.trinidev.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2010%2F05%2Frobotlegs-un-framework-flashflexair-100-as3%2F&amp;title=RobotLegs%2C%20un%20framework%20Flash%2FFlex%2FAir%20100%25%20AS3" id="wpa2a_10">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2010/05/robotlegs-un-framework-flashflexair-100-as3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSaveRelationsBehavior : un comportement Yii pour enregistrer les données relationnelles</title>
		<link>http://www.trinidev.fr/2010/05/csaverelationsbehavior-un-comportement-yii-pour-enregistrer-les-donnees-relationnelles/</link>
		<comments>http://www.trinidev.fr/2010/05/csaverelationsbehavior-un-comportement-yii-pour-enregistrer-les-donnees-relationnelles/#comments</comments>
		<pubDate>Thu, 13 May 2010 17:24:55 +0000</pubDate>
		<dc:creator>Alban Jubert</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Comportement]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Yii framework]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=1175</guid>
		<description><![CDATA[
CSaveRelationsBehavior, un comportement pour Yii Framework, vient d&#8217;être publié par votre serviteur.
L&#8217;objet de ce comportement est d&#8217;étendre les fonctionnalité des ActiveRecords afin de permettre l&#8217;enregistrement automatique des données relationnelles HasMany et ManyMany lorsque le modèle principal est créé ou modifié.
En effet, contrairement à d&#8217;autres framework comme CakePHP ou Symphony, cette fonctionnalité n&#8217;est pas incluse nativement [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.trinidev.fr/wp-content/uploads/2010/11/yii-300x64.png" alt="Yii Framework" title="Yii Framework" width="300" height="64" class="alignleft size-medium wp-image-1225" /></p>
<p><a title="CSaveRelationsBehavior" href="http://www.yiiframework.com/extension/save-relations-ar-behavior" target="_blank">CSaveRelationsBehavior</a>, un comportement pour <strong>Yii Framework</strong>, vient d&#8217;être publié par votre serviteur.</p>
<p>L&#8217;objet de ce comportement est d&#8217;étendre les fonctionnalité des ActiveRecords afin de permettre l&#8217;<strong>enregistrement automatique</strong> des données relationnelles <strong>HasMany</strong> et <strong>ManyMany</strong> lorsque le modèle principal est créé ou modifié.</p>
<p>En effet, contrairement à d&#8217;autres framework comme CakePHP ou Symphony, cette fonctionnalité n&#8217;est pas incluse nativement dans Yii. Rien de bien problématique dans la mesure ou cette opération peut être écrite au besoin au niveau des modèles le nécessitant. Mais comme j&#8217;étais lassé de devoir reproduire ce genre de code fréquemment, l&#8217;écriture d&#8217;un comportement pour les ActiveRecord c&#8217;est assez naturellement imposé.</p>
<p>Amis développeurs Yii, vos commentaires sont les bienvenus <img src='http://www.trinidev.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>[Edit 17/05/2010 : <strong>Deux applications de démonstrations</strong> sont maintenant disponibles en téléchargement sur le <a href="http://www.yiiframework.com/extension/save-relations-ar-behavior" target="_blank">dépôt de l'extension</a>. Elles permettent de se faire une idée très précise de ce qui est réalisable avec cette extension qui est désormais également hébergée sur <a href="http://code.google.com/p/yii-save-relations-ar-behavior/" target="_blank">Google Code</a> (documentation, dépôt SVN, rapport de bugs...).]</p>
<p><span id="more-1175"></span></p>
<h3 style="margin-top: 0.2em; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; font-weight: bold; font-size: 1.1em; padding: 0pt;">Configuration requise</h3>
<ul style="list-style-image: none; list-style-position: outside; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 25px; padding: 0px;">
<li>Yii Framework 1.0.4 ou plus</li>
</ul>
<h3 style="margin-top: 0.2em; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; font-weight: bold; font-size: 1.1em; padding: 0pt;">Installation</h3>
<ul style="list-style-image: none; list-style-position: outside; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 25px; padding: 0px;">
<li>Décompressez le fichier et copier-le dans <code>protected/components</code> de votre projet</li>
</ul>
<h3 style="margin-top: 0.2em; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; font-weight: bold; font-size: 1.1em; padding: 0pt;">Utilisation</h3>
<ul style="list-style-image: none; list-style-position: outside; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 25px; padding: 0px;">
<li>Ajouter le code suivant au modèle dans lequel vous voulez utiliser le comportement :

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1175code9'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p11759"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p1175code9"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> behaviors<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   <span style="color: #b1b100;">return</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'CSaveRelationsBehavior'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span>
      <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'class'</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'application.components.CSaveRelationsBehavior'</span><span style="color: #009900;">&#41;</span>
   <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

</li>
<li>Dans votre contrôleur, appelez simplement :

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1175code10'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p117510"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p1175code10"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$model</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>setRelationRecords<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'relationName'</span><span style="color: #339933;">,</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$model</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>save<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

</li>
<li>Pour les relations <strong>ManyMany</strong>, <code>$data</code> doit être fourni sous la forme d&#8217;un tableau valeurs de clés étrangères (ex. <code>array(2,5,43)</code>) ou un tableau de tableaux associatifs fournissant les valeurs de clés étrangères composites du modèle lié (ex. a<code>rray(array('pk1'=&gt;2,'pk2'=&gt;'fr'),array('pk1'=&gt;5,'pk2'=&gt;'en')</code>).<br />
Typiquement, vous retrouverez ces données à partir d&#8217;une série de cases à cocher listant les identifiants du modèle lié.</li>
<li> Pour les relations <strong>HasMany</strong>, <code>$data</code> doit être fourni sous la forme d&#8217;un tableau de tableaux associatifs donnant la valeur des attributs du modèles lié (ex. array(array(&#8216;id&#8217;=&gt;123, &#8216;name&#8217;=&gt;&#8217;someValue&#8217;, &#8216;visible&#8217;=&gt;true), array(&#8216;id&#8217;=&gt;456, &#8216;name&#8217;=&gt;&#8217;someOtherValue&#8217;, &#8216;visible&#8217;=&gt;false));<br />
Vous pouvez fournir ces données en utilisant la technique des données tabulaires à l&#8217;intérieur du formulaire du modèle principal  (<a href="http://www.yiiframework.com/doc/guide/form.table" target="_blank">http://www.yiiframework.com/doc/guide/form.table</a>)</li>
<li> Dans les deux cas, les clés étrangères relatives au modèle principal seront automatiquement remplies avec la ou les valeurs des clés primaires du modèle principal.</li>
<li> La plupart du temps, vous appellerez <code>setRelationRecords</code> de la façon suivante :

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1175code11'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p117511"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p1175code11"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$model</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>setRelationRecords<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'relationName'</span><span style="color: #339933;">,</span><a href="http://www.php.net/is_array"><span style="color: #990000;">is_array</span></a><span style="color: #009900;">&#40;</span><span style="color: #339933;">@</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ModelName'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> ? <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'ModelName'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">:</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

</li>
<li> Par défaut, le comportement gérera la sauvegarde en mode transactionnel de telle sorte que si une erreur quelconque intervient pendant la sauvegarde des données de relations, l&#8217;intégrité relationnelle ne sera pas affectée. Par ailleurs, si une erreur se produit pendant la sauvegarde, la propriété hasError prendra la valeur true.</li>
</ul>
<h3 style="margin-top: 0.2em; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; font-weight: bold; font-size: 1.1em; padding: 0pt;">Fonctionnalité additionnelles</h3>
<ul style="list-style-image: none; list-style-position: outside; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 25px; padding: 0px;">
<li>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1175code12'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p117512"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p1175code12"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$model</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>addSaveRelation<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'relationName'</span><span style="color: #009900;">&#91;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'customErrorMessage'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>Vous pouvez utiliser cette méthode afin de forcer la sauvegarde d&#8217;une relation.<br />
Vous pouvez également passer le message d&#8217;erreur de la relation comme deuxième paramètre (voir <code>setSaveRelationMessage</code> plus loin)</li>
<li>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1175code13'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p117513"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p1175code13"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$model</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>removeSaveRelation<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'relationName'</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>Fait simplement l&#8217;inverse</li>
<li>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1175code14'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p117514"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p1175code14"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$model</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>setSaveRelationMessage<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'relationName'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'customErrorMessage'</span><span style="color: #009900;">&#41;</span></pre></td></tr></table></div>

<p>Défini le message à afficher dans le résumé d&#8217;erreurs du modèle principal</li>
</ul>
<h3 style="margin-top: 0.2em; margin-right: 0px; margin-bottom: 0.2em; margin-left: 0px; font-weight: bold; font-size: 1.1em; padding: 0pt;">Téléchargement</h3>
<ul style="list-style-image: none; list-style-position: outside; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 25px; padding: 0px;">
<li>Vous pouvez télécharger le composant sur <a href="http://www.yiiframework.com/extension/save-relations-ar-behavior/">le dépôt officiel de Yii Framework</a></li>
</ul>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2010%2F05%2Fcsaverelationsbehavior-un-comportement-yii-pour-enregistrer-les-donnees-relationnelles%2F&amp;title=CSaveRelationsBehavior%20%3A%20un%20comportement%20Yii%20pour%20enregistrer%20les%20donn%C3%A9es%20relationnelles" id="wpa2a_12">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2010/05/csaverelationsbehavior-un-comportement-yii-pour-enregistrer-les-donnees-relationnelles/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Yii 1.1.2 &#8211; Gii inside</title>
		<link>http://www.trinidev.fr/2010/05/yii-1-1-2-gii-inside/</link>
		<comments>http://www.trinidev.fr/2010/05/yii-1-1-2-gii-inside/#comments</comments>
		<pubDate>Wed, 05 May 2010 18:35:08 +0000</pubDate>
		<dc:creator>Alban Jubert</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Générateur de code]]></category>
		<category><![CDATA[Gii]]></category>
		<category><![CDATA[Mise à jour]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Yii framework]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=1162</guid>
		<description><![CDATA[
Comme à son habitude, l&#8217;équipe de développement de Yii Framework vient de publier une mise à jour 1.1.2.
Au delà des habituelles corrections de bugs (une vingtaine) et d&#8217;améliorations (mise à jour de jQuery UI 1.8.1, support des relations dynamiques pour les modèles&#8230;) que vous pouvez voir ici, la grande nouveauté s&#8217;appelle Gii.
Gii est un puissant [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1163" title="Gii logo" src="http://www.trinidev.fr/wp-content/uploads/2010/05/logo.png" alt="Gii logo" width="211" height="48" /></p>
<p>Comme à son habitude, l&#8217;équipe de développement de <a href="http://www.yiiframework.com" target="_blank">Yii Framework</a> vient de publier une mise à jour <strong><a href="http://www.yiiframework.com/download/" target="_blank">1.1.2</a></strong>.</p>
<p>Au delà des habituelles corrections de bugs (une vingtaine) et d&#8217;améliorations (mise à jour de jQuery UI 1.8.1, support des relations dynamiques pour les modèles&#8230;) que vous pouvez voir <a href="http://www.yiiframework.com/files/CHANGELOG-1.1.2.txt" target="_blank">ici</a>, la grande nouveauté s&#8217;appelle <strong>Gii</strong>.</p>
<p><strong>Gii</strong> est un puissant <strong>générateur de code</strong> dédié à Yii et vient compléter (pour ne pas dire remplacer) le générateur en lignes de commandes nommé <strong>yiic</strong>. En fait, il reprend les principes de son aîné (lui même inspiré des célèbres générateurs de Ruby on Rails) à savoir :</p>
<ul>
<li>un <strong>générateur de modèles</strong> (qui sait lire les métas-informations des bases de données afin de créer automatiquement les régles de validation et les éventuelles informations relationnelles)</li>
<li>un <strong>générateur de contrôleurs</strong></li>
<li>un <strong>générateur CRUD</strong> qui, en partant d&#8217;un modèle existant, est capable de généré un contrôleur est ses vues associées permettant de lister, voir, administrer, créer, mettre à jour et supprimer des enregistrements</li>
<li>un <strong>générateur de modules</strong></li>
<li>enfin, un <strong>générateur de formulaires</strong> (nouveau dans Gii)</li>
</ul>
<p>Tout ça, sous la forme d&#8217;une <strong>élégante interface web</strong> permettant de contrôler précisément la génération des fichiers (vue des différences entre les fichiers existant et ceux générés par exemple).</p>
<p>Mais ça n&#8217;est pas tout. Gii permet de facilement créer (avec un peu de code tout de même) vos propres générateurs. Et la création de vues personnalisées est un jeu d&#8217;enfants si vous désirez ajouter les fonctionnalité non prises en charge par le générateur natif.</p>
<p>Pour l&#8217;occasion, une documentation spécifique a été produite, à consulter <a href="http://www.yiiframework.com/doc/guide/topics.gii" target="_blank">ici</a>.</p>
<p>Bonne génération à tous <img src='http://www.trinidev.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2010%2F05%2Fyii-1-1-2-gii-inside%2F&amp;title=Yii%201.1.2%20%26%238211%3B%20Gii%20inside" id="wpa2a_14">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2010/05/yii-1-1-2-gii-inside/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FlashDevelop 3.1.0 RTM released</title>
		<link>http://www.trinidev.fr/2010/04/flashdevelop-3-1-0-rtm-released/</link>
		<comments>http://www.trinidev.fr/2010/04/flashdevelop-3-1-0-rtm-released/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 20:56:59 +0000</pubDate>
		<dc:creator>Pascal Achard</dc:creator>
				<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Adobe Flex]]></category>
		<category><![CDATA[Outils de développement]]></category>
		<category><![CDATA[Actionscript 3]]></category>
		<category><![CDATA[Mise à jour]]></category>
		<category><![CDATA[Outil]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=1155</guid>
		<description><![CDATA[
Une mise-à-jour importante de mon outil de développement préféré est disponible. Il s&#8217;agit de la version 3.1.0 RTM, voici la liste des changements :
* Real MXML completion implemented* Flash Player 10.1 and Flex 4 support added* Initial simple refactoring support added* Global excluded directories added to Tasks* Embed generation now added for all filetypes* Proper [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flashdevelop.org/community/index.php"><img class="alignnone size-full wp-image-607" title="fd3_logo" src="http://www.trinidev.fr/wp-content/uploads/2009/05/fd3_logo.png" alt="fd3_logo" width="168" height="70" /></a></p>
<p>Une mise-à-jour importante de mon outil de développement préféré est <a href="http://www.flashdevelop.org/downloads/releases/FlashDevelop-3.1.0-RTM.exe">disponible</a>. Il s&#8217;agit de la version 3.1.0 RTM, voici la liste des changements :</p>
<blockquote><p>* Real MXML completion implemented* Flash Player 10.1 and Flex 4 support added<br style="margin: 0px; padding: 0px;" />* Initial simple refactoring support added<br style="margin: 0px; padding: 0px;" />* Global excluded directories added to Tasks<br style="margin: 0px; padding: 0px;" />* Embed generation now added for all filetypes<br style="margin: 0px; padding: 0px;" />* Proper file encoding behaviour without BOM added<br style="margin: 0px; padding: 0px;" />* HTML ZenCoding implementation added (Control + B)<br style="margin: 0px; padding: 0px;" />* Output panel is now searchable (Highlight, F3 and Shift+F3)<br style="margin: 0px; padding: 0px;" />* Simple multiproject support with batch compiling added (1*)<br style="margin: 0px; padding: 0px;" />* Compiler constants and timestamp added now automaticly<br style="margin: 0px; padding: 0px;" />* Code completion is now fed with classes from SDK sources<br style="margin: 0px; padding: 0px;" />* Japanese localization added (Settings -&gt; SelectedLocale)<br style="margin: 0px; padding: 0px;" />* HaXe on demand completion added (patch from filt3r)<br style="margin: 0px; padding: 0px;" />* Additional keyword groups added to the config<br style="margin: 0px; padding: 0px;" />* Code completion improvements and bug fixes<br />
* General UI improvements and bug fixes</p></blockquote>
<p>On notera la création d&#8217;un outil de refactoring (faut que je teste ça vite) et la compilation en batch de plusieurs projets.<br />
Dans les tuyaux  il reste toujours le debugger et le profiler. Et une bonne nouvelle pour les linuxiens, il semblerait qu&#8217;une version Mono/Qt soit sur les rails.</p>
<p>Edit: On me souffle dans l&#8217;oreillette qu&#8217;une version expérimentale est dispo pour tester le debugger et le profiler <a href="http://www.flashdevelop.org/community/viewtopic.php?f=11&amp;t=6415" target="_blank">ici</a>.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2010%2F04%2Fflashdevelop-3-1-0-rtm-released%2F&amp;title=FlashDevelop%203.1.0%20RTM%20released" id="wpa2a_16">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2010/04/flashdevelop-3-1-0-rtm-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yii Framework 1.1.1 et 1.0.12 disponibles</title>
		<link>http://www.trinidev.fr/2010/03/yii-framework-1-1-1-et-1-0-12-disponibles/</link>
		<comments>http://www.trinidev.fr/2010/03/yii-framework-1-1-1-et-1-0-12-disponibles/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 11:24:32 +0000</pubDate>
		<dc:creator>Alban Jubert</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Mise à jour]]></category>
		<category><![CDATA[Yii framework]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=1134</guid>
		<description><![CDATA[
La maintenance de deux versions d&#8217;un framework n&#8217;est sans doute pas chose aisée, et on peut saluer l&#8217;effort de la (petite) équipe de développement de Yii qui maintient de cap malgré tout.
Voici donc les nouvelles versions mineures des deux branches majeures du framework :
Yii Framework 1.1.1 :

Plus d&#8217;une vingtaine de correction de bugs divers, essentiellement [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.trinidev.fr/wp-content/uploads/2010/11/yii-300x64.png" alt="Yii Framework" title="Yii Framework" width="300" height="64" class="alignnone size-medium wp-image-1225" /></p>
<p>La maintenance de deux versions d&#8217;un framework n&#8217;est sans doute pas chose aisée, et on peut saluer l&#8217;effort de la (petite) équipe de développement de Yii qui maintient de cap malgré tout.</p>
<p>Voici donc les <a href="http://www.yiiframework.com/download/" target="_blank"><strong>nouvelles versions</strong></a> mineures des deux branches majeures du framework :</p>
<p><strong>Yii Framework 1.1.1 :</strong></p>
<ul>
<li>Plus d&#8217;une <strong>vingtaine de correction de bugs</strong> divers, essentiellement liés au passage à la nouvelle version majeure</li>
<li>La classe <strong>CActiveForm</strong> supporte désormais les <strong>validations coté serveur et coté client</strong> avec un minimum de code</li>
<li>L&#8217;outil en ligne de commandes <strong>yiic</strong> a été réécrit afin de supporter le <strong>multi-layout </strong>et le <strong>support du filtrage</strong> des vues en mode liste lors de la génération de code CRUD</li>
<li><strong>Les commandes yiic</strong> peuvent désormais être déclarées de façon <strong>globales</strong> de telle sorte que vous pouvez partager une même commande partagée par plusieurs projets différents</li>
</ul>
<p><strong>Yii Framework 1.0.12 :</strong></p>
<ul>
<li>Une petite <strong>dizaine de correction de bugs</strong> mineurs</li>
<li>3 améliorations relatives données relationnels des <strong>ActiveRecords</strong>, la classe <strong>CUrlManager</strong> et la classe <strong>CDbCriteria</strong></li>
</ul>
<p>Pour la liste complète des changements, c&#8217;est <a title="Yii change log" href="http://www.yiiframework.com/files/CHANGELOG-1.1.1.txt" target="_blank">ici</a> que ça se passe.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2010%2F03%2Fyii-framework-1-1-1-et-1-0-12-disponibles%2F&amp;title=Yii%20Framework%201.1.1%20et%201.0.12%20disponibles" id="wpa2a_18">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2010/03/yii-framework-1-1-1-et-1-0-12-disponibles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimiser le poids d&#8217;un SWF : modes de fusion</title>
		<link>http://www.trinidev.fr/2010/01/optimiser-le-poid-dun-swf-mode-de-fusion/</link>
		<comments>http://www.trinidev.fr/2010/01/optimiser-le-poid-dun-swf-mode-de-fusion/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 14:59:30 +0000</pubDate>
		<dc:creator>Pascal Achard</dc:creator>
				<category><![CDATA[Adobe Flash]]></category>
		<category><![CDATA[Technologies coté client]]></category>
		<category><![CDATA[optimisation]]></category>

		<guid isPermaLink="false">http://www.trinidev.fr/?p=1085</guid>
		<description><![CDATA[
Petite astuce pour optimiser le poids d&#8217;un SWF grâce aux modes de fusion.
Récemment, sur un projet, j&#8217;ai du réaliser une petite anim en Flash sur la home page du site Cavissima. J&#8217;avais une grosse contrainte de poids, j&#8217;ai optimisé à fond les éléments graphiques mais ce n&#8217;était pas suffisant. L&#8217;élément graphique le plus lourd était [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-1100" title="fusion" src="http://www.trinidev.fr/wp-content/uploads/2010/01/fusion.png" alt="fusion" width="600" height="107" /></p>
<p>Petite astuce pour optimiser le poids d&#8217;un SWF grâce aux modes de fusion.</p>
<p>Récemment, sur un projet, j&#8217;ai du réaliser une petite anim en Flash sur la home page du site <a href="http://www.cavissima.com/" target="_blank">Cavissima</a>. J&#8217;avais une grosse contrainte de poids, j&#8217;ai optimisé à fond les éléments graphiques mais ce n&#8217;était pas suffisant. L&#8217;élément graphique le plus lourd était un PNG transparent représentant une vigne.</p>
<p>La solution que j&#8217;ai mise en place est d&#8217;exporter la vigne sur fond blanc (donc pas de transparence) et de mettre le MovieClip qui contient l&#8217;image dans le mode de fusion &laquo;&nbsp;Darken&nbsp;&raquo;.<br />
Vu que j&#8217;ai un fond claire, le Player Flash va &laquo;&nbsp;aplatir&nbsp;&raquo; mon image sur le fond en fusionnant les pixels de teintes claires. Cela fonctionne dans mon cas parce que j&#8217;ai un fond claire, si il avait été foncé cela n&#8217;aurait pas fonctionné.</p>
<p>J&#8217;ai fait un petit exemple :<br />
- fichier swf avec PNG transparent &#8212;&gt;  85 Ko<br />
- fichier swf avec PNG sur fond blanc en mode fusion &laquo;&nbsp;darken&nbsp;&raquo; &#8212;&gt; 36 Ko<br />

<object width="600" height="296">
<param name="movie" value="http://www.trinidev.fr/wp-content/uploads/2010/01/main.swf"></param>
<param name="quality" value="high"></param>
<param name="wmode" value="window"></param>
<param name="menu" value="false"></param>
<param name="bgcolor" value="#FFFFFF"></param>
<param name="allowScriptAccess" value="always"></param>
<embed type="application/x-shockwave-flash" width="600" height="296" src="http://www.trinidev.fr/wp-content/uploads/2010/01/main.swf" quality="high" bgcolor="#FFFFFF" wmode="window" menu="false" ></embed>
</object>
</p>
<p>Fichiers source de l&#8217;exemple <a href="http://www.trinidev.fr/wp-content/uploads/2010/01/Test-Fusion.zip">ici</a>.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.trinidev.fr%2F2010%2F01%2Foptimiser-le-poid-dun-swf-mode-de-fusion%2F&amp;title=Optimiser%20le%20poids%20d%26%238217%3Bun%20SWF%20%3A%20modes%20de%20fusion" id="wpa2a_20">Partager/Sauvegarder</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.trinidev.fr/2010/01/optimiser-le-poid-dun-swf-mode-de-fusion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Served from: www.trinidev.fr @ 2012-02-17 15:08:26 by W3 Total Cache -->
