<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="fr">
  
  <title type="html">Anthor.Net</title>
  <subtitle type="html" />
  
  <link href="http://www.anthor.net/blog/" rel="alternate" type="text/html" title="" />
  <updated>2009-11-04T10:24:14+01:00</updated>
  <author>
    <name>Anthor</name>
  </author>
  <id>urn:md5:6f1e304f996c0899c135ebd901a585f3</id>
  <generator uri="http://www.dotclear.org/">Dotclear</generator>
  
    
  <link rel="self" href="http://feeds.feedburner.com/Anthornet-Blog" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
    <title>Ajax Queue avec jQuery</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/0FzGvZwDo90/Ajax-Queue-avec-jQuery" rel="alternate" type="text/html" title="Ajax Queue avec jQuery" />
    <id>urn:md5:21033f9e91f683b460f36a97b096bf52</id>
    <updated>2009-10-18T11:19:00+01:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Développement</dc:subject>
        <dc:subject>AJAX</dc:subject><dc:subject>Javascript</dc:subject><dc:subject>jQuery</dc:subject>    
    <content type="html">&lt;p&gt;En travaillant sur un nouvel outil ce week-end, je me suis rendu compte que l'utilisation des queues en &lt;a href="http://www.anthor.net/blog/tag/AJAX"&gt;Ajax&lt;/a&gt; avec &lt;a href="http://www.anthor.net/blog/tag/jQuery"&gt;jQuery&lt;/a&gt; n'était pas natif.&lt;br /&gt;
Il existe quelques pistes à ces adresses, mais rien de vraiment pratique :&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://jquery.com/plugins/project/ajaxqueue" hreflang="en"&gt;http://jquery.com/plugins/project/ajaxqueue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://docs.jquery.com/AjaxQueue" hreflang="en"&gt;http://docs.jquery.com/AjaxQueue&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Puis j'ai trouvé une version plus intéressante de celui-ci dans le plugin &lt;a href="http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/" hreflang="en"&gt;jQuery Autocomplete&lt;/a&gt;, néanmoins, même si la fonction ABORT fonctionne correctement, mes appels en queue ne fonctionnaient pas.&lt;br /&gt;
J'en ai donc légèrement modifié les sources, en ajoutant un mode DEQUEUE me permettant de lancer la liste d'attente en fin de boucle par exemple.&lt;/p&gt;


&lt;p&gt;Grâce à l'utilisation de la variable PORT, on peux ainsi contrôler indépendamment plusieurs queues, ou annuler des requêtes spécifiques, le tout en utilisant la fonction Ajax de jQuery.&lt;/p&gt;    &lt;h4&gt;Le plugin&lt;/h4&gt;
&lt;pre class="javascript"&gt;&lt;span style="color: #009900; font-style: italic;"&gt;/**
 * Ajax Queue Plugin
 */&lt;/span&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;$&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; ajax = $.&lt;span style="color: #006600;"&gt;ajax&lt;/span&gt;;
    &lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; pendingRequests = &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
    $.&lt;span style="color: #006600;"&gt;ajax&lt;/span&gt; = &lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;settings&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        settings = jQuery.&lt;span style="color: #006600;"&gt;extend&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;
            settings, 
            jQuery.&lt;span style="color: #006600;"&gt;extend&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;
                &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;, 
                jQuery.&lt;span style="color: #006600;"&gt;ajaxSettings&lt;/span&gt;, 
                settings
            &lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
        &lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;	
        &lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; port = settings.&lt;span style="color: #006600;"&gt;port&lt;/span&gt;;
&amp;nbsp;
        &lt;span style="color: #000066; font-weight: bold;"&gt;switch&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;settings.&lt;span style="color: #006600;"&gt;mode&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #000066; font-weight: bold;"&gt;case&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;&amp;quot;abort&amp;quot;&lt;/span&gt;: 
                &lt;span style="color: #000066; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt; pendingRequests&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;port&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
                    pendingRequests&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;port&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;abort&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
                &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
                &lt;span style="color: #000066; font-weight: bold;"&gt;return&lt;/span&gt; pendingRequests&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;port&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt; = ajax.&lt;span style="color: #006600;"&gt;apply&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;this&lt;/span&gt;, arguments&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
            &lt;span style="color: #000066; font-weight: bold;"&gt;case&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;&amp;quot;queue&amp;quot;&lt;/span&gt;: 
                &lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; _old = settings.&lt;span style="color: #006600;"&gt;complete&lt;/span&gt;;
                settings.&lt;span style="color: #006600;"&gt;complete&lt;/span&gt; = &lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
                    &lt;span style="color: #000066; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt; _old &lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;
                        _old.&lt;span style="color: #006600;"&gt;apply&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt; &lt;span style="color: #000066; font-weight: bold;"&gt;this&lt;/span&gt;, arguments &lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
                    jQuery&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;ajax&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;dequeue&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;ajax&amp;quot;&lt;/span&gt; + port &lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
                &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;;
&amp;nbsp;
                jQuery&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt; ajax &lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;queue&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;ajax&amp;quot;&lt;/span&gt; + port, &lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
                    ajax&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt; settings &lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
                &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
                &lt;span style="color: #000066; font-weight: bold;"&gt;return&lt;/span&gt;;
&amp;nbsp;
            &lt;span style="color: #000066; font-weight: bold;"&gt;case&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;&amp;quot;dequeue&amp;quot;&lt;/span&gt;: 
                jQuery&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;ajax&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;dequeue&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;&amp;quot;ajax&amp;quot;&lt;/span&gt; + port &lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
                &lt;span style="color: #000066; font-weight: bold;"&gt;return&lt;/span&gt;;
        &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
        &lt;span style="color: #000066; font-weight: bold;"&gt;return&lt;/span&gt; ajax.&lt;span style="color: #006600;"&gt;apply&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;this&lt;/span&gt;, arguments&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;jQuery&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;


&lt;h4&gt;Utilisation de la méthode ABORT&lt;/h4&gt;
&lt;pre class="javascript"&gt;$input.&lt;span style="color: #006600;"&gt;bind&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #3366CC;"&gt;'keyup'&lt;/span&gt;, &lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;event&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #000066; font-weight: bold;"&gt;if&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;$searchTimeout &lt;span style="color: #66cc66;"&gt;!&lt;/span&gt;= undefined&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        clearTimeout&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;$searchTimeout&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
    $searchTimeout = setTimeout&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        $searchTimeout = undefined;
&amp;nbsp;
        &lt;span style="color: #003366; font-weight: bold;"&gt;var&lt;/span&gt; inputVal = $input.&lt;span style="color: #006600;"&gt;val&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;replace&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0066FF;"&gt;/^\s+/g&lt;/span&gt;,&lt;span style="color: #3366CC;"&gt;''&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color: #006600;"&gt;replace&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0066FF;"&gt;/\s+$/g&lt;/span&gt;,&lt;span style="color: #3366CC;"&gt;''&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
        $.&lt;span style="color: #006600;"&gt;ajax&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
            mode    : &lt;span style="color: #3366CC;"&gt;'abort'&lt;/span&gt;,
            port    : &lt;span style="color: #3366CC;"&gt;'ajaxSuggestions'&lt;/span&gt;,
            type    : &lt;span style="color: #3366CC;"&gt;'POST'&lt;/span&gt;,
            url     : &lt;span style="color: #3366CC;"&gt;'test.php'&lt;/span&gt;,
            data    : &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;'keywords'&lt;/span&gt;: inputVal &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;,
            success : &lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;msg&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
                &lt;span style="color: #000066;"&gt;alert&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;msg&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
            &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
        &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;, &lt;span style="color: #CC0000;"&gt;500&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;Cette méthode est plus qu'intéressante dans le cas par exemple ou l'on souhaite afficher des informations au fur et à mesure que l'utilisateur écrit une information. Les requêtes précédentes utilisant le même port sont annulées au profit de la nouvelle requête, évitant un engorgement des informations et des erreurs dans le cas ou une requête ultérieure soit plus rapide que les précédentes.&lt;/p&gt;


&lt;h4&gt;Utilisation de la méthode QUEUE&lt;/h4&gt;
&lt;pre class="javascript"&gt;&lt;span style="color: #000066; font-weight: bold;"&gt;for&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt; i = &lt;span style="color: #CC0000;"&gt;0&lt;/span&gt; ; i &lt;span style="color: #66cc66;"&gt;&amp;lt;&lt;/span&gt;= &lt;span style="color: #CC0000;"&gt;10&lt;/span&gt; ; i++ &lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
    $.&lt;span style="color: #006600;"&gt;ajax&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
        mode: &lt;span style="color: #3366CC;"&gt;'queue'&lt;/span&gt;,
        port: &lt;span style="color: #3366CC;"&gt;'ajaxWhois'&lt;/span&gt;,
        type: &lt;span style="color: #3366CC;"&gt;'POST'&lt;/span&gt;,
        url: &lt;span style="color: #3366CC;"&gt;'test.php'&lt;/span&gt;,
        data: &lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt; &lt;span style="color: #3366CC;"&gt;'increment'&lt;/span&gt;: i &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;,
        success: &lt;span style="color: #003366; font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;msg&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;
            &lt;span style="color: #000066;"&gt;alert&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;msg&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
        &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
    &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;
&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
$.&lt;span style="color: #006600;"&gt;ajax&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt; mode: &lt;span style="color: #3366CC;"&gt;'dequeue'&lt;/span&gt;, port: &lt;span style="color: #3366CC;"&gt;'ajaxWhois'&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;

&lt;p&gt;La méthode queue permet de boucler facilement sur plusieurs requêtes et ne les lancer qu'au moment choisit. Les requêtes ainsi lancées, le sont les unes à la suite des autres, évitant un engorgement des données reçues.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xNHRecje7T8FjsTqQu21PchvwdU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xNHRecje7T8FjsTqQu21PchvwdU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xNHRecje7T8FjsTqQu21PchvwdU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xNHRecje7T8FjsTqQu21PchvwdU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Ajax-Queue-avec-jQuery#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/77</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Ajax-Queue-avec-jQuery</feedburner:origLink></entry>
    
  <entry>
    <title>Bug iGoogle</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/D-AmoHA30dg/Bug-iGoogle" rel="alternate" type="text/html" title="Bug iGoogle" />
    <id>urn:md5:a168db2c602dbd2216db8899bc7d18d2</id>
    <updated>2009-10-12T15:32:00+01:00</updated>
    <author><name>Anthor</name></author>
            
    <content type="html">    &lt;p&gt;Vous aussi en ce moment vous avez quelques bugs avec iGoogle ?&lt;ins&gt;&lt;br /&gt;&lt;/ins&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.anthor.net/blog/public/BugiGoogle.jpg"&gt;&lt;img title="BugiGoogle.jpg, oct. 2009" style="margin: 0 auto; display: block;" alt="" src="http://www.anthor.net/blog/public/.BugiGoogle_m.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nBDApeTYt8ZsyOLLaRe5-wr8Q3U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nBDApeTYt8ZsyOLLaRe5-wr8Q3U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nBDApeTYt8ZsyOLLaRe5-wr8Q3U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nBDApeTYt8ZsyOLLaRe5-wr8Q3U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Bug-iGoogle#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/78</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Bug-iGoogle</feedburner:origLink></entry>
    
  <entry>
    <title>Formatter un fichier Excel avec PHP</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/lZQDeHadiqU/Formatter-un-fichier-Excel-avec-PHP" rel="alternate" type="text/html" title="Formatter un fichier Excel avec PHP" />
    <id>urn:md5:39484ada7682316a2fe50c61b99f4f38</id>
    <updated>2009-09-06T18:10:00+01:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Développement</dc:subject>
        <dc:subject>CSS</dc:subject><dc:subject>PHP</dc:subject>    
    <content type="html">&lt;p&gt;Certains clients me demandent parfois des exports en Excel dans leurs back-office. Loin d'être compliqué cet export demande tout de même quelques manipulations.&lt;br /&gt;
Rien de bien compliqué néanmoins, puisque une fonction et un header permettent de s'affranchir de cet exercice en moins de temps qu'il n'en faut.&lt;/p&gt;


&lt;p&gt;Certes cette méthode affiche un avertissement lors de la première ouverture, mais il faut savoir qu'Excel gère très bien les tableaux. Le fichier s'ouvre donc parfaitement avec les versions XP et 2007.&lt;/p&gt;    &lt;p&gt;Pour le header du fichier, c'est très simple&amp;nbsp;:&lt;/p&gt;
&lt;pre class="php"&gt;&lt;span style="color: #000066;"&gt;header&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;&amp;quot;Content-Type: application/vnd.ms-excel;&amp;quot;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Le formatage du tableau permet d'utiliser la plupart des formatage disponibles dans Excel&amp;nbsp;:&lt;/p&gt;
&lt;pre class="html"&gt;&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;table&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Texte&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color: #000066;"&gt;style&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'mso-number-format:\@'&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;On formate un texte&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Nombre sur 3 décimales ( 2.345 )&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color: #000066;"&gt;style&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'mso-number-format:&amp;quot;0\.000&amp;quot;'&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;2.345678&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Nombre séparé par un espace, avec 3 décimales ( 1 234.567 )&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color: #000066;"&gt;style&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'mso-number-format:\#\ \#\#0\.000'&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;1234.56789&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;td&amp;gt;&lt;/span&gt;&lt;/span&gt;Une date ( 06/09/2009 )&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
        &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;td&lt;/span&gt; &lt;span style="color: #000066;"&gt;style&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;=&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;'mso-number-format:&amp;quot;dd\/mm\/yyyy&amp;quot;'&lt;/span&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;2009-09-06 13:37:45&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;/table&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Voilà, il suffit juste ensuite de produire une simple boucle pour obtenir des exports de données vers Excel.
En utilisant les headers, les colspans, les rowspans, etc, on peux rapidement obtenir des exports beaucoup plus poussés.
Les couleurs de textes et les fonds de cellules sont aussi utilisables.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yRjVT6IgrmyoN8N2yiZhPLgGbeA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yRjVT6IgrmyoN8N2yiZhPLgGbeA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yRjVT6IgrmyoN8N2yiZhPLgGbeA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yRjVT6IgrmyoN8N2yiZhPLgGbeA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Formatter-un-fichier-Excel-avec-PHP#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/55</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Formatter-un-fichier-Excel-avec-PHP</feedburner:origLink></entry>
    
  <entry>
    <title>Total BreakDown</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/tFdSmNNqpC8/Total-BreakDown" rel="alternate" type="text/html" title="Total BreakDown" />
    <id>urn:md5:6705ba20e0d3d2014a91ef555413d7f7</id>
    <updated>2009-09-01T12:00:00+01:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Vie personnelle</dc:subject>
            
    <content type="html">    &lt;p&gt;Ce qui devait arriver arrive, la goutte d'eau qui fait déborder le vase. En fait rien de spécifique, simplement un constat, depuis 1 an, l'entreprise dans lequel je travaille nous demande de faire des efforts pour pallier aux manques de compétences de certains pôles. En 1 an de promesses de changements, toujours rien, si ce n'est les licenciements des personnes compétentes. Un webdesigner licencié pour garder un directeur artistique incapable de faire son travail... Des chefs de projets qui passent plus de temps à faire de la facturation et du commercial plutôt que de faire de la gestion de projet...&lt;/p&gt;
&lt;p&gt;Pour ma part, mon boulot consiste plus à refaire les maquettes, réécrire des cahiers des charges, installer des serveurs et créer des outils que de faire des sites Internet, raison pour laquelle je suis allé en agence &lt;strong&gt;Web&lt;/strong&gt;. Au final, je suis devenu un homme à tout faire, mais je ne fais pas mon travail, ou du moins celui pour lequel je suis payé. &lt;/p&gt;
&lt;p&gt;Je pense qu'il est inutile de préciser que bien évidemment, nous n'avons pas le choix, car si je refuse, on me dit que je ne fais pas d'efforts... Effectivement. Mais ce n'est pas mon entreprise, je ne force personne à garder du personnel incompétent, je ne force personne à vendre des prestations sans avoir les compétences qui suivent, ou à vendre des produits qui ne sont pas encore développés... &lt;/p&gt;
&lt;p&gt;J'ai joué le jeu, j'ai voulu avoir confiance, aider les personnes dans leur travail, résultat 3 ans plus tard, je suis complétement vanné, je n'ai plus aucune motivation à venir travailler, et j'ai perdu toute confiance dans les entreprises actuelles. Je ne garderais pas un bon souvenir de cette expérience,elle me conforte dans mon idée qu'une entreprise doit avant tout être une question de passion, d'équité et d'envie de la part des personnes qui y travaillent. En aucun cas on ne peux travailler sereinement, lorsque des enjeux familiaux sont plus fort que le professionnalisme à avoir.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4uINF5NCh3OkJmqjl0SJASWqquw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4uINF5NCh3OkJmqjl0SJASWqquw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4uINF5NCh3OkJmqjl0SJASWqquw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4uINF5NCh3OkJmqjl0SJASWqquw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Total-BreakDown#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/76</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Total-BreakDown</feedburner:origLink></entry>
    
  <entry>
    <title>L'importance de compresser les fichiers statiques</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/efHLj-3Uusc/L-importance-de-compresser-les-fichiers-statiques" rel="alternate" type="text/html" title="L'importance de compresser les fichiers statiques" />
    <id>urn:md5:495d49f064bd3e1785c039d91bf2c7df</id>
    <updated>2009-08-13T13:47:00+01:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Développement</dc:subject>
        <dc:subject>Apache</dc:subject><dc:subject>Compression</dc:subject><dc:subject>CSS</dc:subject><dc:subject>Javascript</dc:subject>    
    <content type="html">&lt;p&gt;Lorsque j'ai commencé Tarschool, j'ai immédiatement mis en place un système de compression des fichiers. Celui-ci est de deux sortes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Minification des fichiers JS et CSS&lt;/li&gt;
&lt;li&gt;Compression avec le mode deflate des fichiers JS et CSS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Faciles et rapides à mettre en place, ces solutions permettent souvent d'économiser au minimum 75% de la bande passante utilisé par le serveur en mode normal.&lt;/p&gt;


&lt;p&gt;Voici un petit récapitulatif des solutions que nous avons mis en place et de leurs économies associées.&lt;/p&gt;    &lt;p&gt;Pour la minification, je vous laisse voir de votre côté, personnellement, j'ai plusieurs scripts qui tournent avec &lt;a href="http://developer.yahoo.com/yui/compressor/" hreflang="en"&gt;YUICompressor&lt;/a&gt;, mais d'autres solutions sont possibles.&lt;br /&gt;
Par exemple: JSmin, CSSminifier, DOJO Compressor... C'est au choix, je pense qu'elles ont toutes leurs avantages et leurs inconvénients. YUICompressor est, dans mon cas utilisé en local avant upload des fichiers.&lt;/p&gt;


&lt;p&gt;Pour le DEFLATE, un simple copier/coller suffit dans un .htaccess à la racine, ces lignes ayant déjà été donné dans mon &lt;a href="http://www.anthor.net/blog/post/.htaccess-par-d%C3%A9faut" hreflang="fr"&gt;.htaccess par défaut&lt;/a&gt;, cette méthode doit normalement resté active le plus souvent possible, et être activé de façon transparente. Notons que si le mod_deflate n'est pas initié par Apache, la ligne est purement et simplement ignorée.&lt;/p&gt;
&lt;pre class="apache"&gt;&amp;lt;IfModule mod_deflate.c&amp;gt;
	&amp;lt;FilesMatch &lt;span style="color: #7f007f;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\.&lt;/span&gt;(js|css)$&amp;quot;&lt;/span&gt;&amp;gt;
		SetOutputFilter DEFLATE
	&amp;lt;/FilesMatch&amp;gt;
&amp;lt;/IfModule&amp;gt;&lt;/pre&gt;


&lt;p&gt;Pour montrer la bande passante économisée, je prend les logs d'accès du mois de juillet. Je vais effectuer la comparaison sur deux fichiers CSS et deux fichiers JS.&lt;br /&gt;
Sur Tarschool, les plus utilisés sont&amp;nbsp;:&lt;/p&gt;
&lt;table width="100%" cellspacing="0" cellpadding="4" style="font-size: 11px;border:1px solid #EEEEEE;"&gt;
	&lt;thead style="background-color: #F8F8FF"&gt;
		&lt;tr&gt;
			&lt;th&gt;Nom du fichier&lt;/th&gt;
			&lt;th&gt;Taille originale&lt;/th&gt;
			&lt;th&gt;Taille minifié&lt;/th&gt;
			&lt;th&gt;Taille après DEFLATE&lt;/th&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;global.css&lt;/td&gt;
			&lt;td align="right"&gt;22 566&lt;/td&gt;
			&lt;td align="right"&gt;18 260 &lt;span style="color: #00AA00"&gt;[80.9%]&lt;/span&gt;&lt;/td&gt;
			&lt;td align="right"&gt;3 664 &lt;span style="color: #00AA00"&gt;[20%]&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background-color: #F5FBFF;"&gt;
			&lt;td&gt;globalMember.css&lt;/td&gt;
			&lt;td align="right"&gt;2 185&lt;/td&gt;
			&lt;td align="right"&gt;1 732 &lt;span style="color: #00AA00"&gt;[79.2%]&lt;/span&gt;&lt;/td&gt;
			&lt;td align="right"&gt;679 &lt;span style="color: #00AA00"&gt;[39.2%]&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;jquery.tarschool.js&lt;/td&gt;
			&lt;td align="right"&gt;113 480&lt;/td&gt;
			&lt;td align="right"&gt;55 283 &lt;span style="color: #00AA00"&gt;[48.7%]&lt;/span&gt;&lt;/td&gt;
			&lt;td align="right"&gt;17 264 &lt;span style="color: #00AA00"&gt;[31.2%]&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background-color: #F5FBFF;"&gt;
			&lt;td&gt;jquery.tarschool.voirCombat.js&lt;/td&gt;
			&lt;td align="right"&gt;4 458&lt;/td&gt;
			&lt;td align="right"&gt;2 655 &lt;span style="color: #00AA00"&gt;[59.1%]&lt;/span&gt;&lt;/td&gt;
			&lt;td align="right"&gt;1 048 &lt;span style="color: #00AA00"&gt;[39.4%]&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;



&lt;p&gt;&lt;br /&gt;
Pour le mois de Juillet, voici donc le nombre d'accès total, dans lequel nous allons séparer les fichiers effectivement transmis et ceux dont le cache a été utilisé. En effet par défaut, on peux déjà économiser une quantité significative. Pour contrôler un peu mieux ce cache, il existe différentes solutions qui ne seront pas abordées ici. Pour ma part je rajoute simplement un time de la dernière modification du bootstrap lors de l'appel des fichiers à mettre en cache. Je laisse le reste à Apache et pour le moment cela me convient.&lt;/p&gt;
&lt;table width="100%" cellspacing="0" cellpadding="4" style="font-size: 11px;border:1px solid #EEEEEE;"&gt;
	&lt;thead style="background-color: #F8F8FF"&gt;
		&lt;tr&gt;
			&lt;th&gt;Nom du fichier&lt;/th&gt;
			&lt;th&gt;Nombre d'accès Total&lt;/th&gt;
			&lt;th&gt;200 (OK)&lt;/th&gt;
			&lt;th&gt;304 (Not Modified)&lt;/th&gt;
			&lt;th&gt;Ratio&lt;/th&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;global.css&lt;/td&gt;
			&lt;td align="right"&gt;18 298&lt;/td&gt;
			&lt;td align="right"&gt;5 078&lt;/td&gt;
			&lt;td align="right"&gt;13 220&lt;/td&gt;
			&lt;td align="right"&gt;&lt;span style="color: #00AA00"&gt;[27.7%]&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background-color: #F5FBFF;"&gt;
			&lt;td&gt;globalMember.css&lt;/td&gt;
			&lt;td align="right"&gt;14 962&lt;/td&gt;
			&lt;td align="right"&gt;3 082&lt;/td&gt;
			&lt;td align="right"&gt;11 880&lt;/td&gt;
			&lt;td align="right"&gt;&lt;span style="color: #00AA00"&gt;[20.5%]&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;jquery.tarschool.js&lt;/td&gt;
			&lt;td align="right"&gt;18 006&lt;/td&gt;
			&lt;td align="right"&gt;5 004&lt;/td&gt;
			&lt;td align="right"&gt;13 002&lt;/td&gt;
			&lt;td align="right"&gt;&lt;span style="color: #00AA00"&gt;[27.7%]&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background-color: #F5FBFF;"&gt;
			&lt;td&gt;jquery.tarschool.voirCombat.js&lt;/td&gt;
			&lt;td align="right"&gt;3 892&lt;/td&gt;
			&lt;td align="right"&gt;1 978&lt;/td&gt;
			&lt;td align="right"&gt;1 914&lt;/td&gt;
			&lt;td align="right"&gt;&lt;span style="color: #00AA00"&gt;[50.8%]&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;



&lt;p&gt;&lt;br /&gt;
En ne prenant en compte que les fichiers effectivement transmis, je peux donc calculer la bande passante utilisée avec la compression, la bande passante théorique (basée sur la taille réelle du fichier source), et les pourcentages de gains réalisés&amp;nbsp;:&lt;/p&gt;
&lt;table width="100%" cellspacing="0" cellpadding="4" style="font-size: 11px;border:1px solid #EEEEEE;"&gt;
	&lt;thead style="background-color: #F8F8FF"&gt;
		&lt;tr&gt;
			&lt;th&gt;Nom du fichier&lt;/th&gt;
			&lt;th&gt;Nombre d'accès&lt;/th&gt;
			&lt;th&gt;Bande Passante Théorique&lt;/th&gt;
			&lt;th&gt;Bande Passante Réelle&lt;/th&gt;
			&lt;th&gt;Ratio&lt;/th&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;global.css&lt;/td&gt;
			&lt;td align="right"&gt;5 078&lt;/td&gt;
			&lt;td align="right"&gt;114 590 148&lt;/td&gt;
			&lt;td align="right"&gt;18 605 792&lt;/td&gt;
			&lt;td align="right"&gt;&lt;span style="color: #00AA00"&gt;[16.2%]&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background-color: #F5FBFF;"&gt;
			&lt;td&gt;globalMember.css&lt;/td&gt;
			&lt;td align="right"&gt;3 082&lt;/td&gt;
			&lt;td align="right"&gt;6 734 170&lt;/td&gt;
			&lt;td align="right"&gt;2 092 678&lt;/td&gt;
			&lt;td align="right"&gt;&lt;span style="color: #00AA00"&gt;[31%]&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td&gt;jquery.tarschool.js&lt;/td&gt;
			&lt;td align="right"&gt;5 004&lt;/td&gt;
			&lt;td align="right"&gt;567 853 920&lt;/td&gt;
			&lt;td align="right"&gt;86 389 056&lt;/td&gt;
			&lt;td align="right"&gt;&lt;span style="color: #00AA00"&gt;[15.2%]&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background-color: #F5FBFF;"&gt;
			&lt;td&gt;jquery.tarschool.voirCombat.js&lt;/td&gt;
			&lt;td align="right"&gt;1 978&lt;/td&gt;
			&lt;td align="right"&gt;8 817 924&lt;/td&gt;
			&lt;td align="right"&gt;2 072 944&lt;/td&gt;
			&lt;td align="right"&gt;&lt;span style="color: #00AA00"&gt;[23.5%]&lt;/span&gt;&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;



&lt;p&gt;En conclusion, l'apport du module deflate, couplé à une minification des fichiers permet d'économiser d'énormes quantités de bandes passantes, généralement de l'ordre de 75%.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/u0eCpsVkIBjKXvD8FtFiuqAziIo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u0eCpsVkIBjKXvD8FtFiuqAziIo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/u0eCpsVkIBjKXvD8FtFiuqAziIo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u0eCpsVkIBjKXvD8FtFiuqAziIo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/L-importance-de-compresser-les-fichiers-statiques#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/75</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/L-importance-de-compresser-les-fichiers-statiques</feedburner:origLink></entry>
    
  <entry>
    <title>Voyage en Inde</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/1O9fwwwmj34/Voyage-en-Inde" rel="alternate" type="text/html" title="Voyage en Inde" />
    <id>urn:md5:828294b367653c8ea533c228e7a10061</id>
    <updated>2009-08-10T10:41:00+01:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Vie personnelle</dc:subject>
        <dc:subject>Inde</dc:subject><dc:subject>Photographies</dc:subject><dc:subject>Voyages</dc:subject>    
    <content type="html">    Voilà 3 mois que je suis rentré d'Inde, il m'a fallu beaucoup de temps pour pouvoir trier les 2000 photos prisent, en voici finalement une sélection de 125.&lt;br /&gt;Souvent par manque de temps, mais aussi par manque d'objectivité. J'avais besoin du recul nécessaire pour faire le tri &lt;img src="/blog/themes/default/smilies/smile.png" alt=":)" class="smiley" /&gt;&lt;br /&gt;&lt;p style="text-align: center;"&gt;&lt;img title="Bodh Gaya - Inde" alt="" src="http://www.anthor.net/blog/public/1242938882nLJT.jpg" /&gt;&lt;/p&gt;
&lt;br /&gt;Il reste pas mal de photos encore sur mon disque dur, mais je ne pense pas en remettre plus.&lt;br /&gt;Le lien : &lt;a hreflang="fr" href="http://gallery.anthor.net/#album=2"&gt;Album - Voyage en Inde - Mars/Avril 2009&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ggBnnu4aRroiYBTEUoIATFTeLGc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ggBnnu4aRroiYBTEUoIATFTeLGc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ggBnnu4aRroiYBTEUoIATFTeLGc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ggBnnu4aRroiYBTEUoIATFTeLGc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Voyage-en-Inde#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/74</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Voyage-en-Inde</feedburner:origLink></entry>
    
  <entry>
    <title>Les contraintes de l'emploi du temps.</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/f3f2k1RkDG0/Les-contraintes-de-l-emploi-du-temps." rel="alternate" type="text/html" title="Les contraintes de l'emploi du temps." />
    <id>urn:md5:3347b4b72a74614a605cf7c273d0f10e</id>
    <updated>2009-08-04T11:53:00+01:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Vie personnelle</dc:subject>
        <dc:subject>Développement</dc:subject><dc:subject>Entreprise</dc:subject><dc:subject>Jeu</dc:subject><dc:subject>Tarschool</dc:subject>    
    <content type="html">    &lt;p&gt;Durant la phase de création d'entreprise il est difficile de concilier emploi du temps journalier et le deuxième emploi du temps. Il m'arrive souvent depuis 7 mois de dépasser les 80h hebdomadaires. A mon sens, cela me posait moins de problèmes lorsque je développais la bêta tout seul. Depuis la sortie du jeu et le serveur en production, les modifications sont donc la plupart du temps effectuées durant les heures de pointes du jeu !&lt;/p&gt;
&lt;p&gt;Même si je favorise l'utilisation de la réplique du jeu, certains tests doivent être effectués directement sur le jeu en production, et il arrive donc souvent que le jeu se retrouve en maintenance pendant les soirées. Si nous avions plus de temps, nous pourrions contourner l'emploi du temps pour effectuer les tests en pleine nuit ou tôt le matin &lt;img src="/blog/themes/default/smilies/wink.png" alt=";)" class="smiley" /&gt; Même si les logs montrent une activité continue quelque soit l'heure, il reste quelques tranches vides.&lt;/p&gt;
&lt;p&gt;Autre contrainte, pour gagner un maximum de temps, nous devons parfois faire des modules à la va vite... Alors que si nous travaillions dessus toute la journée, nous n'aurions pas ce problème, nous pourrions passer plus de temps à penser, et à bien organiser les données.&lt;/p&gt;
&lt;p&gt;Malgré ces contraintes, Tarschool arrive enfin à une certaine maturité qui lui permet d'être quasiment autonome &lt;img src="/blog/themes/default/smilies/smile.png" alt=":)" class="smiley" /&gt; Et ça, ça fait plaisirs !&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hdzwptPC0BqB-87wSZPcqjIgsFw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hdzwptPC0BqB-87wSZPcqjIgsFw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hdzwptPC0BqB-87wSZPcqjIgsFw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hdzwptPC0BqB-87wSZPcqjIgsFw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Les-contraintes-de-l-emploi-du-temps.#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/73</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Les-contraintes-de-l-emploi-du-temps.</feedburner:origLink></entry>
    
  <entry>
    <title>Les tournois dans Tarschool</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/kAjdsRFDTzI/Les-tournois-dans-Tarschool" rel="alternate" type="text/html" title="Les tournois dans Tarschool" />
    <id>urn:md5:730fed5a117e314385997749534f9861</id>
    <updated>2009-08-03T15:12:00+01:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Jeu par navigateur</dc:subject>
        <dc:subject>Jeu</dc:subject><dc:subject>Tarschool</dc:subject>    
    <content type="html">    &lt;p&gt;Un bon petit mois pour ce module, entrecoupé d'une pléthore de corrections de petits bugs et d'ergonomies en tout genre !&lt;/p&gt;
&lt;p&gt;Il aura fallu toutes sortes d'ajustements sur &lt;a hreflang="fr" href="http://www.tarschool.fr/"&gt;Tarschool&lt;/a&gt; pour intégrer au mieux les tournois. Surtout au niveau de la classe de gestion des combats qui avait été construite à la va vite. La plupart des fonctions manquaient de points d'ancrages, et les résolutions étaient faites à moitié dans la classe et à moitié dans le contrôleur ! Néanmoins tant qu'elle était utilisée à un seul endroit cela ne me posait aucun problème !&lt;/p&gt;
&lt;p&gt;J'ai pris le parti de faire un tournoi de type battle, c'est à dire qu'il est toujours possible de monter dans le classement tant qu'il reste d'autre joueurs à la même position. Je pense que cela permettra aux joueurs frustrés de la limite des combats de pouvoir jouer plus même si il n'y a pas que des avantages puisqu'il peuvent aussi descendre dans le classement en cas de nombreuses défaites &lt;img src="/blog/themes/default/smilies/smile.png" alt=":)" class="smiley" /&gt;&lt;/p&gt;
&lt;p&gt;Le module s'occupe de prévenir les joueurs de leurs combats, de la fermeture des inscriptions, de la distribution des prix... Le module est prévu pour pouvoir à terme proposer aux joueurs VIP de créer leurs propres tournois, avec tarif d'entrée, restriction à une guilde..&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kSQj1OCWM-RkKBIrEOiX05BwdNM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kSQj1OCWM-RkKBIrEOiX05BwdNM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kSQj1OCWM-RkKBIrEOiX05BwdNM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kSQj1OCWM-RkKBIrEOiX05BwdNM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Les-tournois-dans-Tarschool#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/72</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Les-tournois-dans-Tarschool</feedburner:origLink></entry>
    
  <entry>
    <title>Coup de gueule !!!</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/wyS1cQIhZM8/Coup-de-gueule-%21%21%21" rel="alternate" type="text/html" title="Coup de gueule !!!" />
    <id>urn:md5:c950e169030d154d3aeed78eda917a00</id>
    <updated>2009-07-23T16:58:00+01:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Vie personnelle</dc:subject>
            
    <content type="html">    &lt;p&gt;&lt;img title="Grrrr, juil. 2009" style="margin: 0 0 1em 1em; float: right;" alt="" src="http://www.anthor.net/blog/public/grrrr.jpg" /&gt;Y'a des choses comme ça qui ne changent pas, généralement bien
ancrées dans la culture d'entreprise... Et la ras le cul de bosser à la
place des gens et de s'en prendre plein la gueule ensuite !&lt;/p&gt;
&lt;p&gt;Je viens de passer 4 jours à reconstruire les éléments d'une
maquette pour qu'ils soient intégrables, et à peu près le même temps
pour essayer de comprendre ce que je devais développer, même pas eu le
temps de finir d'expliquer les difficultés rencontrés que la culture
d'entreprise refait surface... Ferme ta gueule et repasse derrière les
autres, c'est plus facile que de se demander si le boulot est effectivement fait en amont.&lt;/p&gt;
&lt;p&gt;"On croyait que...". C'est beau de croire, c'est encore mieux de savoir ce qui se passe dans l'entreprise. Non messieurs, je n'ai suivi aucune réunion sur ce projet, alors au lieu de me rétorquer y'a des procédures, faut peut-être penser que la procédure du développeur c'est de pouvoir développer, pas de refaire les maquettes, ni rédiger le cahier des charges... Ha ok, il faut en parler, bon ça fait juste un an qu'on répète la même chose durant les réunions, et même réponse "ferme ta gueule"...&lt;/p&gt;
&lt;p&gt;Ce qui reste intéressant quand on commence du coup à se poser des questions sur soi-même c'est d'en discuter avec d'autres collègues et qu'ils soient d'accord... Cherchez l'erreur...&lt;/p&gt;
&lt;p&gt;En plus joyeux, espérons que Tarsiera Studio prenne vite son envol... &lt;img src="/blog/themes/default/smilies/smile.png" alt=":)" class="smiley" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4WV86Uzj5QDPr0gO5zvDc9bXJfs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4WV86Uzj5QDPr0gO5zvDc9bXJfs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4WV86Uzj5QDPr0gO5zvDc9bXJfs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4WV86Uzj5QDPr0gO5zvDc9bXJfs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Coup-de-gueule-%21%21%21#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/71</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Coup-de-gueule-%21%21%21</feedburner:origLink></entry>
    
  <entry>
    <title>Migration du blog terminée !</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/M71TsJdbgKE/Migration-du-blog-termin%C3%A9e-%21" rel="alternate" type="text/html" title="Migration du blog terminée !" />
    <id>urn:md5:089b2e1492492096d361c25d9647385f</id>
    <updated>2009-07-11T21:31:00+01:00</updated>
    <author><name>Anthor</name></author>
            
    <content type="html">    &lt;p&gt;Il était temps de la finir ! Après une bonne journée de boulot pour finir de remettre à jour les démos et les pages statiques sous dotclear, j'ai enfin pu me débarrasser de l'ancien site.&lt;/p&gt;
&lt;p&gt;Ça me permet de faire le vide sur le site et de me concentrer pleinement sur l'implémentation des tournois dans Tarschool.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CTWBwEJw1C_XvA6WHjYlvNpYQ7o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CTWBwEJw1C_XvA6WHjYlvNpYQ7o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CTWBwEJw1C_XvA6WHjYlvNpYQ7o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CTWBwEJw1C_XvA6WHjYlvNpYQ7o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Migration-du-blog-termin%C3%A9e-%21#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/69</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Migration-du-blog-termin%C3%A9e-%21</feedburner:origLink></entry>
    
  <entry>
    <title>Plateau de jeu en 3d isométrique, le retour (1)...</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/ZSG_HlM98Uo/Plateau-de-jeu-en-3d-isom%C3%A9trique%2C-le-retour-%281%29..." rel="alternate" type="text/html" title="Plateau de jeu en 3d isométrique, le retour (1)..." />
    <id>urn:md5:c959bf387f848b149cbdb2a4e1150ff9</id>
    <updated>2009-07-04T09:34:00+01:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Jeu par navigateur</dc:subject>
        <dc:subject>AJAX</dc:subject><dc:subject>Javascript</dc:subject><dc:subject>Jeu</dc:subject><dc:subject>jQuery</dc:subject>    
    <content type="html">    &lt;p&gt;Il y a quelques mois déjà, j'avais mis au point un module de plateau de jeu en 3d isométrique. Mis de côté pour le développement de Tarschool, je n'avais plus du tout mis le nez dedans.&lt;/p&gt;
&lt;p&gt;Ayant un peu plus de temps, et parfois le besoin de me changer les idées, il m'arrive désormais de travailler un peu dessus. &lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="http://www.anthor.net/blog/public/noname-game/carte6_minimap_04072009.jpg"&gt;&lt;img title="carte6_minimap_04072009.jpg, juil. 2009" alt="" src="http://www.anthor.net/blog/public/noname-game/.carte6_minimap_04072009_s.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Je me suis pour le moment principalement attelé à la création du continent au nord, avec sa côte ouest, et ses 14 villes. Pour le moment seul l'emplacement des villes et des rivières a été terminé. Cette partie représente environ 200 cases de large sur 200 cases de haut. Ce qui fait environ 1/12ème du monde prévu pour le moment.&lt;/p&gt;
&lt;p&gt;J'espère très prochainement pouvoir ouvrir ce monde à la visite, mais il reste des optimisations à faire au niveau de l'affichage.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/N-8Iw5lczOv1Skkw0CcEisg9QVY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/N-8Iw5lczOv1Skkw0CcEisg9QVY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/N-8Iw5lczOv1Skkw0CcEisg9QVY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/N-8Iw5lczOv1Skkw0CcEisg9QVY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Plateau-de-jeu-en-3d-isom%C3%A9trique%2C-le-retour-%281%29...#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/56</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Plateau-de-jeu-en-3d-isom%C3%A9trique%2C-le-retour-%281%29...</feedburner:origLink></entry>
    
  <entry>
    <title>.htaccess par défaut</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/yyUaXzHBY60/.htaccess-par-d%C3%A9faut" rel="alternate" type="text/html" title=".htaccess par défaut" />
    <id>urn:md5:3483f86d3d10291ffc47cbb16a743a18</id>
    <updated>2009-06-08T12:48:00+01:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Développement</dc:subject>
        <dc:subject>Apache</dc:subject><dc:subject>Développement</dc:subject>    
    <content type="html">    &lt;p&gt;On utilise souvent le même .htaccess de base lors du démarrage d'un développement, mais certaines options restent valables quelque soit le site.&lt;/p&gt;

&lt;pre class="apache"&gt;&lt;span style="color: #00007f;"&gt;RewriteEngine&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;On&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #00007f;"&gt;RewriteCond&lt;/span&gt; %&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;HTTP_HOST&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; !^www\.mydomain\.fr$ &lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;NC&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;
&lt;span style="color: #00007f;"&gt;RewriteRule&lt;/span&gt; ^&lt;span style="color: #66cc66;"&gt;&amp;#40;&lt;/span&gt;.*&lt;span style="color: #66cc66;"&gt;&amp;#41;&lt;/span&gt;$ http://www.mydomain.fr/$&lt;span style="color: #ff0000;"&gt;1&lt;/span&gt; &lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;R=&lt;span style="color: #ff0000;"&gt;301&lt;/span&gt;,L&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&lt;span style="color: #00007f;"&gt;RewriteCond&lt;/span&gt; %&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;REQUEST_FILENAME&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; -s &lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;OR&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;
&lt;span style="color: #00007f;"&gt;RewriteCond&lt;/span&gt; %&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;REQUEST_FILENAME&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; -l &lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;OR&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;
&lt;span style="color: #00007f;"&gt;RewriteCond&lt;/span&gt; %&lt;span style="color: #66cc66;"&gt;&amp;#123;&lt;/span&gt;REQUEST_FILENAME&lt;span style="color: #66cc66;"&gt;&amp;#125;&lt;/span&gt; -d
&lt;span style="color: #00007f;"&gt;RewriteRule&lt;/span&gt; ^.*$ - &lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;NC,L&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;
&lt;span style="color: #00007f;"&gt;RewriteRule&lt;/span&gt; ^.*$ index.php &lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;NC,L&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
&amp;lt;IfModule mod_deflate.c&amp;gt;
	&amp;lt;FilesMatch &lt;span style="color: #7f007f;"&gt;&amp;quot;&lt;span style="color: #000099; font-weight: bold;"&gt;\.&lt;/span&gt;(js|css)$&amp;quot;&lt;/span&gt;&amp;gt;
		SetOutputFilter DEFLATE
	&amp;lt;/FilesMatch&amp;gt;
&amp;lt;/IfModule&amp;gt;&lt;/pre&gt;


&lt;p&gt;Grâce à cette base, je m'assure que le domaine principal est bien le domaine utilisé pour la navigation, je redirige ensuite tous les accès à des fichiers inexistants vers le bootstrap index.php.
Finalement, en cas de présence du mode DEFLATE, les fichiers JS et CSS sont compressés à la volée.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dO39w9q0-AFfdmdhLT00k5hQ4OQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dO39w9q0-AFfdmdhLT00k5hQ4OQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dO39w9q0-AFfdmdhLT00k5hQ4OQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dO39w9q0-AFfdmdhLT00k5hQ4OQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/.htaccess-par-d%C3%A9faut#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/54</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/.htaccess-par-d%C3%A9faut</feedburner:origLink></entry>
    
  <entry>
    <title>Quelques nouvelles de Tarschool...</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/fg7VLjm-ihs/Quelques-nouvelles-de-Tarschool..." rel="alternate" type="text/html" title="Quelques nouvelles de Tarschool..." />
    <id>urn:md5:b0a55c94a148ef211c0403753ade96a7</id>
    <updated>2009-05-23T21:29:00+01:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Jeu par navigateur</dc:subject>
        <dc:subject>Jeu</dc:subject><dc:subject>Tarschool</dc:subject><dc:subject>Zend Framework</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="LOGO-tarschool150px.jpg, avr. 2009" style="margin: 0 1em 1em 0; float: left;" alt="" src="http://www.anthor.net/blog/public/ancien_site/LOGO-tarschool150px.jpg" /&gt;Voilà maintenant quelques semaines que nous avons sorti &lt;a hreflang="fr" href="http://www.tarschool.fr/"&gt;Tarschool&lt;/a&gt; en version bêta, il me fallait donc faire un petit résumé de mes premières impressions !&lt;/p&gt;
&lt;p&gt;Tout d'abord l'accueil a été plutôt positif malgré un certain nombre de bugs découverts dès la sortie du jeu ! Nous avons corrigé rapidement la majorité des bugs et des failles découvertes, sans difficulté. La première difficulté est apparue après un problème d'incohérence dans les combats, pour ne pas fausser les futurs classements nous avons décidés de remettre le jeu à zéro...&lt;/p&gt;
&lt;p&gt;Tarschool est basé sur le Zend Framework et cela m'a vraiment permis de corriger et modifier les fonctions très rapidement sans aucun souci. L'utilisation du cache APC est aussi un réel soulagement du côté du serveur, ce qui permet d'avoir un accès rapides aux données avec un minimum de requêtes sur la base de données. Je suis donc satisfait de mes choix de départ, mais aussi de l'avenir grace à la réutilisation du moteur de Tarschool pour de futures jeux plus évolués. ZF suit une évolution assez rapide en ce moment et suit les dernières mises à jour de fonctionnalités de PHP, et son apprentissage a été plutôt rapide.&lt;/p&gt;
&lt;p&gt;Après 2 semaines, Tarschool a atteint la centaine de joueurs actifs, ce qui est plutot positif sachant le peu de référencement effectué pour le moment, mais beaucoup de travail reste à faire. Notamment au niveau de la dynamique du jeu, celui-ci ne prend pas assez en compte le côté communautaire. Il va nous falloir trouver des solutions pour donner envi aux joueurs de rester, et à de nouveaux de venir.. Pas encore de quoi bosser dessus à temps plein !&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7FBczgWfhZIh4lStKSn6AKxvqyA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7FBczgWfhZIh4lStKSn6AKxvqyA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7FBczgWfhZIh4lStKSn6AKxvqyA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7FBczgWfhZIh4lStKSn6AKxvqyA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Quelques-nouvelles-de-Tarschool...#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/53</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Quelques-nouvelles-de-Tarschool...</feedburner:origLink></entry>
    
  <entry>
    <title>Nouveautés</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/WCVFNSRzbCY/Nouveaut%C3%A9s" rel="alternate" type="text/html" title="Nouveautés" />
    <id>urn:md5:a755e0be9e8eb34f5489b7aab1576257</id>
    <updated>2009-04-26T13:27:00+01:00</updated>
    <author><name>Anthor</name></author>
            
    <content type="html">    &lt;p&gt;Que de changements en un mois et demi, voilà deux semaines que je suis rentré d'Inde, et toutes mes angoisses ont disparues.&lt;/p&gt;
&lt;p&gt;J'entame une phase finale du développement de &lt;a hreflang="fr" href="http://www.tarschool.fr/"&gt;Tarschool&lt;/a&gt; avant d'entamer la béta et l'ajout de nouvelles fonctionnalités. Tout cela me laisse un peu de temps, pour d'une part migrer mon blog vers une solution existante car je n'avais pas le temps d'entretenir la mienne, et cela m'empêchait de poster plus souvent.&lt;br /&gt;D'autre part, cela va me permettre de repasser aussi un peu de temps sur le site de &lt;a hreflang="fr" href="http://www.tarsiera-studio.com/"&gt;Tarsiera Studio&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour ce qui concerne la migration, celle-ci est quasiment terminée, les anciennes pages sont toutes redirigées. Quelques pages, liens et colorations de code sont encore indisponibles.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nOBnhmBqPR7x7kFmWnbn3-x_vXU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nOBnhmBqPR7x7kFmWnbn3-x_vXU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nOBnhmBqPR7x7kFmWnbn3-x_vXU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nOBnhmBqPR7x7kFmWnbn3-x_vXU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Nouveaut%C3%A9s#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/52</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Nouveaut%C3%A9s</feedburner:origLink></entry>
    
  <entry>
    <title>Font-Family en CSS - Compatiblité Windows/Mac/Linux</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/RY9l83t9aWQ/Linux" rel="alternate" type="text/html" title="Font-Family en CSS - Compatiblité Windows/Mac/Linux" />
    <id>urn:md5:fa185731250768cf1ca993c2d8a12b52</id>
    <updated>2009-01-24T12:54:00+00:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Développement</dc:subject>
        <dc:subject>CSS</dc:subject>    
    <content type="html">    &lt;p&gt;Il est parfois embêtant de ne pas disposer de polices à peu près égales en taille et en forme suivant les différents systèmes d'exploitation.&lt;br /&gt;
Voici une liste de quelques polices avec leurs équivalents sous la forme Windows/Mac/Linux :&lt;br /&gt;&lt;/p&gt;
&lt;pre class="css"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;:&lt;/span&gt; Verdana,Geneva,Kalimati,&lt;span style="color: #993333;"&gt;sans-serif&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;:&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;Lucida Sans Unicode&amp;quot;&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;&amp;quot;Lucida Grande&amp;quot;&lt;/span&gt;,Garuda,&lt;span style="color: #993333;"&gt;sans-serif&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;:&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;Arial Black&amp;quot;&lt;/span&gt;,Gadget,&lt;span style="color: #993333;"&gt;sans-serif&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;:&lt;/span&gt; Arial,Helvetica,Garuda,&lt;span style="color: #993333;"&gt;sans-serif&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;:&lt;/span&gt; Georgia,&lt;span style="color: #ff0000;"&gt;&amp;quot;Nimbus Roman No9 L&amp;quot;&lt;/span&gt;,&lt;span style="color: #993333;"&gt;serif&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;:&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;Palatino Linotype&amp;quot;&lt;/span&gt;,&lt;span style="color: #ff0000;"&gt;&amp;quot;Book Antiqua&amp;quot;&lt;/span&gt;,Palatino,FreeSerif,&lt;span style="color: #993333;"&gt;serif&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;:&lt;/span&gt; Tahoma,Geneva,Kalimati,&lt;span style="color: #993333;"&gt;sans-serif&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;:&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;Trebuchet MS&amp;quot;&lt;/span&gt;,Helvetica,Jamrul,&lt;span style="color: #993333;"&gt;sans-serif&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;;&lt;/span&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;font-family&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;:&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;&amp;quot;Times New Roman&amp;quot;&lt;/span&gt;,Times,FreeSerif,&lt;span style="color: #993333;"&gt;serif&lt;/span&gt;&lt;span style="color: #66cc66;"&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lzT5OTL_zsTl56VJqkMGjX-IMQQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lzT5OTL_zsTl56VJqkMGjX-IMQQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lzT5OTL_zsTl56VJqkMGjX-IMQQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lzT5OTL_zsTl56VJqkMGjX-IMQQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Font-Family-en-CSS-Compatiblit%C3%A9-Windows/Mac/Linux#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/49</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Font-Family-en-CSS-Compatiblit%C3%A9-Windows/Mac/Linux</feedburner:origLink></entry>
    
  <entry>
    <title>jQuery 1.3 est dans les bacs !</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/5ypr1QHPqRA/jQuery-1.3-est-dans-les-bacs-%21" rel="alternate" type="text/html" title="jQuery 1.3 est dans les bacs !" />
    <id>urn:md5:519a17e80e5018ccd0add1c0b39105ab</id>
    <updated>2009-01-17T19:32:00+00:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>jQuery</dc:subject><dc:subject>Slickspeed</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;a href="http://www.jquery.com/" target="_blank"&gt;jQuery&lt;/a&gt; 1.3 est sortie en version finale depuis le 14 janvier.&lt;/p&gt;
&lt;p&gt;Pas mal de nouvelles choses en terme de performances tel que l'intégration de Sizzle, un nouveau moteur d'event avec une fonction live applicable sur les events standards, l'injection HTML... Le tout est disponible &lt;a href="http://docs.jquery.com/Release:jQuery_1.3" target="_blank"&gt;ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La version de &lt;a href="http://www.anthor.net/blog/pages/Slickspeed"&gt;SlickSpeed&lt;/a&gt; a elle aussi était mise à jour avec cette nouvelle version.&lt;/p&gt;
&lt;p&gt;Il est à noter que seule la version 1.6r5 de jQuery UI est compatible avec cette nouvelle version.&lt;/p&gt;
&lt;p&gt;EDIT : Ajout de slickSpeed des librairies : Prototype 1.6.0.3, MooTools 1.2.1, Sizzle 0.9.1, Mochikit 1.4.2.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EXpsiVyw8EXkpZUYi2XQQM2l9aQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EXpsiVyw8EXkpZUYi2XQQM2l9aQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EXpsiVyw8EXkpZUYi2XQQM2l9aQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EXpsiVyw8EXkpZUYi2XQQM2l9aQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/jQuery-1.3-est-dans-les-bacs-%21#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/48</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/jQuery-1.3-est-dans-les-bacs-%21</feedburner:origLink></entry>
    
  <entry>
    <title>Développement de Tarschool avec Zend Framework</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/81OqN5pYHjw/D%C3%A9veloppement-de-Tarschool-avec-Zend-Framework" rel="alternate" type="text/html" title="Développement de Tarschool avec Zend Framework" />
    <id>urn:md5:968d6b9ee0e7a954eebc1ebf8df9325a</id>
    <updated>2009-01-15T20:11:00+00:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Jeu par navigateur</dc:subject>
        <dc:subject>Tarschool</dc:subject><dc:subject>Zend Framework</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="LOGO-tarschool150px.jpg, avr. 2009" style="margin: 0 1em 1em 0; float: left;" alt="" src="http://www.anthor.net/blog/public/ancien_site/LOGO-tarschool150px.jpg" /&gt;Après avoir fait mes premiers essais pour le développement du site du futur studio, j'ai continué à m'échauffer avec le &lt;a href="http://framework.zend.com/" target="_blank"&gt;Zend Framework&lt;/a&gt; en commençant le développement de &lt;a href="http://www.tarschool.fr/"&gt;Tarschool&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Un mois s'est passé, et je commence à pouvoir développer comme je l'entends de manière fluide.&lt;br /&gt;Depuis une semaine, j'ai même entrepris de l'utiliser professionnellement. Pour le moment, peu de regrets, le développement se déroule sans encombre et avance très rapidement !&lt;/p&gt;
&lt;p&gt;Grâce au Zend Framework, je retrouve des algorithmes que j'avais commencé à mettre en place pour le développement de jeux avec une forte montée en charge. En utilisant APC, on évite facilement 90% des requêtes sur la base de données, mais on évite aussi, les jointures à répétition.&lt;br /&gt;En contre-partie il ne faut pas oublier de vider le cache lorsqu'il y a une mise à jour !&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eoDJ339f6ycMwT2UFLAsdQ8POGw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eoDJ339f6ycMwT2UFLAsdQ8POGw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eoDJ339f6ycMwT2UFLAsdQ8POGw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eoDJ339f6ycMwT2UFLAsdQ8POGw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/D%C3%A9veloppement-de-Tarschool-avec-Zend-Framework#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/47</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/D%C3%A9veloppement-de-Tarschool-avec-Zend-Framework</feedburner:origLink></entry>
    
  <entry>
    <title>jQuery 1.3 Beta 1</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/XVOWLHVSLso/jQuery-1.3-Beta-1" rel="alternate" type="text/html" title="jQuery 1.3 Beta 1" />
    <id>urn:md5:0a79009fb7fb3dfb419d51b4f5a8d20b</id>
    <updated>2008-12-26T00:42:00+00:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>jQuery</dc:subject><dc:subject>Slickspeed</dc:subject>    
    <content type="html">    &lt;p&gt;Posté le 22 Décembre sur le &lt;a href="http://blog.jquery.com/2008/12/22/help-test-jquery-13-beta-1/" target="_blank"&gt;blog de jQuery&lt;/a&gt;, la bêta 1 de jQuery 1.3 est sortie. Au menu, un refactoring complet du moteur de sélection, de la fonction offset ...&lt;/p&gt;
&lt;p&gt;Je n'ai pas encore regardé cela en détail, mais je l'ai implémenté dans &lt;a href="http://www.anthor.net/blog/pages/Slickspeed" title="Slickspeed avec jQuery 1.3 Beta 1"&gt;Slickspeed&lt;/a&gt;, vous pourrez ainsi tester les nouvelles performances de la future version.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gire41SqZtvtR9Dpuux93tRXXEA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gire41SqZtvtR9Dpuux93tRXXEA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gire41SqZtvtR9Dpuux93tRXXEA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gire41SqZtvtR9Dpuux93tRXXEA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/jQuery-1.3-Beta-1#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/45</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/jQuery-1.3-Beta-1</feedburner:origLink></entry>
    
  <entry>
    <title>Premiers essais avec Zend Framework</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/Zxjwwq34brY/Premiers-essais-avec-Zend-Framework" rel="alternate" type="text/html" title="Premiers essais avec Zend Framework" />
    <id>urn:md5:75602f064ea82c3e7bb7b87364c6b0fc</id>
    <updated>2008-12-23T16:52:00+00:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Développement</dc:subject>
        <dc:subject>Zend Framework</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="zf_logo_white.jpg, avr. 2009" style="margin: 0 1em 1em 0; float: left;" alt="" src="http://www.anthor.net/blog/public/ancien_site/zf_logo_white.jpg" /&gt;Voilà après avoir essayé plusieurs frameworks, sans forcemment rentrer dedans en profondeur, c'est à dire pour certain uniquement le quick start, qui à mon sens permet rapidement de voir si la philosophie du framework correspond à nos besoins. Je me suis décidé à utiliser le &lt;a href="http://framework.zend.com/"&gt;Zend Framework&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ce que j'aime :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La flexibilité&lt;/li&gt;
&lt;li&gt;La rapidité de mise en place une fois la période d'apprentissage passée &lt;img src="/blog/themes/default/smilies/smile.png" alt=":)" class="smiley" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce que je n'aime pas :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le poids, très lourd, que l'on comble avec APC Opcache&lt;/li&gt;
&lt;li&gt;Tellement de méthodes différentes qu'il est parfois difficile de trouver les bonnes ressources.&lt;/li&gt;
&lt;li&gt;Le temps d'apprentissage.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour le moment, j'en ai testé: le modèle MVC, la gestion des bases de données, l'ACL/Auth, les formulaires. Le minimum syndical en sorte pour un petit site sans prétention. Il me retse maintenant à rentrer dans des fonctions plus poussée pour voir si le framework reste aussi souple et rapide à l'utilisation.&lt;/p&gt;
&lt;p&gt;Initialement testé avec le site de &lt;a href="http://www.tarsiera-studio.com/"&gt;Tarsiera Studio&lt;/a&gt;, c'est finalement &lt;a href="http://www.tarschool.fr/"&gt;Tarschool&lt;/a&gt;, qui me servira de test de référence, puisqu'il devient prioritaire sur mon planning de développement.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jGn1x3abf2NMiGfoNaorPiMiJbk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jGn1x3abf2NMiGfoNaorPiMiJbk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jGn1x3abf2NMiGfoNaorPiMiJbk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jGn1x3abf2NMiGfoNaorPiMiJbk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Premiers-essais-avec-Zend-Framework#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/44</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Premiers-essais-avec-Zend-Framework</feedburner:origLink></entry>
    
  <entry>
    <title>Configurer les autoprops de Tortoise SVN - $Rev$, $LastChangedDate$, $Author$, $Id$ ...</title>
    <link href="http://feedproxy.google.com/~r/Anthornet-Blog/~3/ELnORYR-1eI/Configurer-les-autoprops-de-Tortoise-SVN-%24Rev%24%2C-%24LastChangedDate%24%2C-%24Author%24%2C-%24Id%24-..." rel="alternate" type="text/html" title="Configurer les autoprops de Tortoise SVN - $Rev$, $LastChangedDate$, $Author$, $Id$ ..." />
    <id>urn:md5:e92921361710783262db4661e71cd4c8</id>
    <updated>2008-12-19T11:12:00+00:00</updated>
    <author><name>Anthor</name></author>
        <dc:subject>Développement</dc:subject>
        <dc:subject>Subversion</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img src="http://www.anthor.net/blog/public/ancien_site/subversion.jpg" alt="subversion.jpg" style="float:left; margin: 0 1em 1em 0;" title="subversion.jpg, avr. 2009" /&gt;
Subversion intègre pas défaut une fonction pour le remplacement de mots-clés dans les fichiers envoyés.&lt;br /&gt;
Par défaut, cette fonction n'est pas active. De même que les fichiers envoyés par Tortoise ne prennent pas réellement leur mime-types respectifs.&lt;br /&gt;
&lt;br /&gt;
Pour l'intégrer dans Tortoise SVN de façon automatisée, il suffit d'ajouter ces lignes dans le fichier de configuration ( Clic Droit, Settings, Edit Subversion Configuration File )&lt;/p&gt;
&lt;pre class="apache"&gt;&lt;span style="color: #adadad; font-style: italic;"&gt;### Automatic properties are defined in the section 'auto-props'.&lt;/span&gt;
enable-auto-props = yes
&amp;nbsp;
&lt;span style="color: #adadad; font-style: italic;"&gt;### Section for configuring automatic properties.&lt;/span&gt;
&lt;span style="color: #66cc66;"&gt;&amp;#91;&lt;/span&gt;auto-props&lt;span style="color: #66cc66;"&gt;&amp;#93;&lt;/span&gt;
&lt;span style="color: #adadad; font-style: italic;"&gt;# Code formats&lt;/span&gt;
*.c          = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
*.cpp        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
*.h          = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
*.java       = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
*.as         = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
*.cgi        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn-mine-type=text/plain
*.js         = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/javascript
*.php        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/x-php
*.pl         = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/x-perl; svn:executable
*.pm         = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/x-perl
*.t          = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/x-perl; svn:executable
*.py         = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/x-python; svn:executable
*.sh         = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/x-sh; svn:executable
&amp;nbsp;
&lt;span style="color: #adadad; font-style: italic;"&gt;# Image formats&amp;lt;br /&amp;gt;*.bmp        = svn:mime-type=image/bmp&lt;/span&gt;
*.gif        = svn:mime-type=image/gif
*.ico        = svn:mime-type=image/ico
*.jpeg       = svn:mime-type=image/jpeg
*.jpg        = svn:mime-type=image/jpeg
*.png        = svn:mime-type=image/png
*.tif        = svn:mime-type=image/tiff
*.tiff       = svn:mime-type=image/tiff
&amp;nbsp;
&lt;span style="color: #adadad; font-style: italic;"&gt;# Data formats&lt;/span&gt;
*.pdf        = svn:mime-type=application/pdf
*.avi        = svn:mime-type=video/avi
*.doc        = svn:mime-type=application/msword
*.eps        = svn:mime-type=application/postscript
*.gz         = svn:mime-type=application/gzip
*.mov        = svn:mime-type=video/quicktime
*.mp3        = svn:mime-type=audio/mpeg
*.ppt        = svn:mime-type=application/vnd.ms-powerpoint
*.ps         = svn:mime-type=application/postscript
*.psd        = svn:mime-type=application/photoshop
*.rtf        = svn:mime-type=text/rtf
*.swf        = svn:mime-type=application/x-shockwave-flash
*.tgz        = svn:mime-type=application/gzip
*.wav        = svn:mime-type=audio/wav
*.xls        = svn:mime-type=application/vnd.ms-excel
*.zip        = svn:mime-type=application/zip
&amp;nbsp;
&lt;span style="color: #adadad; font-style: italic;"&gt;# Text formats&lt;/span&gt;
.htaccess    = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
*.css        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/css
*.dtd        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/xml
*.html       = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/html
*.htm       = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/html
*.ini        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
*.sql        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/x-sql
*.txt        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
*.xhtml      = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/xhtml+xml
*.xml        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/xml
*.xsd        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/xml
*.xsl        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/xml
*.xslt       = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/xml
*.xul        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/xul
*.yml        = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
&amp;nbsp;
AUTHORS      = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
BUGS         = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
CHANGES      = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
COPYING      = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
DEPENDENCIES = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
DEPRECATED   = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
INSTALL*     = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
LICENSE      = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
Makefile*    = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
MANIFEST*    = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
PLATFORMS    = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
README       = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain
TODO         = svn:eol-style=native; svn:keywords=&lt;span style="color: #7f007f;"&gt;&amp;quot;Author Date Id Rev URL&amp;quot;&lt;/span&gt;; svn:mime-type=text/plain&lt;/pre&gt;

&lt;p&gt;NB&amp;nbsp;: Les fichiers déjà présent dans votre repository devront être enlever et remis afin de prendre en compte les nouvelles propriétés. Il existe aussi d'autres solutions bien évidemment.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/7Ish0XKMkYGFCz8xbyr-xsAW88c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7Ish0XKMkYGFCz8xbyr-xsAW88c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/7Ish0XKMkYGFCz8xbyr-xsAW88c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/7Ish0XKMkYGFCz8xbyr-xsAW88c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;</content>
    
    

    
          <wfw:comment>http://www.anthor.net/blog/post/Configurer-les-autoprops-de-Tortoise-SVN-%24Rev%24%2C-%24LastChangedDate%24%2C-%24Author%24%2C-%24Id%24-...#comment-form</wfw:comment>
      <wfw:commentRss>http://www.anthor.net/blog/feed/atom/comments/43</wfw:commentRss>
      <feedburner:origLink>http://www.anthor.net/blog/post/Configurer-les-autoprops-de-Tortoise-SVN-%24Rev%24%2C-%24LastChangedDate%24%2C-%24Author%24%2C-%24Id%24-...</feedburner:origLink></entry>
  
</feed>
