<?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>Fri, 24 May 2013 23:11:48 +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>Une étape dans le libre</title>
		<link>http://blog.hello-design.fr/index.php?post/2013/05/24/Une-%C3%A9tape-dans-le-libre</link>
		<description>    &lt;p&gt;A l'approche du salon &quot;&lt;a href=&quot;http://www.solutionslinux.fr/&quot;&gt;solutions linux&quot;&lt;/a&gt;, qui va se dérouler le 28 et 29 mai, dont vous pourrez me retrouver les stands :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.afup.org&quot;&gt;AFUP&lt;/a&gt; (Association Française des Utilisateurs de PHP) avec la possibilité d'adoptée sur place des elePHPants.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.drupalfr.org&quot;&gt;DRUPAL&lt;/a&gt;, qui se situe juste à coté pour parler de ce CMS et du &lt;a href=&quot;http://paris2013.drupalcamp.fr/&quot;&gt;DrupalCamp&lt;/a&gt; de Paris en Juin prochain&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.solutionslinux.fr/preinscription.html?code=partenariatweb&quot;&gt;&lt;img src=&quot;http://blog.hello-design.fr/public/divers/Linux_150x150.gif&quot; alt=&quot;solutions linux 2013&quot; title=&quot;solutions linux 2013, mai 2013&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
Avec cette évènement, il était important de faire un tour d'horizon sur le libre en général, l'open source... directement à la radio &quot;&lt;a href=&quot;http://www.icietmaintenant.com/&quot;&gt;ici et maintenant&lt;/a&gt;&quot; dans l'émission &quot;Cyberculture&quot;.
&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://blog.hello-design.fr/public/divers/Ici_et_maintenant.jpeg&quot; alt=&quot;Ici et maintenant&quot; title=&quot;Ici et maintenant, mai 2012&quot; /&gt;
&lt;br /&gt;
L'émission se déroulera en direct de 14h00 à 15h30 en FM (95.2 Mhz) et à travers le web et le thème que je sera couvert est&amp;nbsp;: &quot;une étape dans le libre&quot; avec un invité surprise.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;</description>
		<pubDate>Fri, 24 May 2013 14:00:39 +0200</pubDate>
		<guid>http://blog.hello-design.fr/index.php?post/2013/05/24/Une-%C3%A9tape-dans-le-libre</guid>
	</item>
		<item>
		<title>Actualité de développement PECL, 2013 semaine 20 et 21</title>
		<link>http://webriver.eu/?q=2013/05/23/actualit%C3%A9-de-d%C3%A9veloppement-pecl-2013-semaine-20-et-21</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_0.jpeg?itok=UTa8YAyh&quot;&gt;&lt;a href=&quot;/?q=2013/05/23/actualit%C3%A9-de-d%C3%A9veloppement-pecl-2013-semaine-20-et-21&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/pecl_0.jpeg?itok=UTa8YAyh&quot; width=&quot;220&quot; height=&quot;156&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;6 Paquets ont été mis à jour ces 2 dernières semaines :  &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Semaine 20 du 13 mai 2013 &lt;br /&gt; &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://pecl.php.net/get/APM/1.1.0RC2&quot;&gt;APM 1.1.0RC2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pecl.php.net/get/mongo/1.4.0RC1&quot;&gt;mongo 1.4.0RC1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pecl.php.net/get/couchbase/1.1.5&quot;&gt;couchbase 1.1.5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Semaine 21 du 20 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>Thu, 23 May 2013 13:58:11 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/23/actualit%C3%A9-de-d%C3%A9veloppement-pecl-2013-semaine-20-et-21</guid>
	</item>
		<item>
		<title>Actualité de développement PEAR, 2013 semaine 20 et 21</title>
		<link>http://webriver.eu/?q=2013/05/22/actualit%C3%A9-de-d%C3%A9veloppement-pear-2013-semaine-20-et-21</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_3.png?itok=PqM4yab3&quot;&gt;&lt;a href=&quot;/?q=2013/05/22/actualit%C3%A9-de-d%C3%A9veloppement-pear-2013-semaine-20-et-21&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/pear_3.png?itok=PqM4yab3&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;2 Paquets ont été mis à jour ces 2 dernières semaines :&lt;/p&gt;
&lt;p&gt;Semaine 20 du  13 mai 2013&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Aucun&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Semaine 21 du  20 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_Socket/download/1.0.12/&quot;&gt;Net_Socket 1.0.12&lt;/a&gt;&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pear.php.net/package/Net_Socket/download/1.0.11/&quot;&gt;Net_Socket 1.0.11&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; &lt;/p&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, 22 May 2013 13:49:55 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/22/actualit%C3%A9-de-d%C3%A9veloppement-pear-2013-semaine-20-et-21</guid>
	</item>
		<item>
		<title>Un tiers des développeurs web devraient changer de boulot</title>
		<link>http://www.geek-directeur-technique.com/2013/05/22/un-tiers-des-developpeurs-web-devraient-changer-de-boulot</link>
		<description>&lt;p&gt;&amp;#8230;et quand je dis ça, c&amp;rsquo;est pour dire qu&amp;rsquo;ils devraient s&amp;rsquo;orienter vers n&amp;rsquo;importe quel travail qui soit loin, trèèès loin du développement informatique. Même la moindre macro Excel devrait leur être interdite.&lt;/p&gt;
&lt;p&gt;Revenons un peu en arrière. J&amp;rsquo;ai déjà parlé plusieurs fois sur ce blog des comportements qui me font halluciner quand je fais passer des entretiens d&amp;rsquo;embauche.&lt;/p&gt;
&lt;p&gt;Sur mes 12 années de carrière, je dois en être à pas loin de 10 ans à faire passer des entretiens. D&amp;rsquo;abord pour des stagiaires, puis pour des développeurs et par la suite pour des profils très variés.&lt;br /&gt;
Pendant longtemps, je faisais passer mes entretiens de manière très classique&amp;nbsp;: je commençais par présenter l&amp;rsquo;entreprise, puis le candidat déroulait son CV, puis je posais des questions minutieuses sur ses expériences, pour enfin poser des questions techniques variées. Plus le temps passait, plus je me rendais compte que les entretiens se ressemblaient un peu trop&amp;nbsp;; à l&amp;rsquo;en croire, le candidat est à chaque fois un caïd faiseur de miracles&amp;nbsp;; en creusant un peu, je vois bien qu&amp;rsquo;il ne connaît pas la moitié des miracles qu&amp;rsquo;il est censé avoir fait&amp;nbsp;; sans parler des réponses parfois très exotiques à mes questions techniques&amp;#8230;&lt;/p&gt;
&lt;p&gt;Il y a quelques années, pour gagner du temps, j&amp;rsquo;ai changé ma manière de faire. Je commence dès le début de l&amp;rsquo;entretien par faire passer des petits tests techniques. Si ces tests se passent bien, on enchaîne (présentation de l&amp;rsquo;entreprise, déroulage du CV, questions-réponses). Si par contre le candidat échoue lamentablement aux tests techniques, je mets fin à l&amp;rsquo;entretien.&lt;/p&gt;
&lt;p&gt;Cela peut paraître brutal, mais pour commencer je considère que mon temps est précieux (et si on regarde ma charge de travail, c&amp;rsquo;est une constatation, pas un fanfaronnade). Ce qu&amp;rsquo;il faut voir, surtout, c&amp;rsquo;est que les tests en question ne sont pas compliqués&amp;nbsp;; j&amp;rsquo;y vois un filtre me permettant d&amp;rsquo;identifier immédiatement les gros mauvais qui ne devraient pas vouloir être payés à coder.&lt;/p&gt;
&lt;p&gt;Je ne vais évidemment pas dévoiler ici la teneur de ces tests (et je modérerais agressivement les commentaires qui le feraient). Mais sachez que je fais faire un test de programmation élémentaire, qui demande juste le minimum de logique algorithmique. En fait, je ne le vois même pas vraiment comme un test de programmation&amp;nbsp;; quand j&amp;rsquo;étais en école d&amp;rsquo;ingénieur, on l&amp;rsquo;utilisait pour expliquer la programmation à ceux qui n&amp;rsquo;en avaient jamais fait&amp;nbsp;:&amp;nbsp;«&lt;em&gt;Vous connaissez les fonctions en mathématique, voici ce qu&amp;rsquo;est une fonction en informatique&lt;/em&gt;»&lt;/p&gt;
&lt;p&gt;Et globalement, j&amp;rsquo;ai un tiers des candidats qui réussit le test sans problème&amp;nbsp;; un tiers qui sue sang et eau mais qui finit par y arriver&amp;nbsp;; et enfin un tiers qui échoue lamentablement d&amp;rsquo;une manière qui ne devrait pas exister.&lt;br /&gt;
Pour tout dire, j&amp;rsquo;ai déjà eu (trop) d&amp;rsquo;entretiens qui n&amp;rsquo;ont duré que 15 minutes, le temps de se rendre compte que le candidat n&amp;rsquo;y arrivera jamais, m&amp;rsquo;obligeant quelques fois à conclure en disant&amp;nbsp;«&lt;em&gt;Je suis désolé, monsieur, mais vous n&amp;rsquo;êtes pas informaticien&lt;/em&gt;».&lt;/p&gt;
&lt;p&gt;Honnêtement, je n&amp;rsquo;éprouve aucun plaisir à dire ça à quelqu&amp;rsquo;un. Qu&amp;rsquo;il sorte tout juste d&amp;rsquo;école ou qu&amp;rsquo;il ait 10 ans d&amp;rsquo;expérience, je me sens toujours aussi mal. Mais soit le candidat se rend compte par lui-même qu&amp;rsquo;il n&amp;rsquo;a pas le niveau qu&amp;rsquo;il devrait avoir, soit il cherche des excuses ridicules&amp;nbsp;; et dans ce dernier cas, il me paraît parfois nécessaire de lui ouvrir les yeux.&lt;/p&gt;
&lt;p&gt;Au cas où vous vous poseriez la question, j&amp;rsquo;affirme que cela ne dépend pas de la technologie utilisée. J&amp;rsquo;ai travaillé pendant 4 ans dans une start-up qui développait des services mobiles en Perl. Ce langage étant peu répandu en France, on recrutait de manière très ouverte, et on avait le même pourcentage d&amp;rsquo;échecs retentissants. J&amp;rsquo;ai travaillé pendant 1 an dans un environnement Java EE, et on ne recrutait que des développeurs expérimentés sur ces technologies&amp;nbsp;; et là encore, le taux était identique. Depuis 6 ans je recrute des développeurs PHP, et c&amp;rsquo;est la même chose.&lt;/p&gt;
&lt;p&gt;Que faut-il conclure de ce constat préoccupant&amp;nbsp;? Je ne pense pas qu&amp;rsquo;il s&amp;rsquo;agisse d&amp;rsquo;un problème avec les formations. Même si elles se multiplient ? pour répondre à un besoin sans cesse croissant ? elles semblent continuer à fournir les mêmes quotas d&amp;rsquo;excellent, de moyens et de mauvais informaticiens.&lt;br /&gt;
Je pense plutôt qu&amp;rsquo;avec le temps, le nombre global d&amp;rsquo;informaticiens a été multiplié dans de grandes proportions. Et parce qu&amp;rsquo;on vit dans une ère de zapping, où il faut aller très vite (surtout dans les recrutements&amp;nbsp;!), on tombe statistiquement plus souvent sur le fond du panier ? qui est comparativement plus représenté parmi les chercheurs d&amp;rsquo;emplois que le haut du panier, allez savoir pourquoi.&lt;br /&gt;
Facteur aggravant de ce phénomène, c&amp;rsquo;est de moins en moins par l&amp;rsquo;expérience professionnelle qu&amp;rsquo;on peut faire le tri dans les candidatures . Il faut rencontrer les gens pour les juger&amp;nbsp;; plus le niveau recherché est élevé, plus cela prend du temps pour le vérifier. C&amp;rsquo;est la raison pour laquelle cela prend moins de 15 minutes pour identifier quelqu&amp;rsquo;un qui n&amp;rsquo;est même pas informaticien. Après, entre un informaticien moyen et un bon informaticien, ça prend plus de temps pour faire le distinguo ; mais c&amp;rsquo;est une autre histoire.&lt;/p&gt;
</description>
		<pubDate>Wed, 22 May 2013 10:59:40 +0200</pubDate>
		<guid>http://www.geek-directeur-technique.com/2013/05/22/un-tiers-des-developpeurs-web-devraient-changer-de-boulot</guid>
	</item>
		<item>
		<title>Communiqué de presse de la Web-5</title>
		<link>http://feedproxy.google.com/~r/Mathieurobincom/~3/m-yGZF9bJSM/</link>
		<description>&lt;p style=&quot;text-align: justify;&quot;&gt;Comme promis dans &lt;a title=&quot;Je serai à la Web-5 de Béziers&quot; href=&quot;http://www.mathieurobin.com/2013/05/je-serai-a-la-web-5-de-beziers/&quot; target=&quot;_blank&quot;&gt;le billet précédent&lt;/a&gt;, voici le communiqué de presse officiel pour la session 2013 de la &lt;a title=&quot;Conf 2013, Web-5&quot; href=&quot;http://conf2013.web-5.org/&quot; target=&quot;_blank&quot;&gt;Web-5&lt;/a&gt; :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&amp;rsquo;association Web-5 est une association à but non lucratif.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Dans le cadre de nos activités, nous organisons une conférence annuelle sur les nouvelles technologies du Web (front-end et back-end).&lt;br /&gt;
Notre premier évènement (&lt;a title=&quot;http://conf2012.web-5.org&quot; href=&quot;http://conf2012.web-5.org&quot; target=&quot;_blank&quot;&gt;http://conf2012.web-5.org&lt;/a&gt;) a été un franc succès. Nous avons été épaulés par des acteurs majeurs du développement Web tels que IBM, Mozilla, Zenexity, Wakanda, GitHub&amp;#8230; et sommes parvenus à rassembler environ 120 personnes de 16 nationalités différentes !&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les sessions de la conférence se sont étalées sur 3 jours : 5 demi-journées de conférences et une d&amp;rsquo;atelier.&lt;br /&gt;
22 conférenciers ont pris la parole ce qui représente environ 20 heures de contenus d&amp;rsquo;un haut niveau d&amp;rsquo;expertise technique avec comme intervenants des personnalités telles que Robert Nyman, Michal Budzinsky et Sam Foster de la Fondation Mozilla, Christophe Jolif et Patrick Ruzand d&amp;rsquo;IBM, Philip Tellis (ex) Yahoo, Dylan Schiemann le co-fondateur de Dojo Toolkit et bien d&amp;rsquo;autres !&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Cette année, la conférence Web-5 revient avec des sujets encore plus variés. Touchant aux problématiques rencontrées par les développeurs, administrateurs systèmes, architectes, designers, etc. dans leur travail quotidien.&lt;br /&gt;
Résolument technique, la conférence Web-5 proposera une nouvelle fois des talks de niveau expert, dédiés aux professionnels.&lt;br /&gt;
Cette fois nous proposons un format deux tracks, une session front-end (JavaScript, design, HTML5, real-time, accessibilité, testing, etc) et une session back-end (databases nosql, php, python, administration et monitoring, performance, etc).&lt;br /&gt;
Deux journées intenses qui, nous l?espérons, apporteront de nouvelles idées aux participants, ou confirmeront des choix techniques délicats grâce à l?expertise et l?expérience des speakers qu?ils pourront écouter et rencontrer.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Parce qu?il nous tient à coeur de démocratiser la technique et le savoir, nous avons travaillé avec nos partenaires afin de réduire au maximum le prix du ticket d?entrée. Permettant ainsi aux TPE-PME, aux freelancers, voire aux étudiants, de participer à cet événement qui, nous en sommes convaincus, sera enrichissant pour tous.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour plus d?information, vous pouvez consulter le site officiel : &lt;a title=&quot;http://conf2013.web-5.org&quot; href=&quot;http://conf2013.web-5.org&quot; target=&quot;_blank&quot;&gt;http://conf2013.web-5.org&lt;/a&gt;&lt;br /&gt;
Vous pouvez aussi nous suivre sur twitter : &lt;a title=&quot;Twitter @web5_conf&quot; href=&quot;https://twitter.com/web5_conf&quot; target=&quot;_blank&quot;&gt;@web5_conf&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Rendez-vous les 14 et 15 Juin 2013 à Béziers pour la deuxième édition de la conférence Web-5 !&lt;/p&gt;
 &lt;p&gt;&lt;a href=&quot;http://www.mathieurobin.com/?flattrss_redirect&amp;amp;id=3100&amp;amp;md5=95fef0bb955c1a82b57f6346af19d71c&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=m-yGZF9bJSM:TCjFhTEQ6FE: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=m-yGZF9bJSM:TCjFhTEQ6FE: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=m-yGZF9bJSM:TCjFhTEQ6FE:D7DqB2pKExk&quot;&gt;&lt;img src=&quot;http://feeds.feedburner.com/~ff/Mathieurobincom?i=m-yGZF9bJSM:TCjFhTEQ6FE: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/m-yGZF9bJSM&quot; height=&quot;1&quot; width=&quot;1&quot;/&gt;</description>
		<pubDate>Tue, 21 May 2013 12:47:54 +0200</pubDate>
		<guid>http://feedproxy.google.com/~r/Mathieurobincom/~3/m-yGZF9bJSM/</guid>
	</item>
		<item>
		<title>Agenda des prochains RDV dans les antennes locales de l'AFUP</title>
		<link>http://afup.org/pages/site/?route=actualites/690/agenda-des-prochains-rdv-dans-les-antennes-locales-de-lafup</link>
		<description>&lt;p&gt;&lt;strong&gt;A LYON&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Mardi 21/05, une&amp;nbsp;&lt;a href=&quot;http://lyon.afup.org/2013/04/18/aspect-oriented-programming-on-php/&quot;&gt;conf&amp;eacute;rence &quot;AOP en PHP&quot;&lt;/a&gt;&amp;nbsp;: un RDV AFUP d&amp;eacute;di&amp;eacute; &amp;agrave; la programmation orient&amp;eacute;e aspect, lors d'une belle conf&amp;eacute;rence qui avait rencontr&amp;eacute; un franc succ&amp;egrave;s lors du PHP Tour Nantes 2012.&lt;/p&gt;
&lt;p&gt;- Mercredi 22/05, l'AFUP Lyon tient une &lt;a href=&quot;http://lyon.afup.org/2013/05/17/lafup-lyon-sera-presente-au-banquet-du-web-2/&quot;&gt;clinique PHP au banquet du Web&lt;/a&gt;. venez nous voir et pr&amp;eacute;sentez nous vos probl&amp;egrave;mes li&amp;eacute;s aux outils professionnels dans l'&amp;eacute;cosyst&amp;egrave;me PHP, la performance et la s&amp;eacute;curit&amp;eacute;.&lt;/p&gt;
&lt;p&gt;- Mercredi 12/06, il s'agira cette fois d'une&amp;nbsp;&lt;a href=&quot;http://lyon.afup.org/2013/05/13/conference-ezpublish-et-symfony-le-12-juin-2013-a-19h30/&quot;&gt;conf&amp;eacute;rence &quot;ezPublish et Symfony&quot;&lt;/a&gt;. Nicolas Pastorino proposera une pr&amp;eacute;sentation de ezPublish5, et plus particuli&amp;egrave;rement de son architecture d&amp;eacute;sormais enti&amp;egrave;rement bas&amp;eacute;e sur Symfony2. Inscrivez-vous d&amp;egrave;s maintenant.&lt;/p&gt;
&lt;p&gt;Et, comme toujours, l'ap&amp;eacute;roPHP du 29 chaque mois ! Suivez le site des &lt;a href=&quot;http://www.aperophp.net/&quot;&gt;ap&amp;eacute;ros PHP&lt;/a&gt; pour connaitre le lieu et l'heure.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A BORDEAUX&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Jeudi 23/05, l'antenne bordelaise vous propose une conf&amp;eacute;rence/d&amp;eacute;bat &quot;Apache Vs Nginx&quot;. Abonnez-vous &amp;agrave; la liste bordeaux@afup.org pour conna&amp;icirc;tre tous les d&amp;eacute;tails de ce rendez-vous.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A PARIS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- Les 28 et 29/05, l'antenne AFUP Paris sera pr&amp;eacute;sente au salon Linux pour tenir le stand de l'association. Nous serons ravis si vous venez nous saluer.&lt;/p&gt;
&lt;p&gt;L'antenne parisienne vous pr&amp;eacute;pare &amp;eacute;galement un rendez-vous sur la s&amp;eacute;curit&amp;eacute; en PHP, d&amp;eacute;but juin. Restez &amp;agrave; l'&amp;eacute;coute pour conna&amp;icirc;tre tous les d&amp;eacute;tails de ce rendez-vous qui s'annonce tr&amp;egrave;s int&amp;eacute;ressant.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A tr&amp;egrave;s bient&amp;ocirc;t pour la suite des &amp;eacute;v&amp;eacute;nements des antennes locales, partout en France !&lt;/p&gt;</description>
		<pubDate>Mon, 20 May 2013 00:00:00 +0200</pubDate>
		<guid>http://afup.org/pages/site/?route=actualites/690/agenda-des-prochains-rdv-dans-les-antennes-locales-de-lafup</guid>
	</item>
		<item>
		<title>Ecrire une application maintenable et testable</title>
		<link>http://webriver.eu/?q=2013/05/19/ecrire-une-application-maintenable-et-testable</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/script.png?itok=cFYYWEq6&quot;&gt;&lt;a href=&quot;/?q=2013/05/19/ecrire-une-application-maintenable-et-testable&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/script.png?itok=cFYYWEq6&quot; width=&quot;220&quot; height=&quot;128&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;P { margin-bottom: 0.21cm; }A:link {  }&lt;br /&gt;&lt;strong&gt;Le site 'NetTuts+' propose un tutorial pour vous aider dans vos développements avec le langage PHP. L'article va expliquer comment écrire une application maintenable et testable avec ce langage.&lt;/strong&gt; &lt;strong&gt;Ainsi, vous verrez &lt;/strong&gt;&lt;strong&gt;les points suivants : &lt;/strong&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/phpunit&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;phpunit&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/application&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;application&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/maintenable&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;maintenable&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/script&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;script&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
		<pubDate>Sun, 19 May 2013 22:53:26 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/19/ecrire-une-application-maintenable-et-testable</guid>
	</item>
		<item>
		<title>Ecrire une application maintenable et testable</title>
		<link>http://webriver.eu/?q=2013/05/19/ecrire-une-application-maintenable-et-testable</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/script.png?itok=cFYYWEq6&quot;&gt;&lt;a href=&quot;/?q=2013/05/19/ecrire-une-application-maintenable-et-testable&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/script.png?itok=cFYYWEq6&quot; width=&quot;220&quot; height=&quot;128&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;P { margin-bottom: 0.21cm; }A:link {  }&lt;br /&gt;&lt;strong&gt;Le site 'NetTuts+' propose un tutorial pour vous aider dans vos développements avec le langage PHP. L'article va expliquer comment écrire une application maintenable et testable avec ce langage.&lt;/strong&gt; &lt;strong&gt;Ainsi, vous verrez &lt;/strong&gt;&lt;strong&gt;les points suivants : &lt;/strong&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/phpunit&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;phpunit&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/application&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;application&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/maintenable&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;maintenable&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/script&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;script&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
		<pubDate>Sun, 19 May 2013 22:53:26 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/19/ecrire-une-application-maintenable-et-testable</guid>
	</item>
		<item>
		<title>Google App engine pour PHP</title>
		<link>http://webriver.eu/?q=2013/05/18/google-app-engine-pour-php</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/Google_App_Engine_logo_wtxt.png?itok=vYFNOZLJ&quot;&gt;&lt;a href=&quot;/?q=2013/05/18/google-app-engine-pour-php&quot;&gt;&lt;img typeof=&quot;foaf:Image&quot; src=&quot;http://webriver.eu/sites/default/files/styles/medium/public/field/image/Google_App_Engine_logo_wtxt.png?itok=vYFNOZLJ&quot; width=&quot;188&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&gt;Il s'agit d'une nouvelle version majeure du Google App Egine, disponible dès maintenant. Ce moteur d'applications apporte de nombreuses évolutions et surtout il vient d'ajouter le support et la compatibilité avec le langage PHP sous la forme d'un PHP Runtime.&lt;/p&gt;
&lt;p&gt;La conséquence directe pour les développeurs de ce langage, c'est de leur permettre de faire tourner des projets PHP, CMS... directement sur la plateforme cloud de Google.&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/google&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;google&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/app&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;app&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/engine&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;engine&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/cloud&quot; typeof=&quot;skos:Concept&quot; property=&quot;rdfs:label skos:prefLabel&quot;&gt;cloud&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
		<pubDate>Sat, 18 May 2013 19:49:59 +0200</pubDate>
		<guid>http://webriver.eu/?q=2013/05/18/google-app-engine-pour-php</guid>
	</item>
		<item>
		<title>Conférence dotScale : la place est remportée, -20% pour les membres AFUP </title>
		<link>http://afup.org/pages/site/?route=actualites/689/conference-dotscale-la-place-esteremportee-pour-les-membres-afup</link>
		<description>&lt;p&gt;Voil&amp;agrave; une conf&amp;eacute;rence qui va enfin r&amp;eacute;pondre au besoin de bien des d&amp;eacute;veloppeurs qui travaillent sur le cloud :  dotScale ne traitera que du d&amp;eacute;veloppement sur le Cloud, Big Data et DevOps. De quoi d&amp;eacute;couvrir, avancer, comprendre et approfondir toutes vos connaissances, sans blabla et buzz marketing !&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;objectif de cette journ&amp;eacute;e est d&amp;rsquo;aider les d&amp;eacute;veloppeurs &amp;agrave; comprendre les choix techniques derri&amp;egrave;re les plateformes qu&amp;rsquo;ils utilisent, afin d&amp;rsquo;architecturer leurs propres applications en cons&amp;eacute;quence pour les rendre scalables.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Membres AFUP, b&amp;eacute;n&amp;eacute;ficiez de 20% de r&amp;eacute;duction !&lt;/strong&gt;&amp;nbsp;&lt;a href=&quot;http://dotscale2013.eventbrite.com/?discount=AFUP&quot;&gt;Achetez votre place&lt;/a&gt; d&amp;egrave;s maintenant.&amp;nbsp;&lt;br /&gt;La conf&amp;eacute;rence se tiendra le 7 juin au Th&amp;eacute;&amp;acirc;tre des vari&amp;eacute;t&amp;eacute;s. Plus d'infos sur le site de &lt;a href=&quot;http://www.dotscale.eu&quot;&gt;dotScale&lt;/a&gt;.&lt;/p&gt;</description>
		<pubDate>Sun, 19 May 2013 00:00:00 +0200</pubDate>
		<guid>http://afup.org/pages/site/?route=actualites/689/conference-dotscale-la-place-esteremportee-pour-les-membres-afup</guid>
	</item>
		<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>
	</channel>
</rss>