<?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>iq¹²</title>
	<atom:link href="http://iq12.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://iq12.com/blog</link>
	<description>The drooling company</description>
	<lastBuildDate>Fri, 20 Nov 2009 10:31:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Employee of the Month</title>
		<link>http://iq12.com/blog/2009/11/19/employee_of_the_month/</link>
		<comments>http://iq12.com/blog/2009/11/19/employee_of_the_month/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 20:07:37 +0000</pubDate>
		<dc:creator>fu</dc:creator>
				<category><![CDATA[Français]]></category>
		<category><![CDATA[AS3 good practices]]></category>
		<category><![CDATA[concours]]></category>
		<category><![CDATA[iq12]]></category>
		<category><![CDATA[optimisation]]></category>

		<guid isPermaLink="false">http://iq12.com/blog/?p=384</guid>
		<description><![CDATA[
Mike Chambers a organisé une compétition de programmation AS3 la semaine dernière : AS3DTC_1. J&#8217;aime bien les concours simples qui ne prennent pas trop de temps. Monumentale erreur : j&#8217;ai du écrire beaucoup de code.
Du coup mes estimés collègues m&#8217;ont demandé d&#8217;écrire ce post sur la manière que j&#8217;ai utilisée pour prendre la 1ère place [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.cartoonstock.com/"><img src="http://iq12.com/blog/wp-content/uploads/2009/11/rnin306l.jpg" alt="Employee of the Month" title="Employee of the Month" width="400" height="354" class="aligncenter size-full wp-image-400" /></a></p>
<p><a href="http://www.mikechambers.com/blog/">Mike Chambers</a> a organisé une compétition de programmation AS3 la semaine dernière : <a href="http://www.mikechambers.com/blog/2009/11/12/update-on-actionscript-3-development-task-contest-1/">AS3DTC_1</a>. J&#8217;aime bien les concours simples qui ne prennent pas trop de temps. Monumentale erreur : j&#8217;ai du écrire <a href="http://github.com/mikechambers/ActionScript-3-Development-Task-Contests/blob/master/AS3DTC_1/entries/ArnaudGatouillat/ProximityManager.as">beaucoup de code</a>.</p>
<p>Du coup mes estimés collègues m&#8217;ont demandé d&#8217;écrire ce post sur la manière que j&#8217;ai utilisée pour <a href="http://www.mikechambers.com/blog/2009/11/16/results-from-as3-development-task-contest-1/">prendre la 1ère place (yaisse !)</a>, en profiter pour en faire un cours sur l&#8217;optimisation, tout ça quoi &#8230;</p>
<p><span id="more-384"></span>L&#8217;objet du concours était d&#8217;avoir une scène découpée en cases (une grille donc), avec dessus un grand nombre de points (10000) et 4 objets à tester. Pour chacun des objets à tester, il est demandé de renvoyer les points voisins (points présents dans la case de l&#8217;objet et les 8 cases adjacentes). Grant Skinner a posté un <a title="AS3 ProximityManager V2" href="http://www.gskinner.com/blog/archives/2009/11/as3_proximityma.html" target="_blank">exemple</a> un peu plus visuel de l&#8217;interêt du problème à résoudre :</p>
<p style="text-align: center;"><script type="text/javascript" src="http://iq12.com/blog/wp-content/plugins/pb-embedflash/js/swfobject.js"></script><span class="embedflash" id="swfid8e3961a825f94f3772c91e6541bcd04b"><small>(Please open the article to see the flash file or player.)</small></span><script type="text/javascript">
				var flashvars = {}; var params = {}; var attributes = {};params.allowfullscreen = "true"; params.allowscriptaccess = "always";
				swfobject.embedSWF("http://www.gskinner.com/blog/assets/ProximityTest.swf","swfid8e3961a825f94f3772c91e6541bcd04b","400","400","9.0.0","http://iq12.com/blog/wp-content/plugins/pb-embedflash/swf/expressInstall.swf",flashvars,params,attributes);
		</script></p>
<p>A chaque appel (il faut imaginer à chaque frame), une liste complète des points est envoyée via un appel à une méthode <strong>update()</strong>. Ensuite pour chaque objet à tester les voisins sont demandés via <strong>getNeighbours()</strong>. Les participations sont départagées par leur vitesse d&#8217;exécution, donc il faut faire le code le plus speed possible.</p>
<p><strong>update()</strong> est donc appelé une seule fois contre plusieurs pour <strong>getNeighbours()</strong>, et toujours avant, <em>il faut donc effectuer un maximum de calculs dans <strong>update()</strong></em>.</p>
<p>L&#8217;autre idée primordiale est de ne faire <em>qu&#8217;une seule boucle sur les 10000 points</em>.</p>
<p>L&#8217;implémentation la plus évidente à mes yeux (mais pas forcement la meilleure, il y a eu des méthodes innovantes à ce niveau, en particulier celle de <a href="http://github.com/mikechambers/ActionScript-3-Development-Task-Contests/blob/master/AS3DTC_1/entries/GrantSkinner/ProximityManager.as">Grant Skinner</a>), est la suivante :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">cases = tableau<span style="color: #66cc66;">&#91;</span>nombre_identifiant<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span>points<span style="color: #66cc66;">&#93;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> update<span style="color: #66cc66;">&#40;</span>points<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>point <span style="color: #b1b100;">in</span> points<span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		cases<span style="color: #66cc66;">&#91;</span>identifiant_de_case<span style="color: #66cc66;">&#93;</span>.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span> point <span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> getNeighbours<span style="color: #66cc66;">&#40;</span>test<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	case_centrale = cases<span style="color: #66cc66;">&#91;</span>identifiant_de_case<span style="color: #66cc66;">&#93;</span>
	<span style="color: #b1b100;">return</span> case_centrale.<span style="color: #0066CC;">concat</span><span style="color: #66cc66;">&#40;</span> cases_voisines_1...8 <span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>Le calcul d&#8217;<strong>identifiant_de_case</strong> est effectué plus de 10000 fois, c&#8217;est le principal élément à optimiser. Dans sa forme la plus basique, on veut quelque chose du type :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">identifiant_de_case = caseX <span style="color: #66cc66;">*</span> hauteurGrille + caseY</pre></td></tr></table></div>

<p>avec :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">caseX = uint<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">Math</span>.<span style="color: #0066CC;">round</span><span style="color: #66cc66;">&#40;</span>point.<span style="color: #006600;">x</span><span style="color: #66cc66;">/</span>tailleGrille<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">// et pareil pour caseY</span></pre></td></tr></table></div>

<p>&gt;&gt; on optimise ce bout de code et on obtient :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// les multiplications sont plus rapides que les divisions (à effectuer une seule fois, dans le constructeur)</span>
ratioTailleGrille = <span style="color: #cc66cc;">1</span><span style="color: #66cc66;">/</span>tailleGrille;
<span style="color: #66cc66;">&#91;</span>...<span style="color: #66cc66;">&#93;</span>
caseX = <span style="color: #0066CC;">int</span><span style="color: #66cc66;">&#40;</span>point.<span style="color: #006600;">x</span><span style="color: #66cc66;">*</span>ratioTailleGrille<span style="color: #66cc66;">&#41;</span></pre></td></tr></table></div>

<p>Pour optimiser encore plus, il est possible d&#8217;utiliser des opérateurs sur les bits (les opérations au niveau bit sont très rapides). Rappel: le but de créer un identifiant unique pour chaque case : on cherche donc à obtenir un <strong>int</strong> qui contient en même temps caseX et caseY.</p>
<p>Pour expliquer la méthode, voir le code d&#8217;exemple suivant :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;">caseX = <span style="color: #cc66cc;">12</span>;    <span style="color: #808080; font-style: italic;">// en binaire : 00001100</span>
caseY = <span style="color: #cc66cc;">19</span>;    <span style="color: #808080; font-style: italic;">// en binaire : 00010011</span>
<span style="color: #808080; font-style: italic;">// on décale vers la gauche les bits de caseX pour laisser assez de place à caseY</span>
<span style="color: #808080; font-style: italic;">// ici 8 bits (dans ma classe j'ai poussé le vice à calculer le nombre de bits nécessaires)</span>
<span style="color: #808080; font-style: italic;">// puis on utilise le OU binaire ( | ) pour fusionner les 2 valeurs</span>
identifiant_de_case =
		<span style="color: #66cc66;">&#40;</span>caseX <span style="color: #66cc66;">&lt;&lt;</span> <span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span>		<span style="color: #808080; font-style: italic;">// en binaire : 0001001100000000</span>
			<span style="color: #66cc66;">|</span> caseY		<span style="color: #808080; font-style: italic;">// en binaire :         00010011</span>
<span style="color: #808080; font-style: italic;">// identifiant_de_case =		   en binaire : 0010011000010011</span></pre></td></tr></table></div>

<p>Le stockage des items en lui même se fait dans un Vecteur à 2 dimensions :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">var</span> cases:Vector.<span style="color: #66cc66;">&lt;</span>Vector.<span style="color: #66cc66;">&lt;</span>DisplayObject<span style="color: #66cc66;">&gt;&gt;</span></pre></td></tr></table></div>

<p>Un objet (ou Dictionary) liant chaque identifiant à son Vector.&lt;DisplayObject&gt; serait un choix plus logique pour le stockage, mais comme les valeur ne sont pas fortement typées dans un Object, c&#8217;est au final moins rapide.</p>
<p>Beaucoup d&#8217;autres optimisations sont connues (cf. <a href="http://wiki.joa-ebert.com/index.php/Category:Code_Optimization">wiki @joa</a>)</p>
<ul>
<li>remplacer les divisions par des multiplications tant que possible</li>
<li>for(i=0;i&lt;n;i++) est moins efficace que i=n; while(i) { &#8211;i }</li>
<li>vector.push(item) est moins efficace que vector[vector.length]=item;</li>
<li>il faut fortement typer un objet avant d&#8217;appeler une méthode dessus. Par exemple :

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #b1b100;">return</span> cases<span style="color: #66cc66;">&#91;</span>id1<span style="color: #66cc66;">&#93;</span>.<span style="color: #0066CC;">concat</span><span style="color: #66cc66;">&#40;</span>cases<span style="color: #66cc66;">&#91;</span>id2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #808080; font-style: italic;">// est moins efficace que :</span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #b1b100;">case</span>:Vector.<span style="color: #66cc66;">&lt;</span>DisplayObject<span style="color: #66cc66;">&gt;</span> = cases<span style="color: #66cc66;">&#91;</span>id1<span style="color: #66cc66;">&#93;</span>;
<span style="color: #b1b100;">return</span> <span style="color: #b1b100;">case</span>.<span style="color: #0066CC;">concat</span><span style="color: #66cc66;">&#40;</span>cases<span style="color: #66cc66;">&#91;</span>id2<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;</pre></td></tr></table></div>

</li>
</ul>
<p>Autre feinte :<br />
Dans <strong>getNeighbours()</strong>, normalement il faudrait tester si on est sur les bords, pour savoir si il faut concaténer 9 cases ou moins.<br />
Pour éviter ça, on crée une bande de cases vides autour de la grille réelle. Malheureusement il n&#8217;y a pas d&#8217;index négatif (pour la ligne du haut et la colonne de gauche) dans un stockage avec un Vector. Il faut encore tester ces deux cas.</p>
<p>Enfin, le <strong>vrai boost</strong> (50% de vitesse en plus environ) trouvé en fin de concours (et utilisé que dans mon code je crois) est de tester si les points ont bougé entre 2 appels à <strong>update()</strong>. Si rien n&#8217;a changé on évite de manipuler des données dans tous les sens et on gagne beaucoup de temps.</p>
<p>Depuis, la fonction <strong>update()</strong> ressemble plutôt à :</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</pre></td><td class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> update<span style="color: #66cc66;">&#40;</span>points<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>points.<span style="color: #0066CC;">length</span> <span style="color: #66cc66;">!</span>= oldPointLength<span style="color: #66cc66;">&#41;</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #808080; font-style: italic;">// (ré)initialisation</span>
		<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>point <span style="color: #b1b100;">in</span> points<span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			cache<span style="color: #66cc66;">&#91;</span>point<span style="color: #66cc66;">&#93;</span> = identifiant_de_case
			cases<span style="color: #66cc66;">&#91;</span>identifiant_de_case<span style="color: #66cc66;">&#93;</span>.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span> point <span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
	<span style="color: #b1b100;">else</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #b1b100;">for</span><span style="color: #66cc66;">&#40;</span>point <span style="color: #b1b100;">in</span> points<span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #b1b100;">if</span><span style="color: #66cc66;">&#40;</span>cache<span style="color: #66cc66;">&#91;</span>point<span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">!</span>= identifiant_de_case<span style="color: #66cc66;">&#41;</span>
			<span style="color: #66cc66;">&#123;</span>
				<span style="color: #808080; font-style: italic;">// ce point à bougé</span>
				cache<span style="color: #66cc66;">&#91;</span>point<span style="color: #66cc66;">&#93;</span> = identifiant_de_case
				<span style="color: #808080; font-style: italic;">// effectuer le changement de case du point</span>
				<span style="color: #66cc66;">&#91;</span>...<span style="color: #66cc66;">&#93;</span>
			<span style="color: #66cc66;">&#125;</span>
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></td></tr></table></div>

<p>Voilà, j&#8217;espère que ça va donner de bonnes idées pour optimiser du code AS3. En vérité, ça ne sert que rarement à grand chose de pousser les choses à ce point, sauf quand un petit bout de code pompe une grosse partie des performances espérées.</p>
]]></content:encoded>
			<wfw:commentRss>http://iq12.com/blog/2009/11/19/employee_of_the_month/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Quand l&#8217;émergence se généralise&#8230;</title>
		<link>http://iq12.com/blog/2009/09/25/quand-lemergence-se-generalise/</link>
		<comments>http://iq12.com/blog/2009/09/25/quand-lemergence-se-generalise/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 11:35:19 +0000</pubDate>
		<dc:creator>16ames</dc:creator>
				<category><![CDATA[Français]]></category>
		<category><![CDATA[blabla]]></category>
		<category><![CDATA[Clip interactif]]></category>
		<category><![CDATA[Veille]]></category>

		<guid isPermaLink="false">http://iq12.com/blog/?p=367</guid>
		<description><![CDATA[En voilà du titre qui tape!
C&#8217;est juste que ce matin me voici à nouveau titillé par un de ces sujets récurrents qui me travaillent parfois&#8230;
C&#8217;est que depuis mon billet “De l’émergence du clip interactif”, et sa suite sommaire, l&#8217;idée fait son chemin et on voit régulièrement réapparaitre des exemples du genre, comme me l&#8217;ont fait [...]]]></description>
			<content:encoded><![CDATA[<p>En voilà du titre qui tape!</p>
<p>C&#8217;est juste que ce matin me voici à nouveau titillé par un de ces sujets récurrents qui me travaillent parfois&#8230;</p>
<p>C&#8217;est que depuis mon billet “<a href="http://iq12.com/blog/2008/09/17/de-lemergence-du-clip-interactif/"><em>De l’émergence du clip interactif</em></a>”, et sa <a href="http://iq12.com/blog/2008/12/06/clip-interactif-suite/"><em>suite sommaire</em></a>, l&#8217;idée fait son chemin et on voit régulièrement réapparaitre des exemples du genre, comme me l&#8217;ont fait remarquer les quelques personnes passant sur ce blog en laissant des commentaires&#8230;</p>
<p>Bien qu&#8217;il m&#8217;ait fait bloquer, que j&#8217;ai posté le lien partout où je le pouvais, que je l&#8217;ai cité par ci par là en référence à &#8220;<em>ce qui pouvait se faire dans le domaine</em>&#8220;, je n&#8217;ai pas parlé sur ce blog du clip de <a href="http://soytuaire.labuat.com/"><strong>Labuat</strong></a>, superbe réalisation , petite bombe du genre, se détachant complètement de la référence télévisuelle pour entrer dans quelque chose de &#8220;nouveau&#8221;.</p>
<p style="text-align: center;">
<div class="autoviewer" id="ngg_autoviewer9">
<div class="swfobject" id="fo9_1" style="width:625px; height:300px;">
<p>The <a href="http://www.macromedia.com/go/getflashplayer">Flash Player</a> and <a href="http://www.mozilla.com/firefox/">a browser with Javascript support</a> are needed..</p>
</div>
</div>
<script type="text/javascript" defer="defer">
var fo9_1 = {
	params : {
		wmode : "opaque",
		allowfullscreen : "true",
		bgcolor : "#FFFFFF"},
	flashvars : {
		langOpenImage : "Open Image in New Window",
		langAbout : "About",
		xmlURL : "http://iq12.com/blog/wp-content/plugins/nextgen-flashviewer/xml/autoviewer.php?gid=9"},
	attr : {
		styleclass : "autoviewer"},
	start : function() {
		swfobject.embedSWF("http://iq12.com/blog/wp-content/plugins/nggflash-swf/autoviewer.swf", "fo9_1", "625", "300", "7.0.0", false, this.flashvars, this.params , this.attr );
	}
}
fo9_1.start();
</script>
<p style="text-align: center;"><a href="http://soytuaire.labuat.com/">Labuat</a> /  <a href="http://www.herraizsoto.com/">Herraiz Soto &amp; Co.</a> / <a href="http://www.badabing.es/">badabing</a> / <a href="http://www.zumbakamera.com/">Zumbakamera</a></p>
<p>La première nouveauté qui me saute aux yeux étant le défilement latéral dans un espace fenêtré. En effet, contrairement aux exemples cités précédemment, le site s&#8217;adapte à la fenêtre&#8230; Il n&#8217;y a pas ici de format fermé, on sort du cadre contraignant de la télé et chacun, selon sa configuration matérielle et ses préférences, a une expérience différente, personnelle, du clip&#8230; Ca n&#8217;a l&#8217;air de rien comme ça, mais c&#8217;est énorme! Enfin, c&#8217;est personnellement, subjectivement, énorme!</p>
<p>Ensuite, comme pour une danse, le site nous propose une trame avec laquelle nous pouvons jouer. La ligne tracée, expression visuelle de la musique faisant habilement référence à la courbe de fréquence, pose une ambiance, et est agrémentée d&#8217;accidents visuels illustrant le texte et influant notre perception du morceau.</p>
<p>Enfin l&#8217;utilisation du pointeur de la souris comme &#8220;pinceau&#8221; joue un rôle hypnotique en nous laissant une sensation de contrôle sur le clip&#8230; Nous pouvons en effet laisser la ligne se dérouler ou jouer avec selon notre humeur, comme on laisserait trainer un doigt dans l&#8217;eau au bord d&#8217;un bateau (c&#8217;est joli comme image, non? :p).</p>
<p>Pourquoi reparler de tout ça aujourd&#8217;hui? Tout simplement parce que je viens de voir le site du jour de <a href="http://thefwa.com">theFWA</a>, et qu&#8217;il s&#8217;agit d&#8217;un clip interactif, pour le morceau &#8220;<em>T<a href="http://theneverendingwhy.placeboworld.co.uk/">he Never Ending Why</a></em>&#8221; tiré du nouvel album &#8220;<em>Battle For The Sun</em>&#8221; du groupe <strong>Placebo</strong>.</p>
<p style="text-align: center;">
<div class="autoviewer" id="ngg_autoviewer10">
<div class="swfobject" id="fo10_2" style="width:625px; height:300px;">
<p>The <a href="http://www.macromedia.com/go/getflashplayer">Flash Player</a> and <a href="http://www.mozilla.com/firefox/">a browser with Javascript support</a> are needed..</p>
</div>
</div>
<script type="text/javascript" defer="defer">
var fo10_2 = {
	params : {
		wmode : "opaque",
		allowfullscreen : "true",
		bgcolor : "#FFFFFF"},
	flashvars : {
		langOpenImage : "Open Image in New Window",
		langAbout : "About",
		xmlURL : "http://iq12.com/blog/wp-content/plugins/nextgen-flashviewer/xml/autoviewer.php?gid=10"},
	attr : {
		styleclass : "autoviewer"},
	start : function() {
		swfobject.embedSWF("http://iq12.com/blog/wp-content/plugins/nggflash-swf/autoviewer.swf", "fo10_2", "625", "300", "7.0.0", false, this.flashvars, this.params , this.attr );
	}
}
fo10_2.start();
</script>
<p style="text-align: center;"><a href="http://www.placeboworld.co.uk/">Placebo</a>, <a href="http://www.champagnevalentine.com/">Champagne Valentine</a>, <a href="http://www.random.nu/">Random</a></p>
<p style="text-align: left;">
<p style="text-align: left;">Bon, j&#8217;avoue que je ne suis ni fan de la musique, ni du graphisme, mais un nouveau pas a téé franchis dans le domaine et il me semble intéressant de la saluer. Bien sûr, nous ne sommes pas ici dans le même cas que Labuat. Le clip s&#8217;inscrit dans un cadre contraint. Oui, mais on retrouve cette &#8220;fluidité&#8221; de l&#8217;animation, l&#8217;utilisation en continu du déplacement de la souris, et la parallèle avec la courbe de fréquence (même si ici beaucoup plus à la manière d&#8217;un plug-in WinAmp). De plus il se distingue des exemples pré-cités par sa complexité visuelle. Ce n&#8217;est pas une simple animation &#8220;graphique&#8221; séquencée avec un jeu de clics de ci de là, mais bien une narration rythmée et interactive (même si celle-ci reste limitée)&#8230;</p>
<p style="text-align: left;">Bon, je ne suis plus très sûr d&#8217;où je voulais en venir avec ce billet, c&#8217;est qu&#8217;il fait faim et qu&#8217;on est vendredi, mais on va dire que c&#8217;est fini pour aujourd&#8217;hui :p &#8230; Ah si! ça me revient! Je voulais juste passer une annonce: &#8220;<em>Si tu es une boîte de prod, un groupe de musique, que tu as de l&#8217;argent, tu m&#8217;intéresses!</em>&#8220;</p>
]]></content:encoded>
			<wfw:commentRss>http://iq12.com/blog/2009/09/25/quand-lemergence-se-generalise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lucy in the sky with .. physics ?</title>
		<link>http://iq12.com/blog/2009/09/11/lucy-in-the-sky-with-physics/</link>
		<comments>http://iq12.com/blog/2009/09/11/lucy-in-the-sky-with-physics/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 15:13:38 +0000</pubDate>
		<dc:creator>ulu</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[box2d]]></category>
		<category><![CDATA[experiments]]></category>
		<category><![CDATA[lab]]></category>

		<guid isPermaLink="false">http://iq12.com/blog/?p=364</guid>
		<description><![CDATA[<script type="text/javascript" src="http://iq12.com/blog/wp-includes/js/jquery/jquery.js"></script><script type="text/javascript" src="http://iq12.com/blog/wp-content/plugins/pb-embedflash/js/sbadapter/shadowbox-jquery.js"></script><script type="text/javascript" src="http://iq12.com/blog/wp-content/plugins/pb-embedflash/js/shadowbox.js"></script><script type="text/javascript"><!--
window.onload = function() {var options ={assetURL:'',loadingImage:'http://iq12.com/blog/wp-content/plugins/pb-embedflash/css/images/loading.gif',flvPlayer:'http://iq12.com/blog/wp-content/plugins/pb-embedflash/swf/mediaplayer.swf',animate:true,animSequence:'wh',overlayColor:'#000',overlayOpacity:0.85,overlayBgImage:'http://iq12.com/blog/wp-content/plugins/pb-embedflash/css/images/overlay-85.png',listenOverlay:true,autoplayMovies:true,showMovieControls:true,resizeDuration:0.35,fadeDuration:0.35,displayNav:true,continuous:false,displayCounter:true,counterType:'default',viewportPadding:20,handleLgImages:'resize',initialHeight:160,initialWidth:320,enableKeys:true,keysClose:['c', 'q', 27],keysPrev:['p', 37],keysNext:['n', 39],handleUnsupported:'',text: {cancel:'Cancel',loading: 'loading',close:'<span class="shortcut">C</span>lose',next:'<span class="shortcut">N</span>ext',prev:'<span class="shortcut">P</span>revious',errors:{single: 'You must install the <a href="{0}">{1}</a> browser plugin to view this content.',shared: 'You must install both the <a href="{0}">{1}</a> and <a href="{2}">{3}</a> browser plugins to view this content.',either: 'You must install either the <a href="{0}">{1}</a> or the <a href="{2}">{3}</a> browser plugin to view this content.'}}};Shadowbox.init(options);}
--></script>A Beatles tribute and a simple box2d cloud of words in the same SWF ! Just playing with world forces and bodies properties. The words try to align themselves in a readable way.

(Please open the article to see the flash file or player.)Click the picture dude !

As a bonus it makes silly hippie sentences
]]></description>
			<content:encoded><![CDATA[<p>A Beatles tribute and a simple box2d cloud of words in the same SWF ! Just playing with world forces and bodies properties. The words try to align themselves in a readable way.</p>
<p><center></p>
<p style="text-align: center;"><small>(Please open the article to see the flash file or player.)</small><br /><em>Click the picture dude !</em></p>
<p></center></p>
<p>As a bonus it makes silly hippie sentences</p>
]]></content:encoded>
			<wfw:commentRss>http://iq12.com/blog/2009/09/11/lucy-in-the-sky-with-physics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Real-time pitch shifting (without change of duration)</title>
		<link>http://iq12.com/blog/2009/08/25/real-time-pitch-shifting/</link>
		<comments>http://iq12.com/blog/2009/08/25/real-time-pitch-shifting/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 16:03:20 +0000</pubDate>
		<dc:creator>fu</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[experiments]]></category>
		<category><![CDATA[Flash 10/CS4]]></category>
		<category><![CDATA[R&D]]></category>

		<guid isPermaLink="false">http://iq12.com/blog/?p=356</guid>
		<description><![CDATA[After reading Lee Brimelow&#8217;s post about Adjusting audio pitch in Flash Player 10, I&#8217;ve thinked about a real pitch shifting solution (adjusting pitch without change of duration).
Then I found a great algorithm here: http://www.dspdimension.com/admin/pitch-shifting-using-the-ft/ and its C# port here http://sites.google.com/site/mikescoderama/pitch-shifting
I&#8217;ve ported the code to AS3 then heavily optimized it to get it running under 100% [...]]]></description>
			<content:encoded><![CDATA[<p>After reading Lee Brimelow&#8217;s post about <a href="http://theflashblog.com/?p=1129">Adjusting audio pitch in Flash Player 10</a>, I&#8217;ve thinked about a real pitch shifting solution (adjusting pitch without change of duration).</p>
<p>Then I found a great algorithm here: <a href="http://www.dspdimension.com/admin/pitch-shifting-using-the-ft/">http://www.dspdimension.com/admin/pitch-shifting-using-the-ft/</a> and its C# port here <a href="http://sites.google.com/site/mikescoderama/pitch-shifting">http://sites.google.com/site/mikescoderama/pitch-shifting</a></p>
<p>I&#8217;ve ported the code to AS3 then heavily optimized it to get it running under 100% cpu use (of 1 cpu core). I get 45% cpu use with the default parameters on my 2.4GHz PC.</p>
<p>See it in action here (Flash Player 10 required):</p>
<p style="text-align: center;"><small>(Please open the article to see the flash file or player.)</small><br /><em>click to open</em></p>
<p>You can download the source code here: <a href="http://iq12.com/files/pitch_shift/pitch_shift.zip">http://iq12.com/files/pitch_shift/pitch_shift.zip</a></p>
<p>Music: More Frightened by <a href="http://www.myspace.com/candycashband">CandyCash</a> (with permission)</p>
]]></content:encoded>
			<wfw:commentRss>http://iq12.com/blog/2009/08/25/real-time-pitch-shifting/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Frédéric, the happy hairy snail !</title>
		<link>http://iq12.com/blog/2009/08/04/frederic-the-happy-hairy-snail/</link>
		<comments>http://iq12.com/blog/2009/08/04/frederic-the-happy-hairy-snail/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 17:13:00 +0000</pubDate>
		<dc:creator>ulu</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[experiments]]></category>
		<category><![CDATA[lab]]></category>
		<category><![CDATA[Papervision3D]]></category>
		<category><![CDATA[pitrerie]]></category>

		<guid isPermaLink="false">http://iq12.com/blog/?p=351</guid>
		<description><![CDATA[Here&#8217;s Frédéric ! The only snail who needs shampoo. Come and marvel at his magnifiscent hair !

(Please open the article to see the flash file or player.)click the pretty picture to open
And he comes with an enigmatic &#8220;pursuit mode&#8221;. Try it and you&#8217;ll be amazed !

]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s Frédéric ! The only snail who needs shampoo. Come and marvel at his magnifiscent hair !</p>
<p><center></p>
<p style="text-align: center;"><small>(Please open the article to see the flash file or player.)</small><br /><em>click the pretty picture to open</em></p>
<p>And he comes with an enigmatic &#8220;pursuit mode&#8221;. Try it and you&#8217;ll be amazed !</p>
<p></center></p>
]]></content:encoded>
			<wfw:commentRss>http://iq12.com/blog/2009/08/04/frederic-the-happy-hairy-snail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Le rébus du Lundi</title>
		<link>http://iq12.com/blog/2009/08/03/le-rebus-du-lundi/</link>
		<comments>http://iq12.com/blog/2009/08/03/le-rebus-du-lundi/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 19:49:24 +0000</pubDate>
		<dc:creator>ulu</dc:creator>
				<category><![CDATA[Français]]></category>
		<category><![CDATA[photoshop]]></category>
		<category><![CDATA[pitrerie]]></category>
		<category><![CDATA[rebus]]></category>
		<category><![CDATA[série]]></category>

		<guid isPermaLink="false">http://iq12.com/blog/?p=339</guid>
		<description><![CDATA[

A deviner : le titre français d&#8217;une série américaine. Postez vos réponses en commentaire. Un Internet tout neuf à gagner !

]]></description>
			<content:encoded><![CDATA[<p><center></p>
<p><img src="http://iq12.com/files/ulu/mulderlocke.jpg" alt="rebus" width="500"/><br />
A deviner : <strong>le titre français d&#8217;une série américaine</strong>. Postez vos réponses en commentaire. Un Internet tout neuf à gagner !<br />
</center></p>
]]></content:encoded>
			<wfw:commentRss>http://iq12.com/blog/2009/08/03/le-rebus-du-lundi/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Des bétises &#8230;</title>
		<link>http://iq12.com/blog/2009/07/24/des-betises/</link>
		<comments>http://iq12.com/blog/2009/07/24/des-betises/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 16:07:02 +0000</pubDate>
		<dc:creator>ulu</dc:creator>
				<category><![CDATA[Français]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[b3ta]]></category>
		<category><![CDATA[photoshop]]></category>

		<guid isPermaLink="false">http://iq12.com/blog/?p=326</guid>
		<description><![CDATA[J&#8217;ai participé au b3ta image challenge de la semaine dernière, ce que je ne fais malheureusement pas assez souvent. le thème était :
Take any film you wish, and photoshop the scenery, characters or titles into the style of a famous movie poster for a different film: The Dambusters in the style of Ghostbusters, Finding Nemo [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai participé au <a href="http://www.b3ta.com/challenge/moviemashups/">b3ta image challenge</a> de la semaine dernière, ce que je ne fais malheureusement pas assez souvent. le thème était :</p>
<blockquote><p>Take any film you wish, and photoshop the scenery, characters or titles into the style of a famous movie poster for a different film: The Dambusters in the style of Ghostbusters, Finding Nemo in the style of Jaws, etc. </p></blockquote>
<p>Donc, en gros, prendre un poster de film et photoshoper un autre film dedans. J&#8217;ai envoyé quelques propositions de qualité variable dont certaines dont j&#8217;étais pas peu fier. J&#8217;ai pas gagné, mais je me suis quand même placé dans les 20 premiers.<br />
A vous de retrouver les films ayant servis d&#8217;inspirations pour les posters ( ça va, c&#8217;est pas bien dur )</p>
<p><center><br />
<a href="http://iq12.com/files/ulu/dacingstar.jpg"><img src="http://iq12.com/files/ulu/dacingstar.jpg" alt="DancesWithWolves" width="140"/></a> <a href="http://iq12.com/files/ulu/duneofarabia.jpg"><img src="http://iq12.com/files/ulu/duneofarabia.jpg" alt="Dune" width="150"/></a> <a href="http://iq12.com/files/ulu/harryjones.jpg"><img src="http://iq12.com/files/ulu/harryjones.jpg" alt="Harry Potter" width="150"/></a> <a href="http://iq12.com/files/ulu/shaolineric.jpg"><img src="http://iq12.com/files/ulu/shaolineric.jpg" alt="Looking for Eric" width="150"/></a><br />
</center></p>
<p>Tous ça pour dire : visitez <a href="http://www.b3ta.com">b3ta</a>, c&#8217;est poilant !</p>
]]></content:encoded>
			<wfw:commentRss>http://iq12.com/blog/2009/07/24/des-betises/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Come &amp; play with my hairy balls &#8230;</title>
		<link>http://iq12.com/blog/2009/07/10/come-play-with-my-hairy-balls/</link>
		<comments>http://iq12.com/blog/2009/07/10/come-play-with-my-hairy-balls/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 12:04:41 +0000</pubDate>
		<dc:creator>ulu</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[experiments]]></category>
		<category><![CDATA[lab]]></category>
		<category><![CDATA[Papervision3D]]></category>
		<category><![CDATA[source]]></category>

		<guid isPermaLink="false">http://iq12.com/blog/?p=320</guid>
		<description><![CDATA[&#8230; because they&#8217;re made of PaperVision 
A little experiment with the line drawing capabilities of PaperVision.
(Please open the article to see the flash file or player.)click the pretty picture to open
Play with the sliders in the control panel to get various effect, but be careful not to put too many complicated hair ( the &#8220;Nb [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; because they&#8217;re made of PaperVision </p>
<p>A little experiment with the line drawing capabilities of PaperVision.</p>
<p style="text-align: center;"><small>(Please open the article to see the flash file or player.)</small><br /><em>click the pretty picture to open</em></p>
<p>Play with the sliders in the control panel to get various effect, but be careful not to put too many complicated hair ( the &#8220;Nb hair&#8221; &#038; the &#8220;Nodes&#8221; sliders ) or you&#8217;ll break the Internet. The first four sliders are live, the others are not, you&#8217;ll have too wait a few seconds for the changes to be applied.</p>
<p>The thing is full 3D, rendered with PaperVision. The line drawing works very well, as does the Z-Sorting.</p>
<p>The hair roots are placed with the sphere distribution script of <a href="http://en.nicoptere.net/?p=12">Nicolas Barradeau</a>, so thank you Nicolas.</p>
<p><a href="http://iq12.com/blog/wp-content/uploads/2009/07/hairball/Hairball.rar">Here are the sources </a> but you&#8217;ll need <a href="http://code.google.com/p/papervision3d/downloads/list">Papervision3D</a> too.</p>
]]></content:encoded>
			<wfw:commentRss>http://iq12.com/blog/2009/07/10/come-play-with-my-hairy-balls/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Petite introduction aux plaisirs de la Bave&#8230;</title>
		<link>http://iq12.com/blog/2009/07/06/petite-introduction-aux-plaisirs-de-la-bave/</link>
		<comments>http://iq12.com/blog/2009/07/06/petite-introduction-aux-plaisirs-de-la-bave/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 13:07:02 +0000</pubDate>
		<dc:creator>16ames</dc:creator>
				<category><![CDATA[Français]]></category>
		<category><![CDATA[AS3 good practices]]></category>
		<category><![CDATA[DroolBox]]></category>
		<category><![CDATA[iq12]]></category>
		<category><![CDATA[prod]]></category>
		<category><![CDATA[R&D]]></category>

		<guid isPermaLink="false">http://iq12.com/blog/?p=283</guid>
		<description><![CDATA[Cela fait maintenant quelques temps que nous baignons tous trois, chez iq¹², dans l&#8217;univers de Flash&#8230;
De la version 3 de Macromedia, avec ses TellTarget, jusqu&#8217;à celle CS4 d&#8217;Adobe, pas mal d&#8217;eau a coulé sous les ponts et la part du code n&#8217;est plus tout à fait la même.
Venant de formations différentes, nous avons chacun abordé [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption aligncenter" style="width: 357px"><img alt="" src="http://iq12.com/files/iq12/drooldog.gif" title="Drool Dog © DanyBoy" class="aligncenter" width="347" height="406" /><p class="wp-caption-text">Drool Dog © DanyBoy</p></div>
<p>Cela fait maintenant quelques temps que nous baignons tous trois, chez <strong>iq¹²</strong>, dans l&#8217;univers de Flash&#8230;<br />
De la version 3 de Macromedia, avec ses TellTarget, jusqu&#8217;à celle CS4 d&#8217;Adobe, pas mal d&#8217;eau a coulé sous les ponts et la part du code n&#8217;est plus tout à fait la même.<br />
Venant de formations différentes, nous avons chacun abordé le logiciel à notre façon, de manière empirique, et en grande partie autodidacte.</p>
<p>Le constat est que, même si la tendance est à la normalisation, il existe autant de techniques de flasher que de flasheurs. Et le fossé s&#8217;agrandit entre ceux qui ont &#8220;l&#8217;expérience&#8221; du Flash à l&#8217;ancienne (si on peut nommer ainsi quelque chose d&#8217;un peu plus d&#8217;une dizaine d&#8217;année) qui viennent de la bidouille ou du graphisme, et ceux qui, frais émoulus des écoles, abordent Flash et l&#8217;Action Script 3 par le versant &#8220;codeux&#8221;, sans s&#8217;être frottés aux &#8220;dessineux&#8221; et autres DA/AV&#8230;</p>
<p>Ce constat nous a amené à réfléchir à un outil, ou plutôt une boîte à outils<span id="more-283"></span>, qui nous permette :</p>
<ul>
<li>d&#8217;optimiser la production en &#8220;factorisant&#8221; notre code et en réutilisant au maximum les scripts récurrents,</li>
<li>de faciliter l&#8217;ouverture de nos projets ou le passage de relais à des intervenants extérieurs (freelances, ressources internes chez le client, etc.),</li>
<li>de rendre plus aisée la collaboration avec les développeurs et les graphistes,</li>
<li>de laisser un maximum d&#8217;autonomie au client,</li>
<li>et surtout de répondre à toutes fausses idées qu&#8217;on peut se faire sur Flash (non référençable, difficulté de mise à jour, etc.).</li>
</ul>
<p>C&#8217;est ainsi que notre projet de &#8220;<strong>DroolBox</strong>&#8221; a vu le jour.<br />
La <strong>DroolBox</strong>, kézako? C&#8217;est tout d&#8217;abord une liste de guidelines, une nomenclature, afin de normaliser les projets iq¹². C&#8217;est ensuite une série de logiciels, de classes ActionScript et de scripts PHP continuellement mise à jour et enrichie afin de travailler avec les mêmes outils. C&#8217;est enfin un framework conçu en vue d&#8217;être utilisable et utilisé par un maximum de flasheurs, de l&#8217;animateur ne mettant qu&#8217;un minimum les mains dans le cambouis, au développeur chevronné ne voulant pas s&#8217;embêter avec les problématiques d&#8217;intégration HTML de son module Flash.</p>
<p>Nous pensons permettre l&#8217;utilisation de la <strong>DroolBox </strong>à toutes les personnes intéressées dès que la première version sera documentée.<br />
Mais comme un petit dessin vaut parfois un long discours, voici Mesdames, Mesdemoiselles, Messieurs, la <strong>DroolBox </strong>par l&#8217;exemple.</p>
<div class="wp-caption aligncenter" style="width: 508px"><a href="http://www.touteleurope.fr/fileadmin/CIE/03-lue/module_histoire/" target="_blank"><img alt="Frise historique multimédia - touteleurope.fr / kungfuyoga" src="http://iq12.com/test/frise2009/frise01.jpg" title="Frise historique multimédia" width="498" height="377" /></a><p class="wp-caption-text">Frise historique multimédia - touteleurope.fr / kungfuyoga</p></div>
<p>Il y a quelques années, alors que nous travaillions chez <a href="http://www.kungfuyoga.com" target="_blank">Kungfuyoga</a>, nous avions conçu et réalisé pour le site <a href="http://www.touteleurope.fr" target="_blank">Toute l&#8217;Europe.fr</a> une <strong><a href="http://www.touteleurope.fr/fileadmin/CIE/03-lue/module_histoire/" target="_blank">Frise Historique Multimédia</a></strong></p>
<p>C&#8217;est un module Flash complexe, avec beaucoup de contenu texte, image et vidéo. Une des problématiques à l&#8217;époque avait justement été de proposer une version HTML alternative, en grande partie par souci d&#8217;accessibilité et de référencement.</p>
<p>Nous l&#8217;avons donc pris en &#8220;cas d&#8217;école&#8221; et l&#8217;avons redéveloppé avec notre <strong>DroolBox</strong>. Voici le résultat de notre <strong><a href="http://iq12.com/test/frise2009/" target="_blank">Frise Historique Multimédia DroolBoxisée</a></strong></p>
<div class="wp-caption aligncenter" style="width: 481px"><a href="http://iq12.com/test/frise2009/fr/" target="_blank"><img alt="" src="http://iq12.com/test/frise2009/fr.jpg" title="Frise FR" class="aligncenter" width="471" height="255" /></a><p class="wp-caption-text">Frise FR</p></div>
<p><strong>[MODE VRP ON]</strong></p>
<p><strong>Au premier abord, pas de différence.</strong><br />
Héhé, mais mon bon monsieur, c&#8217;est bien là tout l&#8217;intérêt!</p>
<p>Avec la <strong>DroolBox</strong>, nous vous proposons un module FullFlash qui peut être très complexe en apparence, mais qui est d&#8217;une simplicité déconcertante quand à la gestion des contenus.</p>
<p>Sans aucune intervention de votre part, le site est <strong>totalement référençable</strong>, avec des <strong>URLs directes</strong>, en <strong>multilingues</strong>, les <strong>tags GoogleAnalytics</strong> sont automatiquement renseignés, et les <strong>adresses traduites</strong></p>
<p>Avec la <strong>DroolBox</strong>, plutôt que d&#8217;inviter vos visiteurs à un véritable jeu de piste pour trouver un contenu, envoyez les tout simplement vers une la page ciblée. Les URLs d&#8217;accès direct, générées depuis le XML de contenus, sont explicites et automatiquement traduites pour un référencement optimal.</p>
<p>Avec la <strong>DroolBox</strong>, plus besoin de vous embêter à doubler vos contenus en HTML, tout est automatique, vous n&#8217;avez plus qu&#8217;à mettre en forme la version alternative en modifiant les feuilles de style CSS.</p>
<p>Nous avons pensé la <strong>DroolBox</strong> pour produire des sites répondant aux critères d&#8217;obtention du label <a href="http://www.accessiweb.org" target="_blank">AccessiWeb</a> niveau Bronze</p>
<p>Cerise sur le gateau, la <strong>DroolBox</strong> permet d&#8217;intégrer très simplement votre module ou votre site à tout <a href="http://opensourcecms.com/" target="_blank">CMS Open Source</a> pour vous permettre de gérer tous vos contenus sur la même plateforme. </p>
<div class="wp-caption aligncenter" style="width: 481px"><a href="http://iq12.com/test/frise2009/en/" target="_blank"><img alt="" src="http://iq12.com/test/frise2009/en.jpg" title="Frise EN" class="aligncenter" width="471" height="255" /></a><p class="wp-caption-text">Frise EN</p></div>
<p>Et pour vous, mesdames, mesdemoiselles et messieurs les développeurs, nous vous proposons une utilisation très simple: il vous suffit de rédiger les classes de chaque page&#8230; Les transitions et toute l&#8217;arborescence sont définies directement dans le XML. Un module de gestion des assets évite la prise de tête des chargements. De plus, par simple déclaration dans le XML, la DroolBox génère automatiquement les thumbnails d&#8217;images dont vous avez besoin. Enfin un module zippe tous les XML, les télécharge, et les dézippe directement dans le Flash, ce qui permet un chargement optimisé des données ainsi qu&#8217;un archivage des différentes version selon les modifications.</p>
<div class="wp-caption aligncenter" style="width: 481px"><a href="http://iq12.com/test/frise2009/de/" target="_blank"><img alt="" src="http://iq12.com/test/frise2009/de.jpg" title="Frise DE" class="aligncenter" width="471" height="255" /></a><p class="wp-caption-text">Frise DE</p></div>
<p><strong>EXEMPLES</strong></p>
<ul>
<li><strong>Multilingue:</strong> en <a href="http://iq12.com/test/frise2009/" target="_blank">français</a>, en <a href="http://iq12.com/test/frise2009/en/" target="_blank">anglais</a>, en <a href="http://iq12.com/test/frise2009/de/" target="_blank">allemand</a>, ou encore en <a href="http://iq12.com/test/frise2009/es/" target="_blank">espagnol</a>.</li>
<li><strong>Traduction des URL et accès direct:</strong> <a href="http://iq12.com/test/frise2009/#/fr/frise/ariane-un-succes-de-la-cooperation-europeenne-24-decembre-1979" target="_blank">Lancement d&#8217;Ariane</a>, <a href="http://iq12.com/test/frise2009/#/en/frise/ariane-a-success-for-european-cooperation-december-24-1979" target="_blank">The Launch of Ariane</a>, <a href="http://iq12.com/test/frise2009/#/de/frise/die-ariane-rakete-ein-erfolg-der-europeischen-zusammenarbeit-24.-dezember-1979" target="_blank">Abschuss der Ariane</a>, <a href="http://iq12.com/test/frise2009/#/es/frise/ariane-un-exito-de-la-cooperacion-europea-24-de-diciembre-de-1979" target="_blank">Lanzamiento de Ariane</a>.</li>
<li><strong>Génération d&#8217;une version alternative HTML:</strong> <a href="http://iq12.com/test/frise2009/html/fr/frise/ariane-un-succes-de-la-cooperation-europeenne-24-decembre-1979" target="_blank">Lancement d&#8217;Ariane</a>, <a href="http://iq12.com/test/frise2009/html/en/frise/ariane-a-success-for-european-cooperation-december-24-1979" target="_blank">The Launch of Ariane</a>, <a href="http://iq12.com/test/frise2009/html/de/frise/die-ariane-rakete-ein-erfolg-der-europeischen-zusammenarbeit-24.-dezember-1979" target="_blank">Abschuss der Ariane</a>, <a href="http://iq12.com/test/frise2009/html/es/frise/ariane-un-exito-de-la-cooperacion-europea-24-de-diciembre-de-1979" target="_blank">Lanzamiento de Ariane</a>.</li>
</ul>
<div class="wp-caption aligncenter" style="width: 481px"><a href="http://iq12.com/test/frise2009/es/" target="_blank"><img alt="" src="http://iq12.com/test/frise2009/es.jpg" title="Frise ES" class="aligncenter" width="471" height="255" /></a><p class="wp-caption-text">Frise ES</p></div>
<p><strong>[/MODE VRP OFF]</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://iq12.com/blog/2009/07/06/petite-introduction-aux-plaisirs-de-la-bave/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iq¹² creative session #1 &#8211; appel à participations</title>
		<link>http://iq12.com/blog/2009/07/02/iq%c2%b9%c2%b2-creative-session-1-appel-a-participations/</link>
		<comments>http://iq12.com/blog/2009/07/02/iq%c2%b9%c2%b2-creative-session-1-appel-a-participations/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 21:12:32 +0000</pubDate>
		<dc:creator>fu</dc:creator>
				<category><![CDATA[Français]]></category>
		<category><![CDATA[experiments]]></category>
		<category><![CDATA[lab]]></category>
		<category><![CDATA[michael jackson is dead]]></category>
		<category><![CDATA[pitrerie]]></category>

		<guid isPermaLink="false">http://iq12.com/blog/?p=277</guid>
		<description><![CDATA[Évidemment, tous ceux qui voudraient participer à cet hommage/pitrerie sont les bienvenus.
Première participation (reçue moins de 24h après le Jam, bravo !), Monsieur Gus:
Pressez les touches de déplacement du curseur alternativement à la vitesse correcte tandis que le MJ danse pour lancer le chapeau au bon âge
(trad: systran.fr)

(Please open the article to see the flash [...]]]></description>
			<content:encoded><![CDATA[<p>Évidemment, tous ceux qui voudraient participer à cet <a href="http://iq12.com/blog/2009/07/02/iq%c2%b9%c2%b2-creative-session-1/">hommage/pitrerie</a> sont les bienvenus.</p>
<p><strong>Première participation (reçue moins de 24h après le Jam, bravo !), Monsieur Gus:</strong></p>
<blockquote><p>Pressez les touches de déplacement du curseur alternativement à la vitesse correcte tandis que le MJ danse pour lancer le chapeau au bon âge</p>
<p>(trad: systran.fr)</p>
</blockquote>
<p style="text-align: center;"><small>(Please open the article to see the flash file or player.)</small><br /><em>cliquer sur l&#8217;image pour ouvrir</em></p>
]]></content:encoded>
			<wfw:commentRss>http://iq12.com/blog/2009/07/02/iq%c2%b9%c2%b2-creative-session-1-appel-a-participations/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
