<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.numabilis.com">
<channel>
 <title>Numabilis - Mettre l&#039;informatique au service de ses utilisateurs</title>
 <link>http://www.numabilis.com</link>
 <description>&lt;p&gt;&lt;strong&gt;Numabilis propose &amp;agrave; ses clients des solutions concr&amp;egrave;tes pour concevoir et r&amp;eacute;aliser des outils logiciels et web &amp;agrave; forte valeur ajout&amp;eacute;e.&lt;/strong&gt; Ils r&amp;eacute;pondent aux besoins de vos clients/utilisateurs dans le respect de vos objectifs commerciaux, de communication ou de productivit&amp;eacute;.&lt;/p&gt;
&lt;div class=&quot;more-info&quot;&gt;&amp;raquo; &lt;a title=&quot;Lire la présentation de Numabilis&quot; href=&quot;/numabilis&quot;&gt;En savoir plus...&lt;/a&gt;&lt;/div&gt;</description>
 <language>fr</language>
<item>
 <title>Google Maps API : gestionnaire automatique de marqueurs</title>
 <link>http://www.numabilis.com/blog/2007-11-21-google_maps_api_gestionnaire_automatique_de_marqueurs</link>
 <description>&lt;p&gt;Comme nous l&#039;avons vu dans le billet précédent sur le &lt;a href=&quot;/blog/2007-11-20-google_maps_api_gestionnaire_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;gestionnaire de marqueurs&lt;/a&gt;, l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt; ne gère pas automatiquement le remplacement d&#039;un groupe de marqueurs proches par un marqueur unique à faible facteur de zoom. Heureusement, &lt;a href=&quot;http://en.wikipedia.org/wiki/Jef_Poskanzer&quot; title=&quot;Lire l&#039;article Jef Poskanzer sur Wikipédia&quot; hreflang=&quot;en&quot;&gt;Jef &lt;span class=&quot;np&quot;&gt;Poskanzer&lt;/span&gt;&lt;/a&gt; a écrit une librairie implémentant cette fonctionnalité : &lt;a href=&quot;http://www.acme.com/javascript/#Clusterer&quot; title=&quot;Aller sur la page de la librairie Clusterer&quot; hreflang=&quot;en&quot;&gt;Clusterer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Partons de l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple09.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;9&lt;/a&gt; qui est identique à l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple04.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;4&lt;/a&gt; d&#039;un &lt;a href=&quot;/blog/2007-07-07-google_maps_api_affichage_des_donnees_dun_fichier_json&quot; title=&quot;Lire le billet&quot;&gt;précédent billet&lt;/a&gt; auquel j&#039;ai ajouter une concentration importante de marqueurs à l&#039;est de Paris. Déclarons la librairie dans l&#039;en-tête HTML&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;script src=&quot;http://www.acme.com/javascript/Clusterer2.jsm&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/div&gt;
&lt;/p&gt;La gestion automatique se fait en déclarant une variable &lt;tt&gt;clusterer&lt;/tt&gt;, instanciée dans la fonction &lt;tt&gt;load&lt;/tt&gt;&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;code_highlight&quot;&gt;var clusterer;&lt;/span&gt;

function load() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById(&quot;map&quot;));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(46.85, 1.75), 6);
    &lt;span class=&quot;code_highlight&quot;&gt;clusterer = new Clusterer(map);
    clusterer.SetMaxVisibleMarkers(10);
    clusterer.SetMinMarkersPerCluster(5);&lt;/span&gt;

    GDownloadUrl(&quot;exemple10.json&quot;, setup_json);
  } else {
    alert(&quot;Desole, l&#039;API Google Maps n&#039;est pas compatible avec votre navigateur.&quot;);
  }
}&lt;/div&gt;
&lt;p&gt;Un objet &lt;tt&gt;Clusterer&lt;/tt&gt; possède 4 méthodes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;tt&gt;SetMaxVisibleMarkers(n)&lt;/tt&gt;&lt;/strong&gt;&amp;nbsp;: définie le nombre de marqueurs au delà duquel le &lt;em&gt;clustering&lt;/em&gt; est mis en place (150 par défaut).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;tt&gt;SetMinMarkersPerCluster(n)&lt;/tt&gt;&lt;/strong&gt;&amp;nbsp;: définie le nombre minimum de marqueurs constituant un &lt;em&gt;cluster&lt;/em&gt; (5 par défaut).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;tt&gt;SetMaxLinesPerInfoBox(n)&lt;/tt&gt;&lt;/strong&gt;&amp;nbsp;: définie le nombre de ligne s&#039;affichant dans la fenêtre d&#039;information du marqueur correspondant au &lt;em&gt;cluster&lt;/em&gt; (10 par défaut).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;tt&gt;SetIcon(icon)&lt;/tt&gt;&lt;/strong&gt;&amp;nbsp;: définie l&#039;icône du marqueur correspondant au &lt;em&gt;cluster&lt;/em&gt; si celui par défaut ne convient pas.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il suffit ensuite de remplacer chaque appel à &lt;tt&gt;map.addOverlay(marker)&lt;/tt&gt; par un appel à &lt;tt&gt;clusterer.AddMarker(marker, title)&lt;/tt&gt; (où &lt;tt&gt;title&lt;/tt&gt; est la ligne du marqueur réel qui s&#039;affichera dans la fenêtre d&#039;information du marqueur correspondant au &lt;em&gt;cluster&lt;/em&gt;) et chaque appel à &lt;tt&gt;map.removeOverlay(marker)&lt;/tt&gt; par un appel à &lt;tt&gt;clusterer.RemoveMarker(marker)&lt;/tt&gt;. Exemple dans la fonction &lt;tt&gt;setup_json&lt;/tt&gt;&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;setup_json = function(json, status) {
  var data = eval(&#039;(&#039; + json + &#039;)&#039;);
  
  for (var i=0; i&amp;lt;data.markers.length; i++) {
    var point = new GLatLng(data.markers[i].lat, data.markers[i].lng);
    var marker = createMarker(point, data.markers[i].html);
    &lt;span class=&quot;code_highlight&quot;&gt; clusterer.AddMarker(marker, data.markers[i].html);&lt;/span&gt;
  }

}&lt;/div&gt;
&lt;p&gt;Le résultat est visible sur l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple10.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;10&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cette solution permet de rendre de bons services, mais n&#039;est toute fois pas idéale. En effet, le &lt;em&gt;clustering&lt;/em&gt; est lié au nombre de marqueurs plutôt qu&#039;à leur densité. Ainsi, deux marqueurs supperposés ne seront vus que comme un seul marqueur à fort grossissement (en l&#039;absence de &lt;em&gt;clustering&lt;/em&gt;). D&#039;autre part, l&#039;algorithme n&#039;est pas très précis&amp;nbsp;: sur l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple10.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;10&lt;/a&gt;, le marqueur placé sur Le Havre a été intégré au &lt;em&gt;cluster&lt;/em&gt; bien qu&#039;il en soit assez éloigné&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Les autres billets de cette série sur l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-10-api_google_maps_premieres_cartes&quot; title=&quot;Lire le billet&quot;&gt;API Google Maps : premières cartes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-21-google_maps_api_marqueurs_et_fenetres_dinformations&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : marqueurs et fenêtres d&#039;informations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-07-google_maps_api_affichage_des_donnees_dun_fichier_json&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : affichage des données d&#039;un fichier JSON&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_geolocalisation_geocoding&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : géolocalisation (geocoding)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_un_marqueur_deplacable&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : un marqueur déplaçable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_coordonnees_dun_marqueur&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : coordonnées d&#039;un marqueur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-11-20-google_maps_api_gestionnaire_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : gestionnaire de marqueurs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google Maps API : gestionnaire automatique de marqueurs&lt;/li&gt;
&lt;/ul&gt;
</description>
 <category domain="http://www.numabilis.com/blog/Ingenierie-web">Ingénierie web</category>
 <category domain="http://www.numabilis.com/blog/JavaScript">JavaScript</category>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Wed, 21 Nov 2007 20:42:00 +0100</pubDate>
</item>
<item>
 <title>Google Maps API : gestionnaire de marqueurs</title>
 <link>http://www.numabilis.com/blog/2007-11-20-google_maps_api_gestionnaire_de_marqueurs</link>
 <description>&lt;p&gt;Reprenons notre exploration de l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt; pour résoudre le problème suivant&amp;nbsp;: &lt;strong&gt;comment afficher un unique marqueur regroupant plusieurs marqueurs lorsque le niveau de zoom est faible&amp;nbsp;?&lt;/strong&gt; En effet, lorsque le nombre de marqueurs est très important sur une petite région, la carte est difficile à lire et lente à s&#039;afficher. La réponse semble être le gestionnaire de marqueurs &lt;a href=&quot;http://www.google.com/apis/maps/documentation/reference.html#GMarkerManager&quot; title=&quot;Lire la documentation de l&#039;API&quot; hreflang=&quot;en&quot;&gt;GMarkerManager&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Partons de l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple04.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;4&lt;/a&gt; d&#039;un &lt;a href=&quot;/blog/2007-07-07-google_maps_api_affichage_des_donnees_dun_fichier_json&quot; title=&quot;Lire le billet&quot;&gt;précédent billet&lt;/a&gt; dans lequel nous déléguons l&#039;affichage des marqueurs à un gestionnaire de marqueurs. Pour cela, on déclare une variable &lt;tt&gt;mgr&lt;/tt&gt;, que l&#039;on instancie dans la fonction &lt;tt&gt;load&lt;/tt&gt;&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&lt;span class=&quot;code_highlight&quot;&gt;var mgr;&lt;/span&gt;

function load() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById(&quot;map&quot;));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(46.85, 1.75), 6);
    &lt;span class=&quot;code_highlight&quot;&gt;mgr = new MarkerManager(map);&lt;/span&gt;

    GDownloadUrl(&quot;exemple04.json&quot;, setup_json);
  } else {
    alert(&quot;Desole, l&#039;API Google Maps n&#039;est pas compatible avec votre navigateur.&quot;);
  }
}&lt;/div&gt;
&lt;p&gt;L&#039;ajout des marqueurs se fait dans la fonctions &lt;tt&gt;setup_json&lt;/tt&gt; en créant d&#039;abord un tableau de marqueurs, &lt;tt&gt;markers&lt;/tt&gt;, ajouter en une fois à la carte via la fonction &lt;tt&gt;addMarkers&lt;/tt&gt; prenant comme second paramètre le niveau de zoom minimum en deçà duquel les marqueurs ne sont pas affichés, et un troisième argument optionnel, le niveau de zoom maximum au delà duquel les marqueurs ne sont pas affichés&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;setup_json = function(json, status) {
  var data = eval(&#039;(&#039; + json + &#039;)&#039;);
  &lt;span class=&quot;code_highlight&quot;&gt;var markers = new Array();&lt;/span&gt;
  
  for (var i=0; i&amp;lt;data.markers.length; i++) {
    var point = new GLatLng(data.markers[i].lat, data.markers[i].lng);
    var marker = createMarker(point, data.markers[i].html);
    &lt;span class=&quot;code_highlight&quot;&gt;markers.push(marker);&lt;/span&gt;
  }

  &lt;span class=&quot;code_highlight&quot;&gt;mgr.addMarkers(markers, 5);
  mgr.refresh();&lt;/span&gt;
}&lt;/div&gt;
&lt;p&gt;Le résultat est visible sur l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple08.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;8&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On peut appeler plusieurs fois la méthode &lt;tt&gt;addMarkers&lt;/tt&gt; avec différents tableaux de marqueurs pour différents niveau de zoom et gérer ainsi, &lt;em&gt;à la mano&lt;/em&gt;, les regroupements de marqueurs. Cela implique donc de calculer, sur le serveur, l&#039;emplacement des marqueurs qui prendront la place d&#039;un ensemble de marqueurs et du niveau de zoom auquel on affiche chacun... Pas simple&amp;nbsp;! Heureusement il existe une solution toute faite via une librairie JavaScript... Suite au prochain épisode&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Les autres billets de cette série sur l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-10-api_google_maps_premieres_cartes&quot; title=&quot;Lire le billet&quot;&gt;API Google Maps : premières cartes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-21-google_maps_api_marqueurs_et_fenetres_dinformations&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : marqueurs et fenêtres d&#039;informations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-07-google_maps_api_affichage_des_donnees_dun_fichier_json&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : affichage des données d&#039;un fichier JSON&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_geolocalisation_geocoding&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : géolocalisation (geocoding)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_un_marqueur_deplacable&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : un marqueur déplaçable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_coordonnees_dun_marqueur&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : coordonnées d&#039;un marqueur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google Maps API : gestionnaire de marqueurs&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-11-21-google_maps_api_gestionnaire_automatique_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : gestionnaire automatique de marqueurs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
 <category domain="http://www.numabilis.com/blog/Ingenierie-web">Ingénierie web</category>
 <category domain="http://www.numabilis.com/blog/JavaScript">JavaScript</category>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Tue, 20 Nov 2007 19:54:34 +0100</pubDate>
</item>
<item>
 <title>Le syndrome facebook</title>
 <link>http://www.numabilis.com/blog/2007-10-25-le_syndrome_facebook</link>
 <description>&lt;p&gt;Billet supprimé à la demande de mon ancien client car il divulguait des &amp;laquo;&amp;nbsp;&lt;em&gt;sensitive information&lt;/em&gt;&amp;nbsp;&amp;raquo;.&lt;/p&gt;</description>
 <category domain="http://www.numabilis.com/blog/Conseil">Conseil</category>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Thu, 25 Oct 2007 21:52:06 +0200</pubDate>
</item>
<item>
 <title>Principes de base pour des applications facebook réussies</title>
 <link>http://www.numabilis.com/blog/2007-09-18-principes_de_base_pour_des_applications_facebook_reussies</link>
 <description>&lt;p&gt;Pourquoi certaine applications &lt;a href=&quot;http://www.facebook.com/&quot; title=&quot;Aller sur facebook&quot; hreflang=&quot;en&quot;&gt;facebook&lt;/a&gt; sont de véritables succès tandis que d&#039;autres sont des &lt;em &gt;flops&lt;/em&gt; certains ? Selon Jesse farmer, de &lt;a href=&quot;http://20bits.com/&quot; title=&quot;Aller sur le blog 20bits&quot; hreflang=&quot;en&quot;&gt;20bits&lt;/a&gt;, il y aurait &lt;a href=&quot;http://20bits.com/2007/08/01/rules-of-thumb-for-successful-facebook-applications/&quot; title=&quot;Lire le billet Rules of Thumb for Successful Facebook Applications&quot; hreflang=&quot;en&quot;&gt;six principes de base&lt;/a&gt;&amp;nbsp;:&lt;br /&gt;
&lt;ol &gt;
&lt;li &gt;&lt;strong &gt;Simplicité.&lt;/strong&gt; Comme toujours, plus votre application est simple à utiliser, plus ses chances de succès sont élevées.&lt;/li&gt;
&lt;li &gt;&lt;strong &gt;Socialisation.&lt;/strong&gt; Facebook étant avant tout un réseau social, ses utilisateurs l&#039;utilisent pour cela. Les fonctionnalités de votre application doivent être sociales avant tout, c&#039;est à dire, présenter certaines facettes (goûts, activités, caractéristiques, etc) d&#039;un utilisateur à d&#039;autres utilisateurs.&lt;/li&gt;
&lt;li &gt;&lt;strong &gt;Viralité.&lt;/strong&gt; Plus votre application est intrinsèquement virale, plus elle aura de succès. Certaines ne sont même que des idées virales&amp;nbsp;: &lt;a href=&quot;http://apps.facebook.com/apps/application.php?id=2458301688&quot; title=&quot;Aller sur la page de l&amp;#039;application Vampires&quot; hreflang=&quot;en&quot;&gt;Vampires&lt;/a&gt;, &lt;a href=&quot;http://www.facebook.com/apps/application.php?api_key=22d9e303e7b335001622f9b41b33ba63&quot; title=&quot;Aller sur la page de l&amp;#039;application WereWolves&quot; hreflang=&quot;en&quot;&gt;WereWolves&lt;/a&gt; et... &lt;a href=&quot;http://www.facebook.com/apps/application.php?id=2526220728&quot; title=&quot;Aller sur la page de l&amp;#039;application Vampires vs. Werewolves&quot; hreflang=&quot;en&quot;&gt;Vampires vs. Werewolves&lt;/a&gt;&lt;/li&gt;
&lt;li &gt;&lt;strong &gt;Cohérence.&lt;/strong&gt; Votre application doit être cohérente avec la philosophie et les fonctionnalités du réseau social. Beaucoup d&#039;applications réussies ne font qu&#039;étendre les fonctionnalité de base de facebook.&lt;/li&gt;
&lt;li &gt;&lt;strong &gt;Originalité.&lt;/strong&gt; Certains types d&#039;applications sont déjà sur-représentés, comme les applications de citations (52 à ce jour depuis &lt;a href=&quot;http://www.facebook.com/apps/application.php?id=2533906145&quot; title=&quot;Aller sur la page de l&amp;#039;application&quot; hreflang=&quot;en&quot;&gt;Dr. Martin Luther King Jr. quotes&lt;/a&gt; jusqu&#039;à &lt;a href=&quot;http://www.facebook.com/apps/application.php?id=2462659283&quot; title=&quot;Aller sur la page de l&amp;#039;application&quot; hreflang=&quot;en&quot;&gt;The Simpsons Quotes&lt;/a&gt;). Ne faites pas une n-ième application de ce genre sous peine de faire un &lt;em &gt;flop&lt;/em&gt;.&lt;/li&gt;
&lt;li &gt;&lt;strong &gt;Qualité.&lt;/strong&gt; Votre application doit être de grande qualité, en particulier, sans &lt;em &gt;bug&lt;/em&gt;, rapide et robuste. Les utilisateurs n&#039;hésitent pas à désinstaller une application boguée, lente ou inaccessible, quelqu&#039;en soi l&#039;origine.&lt;/li&gt;
 &lt;/ol&gt;
 Rien de nouveau ici&amp;nbsp;: simplicité, cohérence, originalité et qualité sont des principes universels. S&#039;y ajoutent socialisation et viralité qui sont deux principes extrêmement efficaces sur un réseau social, mais beaucoup plus complexes à mettre en &amp;oelig;uvre. L&#039;application doit en effet porter en elle-même ces deux principes, sans pour autant n&#039;être que purement artificielle (comme &lt;a href=&quot;http://apps.facebook.com/apps/application.php?id=2458301688&quot; title=&quot;Aller sur la page de l&amp;#039;application Vampires&quot; hreflang=&quot;en&quot;&gt;Vampires&lt;/a&gt; par exemple) au risque d&#039;avoir un succès... très éphémère.&lt;br /&gt;
Enfin, &lt;strong &gt;l&#039;application doit être rentable, c&#039;est à dire générer des revenus&lt;/strong&gt;, car &lt;a href=&quot;http://www.insidefacebook.com/2007/06/21/i-have-250000-users-now-what/&quot; title=&quot;Lire le billet &amp;#039;I have 250,000 users, now what?&amp;#039; sur insidefacebook.com&quot; hreflang=&quot;en&quot;&gt;la popularité à un coût&lt;/a&gt;.&lt;/p&gt;
</description>
 <category domain="http://www.numabilis.com/blog/Conseil">Conseil</category>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Tue, 18 Sep 2007 16:09:56 +0200</pubDate>
</item>
<item>
 <title>Les digg-like : une fausse bonne idée</title>
 <link>http://www.numabilis.com/blog/2007-09-03-les_digg_like_une_fausse_bonne_idee</link>
 <description>&lt;p&gt;La recherche d&#039;information intéressante est un problème récurrent sur le web auquel les &lt;em&gt;digg-like&lt;/em&gt; ont cru apporté une solution. J&#039;expose, dans ce billet, ma théorie pour expliquer cet échec et aborde les solutions qui, à mon avis, vont émerger.&lt;/p&gt;
&lt;p&gt;Dans &lt;a href=&quot;http://www.numabilis.com/blog/2007-03-28-blogasty_et_les_limites_du_web_2_0&quot; title=&quot;Lire mon billet&quot;&gt;Blogasty et les limites du web 2.0&lt;/a&gt;, j&#039;avais abordé le problème de &lt;em&gt;l&#039;intelligence collective et la qualité&lt;/em&gt; car &lt;a href=&quot;http://www.blogasty.com/&quot; title=&quot;Aller sur le site blogasty&quot; hreflang=&quot;fr&quot;&gt;blogasty&lt;/a&gt; promettait de &amp;laquo;&amp;nbsp;&lt;em&gt;&lt;a href=&quot;http://blogasty.com/about&quot; title=&quot;Lire la description du service sur blogasty&quot; hreflang=&quot;fr&quot;&gt;promouvoir les blogs selon la qualité de leurs billets&lt;/a&gt;&lt;/em&gt;&amp;nbsp;&amp;raquo;. Mais il est évident que d&#039;une part la qualité est subjective et d&#039;autre part l&#039;information qui m&#039;intéresse n&#039;est pas toujours de qualité. &lt;em&gt;J&#039;aime assez le site &lt;a href=&quot;http://autaff.jegalere.fr/&quot; title=&quot;Aller sur le site Je galère au taff&quot; hreflang=&quot;fr&quot;&gt;Je galère au taff&lt;/a&gt; bien que je ne le considère pas comme un site de qualité.&lt;/em&gt; Les &lt;em&gt;digg-like&lt;/em&gt; s&#039;appuient sur la courbe popularisée par Chris &lt;span class=&quot;np&quot;&gt;Anderson&lt;/span&gt; dans son article &lt;a href=&quot;http://www.internetactu.net/?p=5911&quot; title=&quot;Lire la traduction de son article&quot; hreflang=&quot;fr&quot;&gt;La Longue Traîne&lt;/a&gt; traduisant le fait qu&#039;une minorité d&#039;articles est plébiscité par un majorité de personne.&lt;/p&gt;
&lt;center&gt;&lt;img src=&quot;/files/pictures/300px-Long_tail.svg.png&quot; alt=&quot;Dessin de la courbe longue traine&quot; /&gt;&lt;br /&gt;La &lt;a href=&quot;http://fr.wikipedia.org/wiki/Longue_tra%C3%AEne&quot; title=&quot;Lire l&#039;article sur Wikipédia&quot; hreflang=&quot;fr&quot;&gt;La longue traîne est représentée en jaune&lt;/a&gt; (image &lt;a href=&quot;http://fr.wikipedia.org/wiki/Image:Long_tail.svg&quot; title=&quot;Voir l&#039;image sur Wikipédia&quot; hreflang=&quot;fr&quot;&gt;Wikipédia&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/center&gt;
&lt;p&gt;Mais cette image est trompeuse pour deux raisons&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Un contenu populaire n&#039;est plébiscité que par un petit nombre d&#039;utilisateur.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ma courbe d&#039;intérêt ne se superpose pas à celle-ci.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ne disposant pas de données chiffrées, j&#039;expose ma théorie avec des données purement fictives, qu&#039;il serait très intéressant de confronté à la réalité pour confirmer ou infirmer ce modèle.Prenons l&#039;exemple d&#039;un site de &lt;em&gt;social news&lt;/em&gt; (mais ce pourrait être un [site de e-]commerce) comportant 1&amp;nbsp;000&amp;nbsp;000 articles et ayant 10&amp;nbsp;000 utilisateurs actifs. La courbe  ressemblerait à quelque chose comme ça&amp;nbsp;:&lt;/p&gt;
&lt;center&gt;&lt;img src=&quot;/files/pictures/long_tail_1.png&quot; alt=Courbe représentant la distribution des articles en fonction de leur popularité décroissante&quot; /&gt;&lt;br /&gt;Distribution des articles en fonction de leur popularité décroissante&lt;br /&gt;&lt;br /&gt;&lt;/center&gt;
&lt;P&gt;La popularité d&#039;un article est le rapport, exprimé en pourcentage, entre le nombre de personne ayant voté pour un article et le nombre d&#039;utilisateur du site. Ici l&#039;article le plus populaire, le &lt;em&gt;blockbuster&lt;/em&gt; a un score de Pmax&amp;nbsp;=&amp;nbsp;1&amp;nbsp;%&amp;nbsp;: il a obtenu 100 votes (je pense que dans la réalité, ce score est inférieur). &lt;strong&gt;Un article populaire n&#039;intéresse qu&#039;un faible pourcentage de lecteur.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Plaçons-nous, maintenant du point de vue d&#039;un lecteur ayant lu 100 articles qu&#039;il a classé du moins intéressant (score&amp;nbsp;=&amp;nbsp;1) au plus intéressant (score&amp;nbsp;=&amp;nbsp;100). Si l&#039;on ne conserve, sur la courbe précédente, que ces 100 articles et que l&#039;on superpose la courbe des scores de notre lecteur, je pense que nopus obtiendrons une courbe ressemblant à la suivante&amp;nbsp;:&lt;/p&gt;
&lt;center&gt;&lt;img src=&quot;/files/pictures/long_tail_2.png&quot; alt=&quot;Courbes représentant la distribution des articles lus en fonction de leur popularité décroissante et de leur score&quot; /&gt;&lt;br /&gt;Distribution des articles en fonction de leur popularité décroissante superposée au score obtenu&lt;br /&gt;&lt;br /&gt;&lt;/center&gt;
&lt;p&gt;&lt;strong&gt;Les articles qui m&#039;intéressent le plus sont les moins populaires&amp;nbsp;!&lt;/strong&gt; Dans ce cas comment un &lt;em&gt;digg-like&lt;/em&gt; peut-il m&#039;aider à trouver des articles intéressants&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Il est assez amusant de constater que les algorithmes de recommandation soient très populaires dans le monde du e-commerce, ainsi que pour la musique et les DVD, mais pas du tout dans le monde l&#039;information textuelle (journalisme, blogosphère, etc.) &lt;a href=&quot;http://www.geekomatik.com/&quot; title=&quot;Aller sur le site geekomatik&quot; hreflang=&quot;fr&quot;&gt;geekomatik&lt;/a&gt; est le seul exemple dans ce domaine, à ma connaissance. Malheureusement, le système de recommandation est, à mon avis, perdu au milieu de fonctionnalités peu ergonomiques et sans valeur ajouté, ce qui limite l&#039;attrait du site, limite la taille de la communauté et limite donc la pertinence des recommandations. (&lt;em&gt;Alexis, je suis prêts à reprendre nos échanges si tu le souhaites.&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;Que pensez-vous de cette théorie&amp;nbsp;?&lt;/p&gt;
</description>
 <category domain="http://www.numabilis.com/blog/Conseil">Conseil</category>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Mon, 03 Sep 2007 21:23:29 +0200</pubDate>
</item>
<item>
 <title>Ça bastonne dur sur les blogs !</title>
 <link>http://www.numabilis.com/blog/2007-09-01-ca_bastonne_dur_sur_les_blogs</link>
 <description>&lt;p&gt;J&#039;avais l&#039;intention de faire une suite à mon billet &lt;a href=&quot;http://www.numabilis.com/blog/2007-07-28-5_blogs_dont_je_peux_me_passer_lanti_chaine&quot; title=&quot;Lire le billet&quot;&gt;5 blogs dont je peux me passer&amp;nbsp;: l&#039;anti chaîne&lt;/a&gt;, en particulier pour m&#039;excuser auprès de &lt;a href=&quot;http://www.simpleentrepreneur.com/&quot; title=&quot;aller sur le blog de Stéphane Thomas&quot; hreflang=&quot;fr&quot;&gt;Stéphane &lt;span class=&quot;np&quot;&gt;Thomas&lt;/span&gt;&lt;/a&gt; et &lt;em&gt;rebalancer&lt;/em&gt; une série de cinq blogs supprimés de mon lecteur de flux. Je passe donc, hier, sur &lt;a href=&quot;http://www.tapahont.info/&quot; title=&quot;Aller sur le site&quot; hreflang=&quot;fr&quot;&gt;Tapahont&lt;/a&gt; avant de me désabonner. Je lis, comme ça son billet &lt;a href=&quot;http://www.tapahont.info/2007/08/31/blogday-2007/&quot; title=&quot;Lire le billet&quot; hreflang=&quot;fr&quot;&gt;BlogDay 2007&lt;/a&gt; qui me fait découvrir le &lt;a href=&quot;http://www.gueuledeloup.com/2007/08/30/le-blogday-2007-c%e2%80%99est-demain-le-bloodday-aussi/&quot; title=&quot;Lire le billet explicatif&quot; hreflang=&quot;fr&quot;&gt;BloodDay&lt;/a&gt; tout à fait dans l&#039;esprit de l&#039;anti-chaîne, même si ceux qui participent au BloodDay participe également au BlogDay, dans la &lt;a href=&quot;http://www.gueuledeloup.com/2007/08/31/blogday-2007-le-choix-de-gdl/&quot; title=&quot;Lire le billet&quot; hreflang=&quot;fr&quot;&gt;liste&lt;/a&gt; duquel on trouve... &lt;a href=&quot;http://www.tapahont.info/&quot; title=&quot;Aller sur le site&quot; hreflang=&quot;fr&quot;&gt;Tapahont&lt;/a&gt;&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Et puis coup sur coup&amp;nbsp;: &lt;a href=&quot;http://autaff.jegalere.fr/site/my-day-blog-mes-5-blogs-les-plus-inutiles-que-je-ne-lirai-jamais/&quot; title=&quot;Lire le billet&quot; hreflang=&quot;fr&quot;&gt;My Day blog&amp;nbsp;: Mes 5 blogs les plus inutiles que je ne lirai jamais&lt;/a&gt;, &lt;a href=&quot;http://s.billard.free.fr/referencement/?2007/08/31/417-ca-y-est-on-a-touche-le-fond&quot; title=&quot;Lire le billet&quot; hreflang=&quot;fr&quot;&gt; on a touché le fond&amp;nbsp;!&lt;/a&gt; et &lt;a href=&quot;http://www.biologeek.com/journal/index.php/blog-dayprime&quot; title=&quot;Lire le billet&quot; hreflang=&quot;fr&quot;&gt;Blog dayprime&lt;/a&gt;&amp;nbsp;: un véritable feu d&#039;artifice&amp;nbsp;!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mon dilemme&amp;nbsp;: dois-je supprimer &lt;a href=&quot;http://www.tapahont.info/&quot; title=&quot;Aller sur le site&quot; hreflang=&quot;fr&quot;&gt;Tapahont&lt;/a&gt;&amp;nbsp;?&lt;/p&gt;
</description>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Sat, 01 Sep 2007 00:20:23 +0200</pubDate>
</item>
<item>
 <title>Développer en local une application mashup (Google Maps API, facebook, etc)</title>
 <link>http://www.numabilis.com/blog/2007-08-30-developper_en_local_une_application_mashup_google_maps_api_facebook_etc</link>
 <description>&lt;p&gt;Le développement d&#039;une application s&#039;appuyant sur un service externe (&lt;em&gt;mashup&lt;/em&gt;) tel que &lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;Google Maps&lt;/a&gt; ou &lt;a href=&quot;http://developers.facebook.com/&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;facebook&lt;/a&gt; nécessite de le faire sur un serveur accessible depuis Internet. Cela est imposé par le fournisseur du service qui soit délivre une clé liée au nom du serveur (&lt;a href=&quot;http://maps.google.com/&quot; title=&quot;Aller sur le site Google Maps&quot; hreflang=&quot;fr&quot;&gt;Google Maps&lt;/a&gt; par exemple), soit fait des requêtes directement sur le serveur (&lt;a href=&quot;http://www.facebook.com/&quot; title=&quot;Aller sur le site facebook&quot; hreflang=&quot;en&quot;&gt;facebook&lt;/a&gt;). Voici une adaptation d&#039;un &lt;a href=&quot;http://www.insidefacebook.com/2007/07/16/how-to-local-facebook-app-development/&quot; title=&quot;Lire le tutoriel &#039;How To Local Facebook App Development&#039;&quot; hreflang=&quot;en&quot;&gt;tutoriel&lt;/a&gt; permettant de développer une telle application sur votre propre poste de développement local (si vous maîtrisez votre réseau).&lt;/p&gt;

&lt;p&gt;Il n&#039;y a pas de solution miracle. La seule possibilité est de mettre son poste de développement (le PC) sur Internet. Cela implique de pouvoir faire de la translation de port sur votre &lt;a href=&quot;http://fr.wikipedia.org/wiki/Routeur&quot; title=&quot;Lire l&#039;article &#039;Routeur&#039; sur Wikipédia&quot; hreflang=&quot;fr&quot;&gt;routeur&lt;/a&gt; &lt;a href=&quot;http://fr.wikipedia.org/wiki/Network_address_translation&quot; title=&quot;Lire l&#039;article &#039;Network address translation&#039; sur Wikipédia&quot; hreflang=&quot;fr&quot;&gt;NAT&lt;/a&gt;. Cette opération varie d&#039;un routeur à un autre. Mais vous aurez généralement besoin de connaître l&#039;&lt;a href=&quot;http://fr.wikipedia.org/wiki/Adresse_IP&quot; title=&quot;Lire l&#039;article &#039;Adresse IP&#039; sur Wikipédia&quot; hreflang=&quot;fr&quot;&gt;adresse IP&lt;/a&gt; du PC sur le réseau interne ainsi que son &lt;a href=&quot;http://fr.wikipedia.org/wiki/Adresse_MAC&quot; title=&quot;Lire l&#039;article &#039;Adresse MAC&#039; sur Wikipédia&quot; hreflang=&quot;fr&quot;&gt;adresse MAC&lt;/a&gt;. Pour cela il suffit de taper la commande &lt;span class=&quot;code&quot;&gt;ifconfig eth0&lt;/span&gt; qui vous sort un truc comme ça (les adresses ci-dessous sont fictives)&amp;nbsp;:&lt;/p&gt;

&lt;div class=&quot;code&quot;&gt;eth0    Lien encap:Ethernet  HWaddr &lt;span class=&quot;code_highlight&quot;&gt;00:12:62:4A:BA:28&lt;/span&gt;
        inet adr:&lt;span class=&quot;code_highlight&quot;&gt;192.168.0.13&lt;/span&gt;  Bcast:192.168.0.255  Masque:255.255.255.0
        adr inet6: fa70::153:73ef:fb9a:da16/64 Scope:Lien
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        Packets reçus:55899 erreurs:0 :0 overruns:0 frame:0
        TX packets:49661 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 lg file transmission:1000 
        Octets reçus:62053810 (59.1 MiB) Octets transmis:8498200 (8.1 MiB)
        Interruption:16 
&lt;/div&gt;
&lt;p&gt;L&#039;adresse IP du PC sur le réseau interne est donc &lt;span class=&quot;code&quot;&gt;192.168.0.13&lt;/span&gt; et son adresse MAC &lt;span class=&quot;code&quot;&gt;00:12:62:4A:BA:28&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Il suffit de configurer son routeur pour lui indiquer que l&#039;adresse MAC &lt;span class=&quot;code&quot;&gt;00:12:62:4A:BA:28&lt;/span&gt; doit toujours être associée à l&#039;adresse IP &lt;span class=&quot;code&quot;&gt;192.168.0.13&lt;/span&gt; et que les requêtes reçu par le routeur sur le port 80 doivent être renvoyées vers le port 80 de la machine d&#039;adresse IP &lt;span class=&quot;code&quot;&gt;192.168.0.13&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Vous pouvez chercher la procédure adaptée à votre routeur sur le site &lt;a href=&quot;http://www.portforward.com/english/routers/port_forwarding/routerindex.htm&quot; title=&quot;Aller sur la page indexant les routeurs&quot; hreflang=&quot;en&quot;&gt;Port Forward&lt;/a&gt;. Dans le cas d&#039;une freebox, il suffit d&#039;aller sur la page de configuration accessible après &lt;a href=&quot;http://subscribe.free.fr/login/&quot;title=&quot;S&#039;authentifier sur le service Free&quot; hreflang=&quot;fr&quot;&gt;login&lt;/a&gt;, et de remplir le formulaire&amp;nbsp;:&lt;/p&gt;
&lt;center&gt;&lt;br&gt;&lt;a href=&quot;/files/pictures/configuration-routeur-freebox-nat-big.png&quot; title=&quot;Agrandir l&#039;image&quot;&gt;&lt;img title=&quot;Exemple de configuration sur la Freebox&quot; alt=&quot;Exemple de configuration sur la Freebox&quot; src=&quot;/files/pictures/configuration-routeur-freebox-nat-small.png&quot; height=&quot;557&quot; width=&quot;350&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;/files/pictures/configuration-routeur-freebox-nat-big.png&quot; title=&quot;Agrandir l&#039;image&quot;&gt;Exemple de configuration sur la Freebox (agrandir)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/center&gt;
&lt;p&gt;Vérifiez que cela fonctionne en pointant votre navigateur vers l&#039;adresse IP publique de votre routeur, récupérable via son interface de configuration ou via le service web &lt;a href=&quot;http://whatismyip.org/&quot; title=&quot;Aller sur le site &#039;What is my IP&#039;&quot; hreflang=&quot;en&quot;&gt;What is my IP&lt;/a&gt; (&lt;span class=&quot;code&quot;&gt;88.171.154.137&lt;/span&gt; par exemple). Vous devez voir la racine de votre serveur web... Vous pouvez même donner un nom DNS à cette adresse IP. Il ne vous reste plus qu&#039;à générer la clé du service pour cette adresse IP&amp;nbsp;!
</description>
 <category domain="http://www.numabilis.com/blog/Ingenierie-web">Ingénierie web</category>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Thu, 30 Aug 2007 20:53:06 +0200</pubDate>
</item>
<item>
 <title>5 blogs dont je peux me passer : l&#039;anti chaîne</title>
 <link>http://www.numabilis.com/blog/2007-07-28-5_blogs_dont_je_peux_me_passer_lanti_chaine</link>
 <description>&lt;p&gt;Beaucoup de blogueurs &lt;em&gt;influents&lt;/em&gt; m&#039;insupportent de plus en plus. Entre les sujets repris de blog en blog sans apporter la moindre information, les interviews croisées entre blogueurs &lt;em&gt;influents&lt;/em&gt;, les billets type &amp;laquo;&amp;nbsp;10 astuces pour faire parler de son blog&amp;nbsp;&amp;raquo;, les chaînes auxquelles ne peuvent participer que les blogueurs du sérail et autres classements des X premiers blogs de la blogosphère francophone, la &lt;em&gt;blogatie&lt;/em&gt; (tiens ! tous les noms de domaine sont disponibles) ressemble de plus en plus à cette aristocratie de fin de règne&amp;nbsp;: dégénérée par endogamie. D&#039;ailleurs la recette  pour devenir un &lt;a href=&quot;http://ploum.frimouvy.org/?162-toi-aussi-deviens-un-veritable-blogueur-web-20&quot; title=&quot;Lire le billet de Ploum&quot; hreflang=&quot;fr&quot;&gt;véritable blogueur web 2.0&lt;/a&gt; est bien connue et même les plus grands reconnaissent que le &lt;a href=&quot;http://www.presse-citron.net/?2007/07/16/2259-zero-papier-zero-reflexion-ou-le-syndrome-de-la-tete-dans-le-guidon&quot; title=&quot;Lire le billet sur Presse-citron&quot; hreflang=&quot;fr&quot;&gt;blogueur devint con&lt;/a&gt; et qu&#039;&lt;a href=&quot;http://www.fran6art.com/2007/07/18/blogueurs-blues/&quot; title=&quot;Lire le billet sur Fran6art&quot; hreflang=&quot;fr&quot;&gt;ils ont le blues&lt;/a&gt;, qu&#039;&lt;a href=&quot;http://www.fredcavazza.net/2007/07/19/je-ne-suis-plus-un-bloggeur-influent/&quot; title=&quot;Lire le billet de Fred Cavazza&quot; hreflang=&quot;fr&quot;&gt;ils ne sont plus influents&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Aussi, après les chaînes &lt;em&gt;buzziphériquambolesques&lt;/em&gt; à la &lt;em&gt;&lt;a href=&quot;http://www.chauffeurdebuzz.com/si+je+ne+pouvais+lire+que+5+blogs-918&quot; title=&quot;Lire le billet sur le site du chauffeur de buzz&quot; hreflang=&quot;fr&quot;&gt;Si je ne pouvais lire que 5 blogs&lt;/a&gt;&lt;/em&gt;, voici venu le temps de l&#039;&lt;em&gt;anti-blog-chaîne&lt;/em&gt; (à ne pas confondre avec l&#039;&lt;a href=&quot;http://www.presse-citron.net/antiblog/&quot; title=&quot;Visiter l&#039;antiblog de Presse-Citron&quot; hreflang=&quot;fr&quot;&gt;antiblog&lt;/a&gt;). Le principe&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vous choisissez un sujet politiquement incorrect portant sur une quantité (5 semble être très prisé).&lt;/li&gt;
&lt;li&gt;Vous publiez un billet sur ce sujet.&lt;/li&gt;
&lt;li&gt;Vous ne refilez le bébé à personne, de sorte que tout le monde puisse écrire un billet sur le sujet, sans y avoir été invité.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je commence. &amp;Agrave; l&#039;occasion d&#039;un grand ménage d&#039;été dans mes flux RSS, j&#039;ai décidé de supprimer (entre autres) les 5 suivants&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://www.kelblog.com/&quot; title=&quot;Aller sur le blog de Pierre Chappaz&quot; hreflang=&quot;fr&quot;&gt;Kelblog&lt;/a&gt;&amp;nbsp;: la réussite de ce &lt;a href=&quot;http://fr.wikipedia.org/wiki/Pierre_Chappaz&quot; title=&quot;Voir l&#039;article &#039;Pierre Chappaz&#039; sur Wikipédia&quot; hreflang=&quot;fr&quot;&gt;gars&lt;/a&gt; ne peut être qu&#039;un hasard... D&#039;ailleurs il me rappelle beaucoup mon ancien PDG, co-fondateur d&#039;&lt;a href=&quot;http://www.unilog.com/&quot; title=&quot;Visiter le site d&#039;Unilog&quot; hreflang=&quot;fr&quot;&gt;Unilog&lt;/a&gt;, vice-président du &lt;a href=&quot;http://www.syntec-informatique.fr/&quot; title=&quot;Visiter le site du syndicat de l&#039;industrie informatique&quot; hreflang=&quot;fr&quot;&gt;syntec&lt;/a&gt;, multimillionnaire et &lt;em&gt;futur-ex-PDG-à-2-balles&lt;/em&gt; de la société en perdition &lt;a href=&quot;http://www.adesium.com/&quot; title=&quot;Visiter le site d&#039;Adesium&quot; hreflang=&quot;fr&quot;&gt;Adesium&lt;/a&gt;. Tous deux ont fait un gros coup, et passent depuis leur temps à mettre du fric dans des boîtes qui ne rapporteront jamais un rond...&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.techcrunch.com/&quot; title=&quot;Visiter le site TechCrunch&quot; hreflang=&quot;fr&quot;&gt;TechCrunch&lt;/a&gt;&amp;nbsp;: le seul site à faire des billets entiers sur des sites sans aborder (ou à peine) leur finalité en terme d&#039;usages... Seuls les aspects financiers semblent l&#039;intéresser.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sqli-agency.com/blogs/ergonomicgarden/&quot; title=&quot;Visiter le blog Ergonomic Garden&quot; hreflang=&quot;fr&quot;&gt;Ergonomic Garden&lt;/a&gt; parce que c&#039;est nul.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.simpleentrepreneur.com/&quot; title=&quot;Visiter le site Simple Entrepreneur&quot; hreflang=&quot;fr&quot;&gt;Simple Entrepreneur&lt;/a&gt; parce que je l&#039;ai invité (mais peut-être ne suis-je pas le seul) sur &lt;a href=&quot;http://blogasty.com/&quot; title=&quot;visiter le site Blogasty&quot; hreflang=&quot;fr&quot;&gt;blogasty&lt;/a&gt; et qu&#039;il ne m&#039;a jamais remercié...&lt;/li&gt;
&lt;li&gt;Commentaires sur &lt;a href=&quot;http://weblogs.asp.net/bleroy/archive/2007/04/25/woohoo-i-m-on-tv.aspx&quot; title=&quot;Lire le billet de Bertrand&quot; hreflang=&quot;en&quot;&gt;Woohoo! I&#039;m on TV!&lt;/a&gt; parce qu&#039;il n&#039;y a plus de commentaires depuis bien longtemps et que Bertrand (&lt;em&gt;embrasse Gégé et les filles de ma part&lt;/em&gt;) étant un ami (même s&#039;il travaille pour le &lt;a href=&quot;http://www.microsoft.com/&quot; title=&quot;Aller chez lui&quot; hreflang=&quot;en&quot;&gt;diable&lt;/a&gt;), je lui fait cadeau de ce &lt;em&gt;backlink&lt;/em&gt;. Ouais&amp;nbsp;! moi aussi je peux me la jouer blogueur &lt;em&gt;influent&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Et comme je ne sais rien de mes quelques visiteurs (à part, ceux qui se sont manuellement inscrits sur &lt;em&gt;ma communauté&lt;/em&gt; &lt;a href=&quot;http://www.mybloglog.com/buzz/community/numabilis/&quot; title=&quot;Visiter la page de la communauté Numabilis&quot; hreflang=&quot;en&quot;&gt;MyBlogLog&lt;/a&gt;, et je les en remercie du fond du c&amp;oelig;ur)[1] et que ce serait contraire au troisième principe, je n&lt;span class=&quot;code&quot;&gt;[&#039;&lt;s&gt;|e] relai | tag | passe le relai | refile le questionnaire à | envoie la patate à |&lt;/s&gt; emmerde]&lt;/span&gt; personne.&lt;/p&gt;
&lt;p&gt;[1] D&#039;un autre côté, c&#039;était peut-être une erreur de jeunesse de leur part et ils ne lisent plus du tout ce blog depuis bien longtemps, mais n&#039;osent pas se retirer (ou n&#039;en n&#039;ont rien à faire de le faire). Par contre moi, je me tire de ces communautés...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Édition 02/08/2007 :&lt;/strong&gt; &lt;a href=&quot;http://www.ajblog.fr/&quot; title=&quot;aller sur le blog d&#039;Aymeric Jacquet&quot; hreflang=&quot;fr&quot;&gt;Aymeric &lt;span class=&quot;np&quot;&gt;Jacquet&lt;/span&gt;&lt;/a&gt; fait aussi ce constat dans un billet intitulé &lt;a href=&quot;http://www.ajblog.fr/index.php/la-tentation-de-buzzer-doit-etre-grande&quot; title=&quot;Lire le billet&quot; hreflang=&quot;fr&quot;&gt;La tentation de &quot;Buzzer&quot; doit être grande&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Édition 07/08/2007 :&lt;/strong&gt; &lt;a href=&quot;http://www.simpleentrepreneur.com/&quot; title=&quot;aller sur le blog de Stéphane Thomas&quot; hreflang=&quot;fr&quot;&gt;Stéphane &lt;span class=&quot;np&quot;&gt;Thomas&lt;/span&gt;&lt;/a&gt; m&#039;a envoyé un mail expliquant que le l&#039;invitation envoyée par blogasty donne l&#039;impression d&#039;être un mail automatique, limite SPAM, et qu&#039;il n&#039;avait pas compris d&#039;où il venait (d&#039;autant plus que nous ne nous connaissons pas). Il est en effet impossible de personnaliser le mail d&#039;invitation, ce qui peut provoquer des incompréhension.&lt;/p&gt;
</description>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Sat, 28 Jul 2007 21:28:39 +0200</pubDate>
</item>
<item>
 <title>Google Maps API : coordonnées d&#039;un marqueur</title>
 <link>http://www.numabilis.com/blog/2007-07-08-google_maps_api_coordonnees_dun_marqueur</link>
 <description>&lt;p&gt;Ce sixième et dernier billet (pour le moment du moins) sur l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt; vous apprendra à récupérer les coordonnées d&#039;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_un_marqueur_deplacable&quot; title=&quot;Lire le précédent billet&quot;&gt;un marqueur déplaçable&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Partons de l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple06.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;6&lt;/a&gt; du &lt;a href=&quot;/blog/2007-07-08-google_maps_api_un_marqueur_deplacable&quot; title=&quot;Lire le cinquième billet&quot;&gt;billet précédent&lt;/a&gt;. Les coordonnées sont des propriétés du marqueur qu&#039;il suffit de récupérer à la fin d&#039;un glisser/déposer dans la fonction &lt;tt&gt;createMarker&lt;/tt&gt;&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;GEvent.addListener(marker, &quot;dragend&quot;, function() {
  htm = html + &#039;&amp;lt;br /&amp;gt;Lat_1 = &#039; + point.lat() + &#039; Lat_2 = &#039; + marker.getPoint().lat();
  htm = htm + &#039;&amp;lt;br /&amp;gt;Lng_1 = &#039; + point.lng() + &#039; Lng_2 = &#039; + marker.getPoint().lng();
  marker.openInfoWindowHtml(htm);
});&lt;/div&gt;
&lt;p&gt;Voilà&amp;nbsp;! Nous avons tout ce dont nous avons besoin pour faire un formulaire d&#039;enregistrement de coordonnées en plus de l&#039;affichage de marqueurs correspondants à des emplacements fournis sous forme de données JSON.&lt;/p&gt;
&lt;p&gt;Le résultat est visible sur l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple07.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;7&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Les autres billets de cette série sur l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-10-api_google_maps_premieres_cartes&quot; title=&quot;Lire le billet&quot;&gt;API Google Maps : premières cartes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-21-google_maps_api_marqueurs_et_fenetres_dinformations&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : marqueurs et fenêtres d&#039;informations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-07-google_maps_api_affichage_des_donnees_dun_fichier_json&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : affichage des données d&#039;un fichier JSON&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_geolocalisation_geocoding&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : géolocalisation (geocoding)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_un_marqueur_deplacable&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : un marqueur déplaçable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google Maps API : coordonnées d&#039;un marqueur&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-11-20-google_maps_api_gestionnaire_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : gestionnaire de marqueurs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-11-21-google_maps_api_gestionnaire_automatique_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : gestionnaire automatique de marqueurs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
 <category domain="http://www.numabilis.com/blog/Ingenierie-web">Ingénierie web</category>
 <category domain="http://www.numabilis.com/blog/JavaScript">JavaScript</category>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Sun, 08 Jul 2007 22:55:10 +0200</pubDate>
</item>
<item>
 <title>Google Maps API : un marqueur déplaçable</title>
 <link>http://www.numabilis.com/blog/2007-07-08-google_maps_api_un_marqueur_deplacable</link>
 <description>&lt;p&gt;Ce cinqième billet sur l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt; vous apprendra à créer un marqueur déplaçable par simple glisser/déposer (&lt;em&gt;drag and drop&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Partons de l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple05.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;5&lt;/a&gt; du &lt;a href=&quot;/blog/2007-07-08-google_maps_api_geolocalisation_geocoding&quot; title=&quot;Lire le quatrième billet&quot;&gt;billet précédent&lt;/a&gt; dont nous allons simplement modifier la fonction de création de marqueur &lt;tt&gt;createMarker&lt;/tt&gt;&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;function createMarker(point,html) {
  var icon = new GIcon(G_DEFAULT_ICON);
  icon.image = &quot;http://www.numabilis.com/files/demos/google-maps/blue-dot.png&quot;;
  
  var options = {
    icon: icon,
    draggable: true
  };
  var marker = new GMarker(point, options);
  GEvent.addListener(marker, &quot;dragstart&quot;, function() {
    map.closeInfoWindow();
  });
  
  GEvent.addListener(marker, &quot;dragend&quot;, function() {
    marker.openInfoWindowHtml(html);
  });
  
  GEvent.addListener(marker, &quot;click&quot;, function() {
    marker.openInfoWindowHtml(html);
  });
  
  return marker;
}&lt;/div&gt;
&lt;p&gt;Le marqueur est donc construit en passant des options au constructeur&amp;nbsp;: l&#039;URL (absolue) d&#039;une icône (pour différencier le marqueur déplaçable des autres) et un simple booléen indiquant que le marqueur est déplaçable&amp;nbsp;! Il est également possible, comme dans cet exemple de définir des fonctions appelées au début et à la fin du déplacement.&lt;/p&gt;
&lt;p&gt;Le résultat est visible sur l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple06.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;6&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Les autres billets de cette série sur l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-10-api_google_maps_premieres_cartes&quot; title=&quot;Lire le billet&quot;&gt;API Google Maps : premières cartes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-21-google_maps_api_marqueurs_et_fenetres_dinformations&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : marqueurs et fenêtres d&#039;informations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-07-google_maps_api_affichage_des_donnees_dun_fichier_json&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : affichage des données d&#039;un fichier JSON&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_geolocalisation_geocoding&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : géolocalisation (geocoding)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google Maps API : un marqueur déplaçable&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_coordonnees_dun_marqueur&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : coordonnées d&#039;un marqueur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-11-20-google_maps_api_gestionnaire_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : gestionnaire de marqueurs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-11-21-google_maps_api_gestionnaire_automatique_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : gestionnaire automatique de marqueurs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
 <category domain="http://www.numabilis.com/blog/Ingenierie-web">Ingénierie web</category>
 <category domain="http://www.numabilis.com/blog/JavaScript">JavaScript</category>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Sun, 08 Jul 2007 19:02:32 +0200</pubDate>
</item>
<item>
 <title>Google Maps API : géolocalisation (geocoding)</title>
 <link>http://www.numabilis.com/blog/2007-07-08-google_maps_api_geolocalisation_geocoding</link>
 <description>&lt;p&gt;Ce quatrième billet sur l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt; vous apprendra à afficher la carte d&#039;un lieu à partir de son adresse. C&#039;est ce que l&#039;on nomme &lt;a href=&quot;http://www.google.com/apis/maps/documentation/services.html#Geocoding&quot; title=&quot;Lire la documentation de l&#039;API&quot; hreflang=&quot;en&quot;&gt;geocoding&lt;/a&gt; dans l&#039;API, opération réalisée grâce à un objet JavaScript, le &lt;a href=&quot;http://www.google.com/apis/maps/documentation/reference.html#GClientGeocoder&quot; title=&quot;Lire le détail de l&#039;API du geocoder&quot; hreflang=&quot;en&quot;&gt;geocoder&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Partons de l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple04.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;4&lt;/a&gt; du &lt;a href=&quot;/blog/2007-07-07-google_maps_api_affichage_des_donnees_dun_fichier_json&quot; title=&quot;Lire le troisième billet&quot;&gt;billet précédent&lt;/a&gt; auquel nous ajoutons la variable globale &lt;tt&gt;geocoder&lt;/tt&gt;. Le chargement du fichier JSON est remplacé par l&#039;instanciation du geocoder dans la fonction &lt;tt&gt;load&lt;/tt&gt;&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;var geocoder;

function load() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById(&quot;map&quot;));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(46.85, 1.75), 6);
    &lt;span class=&quot;code_highlight&quot;&gt;geocoder = new GClientGeocoder();&lt;/span&gt;
  } else {
    alert(&quot;Desole, l&#039;API Google Maps n&#039;est pas compatible avec votre navigateur.&quot;);
  }
}&lt;/div&gt;
&lt;p&gt;Nous ajoutons à la page un formulaire permettant la saisie de l&#039;adresse cherchée. La validation du formulaire est interceptée par la fonction &lt;tt&gt;geocode&lt;/tt&gt; qui prend en paramètre l&#039;adresse saisie&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;form &lt;span class=&quot;code_highlight&quot;&gt;onsubmit=&quot;return geocode(this.address.value);&quot;&lt;/span&gt;&amp;gt;
  Adresse : &amp;lt;input type=&quot;text&quot; size=&quot;80&quot; name=&quot;address&quot; /&amp;gt;
  &amp;lt;input type=&quot;submit&quot; value=&quot;GO&quot; /&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/div&gt;
&lt;p&gt;Cette fonction &lt;tt&gt;geocode&lt;/tt&gt;, qui va faire tout le travail, est extrêmement simple&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;function geocode(address) {
  geocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        alert(address + &quot; not found&quot;);
      } else {
        map.setCenter(point, 13);
        var marker = createMarker(point, address);
        map.addOverlay(marker);
        marker.openInfoWindowHtml(address);
      }
    }
  );
  
  return false;
}&lt;/div&gt;
&lt;p&gt;Elle consiste à appeler la fonction &lt;tt&gt;getLatLng&lt;/tt&gt; du &lt;tt&gt;geocoder&lt;/tt&gt; en lui passant en paramètre l&#039;adresse saisie et une fonction appelée par le &lt;tt&gt;geocoder&lt;/tt&gt; au retour de la requête HTTP. En cas de succès, on centre la carte sur le point correspondant à l&#039;adresse, on créé un marqueur que l&#039;on ajoute sur la carte et on affiche la fenêtre d&#039;information.&lt;/p&gt;
&lt;p&gt;Le résultat est visible sur l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple05.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;5&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Les autres billets de cette série sur l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-10-api_google_maps_premieres_cartes&quot; title=&quot;Lire le billet&quot;&gt;API Google Maps : premières cartes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-21-google_maps_api_marqueurs_et_fenetres_dinformations&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : marqueurs et fenêtres d&#039;informations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-07-google_maps_api_affichage_des_donnees_dun_fichier_json&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : affichage des données d&#039;un fichier JSON&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google Maps API : géolocalisation (geocoding)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.numabilis.com/blog/2007-07-08-google_maps_api_un_marqueur_deplacable&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : un marqueur déplaçable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_coordonnees_dun_marqueur&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : coordonnées d&#039;un marqueur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-11-20-google_maps_api_gestionnaire_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : gestionnaire de marqueurs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-11-21-google_maps_api_gestionnaire_automatique_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : gestionnaire automatique de marqueurs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
 <category domain="http://www.numabilis.com/blog/Ingenierie-web">Ingénierie web</category>
 <category domain="http://www.numabilis.com/blog/JavaScript">JavaScript</category>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Sun, 08 Jul 2007 14:55:14 +0200</pubDate>
</item>
<item>
 <title>Google Maps API : affichage des données d&#039;un fichier JSON</title>
 <link>http://www.numabilis.com/blog/2007-07-07-google_maps_api_affichage_des_donnees_dun_fichier_json</link>
 <description>&lt;p&gt;Ce troisième billet sur l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt; vous apprendra à afficher des données distantes au format &lt;a href=&quot;http://www.json.org/jsonfr.html&quot; title=&quot;Lire la présentation de la notation objet de JavaScript&quot; hreflang=&quot;fr&quot;&gt;JSON&lt;/a&gt; (produites dynamiquement par un serveur par exemple). L&#039;API peut utiliser le format XML. Je préfère cependant utiliser le format JSON, plus compact et plus rapide à traiter en JavaScript, mais aussi plus complexe.&lt;/p&gt;
&lt;p&gt;Partons de l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple03.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;3&lt;/a&gt; du &lt;a href=&quot;/blog/2007-06-21-google_maps_api_marqueurs_et_fenetres_dinformations&quot; title=&quot;Lire le second billet&quot;&gt;billet précédent&lt;/a&gt; dont nous supprimons la création du marqueur lors du chargement de la page (fonction &lt;tt&gt;load&lt;/tt&gt;) pour la remplacer par un appel à la fonction &lt;tt&gt;GDownloadUrl&lt;/tt&gt;. Cette fonction permet de charger une ressource de manière asynchrone et prends deux paramètres&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;tt&gt;&lt;strong&gt;url&lt;/strong&gt;&lt;/tt&gt;&amp;nbsp;: l&#039;URL de la ressource, &lt;a href=&quot;/files/demos/google-maps/exemple04.json&quot; title=&quot;Voir le fichier JSON utilisé pour ce tutoriel&quot;&gt;&lt;tt&gt;exemple04.json&lt;/tt&gt;&lt;/a&gt; dans notre exemple.&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;&lt;strong&gt;onload&lt;/strong&gt;&lt;/tt&gt;&amp;nbsp;: la fonction à appeler après le chargement de la ressource. Cette fonction doit avoir deux paramètres&amp;nbsp;:
&lt;ul&gt;
&lt;li&gt;&lt;tt&gt;&lt;strong&gt;text&lt;/strong&gt;&lt;/tt&gt;&amp;nbsp;: le texte du document téléchargé.&lt;/li&gt;
&lt;li&gt;&lt;tt&gt;&lt;strong&gt;status&lt;/strong&gt;&lt;/tt&gt;&amp;nbsp;: le code du statut de la réponse HTTP.&lt;/li&gt;
&lt;/ul&gt;
En cas de &lt;em&gt;timeout&lt;/em&gt; de la requête, la fonction est appelée avec &lt;tt&gt;null&lt;/tt&gt; et &lt;tt&gt;-1&lt;/tt&gt; comme arguments.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nous avons donc la fonction &lt;tt&gt;load&lt;/tt&gt; suivante&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;function load() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById(&quot;map&quot;));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(46.85, 1.75), 6);
    
    GDownloadUrl(&quot;exemple04.json&quot;, setup_json);
  } else {
    alert(&quot;Desole, l&#039;API Google Maps n&#039;est pas compatible avec votre navigateur.&quot;);
  }
}&lt;/div&gt;
&lt;p&gt;Notons au passage que la vairable &lt;tt&gt;map&lt;/tt&gt; a été sortie de la fonction afin de la rendre globale et de pouvoir y accéder dans la fonction &lt;tt&gt;set_json&lt;/tt&gt;&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;setup_json = function(json, status) {
  var data = eval(&#039;(&#039; + json + &#039;)&#039;);
  
  for (var i=0; i&amp;lt;data.markers.length; i++) {
    var point = new GLatLng(data.markers[i].lat, data.markers[i].lng);
    var marker = createMarker(point, data.markers[i].html);
    map.addOverlay(marker);
  }
}&lt;/div&gt;
&lt;p&gt;Le résultat est visible sur l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple04.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;4&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Plus de précisions : &lt;a href=&quot;http://econym.googlepages.com/basic12.htm&quot; title=&quot;Lire le tutorial&quot; hreflang=&quot;en&quot;&gt;Data in JSON files&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Les autres billets de cette série sur l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-10-api_google_maps_premieres_cartes&quot; title=&quot;Lire le billet&quot;&gt;API Google Maps : premières cartes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-21-google_maps_api_marqueurs_et_fenetres_dinformations&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : marqueurs et fenêtres d&#039;informations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google Maps API : affichage des données d&#039;un fichier JSON&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;/blog/2007-07-08-google_maps_api_geolocalisation_geocoding&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : géolocalisation (geocoding)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.numabilis.com/blog/2007-07-08-google_maps_api_un_marqueur_deplacable&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : un marqueur déplaçable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_coordonnees_dun_marqueur&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : coordonnées d&#039;un marqueur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-11-20-google_maps_api_gestionnaire_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : gestionnaire de marqueurs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-11-21-google_maps_api_gestionnaire_automatique_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : gestionnaire automatique de marqueurs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
 <category domain="http://www.numabilis.com/blog/Ingenierie-web">Ingénierie web</category>
 <category domain="http://www.numabilis.com/blog/JavaScript">JavaScript</category>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Sat, 07 Jul 2007 13:47:49 +0200</pubDate>
</item>
<item>
 <title>Le ratage USA Today : 4 mois après</title>
 <link>http://www.numabilis.com/blog/2007-07-06-le_ratage_usa_today_4_mois_apres</link>
 <description>&lt;p&gt;Début mars, &lt;a href=&quot;http://www.usatoday.com/&quot; title=&quot;Visiter sur le site USA Toady&quot; hreflang=&quot;en&quot;&gt;USA Today&lt;/a&gt; sortait une &lt;a href=&quot;http://www.usatoday.com/news/2007-03-02-editors-note_N.htm&quot; title=&quot;Lire l&#039;annonce de la sortie sur le site USA Toady&quot; hreflang=&quot;en&quot;&gt;nouvelle version&lt;/a&gt; de son site très &lt;a href=&quot;http://www.usatoday.com/news/community-features.htm&quot; title=&quot;Lire la description des fonctionnalités&quot; hreflang=&quot;en&quot;&gt;web&amp;nbsp;2.0&lt;/a&gt;, provoquant une avalanches de commentaires négatifs. Alors que &lt;a href=&quot;/blog/2007-03-07-le_ratage_usa_today&quot; title=&quot;Lire mon précédent billet sur le ratage USA Today&quot;&gt;je prévoyais&lt;/a&gt; une chute du lectorat, certains commentateurs ont affirmé, qu&#039;au contraire, le &lt;a href=&quot;http://mediacafe.blogspot.com/2007/05/usa-todaycom-aprs-le-redesign-le-trafic.html&quot; title=&quot;Lire le billet de Jeff Mignon&quot; hreflang=&quot;fr&quot;&gt;trafic avait augmenté&lt;/a&gt; (selon une source bien informée... &lt;a href=&quot;http://www.usatoday.com/&quot; title=&quot;Visiter sur le site USA Toady&quot; hreflang=&quot;en&quot;&gt;USA Today&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;4 mois après, le bilan est sans appel&amp;nbsp;: &lt;strong&gt;le ratage est total&lt;/strong&gt;. &lt;a href=&quot;http://www.compete.com/&quot; title=&quot;Visiter le site Compete&quot; hreflang=&quot;en&quot;&gt;Compete&lt;/a&gt; mesure &lt;strong&gt;une chute de près de 70&amp;nbsp;% du trafic&lt;/strong&gt; sur un an, et près de 60&amp;nbsp;% depuis mars dernier&amp;nbsp;! Par contre l&#039;activité des utilisateurs y est plus forte que sur les sites concurrents comme &lt;a href=&quot;http://www.readwriteweb.com/archives/redesigned_mainstream_news.php&quot; title=&quot;Lire l&#039;article&quot; hreflang=&quot;en&quot;&gt;le remarque&lt;/a&gt; Josh Catone sur &lt;a href=&quot;http://www.readwriteweb.com/&quot; title=&quot;Visiter le site Read/WriteWeb&quot; hreflang=&quot;en&quot;&gt;Read/WriteWeb&lt;/a&gt;.&lt;/p&gt;
&lt;center&gt;&lt;br&gt;&lt;a href=&quot;http://siteanalytics.compete.com/usatoday.com?metric=uv&quot; title=&quot;Voir la courbe sur compete&quot;&gt;&lt;img title=&quot;Courbe représentant l&#039;évolution du trafic sur USA Today depuis un an&quot; alt=&quot;Courbe représentant l&#039;évolution du trafic sur USA Today depuis un an&quot; src=&quot;/files/pictures/Compete_USA_Today.png&quot; height=&quot;268&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://siteanalytics.compete.com/usatoday.com?metric=uv&quot; hreflang=&quot;en&quot; title=&quot;Voir la courbe sur compete&quot;&gt;&amp;Eacute;volution du trafic sur USA Today depuis un an&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/center&gt;
&lt;p&gt;&lt;strong&gt;En satisfaisant le 1&amp;nbsp;% de ses utilisateurs actifs, USA Today est en passe de perdre les 90&amp;nbsp;% de ses lecteurs, certes passifs, mais générateurs de la plus grosse part des revenus...&lt;/strong&gt; &lt;a href=&quot;/blog/2006-12-23-le_monde_parle_de_mon_projet&quot; title=&quot;Lire mon précédent billet évoquant le projet sur lequel je suis actuellement&quot;&gt;Tant mieux&amp;nbsp;!&lt;/a&gt; Cela laisse de la place pour &lt;a href=&quot;http://www.strategies.fr/recherche/index.php?archives=0&amp;cName=AllArticles&amp;xmlStepIndex=1&amp;xmlSeqIndex=&amp;xmlActionAsked=none&amp;xmlActionParam=&amp;xmlFormName=FINDJOB&amp;JobCategory=&amp;FTWords=&amp;nom_agence=&amp;query=newzwag&amp;type_info_search=&quot; title=&quot;Page cryptique&quot; hreflang=&quot;fr&quot;&gt;d&#039;autres&lt;/a&gt; &lt;a href=&quot;http://www.afp.com/&quot; title=&quot;Visiter le site de l&#039;Agence france Presse&quot;&gt;acteur&lt;/a&gt;&lt;a href=&quot;http://www.newzwag.com/&quot; title=&quot;Visiter le site Newzwag&quot; hreflang=&quot;fr&quot;&gt;s&lt;/a&gt;&amp;nbsp;!&lt;/p&gt;
</description>
 <category domain="http://www.numabilis.com/blog/Conseil">Conseil</category>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Fri, 06 Jul 2007 19:53:15 +0200</pubDate>
</item>
<item>
 <title>Télé2 Mobile n&#039;assure pas le portage du numéro vers... Télé2 Mobile !</title>
 <link>http://www.numabilis.com/blog/2007-07-02-tele2_mobile_nassure_pas_le_portage_du_numero_vers_tele2_mobile</link>
 <description>&lt;p&gt;Aussi étonnant que cela puisse paraître, &lt;strong&gt;Télé2 Mobile assure la portabilité du numéro vers les opérateurs concurrents, mais pas vers lui même&amp;nbsp;!&lt;/strong&gt; Quel intérêt de vouloir porter son numéro vers l&#039;opérateur dont on est déjà client, me direz-vous... Et bien, quand on a un contrat client comportant deux lignes et donc deux numéros et que l&#039;on souhaite séparer ces deux numéros sur deux contrats différents. Dans ce cas, Télé2 vous offre la possibilité de ne conserver qu&#039;un seul numéro sur les deux&amp;nbsp;! &lt;strong&gt;La seule façon de conserver les deux numéros est donc d&#039;en porter un vers un autre opérateur.&lt;/strong&gt; Mais si vous avez un engagement de duré en cours... et bien cela se complique&amp;nbsp;: c&#039;est même l&#039;impasse.&lt;p&gt;
&lt;p&gt;J&#039;avais déjà expérimenté le portage du numéro depuis Orange vers Télé2&amp;nbsp; (&lt;a href=&quot;http://www.ciao.fr/Tele2_Mobile__Avis_875905&quot; title=&quot;Lire l&#039;avis d&#039;une personne ayant eu une aventure semblable&quot; hreflang=&quot;fr&quot;&gt;coupure de ligne&lt;/a&gt; d&#039;une semaine et changement de numéro au final, sans compter les heures passées avec le &lt;em&gt;support&lt;/em&gt; cient), je vais probablement expérimenter maintenant la dénonciation de contrat...&lt;p&gt;
&lt;p&gt;En conclusion &lt;a href=&quot;http://www.ciao.fr/Tele2_Mobile__Avis_916848&quot; title=&quot;Lire l&#039;avis d&#039;un consommateur&quot; hreflang=&quot;fr&quot;&gt;Télé2 Mobile est un MVNO a fuir comme la peste&lt;/a&gt; et pour vous en convaincre, lisez les &lt;a href=&quot;http://www.ciao.fr/Avis/Tele2_Mobile__758304&quot; title=&quot;Lire les avis&quot; hreflang=&quot;fr&quot;&gt;avis de clients&lt;/a&gt;.&lt;/p&gt;</description>
 <pubDate>Mon, 02 Jul 2007 19:19:05 +0200</pubDate>
</item>
<item>
 <title>Google Maps API : marqueurs et fenêtres d&#039;informations</title>
 <link>http://www.numabilis.com/blog/2007-06-21-google_maps_api_marqueurs_et_fenetres_dinformations</link>
 <description>&lt;p&gt;Ce second billet vous apprendra à ajouter des marqueurs affichant une fenêtre d&#039;information lorsque l&#039;on clique dessus.&lt;/p&gt;
&lt;p&gt;Partons de l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple02.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;2&lt;/a&gt; du &lt;a href=&quot;/blog/2007-06-10-api_google_maps_premieres_cartes&quot; title=&quot;Lire le premier billet&quot;&gt;billet précédent&lt;/a&gt; auquel nous ajoutons le bloc suivant dans le corps, afin de pr&amp;eacute;venir les utilisateurs ne disposant pas de JavaScript&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;&amp;lt;noscript&amp;gt;
  &amp;lt;b&amp;gt;JavaScript doit &amp;ecirc;tre activ&amp;eacute; pour utiliser Google Maps.&amp;lt;/b&amp;gt;
  Il semblerait que JavaScript soit d&amp;eacute;sactiv&amp;eacute; ou non support&amp;eacute; par votre navigateur.
  Pour visualiser les cartes Google Maps, activez JavaScript dans les options de votre navigateur et r&amp;eacute;essayez.
&amp;lt;/noscript&amp;gt;
&lt;/div&gt;
&lt;p&gt;Pr&amp;eacute;venons aussi les utilisateurs dont le navigateur n&#039;est pas compatible avec l&#039;API Google Maps en définissant la clause &lt;tt&gt;else&lt;/tt&gt; du test de compatibilit&amp;eacute; dans la fonction &lt;tt&gt;load&lt;/tt&gt;&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;if (GBrowserIsCompatible()) {
  // ...
} else {
  alert(&quot;Desole, l&#039;API Google Maps n&#039;est pas compatible avec votre navigateur.&quot;);
}
&lt;/div&gt;
&lt;p&gt;Ajoutons ensuite, lors de la création de la carte, dans la fonction &lt;tt&gt;load&lt;/tt&gt;, l&#039;affichage du contrôle de positionnement et de zoom&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;map.addControl(new GLargeMapControl());&lt;/div&gt;
&lt;p&gt;ainsi que le contrôle du type de carte (plan, satellite ou mixte)&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;map.addControl(new GMapTypeControl());&lt;/div&gt;
&lt;p&gt;Définissons un premier marqueur sur &lt;a href=&quot;http://fr.wikipedia.org/wiki/Mantes-la-Jolie&quot; title=&quot;Voir la page Wikipédia sur Mantes-la-Jolie&quot; hreflang=&quot;fr&quot;&gt;Mantes-la-Jolie&lt;/a&gt; (de coordonnées 48.9908338, 1.717222)&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;var point = new GLatLng(48.9908338,1.717222);
var marker = createMarker(point,&#039;Ici, c\&#039;est chez moi&amp;nbsp;!&#039;)
map.addOverlay(marker);
&lt;/div&gt;
&lt;p&gt;La fonction &lt;tt&gt;createMarker&lt;/tt&gt; est la suivante&amp;nbsp;:&lt;/p&gt;
&lt;div class=&quot;code&quot;&gt;function createMarker(point,html) {
  var marker = new GMarker(point);
  GEvent.addListener(marker, &quot;click&quot;, function() {
    marker.openInfoWindowHtml(html);
  });

  return marker;
}
&lt;/div&gt;
&lt;p&gt;Le résultat est visible sur l&#039;&lt;a href=&quot;/files/demos/google-maps/exemple03.html&quot; title=&quot;Voir la page d&#039;exemple&quot;&gt;exemple&amp;nbsp;3&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La fenêtre d&#039;information affiche du HTML standard et il est possible de définir autant de marqueur que l&#039;on souhaite...&lt;/p&gt;
&lt;p&gt;Plus de précisions : &lt;a href=&quot;http://econym.googlepages.com/basic1.htm&quot; title=&quot;Lire le tutorial&quot; hreflang=&quot;en&quot;&gt;Markers and info windows&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Les autres billets de cette série sur l&#039;&lt;a href=&quot;http://www.google.com/apis/maps/index.html&quot; title=&quot;Visiter le site de l&#039;API&quot; hreflang=&quot;en&quot;&gt;API Google Maps&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-06-10-api_google_maps_premieres_cartes&quot; title=&quot;Lire le billet&quot;&gt;API Google Maps : premières cartes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Google Maps API : marqueurs et fenêtres d&#039;informations&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-07-google_maps_api_affichage_des_donnees_dun_fichier_json&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : affichage des données d&#039;un fichier JSON&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;/blog/2007-07-08-google_maps_api_geolocalisation_geocoding&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : géolocalisation (geocoding)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.numabilis.com/blog/2007-07-08-google_maps_api_un_marqueur_deplacable&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : un marqueur déplaçable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-07-08-google_maps_api_coordonnees_dun_marqueur&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : coordonnées d&#039;un marqueur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-11-20-google_maps_api_gestionnaire_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : gestionnaire de marqueurs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/2007-11-21-google_maps_api_gestionnaire_automatique_de_marqueurs&quot; title=&quot;Lire le billet&quot;&gt;Google Maps API : gestionnaire automatique de marqueurs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
 <category domain="http://www.numabilis.com/blog/Ingenierie-web">Ingénierie web</category>
 <category domain="http://www.numabilis.com/blog/JavaScript">JavaScript</category>
 <category domain="http://www.numabilis.com/blog/Web-2.0">Web 2.0</category>
 <pubDate>Thu, 21 Jun 2007 19:27:09 +0200</pubDate>
</item>
</channel>
</rss>
