<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>planete php fr</title>
	<description>planete php fr</description>
	<link>http://planete-php.fr/rss.php</link>
	<language>fr-fr</language>
	<pubDate>Sun, 19 May 2013 00:35:23 +0200</pubDate>
	<lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate>
	<generator>AFUP - à la mano</generator>
	<managingEditor>planetephpfr@afup.org (Perrick Penet / AFUP)</managingEditor>

		<item>
		<title>Je serai à la Web-5 de Béziers</title>
		<link>http://feedproxy.google.com/~r/Mathieurobincom/~3/3ynJ31CWCc8/</link>
		<description>&lt;p style=&quot;text-align: justify;&quot;&gt;Salut à tous ! Ça roule ? Bon alors aujourd&amp;rsquo;hui, je vous annonce ma présence à la prochaine &lt;a title=&quot;Web-5 2013&quot; href=&quot;http://conf2013.web-5.org/&quot; target=&quot;_blank&quot;&gt;Web-5 à Béziers&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;OK ça c&amp;rsquo;est bien gentil mais pourquoi aller à l&amp;rsquo;autre bout de la France ? Parce que j&amp;rsquo;y suis invité. C&amp;rsquo;est une raison valable à elle seule, non ? Mais il n&amp;rsquo;y a pas que ça.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Avec ma future camarade Camille, que je ne connais pas encore IRL, nous allons y assurer la couverture presse, ce pourquoi nous avons été invité. Vous allez donc entendre parler de Béziers dans les semaines à venir. Peut être même plus que de &lt;a title=&quot;Tag ConFoo&quot; href=&quot;http://www.mathieurobin.com/tag/confoo/&quot; target=&quot;_blank&quot;&gt;mon séjour à Montréal pour la ConFoo&lt;/a&gt; !&lt;br /&gt;
Donc déjà, je me demandais qui parmi vous sera présent là bas. J&amp;rsquo;adore rencontrer mes lecteurs, c&amp;rsquo;est toujours un super moment avec plein de trucs à apprendre (faut d&amp;rsquo;ailleurs que je relance les &lt;a title=&quot;Tag BeerJS&quot; href=&quot;http://www.mathieurobin.com/tag/beerjs/&quot; target=&quot;_blank&quot;&gt;BeerJs&lt;/a&gt;). Alors, qui ?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Parlons donc un peu de la &lt;a title=&quot;Web-5 2013&quot; href=&quot;http://conf2013.web-5.org/&quot; target=&quot;_blank&quot;&gt;Web-5&lt;/a&gt;. Au planning, du web, du web et&amp;#8230; Du web ! Plus sérieusement, des développeurs, des designers, des ergonomes, des experts référencement. Enfin du bon gros gratin. Et international en plus le gratin. Non content d&amp;rsquo;avoir invité des gens comme &lt;a title=&quot;Le site de Raphael Goetter, AlsacréationS&quot; href=&quot;http://www.goetter.fr/&quot; target=&quot;_blank&quot;&gt;Raphaël Goetter&lt;/a&gt; d&amp;rsquo;&lt;a title=&quot;Alsacréations&quot; href=&quot;http://www.alsacreations.com/&quot; target=&quot;_blank&quot;&gt;Alsacréations&lt;/a&gt;, Stéphanie Walter de &lt;a title=&quot;InPixelITrust&quot; href=&quot;http://www.inpixelitrust.fr/&quot; target=&quot;_blank&quot;&gt;InPixelITrust&lt;/a&gt; (et aussi Alsacréations), &lt;a title=&quot;Twitter @xcambar&quot; href=&quot;https://github.com/xcambar&quot; target=&quot;_blank&quot;&gt;Xavier Cambar&lt;/a&gt;, membre régulier de &lt;a title=&quot;PariJS&quot; href=&quot;http://parisjs.org/&quot; target=&quot;_blank&quot;&gt;ParisJS&lt;/a&gt;, &lt;a title=&quot;Github - Julien Pauli&quot; href=&quot;https://github.com/jpauli&quot; target=&quot;_blank&quot;&gt;Julien Pauli&lt;/a&gt;, un poil connu dans le monde du PHP ou encore &lt;a title=&quot;Twitter @amorgaut&quot; href=&quot;https://twitter.com/amorgaut&quot; target=&quot;_blank&quot;&gt;Alexandre Morgaut&lt;/a&gt;, l&amp;rsquo;un des big de boss du projet &lt;a title=&quot;4D - Wakanda&quot; href=&quot;http://www.4d.com/fr/products/wakanda.html&quot; target=&quot;_blank&quot;&gt;Wakanda chez 4D&lt;/a&gt; et membre du W3C. Ils ont aussi invité des grosses têtes étrangères, des mecs d&amp;rsquo;IBM, de Shazam, un dev du Zend Framework, de Thomson Reuters.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour la suite des évènements sur ce blog, je publierai prochainement le communiqué de presse. Puis suivront des interviews de différents orateurs. On va aussi sûrement expliquer avec Camille comment nous allons nous répartir les conférences et ce que vous pourrez espérer de nos prises de notes.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ça se passe le 14 et 15 juin, à Béziers donc, il y aura des conférences passionnantes, des rencontres à faire, des soirées. Si vous ne l&amp;rsquo;avez pas, vous pouvez encore prendre votre place. Et puis bon, un détour dans le sud mi juin, vous savez quand il fait beau et bien chaud, ne me dites pas que ça ne vous donne pas envie &lt;img src='http://www.mathieurobin.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour deux jours, vous avez un billet individuel à 150?. Si vous venez à 5, il y a 20% de réduction avec les 5 places pour 600?. Moins cher que nombre de conférences à travers le monde. Pour un niveau franchement bon d&amp;rsquo;orateurs.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ça se passe ici : &lt;a title=&quot;Achetez votre ticket pour la conférence Web-5 2013&quot; href=&quot;http://conf2013.web-5.org/achetez-votre-ticket/&quot; target=&quot;_blank&quot;&gt;http://conf2013.web-5.org/achetez-votre-ticket/&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;&lt;a href=&quot;http://www.mathieurobin.com/?flattrss_redirect&amp;amp;id=3089&amp;amp;md5=002b1d7ea5474105f9b1e500532add11&quot; title=&quot;Flattr&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.mathieurobin.com/wp-content/plugins/flattr/img/flattr-badge-large.png&quot; alt=&quot;flattr this!&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?a=3ynJ31CWCc8:ktm1zXvzV4s:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?a=3ynJ31CWCc8:ktm1zXvzV4s:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?d=qj6IDK7rITs&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?a=3ynJ31CWCc8:ktm1zXvzV4s:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?i=3ynJ31CWCc8:ktm1zXvzV4s:D7DqB2pKExk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/Mathieurobincom/~4/3ynJ31CWCc8&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
		<pubDate>Thu, 16 May 2013 13:41:18 +0200</pubDate>
		<guid>http://feedproxy.google.com/~r/Mathieurobincom/~3/3ynJ31CWCc8/</guid>
	</item>
		<item>
		<title>Navigation dynamique avec Backbone.js sur une carte OpenStreetMap</title>
		<link>http://www.miximum.fr/tutos/1375-navigation-dynamique-avec-backbone-js-sur-une-carte-openstreetmap</link>
		<description>&lt;p&gt;&lt;img src=&quot;http://www.miximum.fr/wp-content/uploads/2013/05/colombian_training_ship_arc_gloria-300x300.jpg&quot; alt=&quot;Colombian Training Ship ARC &amp;quot;Gloria&amp;quot;&quot; width=&quot;300&quot; height=&quot;300&quot; class=&quot;thumbnail alignleft size-medium wp-image-1393&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Il y a quelques &lt;del&gt;jours&lt;/del&gt; semaines, nous avons vu comment &lt;a href=&quot;http://www.miximum.fr/methodes-et-outils/1358-mezzanine-et-openstreetmap-sont-dans-un-bateau&quot; title=&quot;Mezzanine et OpenStreetMap sont dans un bateau&quot;&gt;créer une page spécifique dans Mezzanine pour afficher une carte grâce à OpenStreetMap&lt;/a&gt;. Nous allons poursuivre l&amp;rsquo;exercice et en faire une application un peu plus puissante. Notre but : permettre à un administrateur de rentrer lui-même différents « lieux » ou points intéressants, pour qu&amp;rsquo;ils puissent s&amp;rsquo;afficher sur la carte. Chaque point est cliquable, et dispose de sa propre url. Pour pousser un peu le raffinement, nous utiliserons Backbone.js pour que la navigation soit dynamique, et éviter la nécessité de recharger toute la page à chaque fois.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1375&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;Des p&amp;rsquo;tits points? des p&amp;rsquo;tits points? encore des p&amp;rsquo;tits points !&lt;/h2&gt;
&lt;p&gt;Nous allons créer une application Django qui contiendra le code spécifique à la gestion de notre carte. Commençons par le modèle :&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;python&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;# models.py&lt;/span&gt;
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; django.&lt;span style=&quot;color: black;&quot;&gt;utils&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;translation&lt;/span&gt; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; ugettext_lazy &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;as&lt;/span&gt; _
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; django.&lt;span style=&quot;color: black;&quot;&gt;db&lt;/span&gt; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; models
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; mezzanine.&lt;span style=&quot;color: black;&quot;&gt;core&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;fields&lt;/span&gt; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; RichTextField
&amp;nbsp;
&amp;nbsp;
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;class&lt;/span&gt; PointOfInterest&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;models.&lt;span style=&quot;color: black;&quot;&gt;Model&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;:
    name &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; models.&lt;span style=&quot;color: black;&quot;&gt;CharField&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;_&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'name'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; max_length&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ff4500;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;
    description &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; RichTextField&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;_&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'Description'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; null&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #008000;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; blank&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #008000;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;
    lat &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; models.&lt;span style=&quot;color: black;&quot;&gt;FloatField&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;_&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'Latitude'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;
    lng &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; models.&lt;span style=&quot;color: black;&quot;&gt;FloatField&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;_&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'Longitude'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;
    slug &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; models.&lt;span style=&quot;color: black;&quot;&gt;SlugField&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;_&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'Slug'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;class&lt;/span&gt; Meta:
        verbose_name &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; _&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'Point of interest'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;
        verbose_name_plural &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; _&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'Points of interest'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color: #0000cd;&quot;&gt;__unicode__&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #008000;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;:
        &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #008000;&quot;&gt;self&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;name&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Rien de trés compliqué jusque là ; chaque « lieu » dispose d&amp;rsquo;un titre, d&amp;rsquo;une description, et de coordonnées géographiques. L&amp;rsquo;activation du module d&amp;rsquo;admin est encore plus simple.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;python&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;# admin.py&lt;/span&gt;
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; django.&lt;span style=&quot;color: black;&quot;&gt;contrib&lt;/span&gt; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; admin
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; city_map.&lt;span style=&quot;color: black;&quot;&gt;models&lt;/span&gt; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; PointOfInterest
&amp;nbsp;
&amp;nbsp;
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;class&lt;/span&gt; PointOfInterestAdmin&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;admin.&lt;span style=&quot;color: black;&quot;&gt;ModelAdmin&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;:
    prepopulated_fields &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;&amp;quot;slug&amp;quot;&lt;/span&gt;: &lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&amp;nbsp;
admin.&lt;span style=&quot;color: #dc143c;&quot;&gt;site&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;register&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;PointOfInterest&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; PointOfInterestAdmin&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Configurons maintenant les urls de notre application :&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;python&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;# urls.py&lt;/span&gt;
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; django.&lt;span style=&quot;color: black;&quot;&gt;conf&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;urls&lt;/span&gt; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; patterns&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; include&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; url
&amp;nbsp;
&amp;nbsp;
urlpatterns &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; patterns&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;&amp;quot;city_map.views&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt;
    &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;# L'url racine, qui affiche la carte globale&lt;/span&gt;
    url&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'^$'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #483d8b;&quot;&gt;'map'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; name&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'map'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;# Url spécifique affichant le détail de chaque lieu&lt;/span&gt;
    url&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'^(?P&amp;lt;slug&amp;gt;[&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\w&lt;/span&gt;-]+)/$'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #483d8b;&quot;&gt;'point_of_interest'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; name&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'point_of_interest'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;# Nos markeurs seront disponibles en json&lt;/span&gt;
    url&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'^markers.json$'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #483d8b;&quot;&gt;'markers_data'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; name&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'markers_data'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt;
&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Les vues correspondantes ne contiennent absolument rien de compliqué.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;python&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;# views.py&lt;/span&gt;
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; django.&lt;span style=&quot;color: black;&quot;&gt;http&lt;/span&gt; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; HttpResponse
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; django.&lt;span style=&quot;color: black;&quot;&gt;core&lt;/span&gt; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; serializers
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; django.&lt;span style=&quot;color: black;&quot;&gt;shortcuts&lt;/span&gt; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; get_object_or_404
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; django.&lt;span style=&quot;color: black;&quot;&gt;utils&lt;/span&gt; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; simplejson
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; mezzanine.&lt;span style=&quot;color: black;&quot;&gt;utils&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;views&lt;/span&gt; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; render
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; your_map_app.&lt;span style=&quot;color: black;&quot;&gt;models&lt;/span&gt; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; PointOfInterest
&amp;nbsp;
&amp;nbsp;
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;def&lt;/span&gt; &lt;span style=&quot;color: #008000;&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;request&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;:
    &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;return&lt;/span&gt; render&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;request&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #483d8b;&quot;&gt;'map.html'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;def&lt;/span&gt; point_of_interest&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;request&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; slug&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;:
    selected_poi &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; get_object_or_404&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;PointOfInterest&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; slug&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;slug&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;return&lt;/span&gt; render&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;request&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #483d8b;&quot;&gt;'map.html'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: black;&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span style=&quot;color: #483d8b;&quot;&gt;'selected_poi'&lt;/span&gt;: selected_poi&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt;
    &lt;span style=&quot;color: black;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;def&lt;/span&gt; markers_data&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;request&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;:
    pois &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; PointOfInterest.&lt;span style=&quot;color: black;&quot;&gt;objects&lt;/span&gt;.&lt;span style=&quot;color: #008000;&quot;&gt;all&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;
    data &lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt; simplejson.&lt;span style=&quot;color: black;&quot;&gt;dumps&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #008000;&quot;&gt;list&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;pois&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;
    &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;return&lt;/span&gt; HttpResponse&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span style=&quot;color: #66cc66;&quot;&gt;,&lt;/span&gt; mimetype&lt;span style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'application/json'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Tout est en place, il ne nous reste plus qu&amp;rsquo;à récupérer les données json pour les afficher sur la carte. Dans le template écrit la dernière fois, remplacez le bloc &lt;em&gt;extra_js&lt;/em&gt; par celui-ci :&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;script type&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// This function is called whenever the map is ready&lt;/span&gt;
&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt; citymapInit&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;map&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; bounds&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    $.&lt;span style=&quot;color: #660066;&quot;&gt;getJSON&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'{% url '&lt;/span&gt;markers_data&lt;span style=&quot;color: #3366CC;&quot;&gt;' %}'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        $.&lt;span style=&quot;color: #660066;&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;data&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;key&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; val&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
            &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; link &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; getMarkerLink&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;val&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
            L.&lt;span style=&quot;color: #660066;&quot;&gt;marker&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;val&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'lat'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; val&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'lng'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;addTo&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;map&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;bindPopup&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;link&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt; getMarkerLink&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;json&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Returns a correct link to the point of interest url&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; url_root &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;'{% url '&lt;/span&gt;map&lt;span style=&quot;color: #3366CC;&quot;&gt;' %}'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; url &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; url_root &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; json&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'slug'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;'/'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;'&amp;lt;a href=&amp;quot;'&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; url &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;'&amp;quot;&amp;gt;'&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; json&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'name'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;'&amp;lt;/a&amp;gt;'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Si tout s&amp;rsquo;est bien passé, chaque marqueur dispose maintenant d&amp;rsquo;un lien qui permet d&amp;rsquo;accéder à l&amp;rsquo;url du lieu. Pas mal, non ?!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.miximum.fr/wp-content/uploads/2013/05/markers_with_leaflet.png&quot; alt=&quot;markers_with_leaflet&quot; width=&quot;691&quot; height=&quot;295&quot; class=&quot;thumbnail aligncenter size-full wp-image-1387&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Un peu de dynamisme avec Backbone.js&lt;/h2&gt;
&lt;p&gt;Notre carte est bien sympathique, mais elle manque un peu de dynamisme. Chaque clic génère un rechargement complet de la page, ce qui va vite devenir fastidieux. Nous allons donc ajouter une couche de javascript qui va y remédier. Et pas n&amp;rsquo;importe quel javascript s&amp;rsquo;il vous plaît ! &lt;a href=&quot;http://backbonejs.org&quot;&gt;Nous allons utiliser Backbone.js.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Il fut un temps ou la création d&amp;rsquo;applications web dynamiques et &lt;em&gt;single page apps&lt;/em&gt; se faisait difficilement sans l&amp;rsquo;apparition de code jquery spaggheti particulièrement dégueulasse. Du js mélangé au html, des données stockées dans le dom, etc. Tout cela n&amp;rsquo;était pas sans rappeler le bon vieux temps pré-frameworks MVC ou PHP, HTML et requêtes SQL s&amp;rsquo;imbriquaient lubriquement sans la moindre pudeur.&lt;/p&gt;
&lt;p&gt;Heureusement, le monde Javascript a lui aussi gagné en maturité et de (trop ?) nombreux outils sont apparus pour remédier à ce problème. L&amp;rsquo;un des premiers et plus populaires est Backbone.js, que l&amp;rsquo;on qualifiera (pour simplifier de manière éhontée) de framework MVC côté client.&lt;/p&gt;
&lt;p&gt;Concrètement, Backbone.js fournit les outils pour gérer les données et leurs traitement via leurs propres classes ; il (ou elle ?) offre des vues pour gérer l&amp;rsquo;UI et rendre des templates à partir des données des modèles ; elle gère les événements pour permettre la synchronisation entre les interactions de l&amp;rsquo;utilisateur et les modifications des données ; elle propage l&amp;rsquo;enregistrement des données sur le serveur via des appels ajax à une api json ; elle propose une navigation en se basant sur &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/Guide/DOM/Manipulating_the_browser_history&quot; title=&quot;History javascript api&quot;&gt;l&amp;rsquo;API History&lt;/a&gt;. Bref ! Backbone fait pas mal de trucs.&lt;/p&gt;
&lt;p&gt;En revanche, Backbone.js est plus une librairie qu&amp;rsquo;un véritable framework, en ce sens qu&amp;rsquo;&lt;a href=&quot;https://speakerdeck.com/ammeep/unsuck-your-backbone&quot; title=&quot;Unsuck your Backbone&quot;&gt;elle n&amp;rsquo;impose pas de structure à votre application&lt;/a&gt;. Le cas échéant, on lui adjoindra &lt;a href=&quot;http://marionettejs.com/&quot;&gt;une surcouche comme Marionette.js&lt;/a&gt;, ou on préférera &lt;a href=&quot;http://angularjs.org/&quot;&gt;un vrai framework comme Angular.js&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Notre utilisation de Backbone sera trés simple puisque notre appli sera &lt;em&gt;read only&lt;/em&gt;. Mais c&amp;rsquo;est un bon début pour se mettre le pied à l&amp;rsquo;étrier.&lt;/p&gt;
&lt;h2&gt;Du dynamique sans la bolognaise&lt;/h2&gt;
&lt;p&gt;Reprenons notre template &lt;em&gt;map.html&lt;/em&gt;, effaçons notre bloc &lt;em&gt;extra_js&lt;/em&gt;, et remplaçons-le par ceci :&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&amp;nbsp;
// La librairie backbone et sa dépendance
&amp;lt;script src=&amp;quot;{{ STATIC_URL }}js/underscore.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&amp;quot;{{ STATIC_URL }}js/backbone.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp;
// C'est dans ce fichier que nous allons développer notre appli Backbone
&amp;lt;script src=&amp;quot;{{ STATIC_URL }}js/map/app.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp;
&lt;span style=&quot;color: #339933;&quot;&gt;&amp;lt;&lt;/span&gt;script type&lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Il nous faudra passer des paramètres de Python à Javascript&lt;/span&gt;
App.&lt;span style=&quot;color: #660066;&quot;&gt;Config&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// L'adresse à laquelle récupérer les marqueurs en json&lt;/span&gt;
    markerCollectionUrl&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;{% url 'markers_data' %}&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// L'url courante de la carte&lt;/span&gt;
    mapUrl&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;{% url 'map' %}&amp;quot;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt; citymapInit&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;map&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; bounds&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Quand la carte est prête, nous lançons l'application&lt;/span&gt;
    App.&lt;span style=&quot;color: #660066;&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;map&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notre application Backbone va définir un objet racine &lt;em&gt;App&lt;/em&gt;, qui va entre autre contenir les paramètres de configuration, et son point d&amp;rsquo;entrée sera la fonction &lt;em&gt;start&lt;/em&gt;, que nous appelerons pour lancer le schmilblick. Bon, et si nous y jetions y coup d&amp;rsquo;?il, à cette fameuse application ?&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// your_map_app/static/js/map/app.js&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; App &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    Models&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    Collections&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    Views&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    Routers&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    Config&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Nous commençons par définir notre objet &lt;em&gt;App&lt;/em&gt;, qui servira de conteneur pour toute l&amp;rsquo;appli. Backbone nous offre des outils pour déclarer des modèles et des collections, destinées à recevoir des listes de modèles.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&amp;nbsp;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Nous n'aurons pas de traitements à effectuer, aussi&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// notre modèle est-il vide&lt;/span&gt;
App.&lt;span style=&quot;color: #660066;&quot;&gt;Models&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;Marker&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; Backbone.&lt;span style=&quot;color: #660066;&quot;&gt;Model&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// L'API Backbone permet, une fois la collection déclarée, de&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// l'initialiser à partir de données json sans difficultés&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// particulières&lt;/span&gt;
App.&lt;span style=&quot;color: #660066;&quot;&gt;Collections&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;MarkerCollection&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; Backbone.&lt;span style=&quot;color: #660066;&quot;&gt;Collection&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    model&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; App.&lt;span style=&quot;color: #660066;&quot;&gt;Models&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;Marker&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    initialize&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;url&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; App.&lt;span style=&quot;color: #660066;&quot;&gt;Config&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;markerCollectionUrl&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    getBySlug&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;slug&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;findWhere&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt; slug&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; slug &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Nous avons défini la partie modèle de notre application. Les classes en question sont bien vides, vu que nous sommes en &lt;em&gt;read only&lt;/em&gt;. Nous allons maintenant définir les vues. Dans Backbone, les vues sont des classes chargées d&amp;rsquo;effectuer des actions (rendre un template, par exemple) en fonction d&amp;rsquo;un modèle ou d&amp;rsquo;une collection et des événements qui y sont rattachés.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&amp;nbsp;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// MarkerView est une classe à laquelle on passe un marqueur,&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// et qui sera chargée de l'afficher sur la carte via&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// l'API Leaflet&lt;/span&gt;
App.&lt;span style=&quot;color: #660066;&quot;&gt;Views&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;MarkerView&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; Backbone.&lt;span style=&quot;color: #660066;&quot;&gt;View&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
    &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// fonction lancée à l'instanciation de la vue&lt;/span&gt;
    initialize&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;options&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// L'objet map (API Leaflet) doit être passé en paramètre&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;map&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; options.&lt;span style=&quot;color: #660066;&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
&amp;nbsp;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Create the marker using leaflet api&lt;/span&gt;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Notez l'api d'accès aux données du modèle&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;marker&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; L.&lt;span style=&quot;color: #660066;&quot;&gt;marker&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;model&lt;/span&gt;.&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'lat'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;model&lt;/span&gt;.&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'lng'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Create the marker popup&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; popup &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; document.&lt;span style=&quot;color: #660066;&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'a'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        popup.&lt;span style=&quot;color: #660066;&quot;&gt;href&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; App.&lt;span style=&quot;color: #660066;&quot;&gt;Config&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;mapUrl&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;model&lt;/span&gt;.&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'slug'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;'/'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        popup.&lt;span style=&quot;color: #660066;&quot;&gt;innerHTML&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;model&lt;/span&gt;.&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'name'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// We have to bind the event here, because leaflets prevents&lt;/span&gt;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// the click event to bubble outside the map element&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; slug &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;model&lt;/span&gt;.&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'slug'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        popup.&lt;span style=&quot;color: #660066;&quot;&gt;onclick&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;event&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
            event.&lt;span style=&quot;color: #660066;&quot;&gt;preventDefault&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
            &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Lorsque l'internaute clique sur le lien, nous&lt;/span&gt;
            &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// indiquons à Backbone qu'un changement d'url doit être&lt;/span&gt;
            &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// intercepté&lt;/span&gt;
            Backbone.&lt;span style=&quot;color: #660066;&quot;&gt;history&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;navigate&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;slug &lt;span style=&quot;color: #339933;&quot;&gt;+&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;'/'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;marker&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;bindPopup&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;popup&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Render the marker to the map&lt;/span&gt;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// (Leaflet API)&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;marker&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;addTo&lt;/span&gt;&lt;span style=&quot;color: #009900;&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: #660066;&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// MapView est la vue principale. Elle va instancier la collection des marqueurs&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// et les afficher un par un&lt;/span&gt;
App.&lt;span style=&quot;color: #660066;&quot;&gt;Views&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;MapView&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; Backbone.&lt;span style=&quot;color: #660066;&quot;&gt;View&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    initialize&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;options&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;map&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; options.&lt;span style=&quot;color: #660066;&quot;&gt;map&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;markers&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;new&lt;/span&gt; App.&lt;span style=&quot;color: #660066;&quot;&gt;Collections&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;MarkerCollection&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Nous téléchargeons les données json pour instancier&lt;/span&gt;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// la collection. Dés que c'est fait, on lance la fonction&lt;/span&gt;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// de rendu.&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;listenTo&lt;/span&gt;&lt;span style=&quot;color: #009900;&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: #660066;&quot;&gt;markers&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;reset&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;render&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;markers&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt; reset&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;true&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    render&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;markers&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;color: #009900;&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: #660066;&quot;&gt;addOne&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    addOne&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;marker&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; view &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;new&lt;/span&gt; App.&lt;span style=&quot;color: #660066;&quot;&gt;Views&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;MarkerView&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
            model&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; marker&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
            map&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;map&lt;/span&gt;
        &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    getMarkerBySlug&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;slug&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;markers&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;getBySlug&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;slug&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Cette vue permettra de mettre à jour la page à partir d'un&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// marqueur donné&lt;/span&gt;
App.&lt;span style=&quot;color: #660066;&quot;&gt;Views&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;MainView&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; Backbone.&lt;span style=&quot;color: #660066;&quot;&gt;View&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    initialize&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;descriptionElement&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'#poi-main'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;titleElement&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; $&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'h1'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;sidebarElement&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'#poi-sidebar'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Nous utiliserons un template pour le rendu de la&lt;/span&gt;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// sidebar. Nous le définirons un peu plus tard&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;sidebarTemplate&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; _.&lt;span style=&quot;color: #660066;&quot;&gt;template&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;$&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'#poi-sidebar-template'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    render&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;descriptionElement&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #009900;&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: #660066;&quot;&gt;model&lt;/span&gt;.&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'description'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;titleElement&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #009900;&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: #660066;&quot;&gt;model&lt;/span&gt;.&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'name'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;sidebarElement&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #009900;&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: #660066;&quot;&gt;sidebarTemplate&lt;/span&gt;&lt;span style=&quot;color: #009900;&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: #660066;&quot;&gt;model&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;attributes&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Même si l&amp;rsquo;API utilisée peut dérouter dans un premier temps, le code est relativement simple. Une vue principale, MapView, récupère les données via l&amp;rsquo;API en instanciant une collection, puis pour chaque marqueur délègue son affichage en instanciant une vue spécifique.&lt;/p&gt;
&lt;p&gt;Nous avons notre modèle, nos vues. Il manque? le? le? controleur ! Bravo à ceux qui suivent.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;&amp;nbsp;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Dans l'API Backbone, un router permet de déclarer les différentes&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// urls disponibles, et de faire correspondre un traitement spécifique&lt;/span&gt;
&lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// à chacune d'entre elles&lt;/span&gt;
App.&lt;span style=&quot;color: #660066;&quot;&gt;Routers&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;MapRouter&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; Backbone.&lt;span style=&quot;color: #660066;&quot;&gt;Router&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;extend&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    initialize&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;options&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Nous n'utiliserons que deux urls pour notre appli&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;route&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;''&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;'map'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;route&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;':slug/'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;'pointOfInterest'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// instancions maintenant les vues principales&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;mapView&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;new&lt;/span&gt; App.&lt;span style=&quot;color: #660066;&quot;&gt;Views&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;MapView&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt; map&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; options.&lt;span style=&quot;color: #660066;&quot;&gt;map&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;mainView&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;new&lt;/span&gt; App.&lt;span style=&quot;color: #660066;&quot;&gt;Views&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;MainView&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    map&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// La carte est déjà affichée, rien à faire ici&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    pointOfInterest&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;slug&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// L'utilisateur vient de cliquer sur un lien, il&lt;/span&gt;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// faut afficher le marqueur correspondant&lt;/span&gt;
&amp;nbsp;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Récupérons le marqueur en question, à partir du &amp;quot;slug&amp;quot; passé en url&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; marker &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;mapView&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;getMarkerBySlug&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;slug&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&amp;nbsp;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// Il nous suffit de passer le bon marqueur à la vue&lt;/span&gt;
        &lt;span style=&quot;color: #006600; font-style: italic;&quot;&gt;// et de la laisser s'occuper du rendu&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;mainView&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;model&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; marker&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;mainView&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;render&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Il manque une chose à notre appli. Notre point d&amp;rsquo;entrée, la fameuse fonction &lt;em&gt;start&lt;/em&gt;. Son seul but est d&amp;rsquo;initialiser le contrôleur.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;javascript&quot; style=&quot;font-family:monospace;&quot;&gt;App.&lt;span style=&quot;color: #660066;&quot;&gt;start&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;map&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;var&lt;/span&gt; mapRouter &lt;span style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;new&lt;/span&gt; App.&lt;span style=&quot;color: #660066;&quot;&gt;Routers&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;MapRouter&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt; map&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; map &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
    Backbone.&lt;span style=&quot;color: #660066;&quot;&gt;history&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        pushState&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
        root&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; App.&lt;span style=&quot;color: #660066;&quot;&gt;Config&lt;/span&gt;.&lt;span style=&quot;color: #660066;&quot;&gt;mapUrl&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
        silent&lt;span style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;
    &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Tadaaaam ! Le &lt;a href=&quot;http://mezzanine-demo.miximum.fr/la-ville/cartographie/&quot;&gt;résultat est visible sur ce site de démo&lt;/a&gt;, et &lt;a href=&quot;https://github.com/thibault/mezzanine-demo&quot;&gt;le code est sur Github&lt;/a&gt;. Dans le prochain billet, j&amp;rsquo;essaierai d&amp;rsquo;employer encore plus de technos &lt;i&gt;hype&lt;/i&gt; d&amp;rsquo;un coup.&lt;/p&gt;

						&lt;div id=&quot;pdrp_endAttribution&quot;&gt;
						photo by: 
						 
							&lt;a href=&quot;http://flickr.com/11599314@N00/2183156848&quot; target=&quot;_blank&quot; class=&quot;pdrp_link pdrp_attributionLink&quot;&gt;
								Luz Adriana Villa A.&lt;/a&gt;
						&lt;/div&gt;
					&lt;p&gt;Cet article &lt;a href=&quot;http://www.miximum.fr/tutos/1375-navigation-dynamique-avec-backbone-js-sur-une-carte-openstreetmap&quot;&gt;Navigation dynamique avec Backbone.js sur une carte OpenStreetMap&lt;/a&gt; est apparu en premier sur &lt;a href=&quot;http://www.miximum.fr&quot;&gt;Miximum&lt;/a&gt;.&lt;/p&gt;</description>
		<pubDate>Wed, 15 May 2013 18:34:26 +0200</pubDate>
		<guid>http://www.miximum.fr/tutos/1375-navigation-dynamique-avec-backbone-js-sur-une-carte-openstreetmap</guid>
	</item>
		<item>
		<title>La programmation n'est pas industrialisable</title>
		<link>http://blog.mageekbox.net/?post/2013/05/15/La-programmation-n-est-pas-industrialisable</link>
		<description>&lt;p&gt;Je poursuis ici ma réflexion entamée dans mon &lt;a href=&quot;http://blog.mageekbox.net/?post/2013/05/07/Programmer-c-est-jouer-au-Lego-ou-pas&quot;&gt;précédent billet&lt;/a&gt; concernant la difficulté de certaines personnes à comprendre qu?il est impossible de quantifier finement et surtout de manière fiable le temps nécessaire à la réalisation d?un logiciel.&lt;/p&gt;
&lt;p&gt;Plus j?y pense, plus je me dis que le problème vient du fait que la personne qui demande un tel chiffrage à un développeur pense que la création d?un logiciel est le résultat d?une industrialisation.&lt;/p&gt;
&lt;p&gt;Dans notre contexte, la définition la plus adéquate de l?industrialisation est la suivante, d?après &lt;a href=&quot;http://fr.wikipedia.org/&quot;&gt;Wikipedia&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;
&lt;blockquote cite=&quot;http://fr.wikipedia.org/wiki/Industrialisation&quot;&gt;&lt;p&gt;L?industrialisation désigne le processus de transfert du processus de création de l?offre au processus de réalisation de l?offre.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En résumé, lors de la phase d?industrialisation d?un produit, l?ensemble de la phase de conception de ce produit a été réalisé et il est donc possible de définir précisément les étapes devant être successivement suivies pour l?obtenir à l?extrémité de la chaîne de production.&lt;/p&gt;
&lt;p&gt;De plus, puisqu?au moins un exemplaire du produit existe dans le monde réel à l?issue du processus de création, il est possible de quantifier très précisément les ressources temporelles et matérielles qui seront nécessaires pour sa fabrication à grande échelle.&lt;/p&gt;
&lt;p&gt;Enfin, pour la même raison, ses spécifications sont clairement définies et il est donc possible de s?y référer afin d?effectuer tout au long de la chaîne de fabrication des contrôles précis pour vérifier la qualité du produit final.&lt;/p&gt;    &lt;p&gt;En résumé, l?industrialisation permet de dupliquer à grande échelle le produit conçu lors de la phase de création en s?assurant de sa qualité et en maîtrisant les coûts au plus juste, car l?ensemble de ses caractéristiques est connu précisément.&lt;/p&gt;
&lt;p&gt;Or, n'en déplaise à certains, le développement logiciel est par essence une activité créative, au même titre que l?écriture d?un livre, la réalisation d?un dessin ou d?une peinture ou l?élaboration d?une nouvelle théorie mathématique.&lt;/p&gt;
&lt;p&gt;En effet, si le programme existait déjà, personne ne demanderait à un développeur de l?écrire, donc de le créer?&lt;/p&gt;
&lt;p&gt;La conception de logiciel ne peut donc être industrialisée puisque comme nous l?avons constaté précédemment, il est indispensable de disposer d?au moins un exemplaire physique pour pouvoir estimer précisément les ressources nécessaires à sa fabrication à grande échelle et avoir les informations nécessaires aux divers contrôles de qualité.&lt;/p&gt;
&lt;p&gt;Il est donc très délicat sinon impossible d?estimer de manière fiable les ressources humaines, techniques et temporelles nécessaires à la conception d?un logiciel, et encore plus difficile de définir les spécifications permettant de s?assurer qu?il répond bien aux besoins.&lt;/p&gt;
&lt;p&gt;J'en connais qui me rétorqueront qu?il est tout de même possible d?industrialiser à minima le développement d?un logiciel à l?aide de framework et autres briques logicielles «&amp;nbsp;clef en main&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;Cependant, la colle nécessaire pour assembler ces briques afin d'obtenir le programme demandé devra être inventée et nécessitera donc toujours un effort créatif.&lt;/p&gt;
&lt;p&gt;En conséquence, même en recourant à de tels outils, il reste impossible de donner une estimation précise et fiable du temps nécessaire à la réalisation d?un programme.&lt;/p&gt;
&lt;p&gt;Car en réalité, les frameworks et autres briques logicielles ne permettent pas d?industrialiser le processus de développement d?un logiciel.&lt;/p&gt;
&lt;p&gt;Ils facilitent uniquement la vie du développeur en lui permettant d?utiliser du code en théorie de bonne qualité, correctement documenté et conçu pour répondre aux besoins essentiels et communs à la plupart des programmes.&lt;/p&gt;
&lt;p&gt;Évidemment, cela lui permet de développer plus rapidement son programme, mais ce n?est pas pour cela qu?il pourra estimer plus précisément le temps qu?il mettra à le concevoir dans son intégralité, d?autant que parfois, ces outils peuvent au contraire lui faire perdre du temps indépendamment de sa volonté.&lt;/p&gt;
&lt;p&gt;De même, certains outils tels que les frameworks de tests unitaires ou fonctionnels ainsi que certaines méthodologies comme le &lt;abbr title=&quot;Test Driven Development&quot;&gt;TDD&lt;/abbr&gt; permettent effectivement d?estimer la qualité du code, tout comme les méthodes agiles permettent d?estimer le temps nécessaire à la réalisation d?un ensemble de tâches en se basant sur le temps passé précédemment pour réaliser d?autres tâches plus ou moins complexes.&lt;/p&gt;
&lt;p&gt;Cependant, ces estimations sont empiriques et n?ont donc pas la précision absolue et intangible de celles ayant court dans le cadre d?un processus industrialisé. &lt;/p&gt;
&lt;p&gt;En conclusion, demander à un développeur le temps qu?il mettra à développer un logiciel n?est pas la même chose que demander à un peintre en bâtiment le temps qu?il va mettre et le nombre de pots de peinture dont il aura besoin pour peindre un mur de 12&amp;nbsp;m² en vert.&lt;/p&gt;
&lt;div&gt;&lt;a href=&quot;http://blog.mageekbox.net/public/asciiMonaLisa.png&quot; title=&quot;Mona Lisa en ascii art&quot;&gt;&lt;img src=&quot;http://blog.mageekbox.net/public/.asciiMonaLisa_m.jpg&quot; alt=&quot;Mona Lisa en ascii art&quot; style=&quot;margin: 10px auto; display: block;&quot; title=&quot;Mona Lisa en ascii art, mai 2013&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;C?est en fait comme demander,&amp;nbsp;s?ils étaient encore de ce monde,&amp;nbsp;à Léonard de Vinci le temps qu?il va mettre à peindre le tableau d?une femme posant devant un paysage ou bien à Albert Einstein le temps qu?il lui faut pour inventer une théorie expliquant la relation entre l'espace, le temps, et peut être éventuellement d'autres paramêtres.&lt;/p&gt;
&lt;p&gt;Et je suis prêt à parier que dans les deux cas, la réponse serait du style «&amp;nbsp;un certain temps&amp;nbsp;».&lt;/p&gt;</description>
		<pubDate>Wed, 15 May 2013 14:00:00 +0200</pubDate>
		<guid>http://blog.mageekbox.net/?post/2013/05/15/La-programmation-n-est-pas-industrialisable</guid>
	</item>
		<item>
		<title>Revue de presse industrialisation semaines 19-20</title>
		<link>http://feedproxy.google.com/~r/industrialisation-php/~3/Ssu2RkZSRLY/</link>
		<description>Le temps passe, PHP et ses communautés continuent à évoluer à grands pas ! De PHP à JavaScript Pour commencer cette revue de presse, un petit clin d'oeil à atoum, le fameux framework de tests unitaires en PHP, qui désormais dispose d'un fork en JavaScript développé par Julien Bianchi. Outils - console PHP Quoi de [...]&lt;img src=&quot;http://feeds.feedburner.com/~r/industrialisation-php/~4/Ssu2RkZSRLY&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
		<pubDate>Tue, 14 May 2013 11:54:20 +0200</pubDate>
		<guid>http://feedproxy.google.com/~r/industrialisation-php/~3/Ssu2RkZSRLY/</guid>
	</item>
		<item>
		<title>Tester l?existence d?une fonction Javascript</title>
		<link>http://blog.nicolashachet.com/2013/05/13/technologies/javascript/tester-lexistence-dune-fonction-javascript/</link>
		<description>Ci-dessous une petite astuce Javascript pour vérifier qu&amp;#8217;une fonction est définie ou non. Le comportement rappelle la fonction &amp;#171;&amp;#160;function_exists()&amp;#160;&amp;#187; en PHP. Le test se base sur la fonction Javascript typeof() qui renvoi functionsi le handler passé est déclarée comme fonction. Il suffit de décommenter &amp;#8216;mafonction&amp;#8217; pour constater que l&amp;#8217;existence de la fonction est correctement prise en compte. Pour vérifier si un handler est utilisé comme une fonction ou comme une variable, vous pouvez utiliser le [...]</description>
		<pubDate>Mon, 13 May 2013 23:27:17 +0200</pubDate>
		<guid>http://blog.nicolashachet.com/2013/05/13/technologies/javascript/tester-lexistence-dune-fonction-javascript/</guid>
	</item>
		<item>
		<title>PHP 5.4.15 et 5.3.25 et 5.5.0RC1</title>
		<link>http://webriver.eu/?q=2013/05/11/php-5415-et-5325-et-550rc1</link>
		<description>&lt;!-- google_ad_section_start --&gt;&lt;div class=&quot;field field-name-field-image field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;og:image rdfs:seeAlso&quot; resource=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/php_0.png?itok=hS8sUMyx&quot;&gt;&lt;a href=&quot;/?q=2013/05/11/php-5415-et-5325-et-550rc1&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/php_0.png?itok=hS8sUMyx&quot; width=&quot;220&quot; height=&quot;154&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p&gt;L'équipe de développement PHP vient de publier 3 nouvelles versions de PHP, concernant les branches :&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;PHP 5.3 (5.3.25)&lt;/li&gt;
&lt;li&gt;PHP 5.4 (5.4.15)&lt;/li&gt;
&lt;li&gt;PHP 5.5 (5.5.0 rc 1)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Les 2 premières versions correspondent au cycle de vie des mises à jours mensuel de PHP. Elles corrigent plus de 10 bugs et la Team de PHP Group encourage de mettre à jour vos différentes versions. Pour connaître l'ensemble des points , vous pouvez consulter le fichier de 'changeLog'.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- google_ad_section_end --&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/php&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;php&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/55&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;5.5&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
		<pubDate>Sat, 11 May 2013 21:14:44 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/11/php-5415-et-5325-et-550rc1</guid>
	</item>
		<item>
		<title>PHP 5.4.11 et 5.3.21 et 5.5.0RC1</title>
		<link>http://webriver.eu/?q=2013/05/11/php-5411-et-5321-et-550rc1</link>
		<description>&lt;!-- google_ad_section_start --&gt;&lt;div class=&quot;field field-name-field-image field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;og:image rdfs:seeAlso&quot; resource=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/php_0.png?itok=hS8sUMyx&quot;&gt;&lt;a href=&quot;/?q=2013/05/11/php-5411-et-5321-et-550rc1&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/php_0.png?itok=hS8sUMyx&quot; width=&quot;220&quot; height=&quot;154&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p&gt;L'équipe de développement PHP vient de publier 3 nouvelles versions de PHP, concernant les branches :&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;PHP 5.3&lt;/li&gt;
&lt;li&gt;PHP 5.4&lt;/li&gt;
&lt;li&gt;PHP 5.5&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Les 2 premières versions correspondent au cycle de vie des mises à jours mensuel de PHP. Elles corrigent plus de 10 bugs et la Team de PHP Group encourage de mettre à jour vos différentes versions. Pour connaître l'ensemble des points , vous pouvez consulter le fichier de 'changeLog'.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- google_ad_section_end --&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/php&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;php&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/55&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;5.5&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
		<pubDate>Sat, 11 May 2013 21:14:44 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/11/php-5411-et-5321-et-550rc1</guid>
	</item>
		<item>
		<title>Caranille 3.5</title>
		<link>http://webriver.eu/?q=2013/05/10/caranille-35</link>
		<description>&lt;!-- google_ad_section_start --&gt;&lt;div class=&quot;field field-name-field-image field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;og:image rdfs:seeAlso&quot; resource=&quot;http://webriver.eu/?q=sites/default/files/styles/medium/public/field/image/mmorpg_logo.jpg&amp;amp;itok=Jc3h6f7G&quot;&gt;&lt;a href=&quot;/?q=2013/05/10/caranille-35&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/?q=sites/default/files/styles/medium/public/field/image/mmorpg_logo.jpg&amp;amp;itok=Jc3h6f7G&quot; width=&quot;220&quot; height=&quot;160&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p&gt;Caranille est un MMORPG (massively multiplayer online role-playing game), c'est à dire un jeu de rôle pour le web, sous licence GNU GPL, réalisé en PHP5 et MySQL. Il va vous permettre de concevoir et bâtir rapidement votre propre environnement de jeu, utilisable en multijoueur.&lt;/p&gt;
&lt;p&gt;Ce logiciel propose une gestion modulable en créative commons, avec la possibilité de contribuer et de développer vos propres modules en PHP.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- google_ad_section_end --&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/caranille&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;caranille&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/php&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;php&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/mysql&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;mysql&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/mmorpg&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;mmorpg&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
		<pubDate>Fri, 10 May 2013 13:13:25 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/10/caranille-35</guid>
	</item>
		<item>
		<title>Caranille 3.5</title>
		<link>http://webriver.eu/?q=2013/05/10/caranille-35</link>
		<description>&lt;!-- google_ad_section_start --&gt;&lt;div class=&quot;field field-name-field-image field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;og:image rdfs:seeAlso&quot; resource=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/mmorpg_logo.jpg?itok=Jc3h6f7G&quot;&gt;&lt;a href=&quot;/?q=2013/05/10/caranille-35&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/mmorpg_logo.jpg?itok=Jc3h6f7G&quot; width=&quot;220&quot; height=&quot;160&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p&gt;Caranille est un MMORPG (massively multiplayer online role-playing game), c'est à dire un jeu de rôle pour le web, sous licence GNU GPL, réalisé en PHP5 et MySQL. Il va vous permettre de concevoir et bâtir rapidement votre propre environnement de jeu, utilisable en multijoueur.&lt;/p&gt;
&lt;p&gt;Ce logiciel propose une gestion modulable en créative commons, avec la possibilité de contribuer et de développer vos propres modules en PHP.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- google_ad_section_end --&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/caranille&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;caranille&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/php&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;php&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/mysql&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;mysql&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/mmorpg&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;mmorpg&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
		<pubDate>Fri, 10 May 2013 13:13:25 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/10/caranille-35</guid>
	</item>
		<item>
		<title>Les stands PHP au salon solutions linux 2013</title>
		<link>http://blog.hello-design.fr/index.php?post/2013/05/09/Les-stands-PHP-au-salon-solutions-linux-2013</link>
		<description>    &lt;p&gt;Le salon « &lt;a href=&quot;http://www.solutionslinux.fr&quot;&gt;solutions linux&lt;/a&gt; » va se dérouler le 28 et 29 mai 2013 au Cnit à Paris. Et de nombreuses sociétés Open source seront présentes, ainsi que de nombreux acteurs du langage PHP.
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Au niveau du village associatif, le langage PHP sera aussi représenté avec les associations comme Dolibar, &lt;a href=&quot;http://www.afup.org&quot;&gt;AFUP&lt;/a&gt; (Association Française des Utilisateurs de PHP), &lt;a href=&quot;http://www.drupalfr.org&quot;&gt;Drupal&lt;/a&gt;, GLPI...
&lt;br /&gt;
&lt;br /&gt;
Pour ma part, je vais m'occuper des stands AFUP et Drupal, situé sur les stands A34 et A32, mais aussi de nombreuses acteurs de ces communautés seront présents pour répondre à toutes vos questions et bien sur parler de CMS ou encore du langage PHP.
&lt;br /&gt;
&lt;br /&gt;
Par ailleurs, les elePHPants bleus et rose, effectueront le déplacement pour rechercher de nouvelles familles d'accueils et surtout ils adorent faire des calins, c'est pourquoi il ne faudra pas être surpris de leurs demandes.
&lt;br /&gt;
&lt;br /&gt;
Mais sans plus attendre, il faut vous &lt;a href=&quot;http://www.solutionslinux.fr/preinscription.html&quot;&gt;inscrire&lt;/a&gt; gratuitement sur le stand du salon linux pour venir nous voir.
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Le salon Solutions Linux qui se déroule du  28 et 29 mai 2013
&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://blog.hello-design.fr/public/evenement/.Linux_468x60_m.jpg&quot; alt=&quot;solutions linux 2013&quot; title=&quot;solutions linux 2013, mai 2013&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;</description>
		<pubDate>Thu, 09 May 2013 14:20:43 +0200</pubDate>
		<guid>http://blog.hello-design.fr/index.php?post/2013/05/09/Les-stands-PHP-au-salon-solutions-linux-2013</guid>
	</item>
		<item>
		<title>Actualité de développement PECL, 2013 semaine 18 et 19</title>
		<link>http://webriver.eu/?q=2013/05/08/actualit%C3%A9-de-d%C3%A9veloppement-pecl-2013-semaine-18-et-19</link>
		<description>&lt;!-- google_ad_section_start --&gt;&lt;div class=&quot;field field-name-field-image field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;og:image rdfs:seeAlso&quot; resource=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/pecl.jpeg?itok=kfHFWok-&quot;&gt;&lt;a href=&quot;/?q=2013/05/08/actualit%C3%A9-de-d%C3%A9veloppement-pecl-2013-semaine-18-et-19&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/pecl.jpeg?itok=kfHFWok-&quot; width=&quot;220&quot; height=&quot;157&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p&gt;7 Paquets ont été mis à jour ces 2 dernières semaines :  &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Semaine 18 du 29 avril 2013 &lt;/p&gt;
&lt;ul style=&quot;margin-left: 40px;&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://pecl.php.net/get/redis/2.2.3&quot;&gt;redis 2.2.3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pecl.php.net/get/zip/1.12.1&quot;&gt;zip 1.12.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pecl.php.net/get/pq/0.2.0&quot;&gt;pq 0.2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pecl.php.net/get/mongo/1.4.0beta1&quot;&gt;mongo 1.4.0beta1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;  Semaine 19 du 5 mai 2013 &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- google_ad_section_end --&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/pecl&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;pecl&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/php&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;php&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
		<pubDate>Wed, 08 May 2013 10:45:02 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/08/actualit%C3%A9-de-d%C3%A9veloppement-pecl-2013-semaine-18-et-19</guid>
	</item>
		<item>
		<title>Actualité de développement PEAR, 2013 semaine 18 et 19</title>
		<link>http://webriver.eu/?q=2013/05/08/actualit%C3%A9-de-d%C3%A9veloppement-pear-2013-semaine-18-et-19</link>
		<description>&lt;!-- google_ad_section_start --&gt;&lt;div class=&quot;field field-name-field-image field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;og:image rdfs:seeAlso&quot; resource=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/pear_4.png?itok=zmxvBcqk&quot;&gt;&lt;a href=&quot;/?q=2013/05/08/actualit%C3%A9-de-d%C3%A9veloppement-pear-2013-semaine-18-et-19&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/pear_4.png?itok=zmxvBcqk&quot; width=&quot;220&quot; height=&quot;110&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;2 Paquets ont été mis à jour ces 2 dernières semaines :&lt;/p&gt;
&lt;p&gt;Semaine 18 du  29 avril 2013&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://pear.php.net/package/XML_XRD/download/0.3.0/&quot;&gt;XML_XRD 0.3.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Semaine 19 du  6 mai 2013&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://pear.php.net/package/Net_WebFinger/download/0.3.0/&quot;&gt;Net_WebFinger 0.3.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;PEAR est la bibliothèque de composants PHP.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- google_ad_section_end --&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/pear&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;pear&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/php&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;php&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
		<pubDate>Wed, 08 May 2013 09:15:48 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/08/actualit%C3%A9-de-d%C3%A9veloppement-pear-2013-semaine-18-et-19</guid>
	</item>
		<item>
		<title>Advanced module manager et  page d'accueil : les modules ne s'affichent pas</title>
		<link>http://www.pulsar-informatique.com/Actus-Blog/Entry/advanced-module-manager-et-page-daccueil-les-modules-ne-saffichent-pas.html</link>
		<description>Advanced module manager est une extension très util que nous utilisons depuis un moemnt à Puslar, elle permet de sélectionner finement comment afficher chaque module en s'appuyant sur des menus, de sfiltres PHP, du contenu, etc.&lt;br&gt;L'un des filtres proposés est l'affichage en page d'accueil, et pas sur l'élément de menu page accueil, dont plusieurs modules ont tendance à hériter, forcément.&lt;br&gt;Mais ce filtre ne fonctionne pas si l'URL utilisée contient un port. Pour que ce filtre fonctionne même avec un port dans votre URL, rendez-vous dans votre fichier:&lt;br&gt;plugins\system\nnframework\helpers\assignments\homepage.php&lt;br&gt;et modifier la fonction checkPass en ajoutant sous:&lt;br&gt;&lt;br&gt;
&lt;p class=&quot;code&quot;&gt;// remove trailing / $root = trim(preg_replace('#/$#', '', $root));&lt;/p&gt;
&lt;br&gt;&lt;br&gt;&amp;nbsp;les lignes suivantes:&lt;br&gt;&lt;br&gt;
&lt;p class=&quot;code&quot;&gt;//remove the port&lt;br&gt; $root = preg_replace('#:[0-9]*#', '', $root);&lt;/p&gt;</description>
		<pubDate>Thu, 09 May 2013 09:36:50 +0200</pubDate>
		<guid>http://www.pulsar-informatique.com/Actus-Blog/Entry/advanced-module-manager-et-page-daccueil-les-modules-ne-saffichent-pas.html</guid>
	</item>
		<item>
		<title>Advanced module manager et  page d'accueil : les modules ne s'affichent pas</title>
		<link>http://www.pulsar-informatique.com/Actus-Blog/Entry/advanced-module-manager-et-page-daccueil-les-modules-ne-saffichent-pas.html</link>
		<description>Advanced module manager est une extension très util que nous utilisons depuis un moemnt à Puslar, elle permet de sélectionner finement comment afficher chaque module en s'appuyant sur des menus, de sfiltres PHP, du contenu, etc.&lt;br&gt;L'un des filtres proposés est l'affichage en page d'accueil, et pas sur l'élément de menu page accueil, dont plusieurs modules ont tendance à hériter, forcément.&lt;br&gt;Mais ce filtre ne fonctionne pas si l'URL utilisée contient un port. Pour que ce filtre fonctionne même avec un port dans votre URL, rendez-vous dans votre fichier:&lt;br&gt;plugins\system\nnframework\helpers\assignments\homepage.php&lt;br&gt;et modifier la fonction checkPass en ajoutant sous:&lt;br&gt;&lt;br&gt;
&lt;p class=&quot;code&quot;&gt;// remove trailing / $root = trim(preg_replace('#/$#', '', $root));&lt;/p&gt;
&lt;br&gt;&lt;br&gt;&amp;nbsp;les lignes suivantes:&lt;br&gt;&lt;br&gt;
&lt;p class=&quot;code&quot;&gt;//remove the port&lt;br&gt; $root = preg_replace('#:[0-9]*#', '', $root);&lt;/p&gt;</description>
		<pubDate>Thu, 09 May 2013 09:36:50 +0200</pubDate>
		<guid>http://www.pulsar-informatique.com/Actus-Blog/Entry/advanced-module-manager-et-page-daccueil-les-modules-ne-saffichent-pas.html</guid>
	</item>
		<item>
		<title>28-29 mai 2013 ? AFUP sera présent à Solution Linux</title>
		<link>http://afup.org/pages/site/?route=actualites/688/afup-sera-present-solution-linux</link>
		<description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;&quot;&gt;Le salon &quot;SOLUTIONS LINUX&quot; 2013 se d&amp;eacute;roule le 28 et 29 mai 2013 au CNIT / La d&amp;eacute;fence.&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;&quot;&gt;L'Association Fran&amp;ccedil;aise des Utilisateurs de PHP (AFUP) sera sur le stand A34 dans la partie village associatif.&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;&quot;&gt;Nous vous invitons &amp;agrave; venir nous voir pour parler de nos prochains &amp;eacute;v&amp;eacute;nements PHP : Forum PHP, les meetups des antennes, le langage...&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot; style=&quot;position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;&quot;&gt;Nous vous attendons nombreux et l'inscription est gratuite en vous inscrivant au pr&amp;eacute;alable.&lt;/div&gt;
&lt;p&gt;L'Association Fran&amp;ccedil;aise des Utilisateurs de PHP (AFUP) sera sur le stand A34 dans la partie village associatif.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Nous vous invitons &amp;agrave; venir nous voir pour parler de nos prochains &amp;eacute;v&amp;eacute;nements PHP : Forum PHP, les meetups des antennes, le langage...&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Nous vous attendons nombreux et l'inscription est gratuite en vous inscrivant au pr&amp;eacute;alable.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.solutionslinux.fr/preinscription.html&quot;&gt;Formulaire d'inscriptions&lt;/a&gt;&lt;/p&gt;</description>
		<pubDate>Tue, 07 May 2013 00:00:00 +0200</pubDate>
		<guid>http://afup.org/pages/site/?route=actualites/688/afup-sera-present-solution-linux</guid>
	</item>
		<item>
		<title>AgoraCMS en phase de devenir un succès</title>
		<link>http://webriver.eu/?q=2013/05/07/agoracms-en-phase-de-devenir-un-succ%C3%A8s</link>
		<description>&lt;!-- google_ad_section_start --&gt;&lt;div class=&quot;field field-name-field-image field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;og:image rdfs:seeAlso&quot; resource=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/logo_agoracms_5.png?itok=ZM5LyJ4F&quot;&gt;&lt;a href=&quot;/?q=2013/05/07/agoracms-en-phase-de-devenir-un-succ%C3%A8s&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/logo_agoracms_5.png?itok=ZM5LyJ4F&quot; width=&quot;220&quot; height=&quot;75&quot; alt=&quot;agoracms&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p&gt; &lt;/p&gt;
&lt;p style=&quot;margin-bottom: 0cm&quot;&gt;&lt;span style=&quot;line-height: 1.538em;&quot;&gt;Le 1&lt;/span&gt;&lt;sup&gt;er&lt;/sup&gt;&lt;span style=&quot;line-height: 1.538em;&quot;&gt; événement dédié aux CMS, appelé « &lt;a href=&quot;http://www.agoracms.com/&quot;&gt;AgoraCMS&lt;/a&gt; » se déroule le 15 mai prochain à la Maison des Associations, Paris 13, est en phase de devenir un succès, dont le site &lt;a href=&quot;http://webriver.eu&quot;&gt;WebRIVER&lt;/a&gt; est partenaire.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 0cm&quot;&gt; &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- google_ad_section_end --&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/agoracms&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;agoracms&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/cms&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;cms&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/agora&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;agora&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
		<pubDate>Tue, 07 May 2013 12:42:15 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/07/agoracms-en-phase-de-devenir-un-succ%C3%A8s</guid>
	</item>
		<item>
		<title>Chroniques jQuery, épisode 115</title>
		<link>http://feedproxy.google.com/~r/Mathieurobincom/~3/CzgdsgrcWHQ/</link>
		<description>&lt;p style=&quot;text-align: justify;&quot;&gt;Pas grand chose cette semaine, pratique pour écrire cet épisode à l&amp;rsquo;arrache.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Mise à disposition de &lt;a title=&quot;jQuery UI 1.10.3&quot; href=&quot;http://blog.jqueryui.com/2013/05/jquery-ui-1-10-3&quot; target=&quot;_blank&quot;&gt;jQuery UI 1.10.3&lt;/a&gt;. Cette version de maintenance apporte des correctifs pour Draggable, Sortable, Accordion, Autocomplete, Button, Datepicker, Menu et Progressbar. Dans le lien proposé, vous trouverez le changelog complet.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Un livre est disponible sur TutorialZine, &lt;a title=&quot;jQuery Tickshots - TutorialZine&quot; href=&quot;http://tutorialzine.com/2013/04/check-out-jquery-trickshots-our-first-book/&quot; target=&quot;_blank&quot;&gt;jQuery Trickshots&lt;/a&gt;. Il n&amp;rsquo;existe pas de version papier, étant seulement dispo en version électronique tous formats classiques : pdf, epub et mobi. Dans le lien vous pourrez obtenir le chapitre dédié à la partie Ajax gratuitement.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Avant de conclure, je voulais vous parler de l&amp;rsquo;article de l&amp;rsquo;ami Megaptery qui parle de &lt;a title=&quot;MixItUp&quot; href=&quot;http://www.megaptery.com/2013/05/mixitup-filtrez-triez-donnees-dynamiquement-jquery.html&quot; target=&quot;_blank&quot;&gt;MixItUp&lt;/a&gt;. Ce dernier est un plugin d&amp;rsquo;organisation de données présentées sous formes de structures HTML définies. Pas très original mais vu qu&amp;rsquo;il est très moderniste en se servant des dernières technos web, je ne pouvais qu&amp;rsquo;encourager.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Enfin, j&amp;rsquo;ai vu passer &lt;a title=&quot;Jackbone&quot; href=&quot;http://www.fovea.cc/jackbone/&quot; target=&quot;_blank&quot;&gt;Jackbone&lt;/a&gt;, un framework qui souhaite allier jQuery Mobile avec Backbone. Pourquoi pas. A tester.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Comme d&amp;rsquo;habitude, vous pouvez retrouver l&amp;rsquo;ensemble de ces liens sur un &lt;a title=&quot;Episode 115 - Evernote&quot; href=&quot;https://www.evernote.com/pub/mathrobin/episode115&quot; target=&quot;_blank&quot;&gt;carnet Evernote dédié partagé&lt;/a&gt;.&lt;/p&gt;
 &lt;p&gt;&lt;a href=&quot;http://www.mathieurobin.com/?flattrss_redirect&amp;amp;id=3071&amp;amp;md5=6b3c81f8c28248d14e81adb7614256f6&quot; title=&quot;Flattr&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.mathieurobin.com/wp-content/plugins/flattr/img/flattr-badge-large.png&quot; alt=&quot;flattr this!&quot;/&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;feedflare&quot;&gt;
&lt;a href=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?a=CzgdsgrcWHQ:0N738CA4-Q8:yIl2AUoC8zA&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?d=yIl2AUoC8zA&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?a=CzgdsgrcWHQ:0N738CA4-Q8:qj6IDK7rITs&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?d=qj6IDK7rITs&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?a=CzgdsgrcWHQ:0N738CA4-Q8:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?i=CzgdsgrcWHQ:0N738CA4-Q8:D7DqB2pKExk&quot; border=&quot;0&quot;&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src=&quot;http://feeds.feedburner.com/~r/Mathieurobincom/~4/CzgdsgrcWHQ&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
		<pubDate>Mon, 06 May 2013 11:45:24 +0200</pubDate>
		<guid>http://feedproxy.google.com/~r/Mathieurobincom/~3/CzgdsgrcWHQ/</guid>
	</item>
		<item>
		<title>Ce mois-ci sur internals@php - Avril 2013</title>
		<link>http://blog.pascal-martin.fr/post/php-mailing-list-internals-avril-2013?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=php-mailing-list-internals-avril-2013</link>
		<description>
            



&lt;p&gt;

&lt;/p&gt;

&lt;p&gt;Après un &lt;a href=&quot;http://blog.pascal-martin.fr/post/php-mailing-list-internals-mars-2013&quot;&gt;mois de mars&lt;/a&gt; relativement calme, voici mon dépilage d?&lt;code&gt;internals@&lt;/code&gt; pour le &lt;strong&gt;mois d?avril 2013&lt;/strong&gt;, qui poursuit la tendance avec &lt;em&gt;seulement&lt;/em&gt; 359 mails.&lt;/p&gt;

&lt;p&gt;Sous forme d?un graphique représentant le nombre de mails par mois sur les trois dernières années, on obtient &lt;em&gt;(l?historique depuis 1998 est disponible &lt;a href=&quot;http://blog.pascal-martin.fr/public/internals-php/nombre-de-mails-internals-2013-04-historique-complet.png&quot;&gt;ici&lt;/a&gt;)&lt;/em&gt; :&lt;/p&gt;

&lt;p&gt;&lt;span style=&quot;display:block;text-align:center;&quot;&gt;&lt;a href=&quot;http://blog.pascal-martin.fr/public/internals-php/nombre-de-mails-internals-2013-04.png&quot;&gt;&lt;img alt-src=&quot;data:image/gif;base64,R0lGODdhAQABAOcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///ywAAAAAAQABAAAIBAChBQQAOw==&quot; alt=&quot;Nombres de mails sur internals@ ces trois dernières années&quot; class=&quot;lazy&quot; src=&quot;http://blog.pascal-martin.fr/public/internals-php/small-nombre-de-mails-internals-2013-04.png&quot; width=&quot;448px&quot; height=&quot;298px&quot;&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;La sortie de &lt;strong&gt;PHP 5.5&lt;/strong&gt; continue de se rapprocher : la version &lt;code&gt;bêta3&lt;/code&gt; &lt;a href=&quot;http://news.php.net/php.internals/67045&quot;&gt;a été publiée&lt;/a&gt; le 11 avril, et la &lt;code&gt;bêta4&lt;/code&gt; &lt;a href=&quot;http://news.php.net/php.internals/67140&quot;&gt;a suivi&lt;/a&gt; le 25 avril. Cette version &lt;code&gt;bêta4&lt;/code&gt; devrait être la &lt;strong&gt;dernière version &lt;code&gt;bêta&lt;/code&gt;&lt;/strong&gt;, la &lt;strong&gt;première version &lt;code&gt;RC&lt;/code&gt; étant prévue pour le 9 mai&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Dmitry Stogov &lt;a href=&quot;http://news.php.net/php.internals/67024&quot;&gt;a travaillé&lt;/a&gt; sur des optimisations pour l?extension de cache d?opcodes &lt;code&gt;ext/opcache&lt;/code&gt; qui sera inclue à PHP 5.5, et s?est demandé si ces optimisations avaient leur place dans PHP 5.5, ou s?il était plus prudent de les prévoir pour la version suivante de PHP. Une réponse &lt;a href=&quot;http://news.php.net/php.internals/67027&quot;&gt;apportée&lt;/a&gt; par Zeev Suraski est qu?il devrait être possible de mettre en place des optimisations ne travaillant que sur un seul fichier ; et que certaines idées ne mènent pas forcément à des résultats intéressants, le compilateur de PHP étant relativement rapide en lui-même. Pierre Joye, de son côté, &lt;a href=&quot;http://news.php.net/php.internals/67029&quot;&gt;a fait remarquer&lt;/a&gt; que, même si des optimisations simples pouvaient être appréciables, les versions RC de PHP 5.5 approchaient.&lt;/p&gt;

&lt;p&gt;Comme &lt;a href=&quot;http://news.php.net/php.internals/67059&quot;&gt;l?a souligné&lt;/a&gt; Larry Garfield, une durée de compilation &lt;em&gt;(compilation qui n?a lieu qu?une fois ?de temps en temps?, avec un cache d?opcodes activé)&lt;/em&gt; un peu plus importante pour les scripts PHP est acceptable, à partir du moment où les gains à l?exécution ne sont pas négligeables.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Avec l?intégration de &lt;code&gt;ext/opcache&lt;/code&gt; à PHP, Johannes Schlüter &lt;a href=&quot;http://news.php.net/php.internals/66909&quot;&gt;a fait remarquer&lt;/a&gt; qu?il y aurait probablement beaucoup d?utilisateurs qui essayeraient de charger cette extension avec &lt;code&gt;extension=&lt;/code&gt; et non &lt;code&gt;zend_extension=&lt;/code&gt; dans leurs fichiers de configuration. Le message d?erreur renvoyé lors de la tentative de chargement d?une Zend Extension avec &lt;code&gt;extension=&lt;/code&gt; étant jusqu?à présent peu clair, pour éviter d?être submergés de demandes d?utilisateurs ne comprenant pas pourquoi &lt;code&gt;ext/opcache&lt;/code&gt; refuse de se charger, il est proposé d?améliorer ce message ? vu &lt;a href=&quot;http://news.php.net/php.internals/66910&quot;&gt;les&lt;/a&gt; &lt;a href=&quot;http://news.php.net/php.internals/66911&quot;&gt;nombreux&lt;/a&gt; &lt;a href=&quot;http://news.php.net/php.internals/66918&quot;&gt;retours&lt;/a&gt; &lt;a href=&quot;http://news.php.net/php.internals/66924&quot;&gt;positifs&lt;/a&gt;, le correctif a été intégré à PHP.&lt;/p&gt;

&lt;p&gt;A la toute fin du mois de mars, Laruence &lt;a href=&quot;http://news.php.net/php.internals/66871&quot;&gt;a proposé&lt;/a&gt; d?ajouter une constante indiquant si PHP est compilé avec support des wrappers curl &lt;em&gt;(qui sont totalement distincts de l?extension &lt;code&gt;ext/curl&lt;/code&gt; !)&lt;/em&gt;. Ces wrappers ayant toujours été considérés comme expérimentaux, la discussion a finalement donné lieu à la rédaction d?une RFC visant à leur suppression : &lt;a href=&quot;https://wiki.php.net/rfc/curl-wrappers-removal-rfc&quot;&gt;RFC: Removal of curl-wrappers&lt;/a&gt; ? et même si la décision &lt;a href=&quot;http://news.php.net/php.internals/67115&quot;&gt;a été&lt;/a&gt; un peu rapide pour rentrer dans la planning de sortie de PHP 5.5-bêta4, les wrappers curl seront supprimés pour PHP 5.5.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;En tout début de mois, Sara Golemon &lt;a href=&quot;http://news.php.net/php.internals/66895&quot;&gt;a proposé&lt;/a&gt; la &lt;a href=&quot;https://wiki.php.net/rfc/php-array-api&quot;&gt;RFC: PHP Array API simplification&lt;/a&gt; : l?objectif est de fournir un fichier d?en-têtes &lt;code&gt;.h&lt;/code&gt; permettant de simplifier les manipulations de tableaux PHP pour les développeurs d?extensions PHP &lt;em&gt;(ce point ne concerne que les développeurs d?extensions, et absolument pas les utilisateurs de PHP)&lt;/em&gt;. Comme &lt;a href=&quot;http://news.php.net/php.internals/66897&quot;&gt;l?a souligné&lt;/a&gt; Mike Willbanks, avec qui je ne peux être que d?accord, ce type de simplification est le bienvenu, en particulier pour les développeurs avec un background plus &lt;em&gt;userland&lt;/em&gt;. La discussion n?a pas duré très longtemps et n?a pour l?instant pas mené à une inclusion de ce fichier d?en-têtes à PHP &lt;em&gt;(peut-être pour une prochaine version ?)&lt;/em&gt;, mais il peut dès maintenant être inclu &lt;em&gt;manuellement&lt;/em&gt; par les développeurs d?extensions qui voudraient en tirer profit.&lt;/p&gt;

&lt;p&gt;Un autre point qui peut intéresser les développeurs d?extensions PHP et/ou ceux qui aiment savoir &lt;em&gt;comment ça marche&lt;/em&gt; : Julien Pauli &lt;a href=&quot;http://news.php.net/php.internals/67033&quot;&gt;a annoncé&lt;/a&gt; avoir rédigé un article expliquant comment PHP charge ses extensions, et les différents hooks appelés : &lt;a href=&quot;https://wiki.php.net/internals/extensions&quot;&gt;&lt;code&gt;internals:extensions&lt;/code&gt;&lt;/a&gt;. En parallèle, des améliorations &lt;a href=&quot;http://news.php.net/php.internals/67039&quot;&gt;sont en cours&lt;/a&gt; de développement autour du chargement d?extensions, et &lt;a href=&quot;http://news.php.net/php.internals/67092&quot;&gt;pourraient&lt;/a&gt; être mises en place pour PHP 5.6.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Laruence &lt;a href=&quot;http://news.php.net/php.internals/67008&quot;&gt;a proposé&lt;/a&gt;, comme décrit via le &lt;a href=&quot;https://bugs.php.net/bug.php?id=64554&quot;&gt;Bug #64554: var_export does not export absolute namespace for classname &lt;/a&gt;, d?ajouter un &lt;code&gt;\&lt;/code&gt; en début de noms de classes pour les sorties de &lt;code&gt;var_export()&lt;/code&gt;, &lt;code&gt;serialize()&lt;/code&gt;, et autres fonctions du même type. Certains &lt;a href=&quot;http://news.php.net/php.internals/67009&quot;&gt;ont noté&lt;/a&gt; que ceci semblait logique par rapport aux espaces de noms ajoutés avec PHP 5.3, alors que d?autres &lt;a href=&quot;http://news.php.net/php.internals/67012&quot;&gt;ont fait remarquer&lt;/a&gt; que cela casserait la compatibilité avec PHP &amp;lt;= 5.2 ? et comme &lt;a href=&quot;http://news.php.net/php.internals/67021&quot;&gt;l?a souligné&lt;/a&gt; Rasmus Lerdorf, il n?est &lt;em&gt;(malheureusement)&lt;/em&gt; pas rare de sérialiser des données avec une version de PHP, les stocker en base de données ou les envoyer via le réseau à une autre machine, et vouloir les lire avec une autre version de PHP. &lt;a href=&quot;http://news.php.net/php.internals/67084&quot;&gt;En conclusion&lt;/a&gt;, la documentation va être complétée, et le comportement de ces fonctions ne sera pas modifié.&lt;/p&gt;

&lt;p&gt;Frank Liepert &lt;a href=&quot;http://news.php.net/php.internals/66999&quot;&gt;a rédigé&lt;/a&gt; la &lt;a href=&quot;https://wiki.php.net/rfc/instance_counter&quot;&gt;RFC: instance counter&lt;/a&gt;. Les quelques retours qui ont été postés sont assez négatifs : savoir combien d?instances d?une classe donnée existent ne semble pas vraiment intéressant &lt;a href=&quot;http://news.php.net/php.internals/67001&quot;&gt;ni utile&lt;/a&gt;. Les votes &lt;a href=&quot;http://news.php.net/php.internals/67208&quot;&gt;ont été ouverts&lt;/a&gt; sur cette RFC à la toute fin du mois ? considérant le peu de discussions qu?il y a eu sur &lt;code&gt;internals@&lt;/code&gt; à ce sujet, je doute qu?elle passe.&lt;/p&gt;

&lt;p&gt;Julien Pauli &lt;a href=&quot;http://news.php.net/php.internals/66942&quot;&gt;a proposé&lt;/a&gt; d?ajouter une option à &lt;code&gt;phpinfo()&lt;/code&gt;, qui permettrait de récupérer la liste des options de configuration utilisées lors de la compilation de PHP &lt;em&gt;(j?ai au passage découvert &lt;code&gt;php-config --configure-options&lt;/code&gt;)&lt;/em&gt;. Les retours ont été assez négatifs, puisque peu de développeurs voient l?utilité d?un mécanisme de ce type, et suggèrent de plutôt utiliser les capacités de reflection de PHP.&lt;/p&gt;

&lt;p&gt;Julien Pauli &lt;a href=&quot;http://news.php.net/php.internals/67167&quot;&gt;a soumis&lt;/a&gt; une idée où le bloc &lt;code&gt;catch&lt;/code&gt; d?une exception pourrait rendre le contrôle à son bloc &lt;code&gt;try&lt;/code&gt;. Amaury Bouchard &lt;a href=&quot;http://news.php.net/php.internals/67171&quot;&gt;a ensuite fourni&lt;/a&gt; plus d?explications sur le pourquoi de cette idée. La discussion n?était pas terminée à la fin du mois, même si plusieurs &lt;a href=&quot;http://news.php.net/php.internals/67187&quot;&gt;semblaient penser&lt;/a&gt; qu?utiliser des constructions &lt;code&gt;try&lt;/code&gt;/&lt;code&gt;catch&lt;/code&gt; de cette manière n?était pas une &lt;em&gt;bonne idée&lt;/em&gt;. Nous aurons peut-être l?occasion de voir le mois prochain si les choses ont évolué.&lt;/p&gt;

&lt;p&gt;Igor Wiedler &lt;a href=&quot;http://news.php.net/php.internals/67097&quot;&gt;a annoncé&lt;/a&gt; avoir commencé à rédiger la &lt;a href=&quot;https://wiki.php.net/rfc/use_function&quot;&gt;RFC: Importing namespaced functions&lt;/a&gt;, et &lt;a href=&quot;http://news.php.net/php.internals/67104&quot;&gt;a ensuite posté&lt;/a&gt; quelques cas où cette idée lui semble utile. La discussion n?était pas terminée à la fin du mois, et se poursuivra peut-être en mai?&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Depuis le premier article que j?ai posté dans cette série de &lt;a href=&quot;http://blog.pascal-martin.fr/tag/internals@&quot;&gt;dépilages d?&lt;code&gt;internals@&lt;/code&gt;&lt;/a&gt;, en &lt;a href=&quot;http://blog.pascal-martin.fr/post/php-mailing-list-internals-novembre-2012&quot;&gt;novembre 2012&lt;/a&gt;, je crois que c?est la première fois que j?ai &lt;em&gt;aussi peu&lt;/em&gt; de choses à dire. C?est probablement lié aux faits que PHP 5.5 arrive tout juste à la fin de sa période de bêta, qui marquait la fin d?ajout de fonctionnalités pour cette version, et que PHP 5.6 est encore loin, et pas encore entré en phase de développement actif !&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;internals@lists.php.net&lt;/code&gt;&lt;/strong&gt; est la &lt;strong&gt;mailing-list des développeurs de PHP&lt;/strong&gt; ; elle est utilisée pour discuter des prochaines évolutions du langage, ainsi que pour échanger autour de suggestions d?améliorations ou de rapports de bugs.
&lt;br&gt;Elle est publique, et tout le monde peut s?y inscrire depuis la page &lt;a href=&quot;http://www.php.net/mailing-lists.php#internals&quot;&gt;Mailing Lists&lt;/a&gt;, ou consulter ses archives en HTTP depuis &lt;a href=&quot;http://news.php.net/php.internals&quot;&gt;php.internals&lt;/a&gt; ou depuis le serveur de news &lt;a href=&quot;news:/php.internals&quot;&gt;&lt;code&gt;news://news.php.net/php.internals&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;



        </description>
		<pubDate>Mon, 06 May 2013 07:00:00 +0200</pubDate>
		<guid>http://blog.pascal-martin.fr/post/php-mailing-list-internals-avril-2013?utm_source=atom&amp;utm_medium=feed&amp;utm_campaign=php-mailing-list-internals-avril-2013</guid>
	</item>
		<item>
		<title>Unirest</title>
		<link>http://webriver.eu/?q=2013/05/05/unirest</link>
		<description>&lt;!-- google_ad_section_start --&gt;&lt;div class=&quot;field field-name-field-image field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;og:image rdfs:seeAlso&quot; resource=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/unirest.jpeg?itok=_tP724hO&quot;&gt;&lt;a href=&quot;/?q=2013/05/05/unirest&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/unirest.jpeg?itok=_tP724hO&quot; width=&quot;220&quot; height=&quot;84&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p&gt;Unirest en une bibliothèque REST, qui s'appuie sur une idée originale, c'est de proposé la même qualité de codes dans tous les langages pour vous aider à développer des APIs REST plus facilement. Cette bibliothèque propose la compatibilité avec les langages de développement : Au niveau des langages du coté serveur
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;PHP&lt;/li&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;Ruby&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; Au niveau des langages coté mobile
&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- google_ad_section_end --&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/unirest&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;unirest&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/rest&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;REST&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/php&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;php&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/python&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;Python&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/java&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;java&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/ruby&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;Ruby&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
		<pubDate>Sun, 05 May 2013 20:22:09 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/05/unirest</guid>
	</item>
		<item>
		<title>Mettre un site wordpress en production</title>
		<link>http://webriver.eu/?q=2013/05/04/mettre-un-site-wordpress-en-production</link>
		<description>&lt;!-- google_ad_section_start --&gt;&lt;div class=&quot;field field-name-field-image field-type-image field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;og:image rdfs:seeAlso&quot; resource=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/wordpress.png?itok=HdXhBSGW&quot;&gt;&lt;a href=&quot;/?q=2013/05/04/mettre-un-site-wordpress-en-production&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/wordpress.png?itok=HdXhBSGW&quot; width=&quot;220&quot; height=&quot;220&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; property=&quot;content:encoded&quot;&gt;&lt;p style=&quot;margin-bottom: 0cm&quot;&gt;Lorsque vous développez un projet web en utilisant le CMS Wordpress, vous devez penser à comment migrer celui-ci sur un serveur de production pour le rendre visible auprès des internautes.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 0cm&quot;&gt; &lt;/p&gt;
&lt;p style=&quot;margin-bottom: 0cm&quot;&gt;Le site « CodeFores » montre qu'il existe plusieurs méthodes pour ce CMS, dont certaines étapes sont générales, car une partie de la configuration se trouve dans PhpMyAdmin et dans le fichier wp-config.php.&lt;/p&gt;
&lt;p style=&quot;margin-bottom: 0cm&quot;&gt; &lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- google_ad_section_end --&gt;&lt;div class=&quot;field field-name-field-tags field-type-taxonomy-term-reference field-label-above&quot;&gt;&lt;div class=&quot;field-label&quot;&gt;Tags:&amp;nbsp;&lt;/div&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/wordpress&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;wordpress&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item odd&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/php&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;php&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;field-item even&quot; rel=&quot;dc:subject&quot;&gt;&lt;a href=&quot;/?q=%C3%A9tiquettes/migration&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;migration&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
		<pubDate>Sat, 04 May 2013 23:55:02 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/04/mettre-un-site-wordpress-en-production</guid>
	</item>
	</channel>
</rss>