<?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/">
<channel>
  <title>Prendre un Café - ajax</title>
  <link>http://prendreuncafe.com/blog/</link>
  <description></description>
  <language>fr</language>
  <pubDate>Wed, 14 May 2008 15:57:49 +0200</pubDate>
  <copyright>Contenus sous licence Creative Commons BY-SA</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <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 class=&quot;php&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;a href=&quot;http://www.php.net/echo&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt;&lt;/a&gt; link_to&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'Mon lien'&lt;/span&gt;, &lt;span style=&quot;color: #ff0000;&quot;&gt;'@maroute?monparam=mavaleur'&lt;/span&gt;, &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'class'&lt;/span&gt; =&amp;gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;'ajax_link'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;


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

&lt;pre class=&quot;javascript&quot;&gt;$&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;document&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;ready&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
  $&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'a.ajax_link'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;click&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
      $.&lt;span style=&quot;color: #006600;&quot;&gt;ajax&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
          type: &lt;span style=&quot;color: #3366CC;&quot;&gt;'post'&lt;/span&gt;,
          url: $&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'href'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;,
          success: &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;msg&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;
          &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span style=&quot;color: #000066;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;Résultat: &amp;quot;&lt;/span&gt; + msg&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
          &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
      &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;false&lt;/span&gt;;
    &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&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 class=&quot;php&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;&amp;lt;?php&lt;/span&gt; &lt;a href=&quot;http://www.php.net/echo&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;echo&lt;/span&gt;&lt;/a&gt; link_to&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'Mon lien'&lt;/span&gt;, &lt;span style=&quot;color: #ff0000;&quot;&gt;'@maroute?monparam=mavaleur#mon_div'&lt;/span&gt;, &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'class'&lt;/span&gt; =&amp;gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;'ajax_link'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;?&amp;gt;&lt;/span&gt;
&amp;lt;div id=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;mon_div&amp;quot;&lt;/span&gt; style=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;display:none&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;


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

&lt;pre class=&quot;javascript&quot;&gt;$&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;document&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;ready&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
  $&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'a.ajax_link'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;click&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; href = $&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'href'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
      &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; target = href.&lt;span style=&quot;color: #006600;&quot;&gt;substring&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;href.&lt;span style=&quot;color: #006600;&quot;&gt;lastIndexOf&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'#'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;, href.&lt;span style=&quot;color: #006600;&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
      $.&lt;span style=&quot;color: #006600;&quot;&gt;ajax&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;
        &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
          type: &lt;span style=&quot;color: #3366CC;&quot;&gt;'post'&lt;/span&gt;,
          url: href,
          success: &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;msg&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;
          &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;$&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;target&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;
            &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
              $&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;target&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;msg&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;show&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'slow'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
            &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
          &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
        &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
      &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
      &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;false&lt;/span&gt;;
    &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
  &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&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;</description>
    
    
    
      </item>
    
  <item>
    <title>Une messagerie instantanée embarquée à votre site</title>
    <link>http://prendreuncafe.com/blog/post/2006/03/12/411-une-messagerie-instantanee-embarquee-a-votre-site</link>
    <guid isPermaLink="false">urn:md5:761129043d6e3452b892a141fae68d4f</guid>
    <pubDate>Sun, 12 Mar 2006 21:46:49 +0000</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Divers</category>
        <category>ajax</category><category>chat</category><category>effets</category><category>web</category>    
    <description>    &lt;p&gt;[Via &lt;a href=&quot;http://www.scoopeo.com/internet/une_messagerie_instantannee_couplee_au_surf_web&quot; hreflang=&quot;fr&quot;&gt;Scoopeo&lt;/a&gt;]&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://gabbly.com/&quot; hreflang=&quot;en&quot;&gt;Gabbly&lt;/a&gt; est un truc de dingue. Ce n'est ni plus ni moins qu'un client de messagerie instantanée tout javascript et &lt;acronym title=&quot;Asynchronous JavaScript + XML&quot;&gt;AJAX&lt;/acronym&gt; intégrable à tout site qui en fait potentiellement la demande. Fil &lt;acronym title=&quot;RDF Site Summary&quot;&gt;RSS&lt;/acronym&gt; des conversations inclus, cela va de soi. C'est gratuit, c'est sympa, c'est top.&lt;/p&gt;


&lt;p&gt;Pour essayer le service sur ce site, &lt;a href=&quot;http://gabbly.com/prendreuncafe.com/blog&quot; hreflang=&quot;fr&quot;&gt;cliquez ici&lt;/a&gt;. Pour le fil RSS, &lt;a href=&quot;http://feed.gabbly.com/prendreuncafe.com/blog&quot; hreflang=&quot;fr&quot;&gt;c'est par là&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>En vrac</title>
    <link>http://prendreuncafe.com/blog/post/2006/02/14/392-en-vrac</link>
    <guid isPermaLink="false">urn:md5:e440068eaa82e46e4c5bfef9f16aa061</guid>
    <pubDate>Tue, 14 Feb 2006 16:46:15 +0000</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Divers</category>
        <category>ajax</category><category>flash</category><category>google</category><category>haha</category><category>jeu</category><category>linux</category><category>php</category><category>ubuntu</category><category>xgl</category>    
    <description>    &lt;p&gt;Pfiouuuu, pas vraiment le temps de bloguer ces derniers temps, donc voila une petite selection &lt;em&gt;en vrac&lt;/em&gt; de liens interessants...&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.masuga.com/thelab/ajaxrate/&quot; hreflang=&quot;en&quot;&gt;Ajax Rating&lt;/a&gt; est un système de notation en &lt;acronym title=&quot;Asynchronous JavaScript + XML&quot;&gt;AJAX&lt;/acronym&gt;.&lt;/li&gt;
&lt;li&gt;Les jours de &lt;a href=&quot;http://www.dynamicdrive.com/dynamicindex17/rsstickerajax/&quot;&gt;Flash&lt;/a&gt; &lt;a href=&quot;http://jstween.blogspot.com/&quot;&gt;sont-ils&lt;/a&gt; &lt;a href=&quot;http://moodhist.home.comcast.net/balls.html&quot; hreflang=&quot;en&quot;&gt;comptés&lt;/a&gt;&amp;nbsp;? &lt;a href=&quot;http://www.flashearth.com/&quot; hreflang=&quot;en&quot;&gt;Pas sûr&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.panoramio.com/&quot; hreflang=&quot;en&quot;&gt;Panoramio&lt;/a&gt; combine &lt;a href=&quot;http://maps.google.com&quot; hreflang=&quot;en&quot;&gt;Google Maps&lt;/a&gt; et galleries photos. Super sympa.&lt;/li&gt;
&lt;li&gt;Tout le monde en parle, avec raison&amp;nbsp;: &lt;a href=&quot;http://tirania.org/blog/archive/2006/Feb-07-1.html&quot; hreflang=&quot;en&quot;&gt;XGL&lt;/a&gt; va révolutionner nos desktop libres. Et pour les aigris qui argueraient qu'OS X a mis en place ce genre d'effets avant, je leur ferais remarquer que Mac OS X est loin d'être un projet libre et gratuit accessible à tous.&lt;/li&gt;
&lt;li&gt;Les &lt;a href=&quot;http://www.liberation.fr/page.php?Article=358587&quot; hreflang=&quot;fr&quot;&gt;États-Unis vont mieux&lt;/a&gt;, beaucoup mieux [&lt;a href=&quot;http://www.404brain.net/index.php/weblog/static/2465/&quot; hreflang=&quot;fr&quot;&gt;via&lt;/a&gt;]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.01net.com/editorial/303894/justice/free-attaque-un-client-en-colere&quot; hreflang=&quot;fr&quot;&gt;Free pète les plombs&lt;/a&gt;. Je n'ai jamais eu de souci avec eux, mais ce genre de pratiques seraient à deux doigts de me faire changer de fournisseur d'accès.&lt;/li&gt;
&lt;li&gt;À faire lire à toutes les &lt;acronym title=&quot;Direction des Systèmes d&amp;#039;Information&quot;&gt;DSI&lt;/acronym&gt; de la Terre&amp;nbsp;: &lt;a href=&quot;http://www.tbray.org/ongoing/When/200x/2006/01/08/No-New-XML-Languages&quot; hreflang=&quot;en&quot;&gt;Don't invent XML languages&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Une bonne &lt;a href=&quot;http://linux.strangegamer.com/index.php?title=Game_List&quot; hreflang=&quot;en&quot;&gt;liste de jeux sous Linux&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.protokid.com/poppirates/&quot; hreflang=&quot;en&quot;&gt;Pop Pirates&lt;/a&gt;, excellent petit &lt;em&gt;shoot'em up&lt;/em&gt; en flash.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://alexadex.com/ad/index.fcgi?ref=6767&quot; hreflang=&quot;fr&quot;&gt;Alexadex&lt;/a&gt;&amp;nbsp;: boursicotez virtuellement en spéculant sur la valeur des sites internet. Achetez des &lt;a href=&quot;http://alexadex.com/ad/index.py?page=url&amp;amp;url=prendreuncafe.com&quot; hreflang=&quot;fr&quot;&gt;actions prendreuncafe.com&lt;/a&gt;&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;Et enfin, &lt;em&gt;last but not least&lt;/em&gt;, un &lt;a href=&quot;http://www.a-ton-site.com/gratuit/php/creer-affiche-variable.php&quot; hreflang=&quot;fr&quot;&gt;générateur de code PHP révolutionnaire&lt;/a&gt;. Pitié, ne me traînez pas en justice, ceci n'est pas de la diffamation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ah, oui, je prépare un tuto pour Rails, mais ça fait quatre fois que je le réécris car à chaque fois je trouve une méthode encore plus simple... Just be patient.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Bouse 2.0</title>
    <link>http://prendreuncafe.com/blog/post/2005/11/20/344-bouse-20</link>
    <guid isPermaLink="false">urn:md5:05876905004b4785962b80b8780ad69e</guid>
    <pubDate>Sun, 20 Nov 2005 17:22:59 +0000</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Rigolo</category>
        <category>ajax</category><category>bug</category><category>haha</category>    
    <description>    &lt;p&gt;&lt;a href=&quot;http://fr.wikipedia.org/wiki/AJAX&quot; hreflang=&quot;fr&quot;&gt;Ajax&lt;/a&gt;, c'est mieux quand ça marche, ça évite de passer pour des brêles en profitant du &lt;em&gt;buzz&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://prendreuncafe.com/blog/images/Rigolo/ajax-whois-bug.png&quot; alt=&quot;Un gros bug Ajax&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lien&amp;nbsp;: &lt;a href=&quot;http://www.ajaxwhois.com/&quot; hreflang=&quot;en&quot;&gt;Un whois en Ajax&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Calendes, riez !</title>
    <link>http://prendreuncafe.com/blog/post/2005/11/06/333-calendes-riez</link>
    <guid isPermaLink="false">urn:md5:b7c8da6fe149f823c8d8ef7070a4f036</guid>
    <pubDate>Sun, 06 Nov 2005 00:00:43 +0000</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Divers</category>
        <category>ajax</category><category>calendar</category><category>formats</category><category>libre</category><category>web</category>    
    <description>&lt;p&gt;Lecteur, mon ami, tu vas peut-être pouvoir m'aider&amp;nbsp;: je cherche desespéremment une solution en ligne de gestion d'agenda. Dans mon ancien boulot, je bavais d'envie devant les fonctionnalités d'&lt;a href=&quot;http://www.apple.fr/macosx/features/ical/&quot; hreflang=&quot;fr&quot;&gt;iCal&lt;/a&gt; sur Mac. Je voudrais retrouver la même chose, mais si possible en ligne, avec moult &lt;acronym title=&quot;Asynchronous JavaScript + XML&quot;&gt;AJAX&lt;/acronym&gt; pour l'utilisabilité au quotidien et le plaisir des yeux. Genre la fonctionnalité qui tue&amp;nbsp;: &lt;em&gt;dessiner&lt;/em&gt; ses rendez vous sur le calendrier, à la dizaine de minute près, sans passer par d'immondes boites de dialogue de sélection de dates. Idéalement, il supporte un format ouvert comme &lt;a href=&quot;http://www.ietf.org/rfc/rfc2447.txt&quot; hreflang=&quot;en&quot;&gt;iCalendar&lt;/a&gt; pour éventuellement partager l'agenda et travailler collaborativement.&lt;/p&gt;


&lt;p&gt;Bon, pour vous épargner de vains efforts, voila ce que j'ai déjà testé&amp;nbsp;:&lt;/p&gt;    &lt;h3&gt;&lt;a href=&quot;http://www.planzo.com/&quot; hreflang=&quot;en&quot;&gt;Planzo&lt;/a&gt;&lt;/h3&gt;


&lt;p&gt;&lt;img src=&quot;http://prendreuncafe.com/blog/images/Divers/Agendas/planzo-small.gif&quot; alt=&quot;Logo Planzo&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Peut-être ce qui se rapproche le plus de ce que je recherche. On peut &lt;em&gt;peindre&lt;/em&gt; ses rendez-vous, les déplacer graphiquement, les partager avec d'autres utilisateurs, recevoir des alertes par email, flux &lt;acronym title=&quot;RDF Site Summary&quot;&gt;RSS&lt;/acronym&gt;... Malheureusement, je trouve les interfaces un peu moches (même si elles restent customizables), les semaines commencent le dimanche, le pas minimum d'un rendez-vous est la demi-heure, c'est en anglais uniquement, le clic-droit est désactivé &lt;sup&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2005/11/06/#pnote-333-1&quot; id=&quot;rev-pnote-333-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;...&lt;/p&gt;


&lt;h3&gt;&lt;a href=&quot;http://www.mozilla.org/projects/calendar/&quot; hreflang=&quot;en&quot;&gt;Mozilla Calendar&lt;/a&gt;&lt;/h3&gt;


&lt;p&gt;&lt;img src=&quot;http://prendreuncafe.com/blog/images/Divers/Agendas/Sunbird-96x96-white.png&quot; alt=&quot;Sunbird logo&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;C'est une extension &lt;acronym title=&quot;XML-based User interface Language&quot;&gt;XUL&lt;/acronym&gt; pour &lt;a href=&quot;http://www.mozilla-europe.org/fr/products/mozilla1x/&quot; hreflang=&quot;fr&quot;&gt;Mozilla&lt;/a&gt;/&lt;a href=&quot;http://www.mozilla-europe.org/fr/products/firefox/&quot; hreflang=&quot;fr&quot;&gt;Firefox&lt;/a&gt;/&lt;a href=&quot;http://www.mozilla-europe.org/fr/products/thunderbird/&quot; hreflang=&quot;fr&quot;&gt;Thunderbird&lt;/a&gt; permettant de gérer un calendrier complet et de le synchroniser à distance. Malheureusement, je n'aime pas vraiment l'interface et - plus gênant - de vilains bugs surviennent parfois, effaçant les précieuses données préalablement saisies. Enervant&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Dans mon cas, il faudrait impérativement que la source de données soit centralisée sur un serveur, et je ne sais pas si cette extension est capable d'aller écrire les données sur un fichier distant... Quelqu'un a t-il déjà réussi&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;Notez également qu'il existe une version standalone, &lt;a href=&quot;http://www.mozilla.org/projects/calendar/sunbird.html&quot; hreflang=&quot;en&quot;&gt;Sunbird&lt;/a&gt;.&lt;/p&gt;


&lt;h3&gt;&lt;a href=&quot;http://rememberthemilk.com/&quot; hreflang=&quot;en&quot;&gt;Remember the milk&lt;/a&gt;&lt;/h3&gt;


&lt;p&gt;&lt;img src=&quot;http://prendreuncafe.com/blog/images/Divers/Agendas/logo.png&quot; alt=&quot;Logo RtM&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;L'idée est interessante, puisqu'il est possible de gérer une liste de taches à effectuer, et d'éventuellement la partager. On peut aussi envoyer des tâches par email et un webservice iCalendar est disponible. Hélas, pas de calendrier en ligne et je n'arrive pas à publier mes tâches via l'extension Mozilla Calendar et sa gestion du protocole webcal (en fait, je ne crois pas que cela soit possible). De plus, l'ergonoimie laisse franchement à désirer, on a un peu de mal à s'y retrouver.&lt;/p&gt;


&lt;h3&gt;&lt;a href=&quot;http://backpackit.com/&quot; hreflang=&quot;en&quot;&gt;BackPack&lt;/a&gt;&lt;/h3&gt;


&lt;p&gt;&lt;img src=&quot;http://prendreuncafe.com/blog/images/Divers/Agendas/backpack-small-header-logo.gif&quot; alt=&quot;Logo Backpack&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Backpack ne propose pas de calendrier mais un système de gestion de tâches, à la manière de &lt;a href=&quot;http://rememberthemilk.com&quot; hreflang=&quot;en&quot;&gt;Remember the Milk&lt;/a&gt;. C'est, truffé d'&lt;acronym title=&quot;Asynchronous JavaScript + XML&quot;&gt;AJAX&lt;/acronym&gt;, mais à mon sens ici utilisé à mauvais escient. Un bon point cependant, la possibilité de travailler sur un document &lt;acronym title=&quot;eXtensible HyperText Markup Language&quot;&gt;XHTML&lt;/acronym&gt; collaborativement, un peu à la façon d'un WIKI.&lt;/p&gt;


&lt;h3&gt;&lt;a href=&quot;http://www.formassembly.com/time-tracker/&quot; hreflang=&quot;en&quot;&gt;Time-Tracker&lt;/a&gt;&lt;/h3&gt;


&lt;p&gt;&lt;img src=&quot;http://prendreuncafe.com/blog/images/Divers/Agendas/timetracker.png&quot; alt=&quot;Time Tracker logo&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Toujours pas de calendrier à proprement parler, mais une liste de tâches à affectuer. Encore une fois, c'est bourré d'&lt;acronym title=&quot;Asynchronous JavaScript + XML&quot;&gt;AJAX&lt;/acronym&gt;, et même de Flash, sous la forme d'une petite horloge dont on peut manipuler les aiguilles afin de déterminer l'heure d'un rendez-vous.&lt;/p&gt;


&lt;p&gt;Pas convaincu du tout.&lt;/p&gt;


&lt;h3&gt;&lt;a href=&quot;http://webcalendar.sourceforge.net&quot; hreflang=&quot;en&quot;&gt;WebCalendar&lt;/a&gt;&lt;/h3&gt;


&lt;p&gt;&lt;img src=&quot;http://prendreuncafe.com/blog/images/Divers/Agendas/webcal-logo-small.png&quot; alt=&quot;Logo WebCalendar&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;WebCalendar est une application &lt;acronym title=&quot;PHP: Hypertext Preprocessor&quot;&gt;PHP&lt;/acronym&gt; à installer sur son propre espace d'hébergement. L'installeur n'a jamais voulu fonctionner, j'ai renoncé. Et puis les captures d'écran - et plus encore, la &lt;a href=&quot;http://webcalendar.sourceforge.net/demo/login.php&quot; hreflang=&quot;en&quot;&gt;démo en ligne&lt;/a&gt; - ne m'ont pas vraiment donné envie d'aller plus loin.&lt;/p&gt;


&lt;h3&gt;&lt;a href=&quot;http://phpicalendar.net/phpicalendar/&quot; hreflang=&quot;en&quot;&gt;PHPiCalendar&lt;/a&gt;&lt;/h3&gt;


&lt;p&gt;PHPiCalendar est une interface de consultation de calendrier au format &lt;strong&gt;iCal&lt;/strong&gt;, écrite en &lt;acronym title=&quot;PHP: Hypertext Preprocessor&quot;&gt;PHP&lt;/acronym&gt;. Hélas, il semble impossible de gérer le calendrier, qui reste accessible en lecture seule uniquement.&lt;/p&gt;


&lt;p&gt;Voila où en sont mes investigations. Si vous connaissez quelque chose approchant mon petit cahier des charges personnel, n'hésitez pas à le signaler dans les commentaires. Sinon, je trouve que ça serait un chouette projet à developper. Avis aux amateurs &lt;img src=&quot;/blog/themes/PuC4/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&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/2005/11/06/#rev-pnote-333-1&quot; id=&quot;pnote-333-1&quot;&gt;1&lt;/a&gt;] ... et oui ma pauv'dame. En 2005... &lt;img src=&quot;/blog/themes/PuC4/smilies/icon_rolleyes.gif&quot; alt=&quot;:roll:&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
      </item>
    
  <item>
    <title>Debugging AJAX facile avec Firefox</title>
    <link>http://prendreuncafe.com/blog/post/2005/06/26/171-debugging-ajax-facile-avec-firefox</link>
    <guid isPermaLink="false">urn:md5:9ab832ed0d7f018f9127f1d03361d2d3</guid>
    <pubDate>Sun, 26 Jun 2005 19:42:43 +0000</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Dev</category>
        <category>ajax</category><category>dev</category><category>firefox</category><category>tips</category><category>web</category>    
    <description>&lt;p&gt;Peut-être cette astuce est-elle déjà archie connue de tous, mais moi je suis drôlement content de l'avoir trouvée&amp;nbsp;: je développe beaucoup en &lt;acronym title=&quot;Asynchronous JavaScript + XML&quot;&gt;AJAX&lt;/acronym&gt; ces derniers temps, et lorsque l'on injecte du contenu dynamique via javaScript dans un élément de l'arbre &lt;acronym title=&quot;Document Object Model&quot;&gt;DOM&lt;/acronym&gt;, il est très difficile de voir le code source &lt;acronym title=&quot;HyperText Markup Language&quot;&gt;HTML&lt;/acronym&gt; du contenu injecté.&lt;/p&gt;


&lt;p&gt;Heureusement, &lt;a href=&quot;http://www.mozilla-europe.org/products/firefox&quot; hreflang=&quot;fr&quot;&gt;Firefox&lt;/a&gt; dispose d'un outil fort pratique&amp;nbsp;: &lt;em&gt;la possibilité de voir la source HTML de la sélection&lt;/em&gt; (menu contextuel clic-droit sur une selection dans une page). L'avantage de cette fonctionnalité est qu'elle affiche la source du &lt;strong&gt;contenu chargé post-traitement&lt;/strong&gt;, c'est à dire notamment après nos fameuses injections&amp;nbsp;! D'ailleurs cela marche également avec le contenu généré par javaScript seul &lt;img src=&quot;/blog/themes/PuC4/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;    &lt;p&gt;Ce qui nous donne, en affichant normalement la source de la page&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://www.prendreuncafe.com/blog/images/Geekeries/Dev/ajax-source-avant.png&quot; alt=&quot;L&amp;#039;affichage de la source ne montre pas le contenu injecté&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Si on affiche la selection de la zone chargée dynamiquement&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://www.prendreuncafe.com/blog/images/Geekeries/Dev/ajax-source-apres.png&quot; alt=&quot;L&amp;#039;affichage de la source montre le contenu dynamique injecté&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Une astuce pour afficher rapidement le code source post-traitement d'une page, le focus étant fait sur celle-ci, revient à faire CTRL + A, Clic-droit -&amp;gt; Code source de la sélection.&lt;/p&gt;


&lt;p&gt;PS&amp;nbsp;: Les plus observateurs avides de remontrances signaleront que générer des formulaires en javaScript est tout sauf accessible, et ils auront raison. Mais je tiens de suite à préciser qu'il existe une version du site en cours de dev disposant d'une version en html statique &lt;img src=&quot;/blog/themes/PuC4/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Edition du 27/06/2005&lt;/h3&gt;


&lt;p&gt;Je note avec amusement que le code source affiché par la fonction &lt;em&gt;Code source de la sélection&lt;/em&gt; modifie le code source original. Je m'explique&amp;nbsp;: admettons que l'on écrive cette portion de code &lt;acronym title=&quot;eXtensible HyperText Markup Language&quot;&gt;XHTML&lt;/acronym&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;form&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;form1&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;form1&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;action&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;./&quot;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;label&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;for&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;q&quot;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Rechercher&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;/label&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;br&lt;/span&gt; &lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;input&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;text&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;q&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;q&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;value&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;style&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;background:#eee url(images/bgq.png) no-repeat top left&quot;&lt;/span&gt; &lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;br&lt;/span&gt; &lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;input&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;hidden&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;a&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;a&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;value&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;search&quot;&lt;/span&gt; &lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;input&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;submit&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;s&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;s&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;value&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Rechercher&quot;&lt;/span&gt; &lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;/form&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;L'affichage du code source de la selection du formulaire affichera&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;form&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;form1&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;form1&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;action&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;./&quot;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;label&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;for&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;q&quot;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;Rechercher&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;/label&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;br&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;input&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;q&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;q&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;value&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;style&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;background: rgb(238, 238, 238) url(images/bgq.png) no-repeat scroll left top; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;br&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;input&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;a&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;a&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;value&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;search&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;hidden&quot;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;input&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;name&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;s&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;id&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;s&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;value&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;Rechercher&quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;/form&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;On notera que Firefox réinterprète le code source en le formattant à sa sauce, notamment au niveau des styles mais surtout en transformant les balises fermées correctement (&lt;code&gt;&amp;lt;balise /&amp;gt;&lt;/code&gt;) en balises &lt;em&gt;HTML-like&lt;/em&gt; (&lt;code&gt;&amp;lt;balise&amp;gt;&lt;/code&gt;). Bon, la validation passe quand même au validateur puisque ce dernier ne vérifie pas les sorties javascript.&lt;/p&gt;


&lt;p&gt;Voilà, c'était juste à titre anécdotique en fait &lt;img src=&quot;/blog/themes/PuC4/smilies/icon_biggrin.gif&quot; alt=&quot;:green:&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Moteur de recherche sympa : A9</title>
    <link>http://prendreuncafe.com/blog/post/2005/06/16/149-moteur-de-recherche-sympa-a9</link>
    <guid isPermaLink="false">urn:md5:16b8fb37028df1ec6521349c187d0a89</guid>
    <pubDate>Thu, 16 Jun 2005 12:31:46 +0000</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Divers</category>
        <category>ajax</category><category>extensions</category><category>firefox</category><category>moteurs</category>    
    <description>    &lt;p&gt;En fouinant dans mes &lt;em&gt;referers&lt;/em&gt;, je suis tombé sur un moteur de recherche dont j'ignorais jusqu'ici l'existence&amp;nbsp;: &lt;a href=&quot;http://a9.com/&quot; hreflang=&quot;en&quot;&gt;A9&lt;/a&gt;. Je dois dire que c'est la première fois depuis belle lurette que je me dis&amp;nbsp;: &lt;em&gt;Wow, voilà peut-être une alternative sérieuse et crédible à &lt;a href=&quot;http://www.google.fr&quot; hreflang=&quot;fr&quot;&gt;Google&lt;/a&gt; !&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;A9&lt;/strong&gt; fait la part belle aux dernières technologies comme &lt;acronym title=&quot;Asynchronous JavaScript + XML&quot;&gt;AJAX&lt;/acronym&gt;, c'est un vrai régal à utiliser. Sans compter la présence de &lt;em&gt;colones&lt;/em&gt; de résultats spécifiques (images, vidéos, livres, réfénrences, définitions, pages jaunes, et des centaines d'autres types de filtrages - tous configurables après une inscription auprès d'Amazon.com&lt;sup&gt;[&lt;a href=&quot;http://prendreuncafe.com/blog/post/2005/06/16/#pnote-149-1&quot; id=&quot;rev-pnote-149-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;).&lt;/p&gt;


&lt;p&gt;Seuls petits reproches pour l'instant, l'impossibilité de filtrer les résultats par langue et - comme souvent hélas - la présence de publicités en tête des pages de réponses (vite, un script &lt;a href=&quot;http://www.prendreuncafe.com/blog/2005/05/18/113-nouvelles-extensions-firefox-sympathiques&quot; hreflang=&quot;fr&quot;&gt;Greasemonkey&lt;/a&gt; ^^').&lt;/p&gt;


&lt;h4&gt;Edit&lt;/h4&gt;


&lt;p&gt;Il y a même une extension Firefox dédiée&amp;nbsp;: &lt;a href=&quot;http://toolbar.a9.com/&quot; hreflang=&quot;en&quot;&gt;A9 Toolbar&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Comme &lt;a href=&quot;http://prendreuncafe.com/blog/post/2005/06/16/#c953&quot;&gt;le fait remarquer neolao&lt;/a&gt;, A9 est finalement &lt;a href=&quot;http://a9.com/-/company/whatsCool.jsp&quot; hreflang=&quot;en&quot;&gt;plus un gestionnaire de recherches&lt;/a&gt; qu'à proprement parler un &lt;em&gt;moteur&lt;/em&gt;. Quoi qu'il en soit, l'utilisation d'AJAX y est vraiment interessante à étudier &lt;img src=&quot;/blog/themes/PuC4/smilies/smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&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/2005/06/16/#rev-pnote-149-1&quot; id=&quot;pnote-149-1&quot;&gt;1&lt;/a&gt;] &lt;a href=&quot;http://a9.com&quot; hreflang=&quot;en&quot;&gt;A9&lt;/a&gt; est une entreprise du groupe &lt;a href=&quot;http://www.amazon.com/exec/obidos/redirect?tag=amzna9-1-20&quot; hreflang=&quot;en&quot;&gt;Amazon&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
      </item>
    
  <item>
    <title>Ne vous fiez pas à son nom : SproutLiner</title>
    <link>http://prendreuncafe.com/blog/post/2005/04/14/65-ne-vous-fiez-pas-a-son-nom-sproutliner</link>
    <guid isPermaLink="false">urn:md5:b375b84a1e78055cfb8ac94b96f89f3d</guid>
    <pubDate>Thu, 14 Apr 2005 18:12:11 +0000</pubDate>
    <dc:creator>NiKo</dc:creator>
        <category>Divers</category>
        <category>ajax</category><category>web</category>    
    <description>    &lt;p&gt;&lt;a href=&quot;http://www.sproutliner.com&quot;&gt;&lt;img src=&quot;http://sproutliner.com/i/header_title.gif&quot; alt=&quot;SproutLiner&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Je viens de tomber sur un site proposant un service très interessant, simplissime et potentiellement très utile&amp;nbsp;: &lt;a href=&quot;http://www.sproutliner.com&quot; hreflang=&quot;en&quot;&gt;SproutLiner&lt;/a&gt; (ne riez pas, ça n'est pas sale). Il s'agit d'un gestionnaire de projet en ligne, ultrasimple.&lt;/p&gt;


&lt;p&gt;Pour créer un gestionnaire de suivi de projet en ligne, c'est très simple, il suffit d'entrer le nom du projet et d'appuyer sur &lt;code&gt;Entrée&lt;/code&gt;. Après, on se retrouve dans une interface sobre permettant d'ajouter ligne et colonnes, listes, checkboxes, champs texte... Tout cela est bien évidemment gavé de XMLHttpRequest, la techno javaScript permettant le rapatriement de données externe dans l'objet DOM de la page en cours de consultation (voir à ce sujet mon billet sur &lt;a href=&quot;http://prendreuncafe.com/blog/2004/12/30/7-livesearch---champs-de-recherche-dynamique&quot; hreflang=&quot;fr&quot;&gt;LiveSearch&lt;/a&gt;).&lt;/p&gt;


&lt;p&gt;Mine de rien, voila un micro-outil permettant de partager une roadmap très simple, pour un projet collectif par exemple. Voire même pour organiser une petite soirée entre ami, ça peut donner ça&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://prendreuncafe.com/blog/images/Rigolo/sproutliner-exemple.png&quot; alt=&quot;Capture d&amp;#039;exemple d&amp;#039;utilisation du service Sproutliner&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Ce qui est interessant avec l'utilisation de XMLHttpRequest que fait ce service, c'est la sauvegarde en temps réel des données au moment même de leur saisie. Impossible de perdre des données&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Bon, pour ceux qui sont interessés pour la soirée chez René, il leur suffit de tapper &lt;em&gt;Soirée Foot chez René&lt;/em&gt; dans le champs Registered users &lt;img src=&quot;/blog/themes/PuC4/smilies/icon_biggrin.gif&quot; alt=&quot;:green:&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>