<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://prendreuncafe.com/blog/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Prendre un Café - Tag - javascript</title>
  <link>http://prendreuncafe.com/blog/</link>
  <atom:link href="http://prendreuncafe.com/blog/feed/tag/javascript/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Fri, 02 Mar 2012 11:41:49 +0100</pubDate>
  <copyright>Contenus sous licence Creative Commons BY-SA</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>YAML Brush for the SyntaxHighlighter Javascript Library</title>
    <link>http://prendreuncafe.com/blog/post/2009/07/26/YAML-Brush-for-the-SyntaxHighlighter-Javascript-Library</link>
    <guid isPermaLink="false">urn:md5:8ec97f12c6dc738c90136befa2a3552f</guid>
    <pubDate>Sun, 26 Jul 2009 13:48:00 +0200</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Dev</category>
        <category>code</category><category>javascript</category><category>syntax highlighting</category><category>syntaxhighlighter</category>    
    <description>    &lt;p&gt;During a trip back to Paris by train, I quickly coded for a project of mine a new brush for &lt;a href=&quot;http://alexgorbatchev.com/wiki/SyntaxHighlighter&quot; hreflang=&quot;en&quot;&gt;SyntaxHighlighter&lt;/a&gt;, a client-side syntax coloring library powered by Javascript, in order to highlight &lt;a href=&quot;http://yaml.org/&quot; hreflang=&quot;en&quot;&gt;YAML&lt;/a&gt; code snippets.&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://prendreuncafe.com/blog/public/images/Dev/JavaScript/shYaml.png&quot; alt=&quot;YAML syntax highlighting brush&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;YAML syntax highlighting brush, juil. 2009&quot; /&gt;&lt;/p&gt;


&lt;p&gt;You can &lt;a href=&quot;http://www.undermyhat.org/blog/wp-content/uploads/2009/09/shBrushYaml.js&quot; hreflang=&quot;en&quot;&gt;get the code here&lt;/a&gt; and provide feedback by &lt;a href=&quot;http://prendreuncafe.com/blog/contact&quot;&gt;sending me an email&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; Oops, didn&amp;#8217;t find this already &lt;a href=&quot;http://www.willdurand.fr/posts/10/syntaxhighlighter-tinymce-et-yml.html&quot; hreflang=&quot;en&quot;&gt;existing brush&lt;/a&gt; (I hadn&amp;#8217;t wifi access in the train). I think my version support more specific aspects of the syntax, though.&lt;/p&gt;&lt;hr/&gt;&lt;p style=&quot;margin:.5em 0;padding:.5em;border:1px solid #333;background:#eee;color:#222&quot;&gt;&lt;small&gt;Ce billet intitulé &lt;a href=&quot;http://prendreuncafe.com/blog/post/2009/07/26/YAML-Brush-for-the-SyntaxHighlighter-Javascript-Library&quot;&gt;YAML Brush for the SyntaxHighlighter Javascript Library&lt;/a&gt; a été rédigé par &lt;a href=&quot;http://prendreuncafe.com/cv&quot;&gt;Nicolas Perriault&lt;/a&gt; et publié sur le blog &lt;a href=&quot;http://prendreuncafe.com/blog/&quot;&gt;Prendre un Café&lt;/a&gt; sous licence &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/&quot;&gt;Creative Commons BY-NC-SA&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Un plugin jQuery pour générer des plans automatiquement</title>
    <link>http://prendreuncafe.com/blog/post/2008/06/08/Un-plugin-jQuery-pour-generer-des-plans-automatiques</link>
    <guid isPermaLink="false">urn:md5:0ba5d16c81a84d87e28e6f5b230ce12d</guid>
    <pubDate>Sun, 08 Jun 2008 16:59:00 +0200</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Dev</category>
        <category>javascript</category><category>jquery</category><category>plugins</category>    
    <description>    &lt;p&gt;Avec un temps pareil, autant coder des plugins &lt;a href=&quot;http://jquery.com/&quot; hreflang=&quot;en&quot;&gt;jQuery&lt;/a&gt;, non&amp;#160;?&lt;/p&gt;


&lt;p&gt;Quelques heures de boulot plus tard, &lt;a href=&quot;http://code.google.com/p/jqplanize/&quot; hreflang=&quot;en&quot;&gt;jqplanize&lt;/a&gt;&lt;sup&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2008/06/08/Un-plugin-jQuery-pour-generer-des-plans-automatiques#pnote-976-1&quot; id=&quot;rev-pnote-976-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt; est né et permet de générer automatiquement une table des matières extraite de la hiérarchie induite de la séquence des titres d&amp;#8217;un document HTML&lt;sup&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2008/06/08/Un-plugin-jQuery-pour-generer-des-plans-automatiques#pnote-976-2&quot; id=&quot;rev-pnote-976-2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt;.&lt;/p&gt;


&lt;p&gt;La doc est sur &lt;a href=&quot;http://code.google.com/p/jqplanize/&quot; hreflang=&quot;en&quot;&gt;la page d&amp;#8217;accueil du projet&lt;/a&gt; (hébergée chez Google), ou plus exhaustivement sur cette &lt;a href=&quot;http://prendreuncafe.com/work/jqplanize/index.html&quot; hreflang=&quot;en&quot;&gt;page dédiée&lt;/a&gt; du présent site, avec quelques exemples live.&lt;/p&gt;


&lt;p&gt;Le code semble fonctionner sous Firefox 3 RC2 et Safari 3.1, mais ça ne marche curieusement pas sous Opera 9, et j&amp;#8217;ai pas testé sous &lt;acronym title=&quot;Internet Explorer&quot;&gt;IE&lt;/acronym&gt; donc attendez vous à des updates&lt;sup&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2008/06/08/Un-plugin-jQuery-pour-generer-des-plans-automatiques#pnote-976-3&quot; id=&quot;rev-pnote-976-3&quot;&gt;3&lt;/a&gt;]&lt;/sup&gt;.&lt;/p&gt;


&lt;p&gt;Vivement l&amp;#8217;été.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2008/06/08/Un-plugin-jQuery-pour-generer-des-plans-automatiques#rev-pnote-976-1&quot; id=&quot;pnote-976-1&quot;&gt;1&lt;/a&gt;] Non mais vous avez déjà vu un nom aussi naze&amp;#160;?&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2008/06/08/Un-plugin-jQuery-pour-generer-des-plans-automatiques#rev-pnote-976-2&quot; id=&quot;pnote-976-2&quot;&gt;2&lt;/a&gt;] Si tant est que le balisage des titres soit sémantique, hein.&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2008/06/08/Un-plugin-jQuery-pour-generer-des-plans-automatiques#rev-pnote-976-3&quot; id=&quot;pnote-976-3&quot;&gt;3&lt;/a&gt;] Ou pas, bien entendu.&lt;/p&gt;&lt;/div&gt;&lt;hr/&gt;&lt;p style=&quot;margin:.5em 0;padding:.5em;border:1px solid #333;background:#eee;color:#222&quot;&gt;&lt;small&gt;Ce billet intitulé &lt;a href=&quot;http://prendreuncafe.com/blog/post/2008/06/08/Un-plugin-jQuery-pour-generer-des-plans-automatiques&quot;&gt;Un plugin jQuery pour générer des plans automatiquement&lt;/a&gt; a été rédigé par &lt;a href=&quot;http://prendreuncafe.com/cv&quot;&gt;Nicolas Perriault&lt;/a&gt; et publié sur le blog &lt;a href=&quot;http://prendreuncafe.com/blog/&quot;&gt;Prendre un Café&lt;/a&gt; sous licence &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/&quot;&gt;Creative Commons BY-NC-SA&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Toujours en vrac</title>
    <link>http://prendreuncafe.com/blog/post/2007/12/21/Toujours-en-vrac</link>
    <guid isPermaLink="false">urn:md5:7d41d4df0fcafa8d0bfbe209a44df4e0</guid>
    <pubDate>Thu, 13 Dec 2007 10:41:00 +0100</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Divers</category>
        <category>acid2</category><category>amazon</category><category>browsers</category><category>firefox</category><category>gmail</category><category>gtd</category><category>javascript</category><category>standards</category><category>wiimote</category>    
    <description>    &lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.satine.org/archives/2007/12/13/amazon-simpledb/&quot; hreflang=&quot;en&quot;&gt;SimpleDB&lt;/a&gt;, un webservice de stockage et d'accès aux données proposé par Amazon &lt;a href=&quot;http://www.amazon.com/gp/browse.html?node=342335011&quot; hreflang=&quot;en&quot;&gt;en version beta&lt;/a&gt;. Intéressant !&lt;/li&gt;
&lt;li&gt;Créez vos applications javascript en ligne chez &lt;a href=&quot;http://appjet.com/&quot; hreflang=&quot;en&quot;&gt;AppJet&lt;/a&gt;. Impressionnant... mais complètement inutile ?&lt;/li&gt;
&lt;li&gt;Un &lt;a href=&quot;http://www.gearlog.com/2007/12/incredible_wiimote_hack_create.php&quot; hreflang=&quot;en&quot;&gt;hack génialissime à base de wiimote&lt;/a&gt;. Là pour le coup, c'est une petite révolution... Sans doute l'un des meilleurs hack de matos de tous les temps !&lt;/li&gt;
&lt;li&gt;Votre ordinateur est-il &lt;a href=&quot;http://getfirefox.jp/video/gallery/j9wm/&quot; hreflang=&quot;en&quot;&gt;satisfait de son browser&lt;/a&gt; ?&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.msdn.com/ie/archive/2007/12/19/internet-explorer-8-and-acid2-a-milestone.aspx&quot; hreflang=&quot;en&quot;&gt;IE8 passerait le test Acid2&lt;/a&gt;. Excellente nouvelle &lt;a href=&quot;http://blog.alsacreations.com/2007/12/20/407-support-de-css-de-gros-progres-pour-internet-explorer-8&quot; hreflang=&quot;fr&quot;&gt;pour les standards&lt;/a&gt; !&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mozilla.com/en-US/firefox/all-beta.html#fr&quot; hreflang=&quot;en&quot;&gt;Firefox 3 beta 2&lt;/a&gt; est dispo. Nanti du &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/6050&quot; hreflang=&quot;en&quot;&gt;thème Proto pour OS X&lt;/a&gt;, c'est déjà une petite tuerie &lt;img src=&quot;/blog/themes/battlestar/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Amis du &lt;acronym title=&quot;Getting Things Done&quot;&gt;GTD&lt;/acronym&gt;, la nouvelle &lt;a href=&quot;http://www.rememberthemilk.com/services/gmail/&quot; hreflang=&quot;en&quot;&gt;extension Firefox pour GMail de Remember The Milk&lt;/a&gt; est très chouette.&lt;/li&gt;
&lt;/ul&gt;&lt;hr/&gt;&lt;p style=&quot;margin:.5em 0;padding:.5em;border:1px solid #333;background:#eee;color:#222&quot;&gt;&lt;small&gt;Ce billet intitulé &lt;a href=&quot;http://prendreuncafe.com/blog/post/2007/12/21/Toujours-en-vrac&quot;&gt;Toujours en vrac&lt;/a&gt; a été rédigé par &lt;a href=&quot;http://prendreuncafe.com/cv&quot;&gt;Nicolas Perriault&lt;/a&gt; et publié sur le blog &lt;a href=&quot;http://prendreuncafe.com/blog/&quot;&gt;Prendre un Café&lt;/a&gt; sous licence &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/&quot;&gt;Creative Commons BY-NC-SA&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Yet Another En Vrac</title>
    <link>http://prendreuncafe.com/blog/post/2007/12/06/Yet-Another-En-Vrac</link>
    <guid isPermaLink="false">urn:md5:95d9b3b4916f464e17b53e713e1b645e</guid>
    <pubDate>Thu, 06 Dec 2007 09:00:00 +0100</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Divers</category>
        <category>html5</category><category>javascript</category><category>php</category><category>symfony</category>    
    <description>    &lt;p&gt;Tiens, ça faisait longtemps...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un &lt;a href=&quot;http://www.alistapart.com/articles/previewofhtml5&quot; hreflang=&quot;en&quot;&gt;petit tour d'horizon des possibilités de HTML 5&lt;/a&gt;. Évolution très prometteuse du vieux et abscons HTML 4, la date de sortie supposée (dans 10 ou 15 ans dixit l'auteur) refroidit cependant, et c'est dommage...&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://feeds.feedburner.com/~r/ajaxian/~3/194928739/upcoming-changes-to-the-javascript-language&quot; hreflang=&quot;en&quot;&gt;Javascript 2 pointe le bout de son nez&lt;/a&gt;, basé sur la version 4 de la &lt;a href=&quot;http://www.ecmascript.org/&quot; hreflang=&quot;en&quot;&gt;spécification ECMAScript&lt;/a&gt;. Au programme, entre autres réjouissances, classes, interfaces, namespaces et packages : MIAM (et surtout, ENFIN.)&lt;/li&gt;
&lt;li&gt;Quelques unes des nouvelles fonctionnalités retenues pour implémentation dans la &lt;a href=&quot;http://devzone.zend.com/article/2739-Zend-Weekly-Summaries-Issue-359#Heading1&quot; hreflang=&quot;en&quot;&gt;version 5.3 de PHP&lt;/a&gt; : &lt;a href=&quot;http://prendreuncafe.com/blog/post/2007/07/13/Namespaces-en-PHP6-cest-parti&quot; hreflang=&quot;fr&quot;&gt;namespace&lt;/a&gt; support (megayeah), &lt;a href=&quot;http://openid.net/&quot; hreflang=&quot;en&quot;&gt;OpenID&lt;/a&gt; support in ext/openssl (megayeah), &lt;a href=&quot;http://www.colder.ch/news/08-24-2007/28/late-static-bindings-expl.html&quot; hreflang=&quot;en&quot;&gt;late static binding&lt;/a&gt; (yeah), &lt;a href=&quot;http://sqlite.org/&quot; hreflang=&quot;en&quot;&gt;SQLite&lt;/a&gt; 3 support in ext/sqlite (cool), &lt;a href=&quot;http://blog.wampserver.com/index.php/2007/12/04/mysqlnd-un-driver-mysql-optimise-pour-php/&quot; hreflang=&quot;fr&quot;&gt;mysqlnd library&lt;/a&gt; in the core (cool)... Mais que restera t-il à &lt;a href=&quot;http://www.cyruss.com/blog/index.php?2007/05/05/170-les-nouveautes-de-php6-php-6&quot; hreflang=&quot;en&quot;&gt;PHP 6&lt;/a&gt; ? &lt;img src=&quot;/blog/themes/battlestar/smilies/wink.gif&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://couchdb.org/&quot; hreflang=&quot;en&quot;&gt;CouchDB&lt;/a&gt;, un serveur de base de document accessible via une API REST JSON très prometteuse avec un &lt;a href=&quot;http://jan.prima.de/~jan/plok/archives/108-Programming-CouchDB-with-Javascript.html&quot; hreflang=&quot;en&quot;&gt;exemple de mise en oeuvre&lt;/a&gt; simple et efficace.&lt;/li&gt;
&lt;li&gt;Côté &lt;a href=&quot;http://www.symfony-project.com/&quot; hreflang=&quot;en&quot;&gt;Symfony&lt;/a&gt; :
&lt;ul&gt;
&lt;li&gt;Une chouette exploration des fonctionnalités de &lt;a href=&quot;http://notjosh.com/blog/archives/47-Symfony-1.1-Forms-and-Validation.html&quot; hreflang=&quot;en&quot;&gt;gestion de formulaires et de leur validation&lt;/a&gt; dans la prochaine version 1.1 du framework.&lt;/li&gt;
&lt;li&gt;Un &lt;a href=&quot;http://redotheweb.com/2007/11/28/motilee-symfony-powered-forum-engine-released-open-source/&quot; hreflang=&quot;en&quot;&gt;chouette projet de forum&lt;/a&gt; basé sur le framework et quelques plugins a vu le jour : &lt;a href=&quot;http://www.motilee.com/&quot; hreflang=&quot;en&quot;&gt;Motilee&lt;/a&gt;. Contributions bienvenues.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.aide-de-camp.org/&quot; hreflang=&quot;fr&quot;&gt;Fabien Potencier&lt;/a&gt;, créateur et mainteneur de Symfony a ouvert &lt;a href=&quot;http://www.aide-de-camp.org/&quot; hreflang=&quot;fr&quot;&gt;son blog&lt;/a&gt;, et on y trouve déjà quelques &lt;a href=&quot;http://www.aide-de-camp.org/tips/fr&quot; hreflang=&quot;fr&quot;&gt;petites astuces intéressantes&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr/&gt;&lt;p style=&quot;margin:.5em 0;padding:.5em;border:1px solid #333;background:#eee;color:#222&quot;&gt;&lt;small&gt;Ce billet intitulé &lt;a href=&quot;http://prendreuncafe.com/blog/post/2007/12/06/Yet-Another-En-Vrac&quot;&gt;Yet Another En Vrac&lt;/a&gt; a été rédigé par &lt;a href=&quot;http://prendreuncafe.com/cv&quot;&gt;Nicolas Perriault&lt;/a&gt; et publié sur le blog &lt;a href=&quot;http://prendreuncafe.com/blog/&quot;&gt;Prendre un Café&lt;/a&gt; sous licence &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/&quot;&gt;Creative Commons BY-NC-SA&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Dégradabilité javascript et Ajax dans Symfony avec jQuery</title>
    <link>http://prendreuncafe.com/blog/post/2007/10/03/Degradabilite-javascript-et-Ajax-dans-Symfony-avec-jQuery</link>
    <guid isPermaLink="false">urn:md5:d638f5d4b7128e1b962935f0341a6e58</guid>
    <pubDate>Wed, 03 Oct 2007 11:31:00 +0200</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Dev</category>
        <category>ajax</category><category>bestpractices</category><category>javascript</category><category>jquery</category><category>php</category><category>symfony</category>    
    <description>    &lt;p&gt;Pour un projet, je suis en train d'utiliser la librairie javascript &lt;a href=&quot;http://jquery.com/&quot; hreflang=&quot;en&quot;&gt;jQuery&lt;/a&gt; dans &lt;a href=&quot;http://www.symfony-project.com/&quot; hreflang=&quot;en&quot;&gt;Symfony&lt;/a&gt;, en lieu et place du couple &lt;a href=&quot;http://www.prototypejs.org/&quot; hreflang=&quot;en&quot;&gt;prototype&lt;/a&gt; et &lt;a href=&quot;http://script.aculo.us/&quot; hreflang=&quot;en&quot;&gt;scripaculous&lt;/a&gt; dont je vous avait &lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/03/19/410-effets-javascript-avec-prototype-et-scriptaculous&quot; hreflang=&quot;fr&quot;&gt;déjà parlé&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;L'idée est ici de ne pas avoir à utiliser les &lt;a href=&quot;http://www.symfony-project.com/book/1_0/11-Ajax-Integration&quot; hreflang=&quot;en&quot;&gt;helpers&lt;/a&gt; fournis par Symfony (qui mettent en oeuvre exclusivement Scriptaculous) et ainsi d'éviter d'utiliser les deux librairies simultanément sur le projet, mais aussi de décoreller le code javascript des templates et de favoriser une meilleure dégradabilité de ce dernier.&lt;/p&gt;


&lt;p&gt;Par exemple, au lieu d'utiliser la fonction &lt;code&gt;link_to_remote()&lt;/code&gt; dans notre template, on peut tout à fait imaginer d'employer un bon vieux &lt;code&gt;link_to()&lt;/code&gt; des familles et de lui appliquer une classe css qu'on va pouvoir cibler depuis jQuery afin d'effectuer un appel AJAX pointant vers l'url présente dans l'attribut &lt;code&gt;href&lt;/code&gt; du lien. Avec un exemple, c'est un peu plus clair :&lt;/p&gt;

&lt;pre&gt; php
&amp;lt;?php echo link_to('Mon lien', '@maroute?monparam=mavaleur', array('class' =&amp;gt; 'ajax_link')) ?&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Dans un fichier javascript (jQuery doit bien entendu être chargé) :&lt;/p&gt;

&lt;pre&gt; javascript
$(document).ready(function() {
  $('a.ajax_link').click(function()
    {
      $.ajax(
        {
          type: 'post',
          url: $(this).attr('href'),
          success: function(msg)
          {
            alert(&amp;quot;Résultat: &amp;quot; + msg);
          }
        });
      return false;
    }
  );
});
&lt;/pre&gt;


&lt;p&gt;Avantage supplémentaire, vous continuez à bénéficier du système de routing Symfony (pas d'urls en dur dans les fichiers javascripts externalisés.)&lt;/p&gt;


&lt;p&gt;Là où Symfony va également nous aider, c'est au travers de sa gestion native de la décoration d'une vue en fonction du type d'appel HTTP : le framework va detecter si l'action a été appelée ou non depuis une requête XmlHttpRequest et, si c'est le cas, décorer la vue avec le layout global de l'application et donc présenter à vos utilisateur le résultat escompté, qu'ils aient activé javascript ou non pour surfer sur votre site.&lt;/p&gt;


&lt;p&gt;Si vous désirez mettre à jour un élément de l'arbre DOM avec le contenu reçu d'une requête Ajax, voici une autre petite astuce ; on va utiliser une ancre dans l'url et s'en servir comme argument décrivant l'id DOM qu'on veut mettre à jour :&lt;/p&gt;

&lt;pre&gt; php
&amp;lt;?php echo link_to('Mon lien', '@maroute?monparam=mavaleur#mon_div', array('class' =&amp;gt; 'ajax_link')) ?&amp;gt;
&amp;lt;div id=&amp;quot;mon_div&amp;quot; style=&amp;quot;display:none&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Et en javascript :&lt;/p&gt;

&lt;pre&gt; javascript
$(document).ready(function() {
  $('a.ajax_link').click(function()
    {
      var href = $(this).attr('href');
      var target = href.substring(href.lastIndexOf('#'), href.length);
      $.ajax(
        {
          type: 'post',
          url: href,
          success: function(msg)
          {
            if ($(target))
            {
              $(target).html(msg).show('slow');
            }
          }
        }
      );
      return false;
    }
  );
});
&lt;/pre&gt;


&lt;p&gt;Note : on aurait pu aussi détourner l'attribut &lt;code&gt;target&lt;/code&gt; à cette fin mais ce dernier n'est pas valide en XHTML strict.&lt;/p&gt;


&lt;p&gt;Bien entendu, ceci n'est qu'un microscopique aperçu de l'étendu des possibilités de jQuery et de son intégration possible avec Symfony (ou d'autre frameworks et langages, bien entendu.)&lt;/p&gt;&lt;hr/&gt;&lt;p style=&quot;margin:.5em 0;padding:.5em;border:1px solid #333;background:#eee;color:#222&quot;&gt;&lt;small&gt;Ce billet intitulé &lt;a href=&quot;http://prendreuncafe.com/blog/post/2007/10/03/Degradabilite-javascript-et-Ajax-dans-Symfony-avec-jQuery&quot;&gt;Dégradabilité javascript et Ajax dans Symfony avec jQuery&lt;/a&gt; a été rédigé par &lt;a href=&quot;http://prendreuncafe.com/cv&quot;&gt;Nicolas Perriault&lt;/a&gt; et publié sur le blog &lt;a href=&quot;http://prendreuncafe.com/blog/&quot;&gt;Prendre un Café&lt;/a&gt; sous licence &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/&quot;&gt;Creative Commons BY-NC-SA&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Google Gears : vous pouvez vous deconnecter</title>
    <link>http://prendreuncafe.com/blog/post/2007/05/31/Google-Gears-vous-pouvez-vous-deconnecter</link>
    <guid isPermaLink="false">urn:md5:ac5a53359110f2725f7454d3c1ab4973</guid>
    <pubDate>Thu, 31 May 2007 17:38:00 +0200</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Divers</category>
        <category>bestpractices</category><category>dojo</category><category>framework</category><category>gears</category><category>google</category><category>javascript</category><category>offline</category>    
    <description>    &lt;p&gt;&lt;strong&gt;Note : ce billet est une reprise de l'article que j'ai publié sur le &lt;a href=&quot;http://www.clever-age.com/veille/blog/&quot; hreflang=&quot;fr&quot;&gt;blog de Clever-Age&lt;/a&gt;, &lt;a href=&quot;http://www.clever-age.com/veille/blog/google-gears-vous-pouvez-vous-deconnecter.html&quot;&gt;Google Gears : vous pouvez vous déconnecter&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edit :&lt;/strong&gt; Article &lt;a href=&quot;http://www.zdnet.fr/blogs/2007/06/01/google-gears-vous-pouvez-vous-deconnecter/&quot; hreflang=&quot;fr&quot;&gt;publié sur ZDNet&lt;/a&gt;, la gloire ^^&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.google.com/&quot;&gt;Google&lt;/a&gt; a annoncé aujourd’hui à l’occasion du Google Developer Day le lancement de sa &lt;a href=&quot;http://googlereader.blogspot.com/2007/05/oh-sam-i-am-can-i-read-it-on-tram.html&quot;&gt;réponse technique concrète&lt;/a&gt; aux problèmes de la consultation et de la synchronisation de données web en mode déconnecté : &lt;a href=&quot;http://gears.google.com/&quot;&gt;Google Gears&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cette réponse prend la forme d’une extension pour navigateur web (&lt;a href=&quot;http://getfirefox.com/&quot;&gt;Firefox&lt;/a&gt; sur Windows, Mac et Linux, Internet Exporer sur Windows &lt;sup&gt;[&lt;a id=&quot;nh1&quot; href=&quot;http://prendreuncafe.com/blog/post/2007/05/31/Google-Gears-vous-pouvez-vous-deconnecter#nb1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;) comprenant un &lt;strong&gt;serveur local&lt;/strong&gt;, une &lt;strong&gt;base de données&lt;/strong&gt; et &lt;strong&gt;un gestionnaire de transactions&lt;/strong&gt; permettant de transformer le navigateur en solution client-serveur local afin de régler l’épineux problème du travail en mode déconnecté avec les applications web modernes.&lt;/p&gt;

&lt;p&gt;En effet, si les applications en ligne se sont considérablement enrichies et sophistiquées ces dernières années, au point de devenir de plus en plus indispensables à certains d’entre nous, elles subissent cependant pour la plupart d’entre elles d’une limitation importante : la &lt;strong&gt;nécessité d’être en permanence connecté à internet&lt;/strong&gt; pour fonctionner. Nombreux sont les cas d’impossibilité de se connecter au réseau des réseaux : zone de couverture, problèmes matériels, d’infrastructure, etc.&lt;/p&gt;

&lt;p&gt;Bien sûr, certains se sont déjà - et parfois depuis longtemps - penchés sur la question. C’est le cas de &lt;a href=&quot;http://www.mozilla.com/&quot;&gt;Mozilla&lt;/a&gt; avec l’ajout dans la version 2 de &lt;a href=&quot;http://www.mozilla-europe.org/fr/products/firefox/&quot;&gt;Firefox&lt;/a&gt; d’une base de données &lt;a href=&quot;http://sqlite.org/&quot;&gt;SQLite&lt;/a&gt; ou du &lt;a href=&quot;http://www.zimbra.com/blog/archives/2006/11/taking_zimbra_offline.html&quot;&gt;projet Zimbra&lt;/a&gt; permettant la sauvegarde de ressources locales. Mais l’une des solutions les plus avancées semblait se situer du côté du &lt;a href=&quot;http://www.sitepen.com/blog/2007/01/02/the-dojo-offline-toolkit/&quot;&gt;Dojo Offline Toolkit&lt;/a&gt;, un projet open source proposant des fonctionnalités de &lt;strong&gt;stockage d’interfaces, de données et d’applications en local&lt;/strong&gt; et des fonctionnalités de &lt;strong&gt;synchronisation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Google Gears se base sur cette dernière solution, embarquant le Dojo Offline Toolkit et une base de données SQLite au sein même de son extension. &lt;strong&gt;L’extension est open source&lt;/strong&gt; (sous licence new BSD) et peut à ce titre être &lt;a href=&quot;http://code.google.com/support/bin/answer.py?answer=69203&amp;amp;topic=11629&quot;&gt;redistribuée&lt;/a&gt; dans une application embarquant le runtime ou utiliser une installation existante de l’extension. La disponibilité du code est également une bonne garantie quand à la transparence, au taux d’adoption, à la sécurité et l’évolutivité du produit &lt;sup&gt;[&lt;a id=&quot;nh2&quot; href=&quot;http://prendreuncafe.com/blog/post/2007/05/31/Google-Gears-vous-pouvez-vous-deconnecter#nb2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Une des premières mises en oeuvre intéressantes de Gears se situe depuis ce matin dans &lt;a href=&quot;http://www.google.com/reader/&quot;&gt;Google Reader&lt;/a&gt;, l’agrégateur en ligne de Google : les utilisateurs ont pu remarquer la présence d’un nouveau bouton permettant de récupérer en local les 2000 derniers éléments non-lus afin de pouvoir les consulter hors-ligne.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://www.clever-age.com/local/cache-vignettes/L245xH94/png_Image_2.png&quot; alt=&quot;Synchronisation de données en local dans Google Reader&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Évidemment, ceci n’est qu’un début et Google ajoutera progressivement ce type de fonctionnalités à ses applications en ligne phares comme &lt;a href=&quot;http://www.gmail.com/&quot;&gt;GMail&lt;/a&gt;, &lt;a href=&quot;http://calendar.google.com/&quot;&gt;Calendar&lt;/a&gt;, &lt;a href=&quot;http://docs.google.com/&quot;&gt;Docs&lt;/a&gt;, etc...&lt;/p&gt;

&lt;p&gt;Google Gears ne sera cependant pas limité au monde de Google, mais sera utilisable par tout éditeur de site Web concerné par ce type de problématiques. Imaginons par exemple l’application d’un constructeur automobile permettant de configurer son véhicule : l’utilisateur télécharge alors de façon transparente le catalogue des éléments disponibles et peut ensuite prendre tranquillement l’avion, utiliser l’application pendant le vol en configurant sa future voiture. Une fois rendu à destination, il synchronise sa simulation une fois reconnecté à internet et envoie les données au serveur web du constructeur.&lt;/p&gt;

&lt;p&gt;Plus directement utile ? Le téléchargement en local des données cartographiques et des points d’intérêt de votre futur périple au bout du monde, hors-zone de couverture internet ? Vous y êtes ?&lt;/p&gt;

&lt;p&gt;Alors, tout est au mieux dans le meilleur des mondes ? &lt;strong&gt;Peut-être pas&lt;/strong&gt;, si l’on considère cette initiative de Google &lt;strong&gt;sous l’angle de la standardisation&lt;/strong&gt; : en effet, Google et les équipes de développement &lt;a href=&quot;http://dojotoolkit.org/&quot;&gt;Dojo&lt;/a&gt; proposent aujourd’hui une solution qui est basée sur un effort de réflexion qui a été initié auprès d’un nombre restreint de participants ; quid si demain Microsoft publie sa propre interprétation du problème ? Allons-nous à nouveau assister à un affrontement des deux géants, avec tout ce que cela implique en terme de problèmes d’interopérabilité ? Le fait qu’&lt;a href=&quot;http://shebanation.com/2007/05/30/google-gears/&quot;&gt;Adobe semble vouloir intégrer Gears dans Appolo&lt;/a&gt; et que Mozilla et Opéra soient de la partie risque de complexifier encore un peu plus le problème pour l’éditeur de Redmond.&lt;/p&gt;

&lt;p&gt;Reste que &lt;strong&gt;le sujet est à surveiller de près&lt;/strong&gt;, car les enjeux sont énormes à l’heure où les applications web tendent à empiéter de plus en plus sur le territoire des applications client-lourd traditionnelles.&lt;/p&gt;

&lt;p&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2007/05/31/Google-Gears-vous-pouvez-vous-deconnecter#nh1&quot; name=&quot;nb1&quot; title=&quot;Notes 1&quot; rev=&quot;footnote&quot; id=&quot;nb1&quot;&gt;1&lt;/a&gt;] Le &lt;a href=&quot;http://scobleizer.com/2007/05/30/google-brings-developers-offline-with-gears-new-offline-reader/&quot;&gt;support de Safari et d’Opéra&lt;/a&gt; est d’ores et déjà annoncé.&lt;/p&gt;

&lt;p&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2007/05/31/Google-Gears-vous-pouvez-vous-deconnecter#nh2&quot; name=&quot;nb2&quot; title=&quot;Notes 2&quot; rev=&quot;footnote&quot; id=&quot;nb2&quot;&gt;2&lt;/a&gt;] Déjà une mise à jour depuis le lancement ce matin même !&lt;/p&gt;&lt;hr/&gt;&lt;p style=&quot;margin:.5em 0;padding:.5em;border:1px solid #333;background:#eee;color:#222&quot;&gt;&lt;small&gt;Ce billet intitulé &lt;a href=&quot;http://prendreuncafe.com/blog/post/2007/05/31/Google-Gears-vous-pouvez-vous-deconnecter&quot;&gt;Google Gears : vous pouvez vous deconnecter&lt;/a&gt; a été rédigé par &lt;a href=&quot;http://prendreuncafe.com/cv&quot;&gt;Nicolas Perriault&lt;/a&gt; et publié sur le blog &lt;a href=&quot;http://prendreuncafe.com/blog/&quot;&gt;Prendre un Café&lt;/a&gt; sous licence &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/&quot;&gt;Creative Commons BY-NC-SA&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Over. Geek.</title>
    <link>http://prendreuncafe.com/blog/post/2007/05/30/Over-Geek</link>
    <guid isPermaLink="false">urn:md5:77abc0897cae98fcc8c51a1f2b6a5cb1</guid>
    <pubDate>Wed, 30 May 2007 12:22:00 +0200</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Divers</category>
        <category>editor</category><category>geek</category><category>javascript</category><category>vim</category>    
    <description>    &lt;p&gt;Marre des éditeurs &lt;a href=&quot;http://fr.wikipedia.org/wiki/Wysiwyg&quot; hreflang=&quot;en&quot;&gt;wysiwyg&lt;/a&gt; foireux ? Accro à &lt;a href=&quot;http://www.vim.org/&quot; hreflang=&quot;en&quot;&gt;Vim&lt;/a&gt; ? &lt;a href=&quot;http://gpl.internetconnection.net/vi/&quot; hreflang=&quot;en&quot;&gt;jsvi&lt;/a&gt; est fait pour vous &lt;img src=&quot;/blog/themes/battlestar/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;&lt;hr/&gt;&lt;p style=&quot;margin:.5em 0;padding:.5em;border:1px solid #333;background:#eee;color:#222&quot;&gt;&lt;small&gt;Ce billet intitulé &lt;a href=&quot;http://prendreuncafe.com/blog/post/2007/05/30/Over-Geek&quot;&gt;Over. Geek.&lt;/a&gt; a été rédigé par &lt;a href=&quot;http://prendreuncafe.com/cv&quot;&gt;Nicolas Perriault&lt;/a&gt; et publié sur le blog &lt;a href=&quot;http://prendreuncafe.com/blog/&quot;&gt;Prendre un Café&lt;/a&gt; sous licence &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/&quot;&gt;Creative Commons BY-NC-SA&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>CMS, bonhomme en mousse, Rollex et tout ce qui s'en suit</title>
    <link>http://prendreuncafe.com/blog/post/2006/10/07/Zapping-3</link>
    <guid isPermaLink="false">urn:md5:1a3414b261e73cbba32f575c449fe45d</guid>
    <pubDate>Tue, 10 Oct 2006 08:14:00 +0200</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Divers</category>
        <category>cms</category><category>flash</category><category>framework</category><category>google</category><category>haha</category><category>javascript</category><category>linux</category><category>video</category>    
    <description>    &lt;ul&gt;
&lt;li&gt;Yooggle, Gootube, bref, je ne vais pas revenir sur &lt;a href=&quot;http://fr.techcrunch.com/2006/10/09/google-acquiert-youtube/&quot; hreflang=&quot;fr&quot;&gt;l'acquisition de l'année&lt;/a&gt;. La question qu'on peut raisonnablement se poser reste &lt;strong&gt;POURQUOI FAIRE BORDEL ?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://callmepep.org/blog/post/2006/10/07/Content-Management-ne-veut-pas-dire-CMS&quot; hreflang=&quot;fr&quot;&gt;Pep nous signale&lt;/a&gt; un excellent article sur &lt;a href=&quot;http://www.thinkvitamin.com&quot; hreflang=&quot;en&quot;&gt;Vitamin&lt;/a&gt; concernant le &lt;a href=&quot;http://www.thinkvitamin.com/features/blogs/redefining-content-management&quot; hreflang=&quot;en&quot;&gt;mythe du CMS&lt;/a&gt; ; cet article résume très bien ce que je pense depuis pas mal de temps, à savoir qu'aucun &lt;em&gt;système de gestion de contenu&lt;/em&gt; (&lt;acronym title=&quot;Content Management System&quot;&gt;CMS&lt;/acronym&gt;) ne saura jamais gérer entièrement la complexité de vos contenus (ou ceux de vos clients), et que l'y pousser est AMHA totalement contre-productif en regard de l'utilisation d'outils plus bas niveau comme les frameworks, associés aux méthodes de développement agiles.&lt;/li&gt;
&lt;li&gt;Cette &lt;a href=&quot;http://www.media.ebaumsworld.com/supercoolpic.swf&quot; hreflang=&quot;swf&quot;&gt;image sans fin&lt;/a&gt; est de toute beauté (Flash.)&lt;/li&gt;
&lt;li&gt;Le &lt;a href=&quot;http://www.scoopeo.com/humour/le-petit-hardos-en-mousse&quot; hreflang=&quot;fr&quot;&gt;petit hardos en mousse&lt;/a&gt;, déjà dans les bacs (Via &lt;a href=&quot;http://www.scoopeo.com/humour/le-petit-hardos-en-mousse&quot; hreflang=&quot;fr&quot;&gt;ScoopekNo'&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Une recherche d'images sur Google pour les mots-clé &lt;q&gt;&lt;a href=&quot;http://images.google.com/images?q=rolex%20watches&amp;amp;hl=en&amp;amp;btnG=Search%20Images&quot; hreflang=&quot;fr&quot;&gt;Rollex watches&lt;/a&gt;&lt;/q&gt; renvoie des résultats surprenants.&lt;/li&gt;
&lt;li&gt;Heureusement pendant ce temps-là, la science progresse et &lt;a href=&quot;http://dev.tufuncion.com/bigger-penises-linux&quot; hreflang=&quot;en&quot;&gt;assène des évidences&lt;/a&gt; qui n'avaient échappé à personne &lt;img src=&quot;/blog/themes/battlestar/smilies/biggrin.gif&quot; alt=&quot;:D&quot; class=&quot;smiley&quot; /&gt;&lt;/li&gt;
&lt;li&gt;Sinon sans transition, entrez cette petite ligne de javascript dans la barre d'adresse de votre navigateur sur n'importe quel site, pour voir  (&lt;a href=&quot;http://www.slackpack.net/?q=node/374&quot; hreflang=&quot;ru&quot;&gt;via&lt;/a&gt;) :&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i&amp;lt;DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);&lt;/pre&gt;&lt;hr/&gt;&lt;p style=&quot;margin:.5em 0;padding:.5em;border:1px solid #333;background:#eee;color:#222&quot;&gt;&lt;small&gt;Ce billet intitulé &lt;a href=&quot;http://prendreuncafe.com/blog/post/2006/10/07/Zapping-3&quot;&gt;CMS, bonhomme en mousse, Rollex et tout ce qui s'en suit&lt;/a&gt; a été rédigé par &lt;a href=&quot;http://prendreuncafe.com/cv&quot;&gt;Nicolas Perriault&lt;/a&gt; et publié sur le blog &lt;a href=&quot;http://prendreuncafe.com/blog/&quot;&gt;Prendre un Café&lt;/a&gt; sous licence &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.5/&quot;&gt;Creative Commons BY-NC-SA&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>

