<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le Mad Blog &#187; Django</title>
	<atom:link href="http://j-mad.com/blog/category/developpement/python/django/feed/" rel="self" type="application/rss+xml" />
	<link>http://j-mad.com/blog</link>
	<description>juste un blog</description>
	<lastBuildDate>Wed, 22 May 2013 22:04:28 +0000</lastBuildDate>
	<language>fr-fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Les poneys envahissent la ville rose, aka DjangoCon Toulouse, vive les pains aux chocolats !</title>
		<link>http://j-mad.com/blog/2012/11/26/les-poneys-envahissent-la-ville-rose-aka-djangocon-toulouse-vive-les-pains-aux-chocolats/</link>
		<comments>http://j-mad.com/blog/2012/11/26/les-poneys-envahissent-la-ville-rose-aka-djangocon-toulouse-vive-les-pains-aux-chocolats/#comments</comments>
		<pubDate>Mon, 26 Nov 2012 21:13:37 +0000</pubDate>
		<dc:creator>JMad</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=2256</guid>
		<description><![CDATA[Ce week-end avait lieu la première DjangoCon Toulouse, une rencontre django régionale au pays du cassoulet. Les festivités commençaient à 11h30 le samedi avec des LT, puis une rafale de huit conférences l’après midi, et pour finir sprint et ateliers le dimanche. Cette Djangocon est également la première Cong qui n&#8217;était pas un événement autonome <a href='http://j-mad.com/blog/2012/11/26/les-poneys-envahissent-la-ville-rose-aka-djangocon-toulouse-vive-les-pains-aux-chocolats/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Ce week-end avait lieu la première DjangoCon Toulouse, une rencontre django régionale au pays du cassoulet. Les festivités commençaient à 11h30 le samedi avec des LT, puis une rafale de huit conférences l’après midi, et pour finir sprint et ateliers le dimanche.</p>
<p>Cette Djangocon est également la première Cong qui n&#8217;était pas un événement autonome mais un événement à l&#8217;intérieur d&#8217;un autre événement (à savoir le capitole du libre). Je dois avouer que je suis assez partagé sur cette solution de l&#8217;événement dans l&#8217;événement. Effectivement cela permet d&#8217;attirer &#8216;des curieux&#8217; qui viennent papillonner le temps d&#8217;une conférence ou d&#8217;un atelier (le nombre de 64 personnes dans l&#8217;auditoire a d&#8217;ailleurs été atteint). Cela permet aussi d&#8217;assister à une conférence de J<a href="https://twitter.com/jerezim" target="_blank">érémie Zimmermann</a> la fin du premier jour. Enfin, cela permet de diminuer la charge de travail pour les orgas. Mais cela aussi signifie ne pas être mettre de tout les choix (essentiellement logistique) et de devoir gérer les interactions avec l&#8217;organisation globale. Je suis donc partagé sur ce mode d&#8217;événement à l&#8217;intérieur d&#8217;un autre.</p>
<p>Mais venons en maintenant au Djangocon en elles mêmes. Tout d&#8217;abord le programme. LT et conférences étaient très intéressants. La rafale de huit conférence l’après midi, conférence de 20 minutes plus 5 minutes de questions auraient pu être difficile à encaisser mais les conférences étant intéressantes et les orateurs d&#8217;un bon niveau, tout est passé comme une lettre à la poste.</p>
<p>Étonnamment, les ateliers et sprint du dimanche matin furent même plus productif que ce à quoi je m&#8217;attendais. Et l&#8217;organisation &#8216;au dépoté&#8217; (en tout cas ce n&#8217;étais pas indiqué dans le programme) d&#8217;un atelier d&#8217;initiation était une excellente idée. Cela confirme à nouveau mon sentiment qu&#8217;il y a une forte demande concernant des initiations à Django et que c&#8217;est des choses que les &#8216;anciens&#8217; de la communauté, les sachants, doivent mettre en place pour partager leur connaissance et jouer le rôle de &#8216;mentor&#8217;.</p>
<p>Alors effectivement, il y a, à mon sens des choses améliorables au niveau logistique, comme l&#8217;approvisionnement en jus de fruit / café / eau ou le repas/soirée du samedi soir, mais ce n&#8217;est pas si grave que cela (et on revient à mon premier point, le fait de s&#8217;intégrer dans un événement plus grand).</p>
<p>Les points positifs importants que je retiens de cette conférence sont :</p>
<ul>
<li>avoir des conférences non totalement centré sur Django est une excellente chose. À Rennes il y avait une conf sur cherrypie et circus, à Toulouse une conf (différente de celle de Rennes) sur circus aussi et ça permet d&#8217;ouvrir un peu ses œillères.</li>
<li>Les ateliers débutants sont des choses à mettre en place. Se pose la question de les mettre en place dans des Djangocongs d&#8217;une taille plus importantes.</li>
<li>La soirée du samedi soir est un point très important, de mon point de vue. Les soirées jeux de plateau remportent mes suffrages, pour l&#8217;instant.</li>
<li>Sprint et ateliers le dimanche matin peuvent être efficaces. Peut-être que la solution est d&#8217;en décaler leur démarrage en prenant en compte le besoin de sommeil.</li>
</ul>
<p>Ces Djangocon sont à mon sens un beau succès et j&#8217;ai vraiment été très heureux d&#8217;y être. Je profite de ce billet pour, à nouveau, remercier les organisateurs et les orateurs. (Et ce fut assez rigolo de se rendre compte qu&#8217;il y avait des ponts très intéressant entre les 2 djangocon Rennes et Toulouse, comme par exemple  une présentation de tastypie à Rennes, suivi d&#8217;un atelier Tastypie à Toulouse ).</p>
<p>&nbsp;
<div class="TweetButton_button" style="float: right; margin-left: 10px;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share data-url="http://j-mad.com/blog/2012/11/26/les-poneys-envahissent-la-ville-rose-aka-djangocon-toulouse-vive-les-pains-aux-chocolats/" data-text="Les poneys envahissent la ville rose, aka DjangoCon Toulouse, vive les pains aux chocolats !"data-count="vertical" data-via="mrjmad" data-lang="fr""><img src="http://j-mad.com/blog/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
 <p><a href="http://j-mad.com/blog/?flattrss_redirect&amp;id=2256&amp;md5=1868a3f7443076c6f5c0bb1b12c3c13f" title="Flattr" target="_blank"><img src="http://j-mad.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2012/11/26/les-poneys-envahissent-la-ville-rose-aka-djangocon-toulouse-vive-les-pains-aux-chocolats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=17478&amp;popout=1&amp;url=http%3A%2F%2Fj-mad.com%2Fblog%2F2012%2F11%2F26%2Fles-poneys-envahissent-la-ville-rose-aka-djangocon-toulouse-vive-les-pains-aux-chocolats%2F&amp;language=fr_FR&amp;category=text&amp;title=Les+poneys+envahissent+la+ville+rose%2C+aka+DjangoCon+Toulouse%2C+vive+les+pains+aux+chocolats%C2%A0%21&amp;description=Ce+week-end+avait+lieu+la+premi%C3%A8re+DjangoCon+Toulouse%2C+une+rencontre+django+r%C3%A9gionale+au+pays+du+cassoulet.+Les+festivit%C3%A9s+commen%C3%A7aient+%C3%A0+11h30+le+samedi+avec+des+LT%2C+puis+une+rafale+de...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Des poneys avec des chapeaux ronds  aka DjangoBreizh, les poneys envahissent la bretagne</title>
		<link>http://j-mad.com/blog/2012/11/18/des-poneys-avec-des-chapeaux-ronds-aka-djangobreizh-les-poneys-envahissent-la-bretagne/</link>
		<comments>http://j-mad.com/blog/2012/11/18/des-poneys-avec-des-chapeaux-ronds-aka-djangobreizh-les-poneys-envahissent-la-bretagne/#comments</comments>
		<pubDate>Sun, 18 Nov 2012 20:57:56 +0000</pubDate>
		<dc:creator>JMad</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=2252</guid>
		<description><![CDATA[Samedi 17 novembre c&#8217;était donc la première edition des DjangoBreizh, une rencontre django locale en bretagne organisé par Exirel (bon ok, je ne suis pas tout a fait breton et pourtant j&#8217;y étais mais j&#8217;étais une exception) Le programme se découpait ainsi : matin conférence début d’après midi LT reste de l&#8217;après midi barcamp ou atelier <a href='http://j-mad.com/blog/2012/11/18/des-poneys-avec-des-chapeaux-ronds-aka-djangobreizh-les-poneys-envahissent-la-bretagne/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Samedi 17 novembre c&#8217;était donc la première edition des <a href="http://rencontres.django-fr.org/2012/bzh/" target="_blank">DjangoBreizh</a>, une rencontre django locale en bretagne organisé par <a href="http://twitter.com/exirel" target="_blank">Exirel</a> (bon ok, je ne suis pas tout a fait breton et pourtant j&#8217;y étais mais j&#8217;étais une exception) Le programme se découpait ainsi :</p>
<ul>
<li>matin conférence</li>
<li>début d’après midi LT</li>
<li>reste de l&#8217;après midi barcamp ou atelier d&#8217;initiation</li>
</ul>
<p>Pour une première conf, et conf régionale qui plus est, je trouve que le public fut au rendez-vous. 27 personnes pour les conférences, c&#8217;est en effet une belle réussite. Pour l&#8217;occasion, la <a href="http://www.lacantine-rennes.net/" target="_blank">cantine numérique de Renne</a>s avait prêté ses locaux toutes la journée, ce qui a permis de mettre en place les conférence du matin et l&#8217;atelier initiation du matin (les barcamps se passant à quelques dizaines de mettre à la maison des associations)</p>
<p>Ce que je retiens de cette rencontre régionale (hormis le fait qu&#8217;à rennes, il pleut tout le temps) c&#8217;est :</p>
<ul>
<li>il peut être difficile d&#8217;avoir des conférenciers locaux, il suffit alors de les faire venir d&#8217;ailleurs (mais il y a eu un certain nombre de conférencier &#8216;du cru&#8217; et ça fait plaisir)</li>
<li>la partie barcamp est une partie toujours très intéressante et qui fonctionne vraiment bien</li>
<li>l’atelier d&#8217;initiation était une première, jamais encore cela n&#8217;avait eu lieu dans une rencontre django. Le public était restreint (6 à 8 personnes) mais j&#8217;ai l&#8217;impression que c&#8217;est un format qui fonctionne et qui réponds à une vrai demande des gens, un vrai plus de cette édition bretonne, et qu&#8217;il faut, à mon avis, répliqué, à minima, dans les autres éditions régionales.</li>
<li>Lors des djangocong 2012, certains pensaient que les rencontres régionales allaient &#8216;faire se relâcher la pression sur la conférence nationale&#8217;. A priori, si je généralise à partir de l&#8217;exemple de cette première conférence régionale, c&#8217;est l&#8217;inverse qui va se passer. Les gens qui &#8216;goûtent&#8217; aux rencontres django régionale, dés qu&#8217;ils apprennent qu&#8217;il y a des &#8216;grosses rencontres&#8217;, veulent absolument y aller.</li>
<li>Le soir c&#8217;était free style, une bonne partie des gens se sont retrouvés dans un bar à jeux pour siroter une bière en jouant à des jeu de plateau. Et ce fut excellent. Le format bire et jeu de plateau testé pour la première fois en 2011 montre encore une fois qu&#8217;il est un excellent format (voir le meilleur) en ce qui concerne les soirées post conférences (ou inter pour des confs de 2 jours).</li>
<li>J&#8217;avais peur que les rencontres régionales ne soient que des espèces de mini grandes djangocong, avec uniquement des &#8216;vieux&#8217; djangonautes présents. Ce ne fut pas le cas et c&#8217;est tant mieux.</li>
</ul>
<p>En résumé, ce fut une excellent première édition et j&#8217;ai hâte de voir ce que donnera la deuxième édtion (si il y en a une).</p>
<p>En tout cas merci à Exirel d&#8217;avoir organiser tout cela, à la cantine numérique de Rennes d&#8217;avoir participé à l&#8217;aventure des django en bretagne, aux auditeurs d&#8217;être venus faire des conférences de qualités et aux rennais d&#8217;avoir répondu présent.</p>
<p>Et à la semainse prochaine pour DjangoCassoulet à Toulouse !!!!! Espérons qu&#8217;il y aura des pains au chocolat !
<div class="TweetButton_button" style="float: right; margin-left: 10px;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share data-url="http://j-mad.com/blog/2012/11/18/des-poneys-avec-des-chapeaux-ronds-aka-djangobreizh-les-poneys-envahissent-la-bretagne/" data-text="Des poneys avec des chapeaux ronds  aka DjangoBreizh, les poneys envahissent la bretagne"data-count="vertical" data-via="mrjmad" data-lang="fr""><img src="http://j-mad.com/blog/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
 <p><a href="http://j-mad.com/blog/?flattrss_redirect&amp;id=2252&amp;md5=e8bdb3bbc8ff1a1b4665696178a5f5e2" title="Flattr" target="_blank"><img src="http://j-mad.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2012/11/18/des-poneys-avec-des-chapeaux-ronds-aka-djangobreizh-les-poneys-envahissent-la-bretagne/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=17478&amp;popout=1&amp;url=http%3A%2F%2Fj-mad.com%2Fblog%2F2012%2F11%2F18%2Fdes-poneys-avec-des-chapeaux-ronds-aka-djangobreizh-les-poneys-envahissent-la-bretagne%2F&amp;language=fr_FR&amp;category=text&amp;title=Des+poneys+avec+des+chapeaux+ronds%C2%A0+aka+DjangoBreizh%2C+les+poneys+envahissent+la+bretagne&amp;description=Samedi+17+novembre+c%26%238217%3B%C3%A9tait+donc+la+premi%C3%A8re+edition+des+DjangoBreizh%2C+une+rencontre+django+locale+en+bretagne+organis%C3%A9+par+Exirel+%28bon+ok%2C+je+ne+suis+pas+tout+a+fait+breton+et...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Django, websocket et bidouillage.</title>
		<link>http://j-mad.com/blog/2012/08/05/django-websocket-et-bidouillage/</link>
		<comments>http://j-mad.com/blog/2012/08/05/django-websocket-et-bidouillage/#comments</comments>
		<pubDate>Sun, 05 Aug 2012 13:10:01 +0000</pubDate>
		<dc:creator>J-Mad</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=2234</guid>
		<description><![CDATA[Lors du Django Meetup Paris numéro 2 (qui a eu lieu dans les locaux de 20 minutes, merci à eux pour le prêt de la salle (et à Julien pour l&#8217;orga) ), un petit récap des confs EuroDjango a été fait par Samuel (le frère de David, et oui un Paccoud peut en cacher un <a href='http://j-mad.com/blog/2012/08/05/django-websocket-et-bidouillage/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Lors du <a href="http://www.meetup.com/Django-Paris/events/65819652/" target="_blank">Django Meetup Paris numéro 2</a> (qui a eu lieu dans les locaux de 20 minutes, merci à eux pour le prêt de la salle (et à <a href="https://twitter.com/revolunet" target="_blank">Julien</a> pour l&#8217;orga) ), un petit récap des confs EuroDjango a été fait par <a href="https://twitter.com/sampaccoud" target="_blank">Samuel</a> (le frère de <a href="https://twitter.com/#!/davidpaccoud" target="_blank">David</a>, et oui un Paccoud peut en cacher un autre!!). Apparemment un des sujets porteur des EuroDjango avait été le &#8216;web temps réel&#8217; (ce que je déteste ce terme tiens … temps réel, ça a un sens.. ça ne veut pas juste dire un truc en mode connecté) et la mise en place de celui ci dans Django (et du fait que peut être notre framework adoré n&#8217;était pas super en avance sur ce sujet).</p>
<p>J&#8217;en ai profité pour donner mon avis sur la question. A savoir qu&#8217;à mon sens, les serveurs webs n&#8217;était pas fait du tout pour gérer des connexions en mode connecté. Parce qu&#8217;ils n&#8217;ont pas été prévu pour cela. Idem pour le cœur de django qui n&#8217;est pas fait pour garder des pools de sockets, des états par connexion clientes, etc etc …</p>
<p>Alors qu&#8217;à contrario il y a des frameworks (je pense à twistted mais pas seulement) ou des manières d&#8217;écrire des serveurs qui permettent de gérer proprement des communications en mode connectées.</p>
<p>Il me semblait donc logique de &#8216;sortir&#8217; la partie websocket du cœur de Django pour qu&#8217;elle soit gérer par &#8216;autre chose&#8217;. Il me semble qu&#8217;à la fin de ma tirade explicative, quelqu&#8217;un m&#8217;a dit &#8216;ben ok, fait le&#8217; (me demande même si ce n&#8217;est pas ce fourbe de <a href="https://twitter.com/n1k0" target="_blank">n1k0</a>)</p>
<p>Du coup, ben ayant eu un peu de temps, ces jours-ci, j&#8217;ai rapidement fait un <a href="https://github.com/mrjmad/django_socketio_test" target="_blank">proto merdique de test</a>.</p>
<p>Le principe a été de prendre l&#8217;exemple de simple chat de <a href="https://github.com/abourget/gevent-socketio" target="_blank">Gevent-SocketIO</a> et de le &#8216;transformer&#8217; en une commande de management Django. La commande de management simulant un serveur de gestion des connexions socketIO des utilisateurs. Du coté django, on a une première vue qui demande de donner un nickname puis on se retrouve sur la fenêtre de chat (qui utilise socketIO) et on peut discuter avec les autres connectés. J&#8217;ai rajouté deux petits trucs, pour le plaisir, le fait d&#8217;avoir les 5 dernières lignes de discussion (ça se récupère par la partie WebSocket) et le nombre de user et lignes de discussions totales (s&#8217;affiche la première fois par la connexion HTTP classique, se met à jour par les WebSocket)</p>
<p>Il faut donc à un moment ou un autre, lier la partie DjangoWeb de la partie SocketIO. Comme ce n&#8217;est qu&#8217;un prototype pour m&#8217;amuser, je passe à la vue de chat une key généré aléatoirement, key que me renvoie le client JS à travers la websocket.</p>
<p>Bon, bien entendu, tout cela n&#8217;est qu&#8217;un prototype pour expliquer (avec du code) la manière dont je voyais les choses. Bien entendu bis, il faudrait &#8216;lier&#8217; la partie Web classique et Websocket d&#8217;une meilleure façon, ne pas utiliser une commande de management brute de décoffrage, potentiellement  élaguer pas mal gevent-socketio pour enlever tout ce dont on n&#8217;aurait pas besoin, etc etc …</p>
<p>Mais voilà, j&#8217;avais juste envie de faire un test, d&#8217;en parler ici et de vous demander votre avis sur la question:)
<div class="TweetButton_button" style="float: right; margin-left: 10px;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share data-url="http://j-mad.com/blog/2012/08/05/django-websocket-et-bidouillage/" data-text="Django, websocket et bidouillage."data-count="vertical" data-via="mrjmad" data-lang="fr""><img src="http://j-mad.com/blog/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
 <p><a href="http://j-mad.com/blog/?flattrss_redirect&amp;id=2234&amp;md5=1a642dd8019c4eede84871fcc3dfcf12" title="Flattr" target="_blank"><img src="http://j-mad.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2012/08/05/django-websocket-et-bidouillage/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=17478&amp;popout=1&amp;url=http%3A%2F%2Fj-mad.com%2Fblog%2F2012%2F08%2F05%2Fdjango-websocket-et-bidouillage%2F&amp;language=fr_FR&amp;category=text&amp;title=Django%2C+websocket+et+bidouillage.&amp;description=Lors+du+Django+Meetup+Paris+num%C3%A9ro+2+%28qui+a+eu+lieu+dans+les+locaux+de+20+minutes%2C+merci+%C3%A0+eux+pour+le+pr%C3%AAt+de+la+salle+%28et+%C3%A0+Julien+pour...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Orateurs, les rencontres django régionales ont besoin de vous !</title>
		<link>http://j-mad.com/blog/2012/07/28/orateurs-les-rencontres-django-regionales-ont-besoin-de-vous/</link>
		<comments>http://j-mad.com/blog/2012/07/28/orateurs-les-rencontres-django-regionales-ont-besoin-de-vous/#comments</comments>
		<pubDate>Sat, 28 Jul 2012 10:13:11 +0000</pubDate>
		<dc:creator>J-Mad</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=2230</guid>
		<description><![CDATA[L&#8217;un des résultats des discussions de la dernière DjangoCong fut de lancer l&#8217;idée de faire des DjangoCon régionales plus petites et qui permettraient de ne pas centraliser les attentes de toute la communauté sur un seul événement national. Et du coup d&#8217;éviter de générer de la frustration pour ceux qui n&#8217;ont pu acheter leurs billets <a href='http://j-mad.com/blog/2012/07/28/orateurs-les-rencontres-django-regionales-ont-besoin-de-vous/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>L&#8217;un des résultats des discussions de la dernière <a href="http://rencontres.django-fr.org/2012/" target="_blank">DjangoCong</a> fut de lancer l&#8217;idée de faire des DjangoCon régionales plus petites et qui permettraient de ne pas centraliser les attentes de toute la communauté sur un seul événement national. Et du coup d&#8217;éviter de générer de la frustration pour ceux qui n&#8217;ont pu acheter leurs billets et qui enragent, chez eux, parce qu&#8217;ils loupent la grand messe django FR. (pour avoir une idée de ce que cela peut donner, voir <a href="https://www.youtube.com/watch?v=p5HPgfXqeTo" target="_blank">ce lien</a> (oui je sais c&#8217;est un vieux lien, mais il est parfait pour la situation) ).</p>
<p>Deux première initiatives ont été finalement été lancés :</p>
<ul>
<li><a href="http://rencontres.django-fr.org/2012/bzh/" target="_blank">DjangoBreizh</a> à Rennes (vive la Bretagne, le temps pourris, le cidre et les crêpes) le samedi 17 novembre.</li>
<li><a href="http://rencontres.django-fr.org/2012/tolosa/" target="_blank">DjangoCon Toulouse</a> (ils ont oublié un g à la fin du nom.. tss tss, mais bon vive le cassoulet) le 24 et 25 novembre.</li>
</ul>
<p>C&#8217;est avec une grande joie que j&#8217;ai vu naître ces deux initiatives locales (d&#8217;ailleurs je serais présent, d&#8217;une manière quasi certaine à Rennes et peut-être, mais vraiment peut-être à Toulouse). Parce que ce n&#8217;est pas forcément évident d&#8217;organiser des conférences, même &#8216;juste locale&#8217;. Et que même dans certains domaines, il me semble que c&#8217;est plus difficile d&#8217;organiser une conférence locale que nationale.</p>
<p>Et un point qui peut, peut-être, être problématique, c&#8217;est la visibilité moindre de ces conférences, qui fait que mécaniquement, il y a moins d&#8217;orateurs potentiels qui en entendent parler et donc moins de propositions.</p>
<p>D&#8217;où mon billet du jour. Parce que pour réussir une bonne conférence, il faut une équipe organisatrice, un public et des orateurs. Et d&#8217;une vision tout à fait extérieure, j&#8217;ai vu peu de gens twitter &#8216;j&#8217;ai proposé ma conf pour DjangoToulouse ou DjangoBreizh&#8217;. C&#8217;est sûrement du au fait que conférences régionales dit moins de visibilité … (mais je l&#8217;ai déjà dit ça). Mais ça n&#8217;en reste pas moins ennuyeux.</p>
<p>Donc pour essayer de donner un peu plus de visibilité, je me fends de ce modeste billet. Comme ça vous ne pourrez plus dire que vous n&#8217;étiez pas au courant. Parce que maintenant vous l&#8217;êtes.</p>
<p>Alors proposez vos conf !</p>
<p>Pour les fainéants, je mets les liens direct vers les appels à conférences :</p>
<ul>
<li>Pour <a href="https://docs.google.com/spreadsheet/viewform?pli=1&amp;formkey=dHg4YXFraVJtY0dPLXFEM0FNNTc0Q1E6MQ#gid=0" target="_blank">DjangoBreizh</a></li>
<li>Pour <a href="https://docs.google.com/spreadsheet/viewform?formkey=dFVvbWN2MFNJMmdESjJSWXhpTXloOEE6MQ#gid=0" target="_blank">DjangoToulouse</a></li>
</ul>
<p>&nbsp;
<div class="TweetButton_button" style="float: right; margin-left: 10px;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share data-url="http://j-mad.com/blog/2012/07/28/orateurs-les-rencontres-django-regionales-ont-besoin-de-vous/" data-text="Orateurs, les rencontres django régionales ont besoin de vous !"data-count="vertical" data-via="mrjmad" data-lang="fr""><img src="http://j-mad.com/blog/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
 <p><a href="http://j-mad.com/blog/?flattrss_redirect&amp;id=2230&amp;md5=b476f8bda2d11a32bcc8a8918f239805" title="Flattr" target="_blank"><img src="http://j-mad.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2012/07/28/orateurs-les-rencontres-django-regionales-ont-besoin-de-vous/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=17478&amp;popout=1&amp;url=http%3A%2F%2Fj-mad.com%2Fblog%2F2012%2F07%2F28%2Forateurs-les-rencontres-django-regionales-ont-besoin-de-vous%2F&amp;language=fr_FR&amp;category=text&amp;title=Orateurs%2C+les+rencontres+django+r%C3%A9gionales+ont+besoin+de+vous%C2%A0%21&amp;description=L%26%238217%3Bun+des+r%C3%A9sultats+des+discussions+de+la+derni%C3%A8re+DjangoCong+fut+de+lancer+l%26%238217%3Bid%C3%A9e+de+faire+des+DjangoCon+r%C3%A9gionales+plus+petites+et+qui+permettraient+de+ne+pas+centraliser+les+attentes+de...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Installation de virtualenvwrapper chez Alwaysdata</title>
		<link>http://j-mad.com/blog/2012/07/24/installation-de-virtualenvwrapper-chez-alwaysdata/</link>
		<comments>http://j-mad.com/blog/2012/07/24/installation-de-virtualenvwrapper-chez-alwaysdata/#comments</comments>
		<pubDate>Tue, 24 Jul 2012 08:50:42 +0000</pubDate>
		<dc:creator>J-Mad</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=2225</guid>
		<description><![CDATA[J&#8217;ai il y a quelques temps fait de multiples tests chez AD. Certains nécessitaient l&#8217;utilisation de paquet python non installé par défaut sur le serveur mutu AD. Du coup, j&#8217;ai voulu installer virtualenwrapper pour me simplifier la tache. Voici la méthode que j&#8217;ai utilisé. Je suis preneur de toute amélioration que vous pourriez me remonter <a href='http://j-mad.com/blog/2012/07/24/installation-de-virtualenvwrapper-chez-alwaysdata/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>J&#8217;ai il y a quelques temps fait de multiples tests chez <a href="https://www.alwaysdata.com/" target="_blank">AD</a>. Certains nécessitaient l&#8217;utilisation de paquet python non installé par défaut sur le serveur mutu AD. Du coup, j&#8217;ai voulu installer virtualenwrapper pour me simplifier la tache.</p>
<p>Voici la méthode que j&#8217;ai utilisé. Je suis preneur de toute amélioration que vous pourriez me remonter sur ma manière de faire (pour le jour où j&#8217;aurais vraiment besoin d&#8217;installer des choses pour faire de la prod avec du virtualenv). D&#8217;ailleurs je la partage ici autant pour le plaisir de la partager, que pour ne pas l&#8217;oublier que pour vous permettre de l&#8217;améliorer.</p>
<p>Le commencement, installer <a href="http://virtualenvwrapper.readthedocs.org/en/latest/" target="_blank">virtualenwrapper</a>. En local sur son home. En faisant :</p>
<pre>
pip install --install-option="--user" virtualenvwrapper</pre>
<p>du coup cela vous installe le tout dans $HOME/.local/&#8230;.</p>
<p>Une fois installé, il faut faire (comme pour installation normale) la création du répertoire de vos environnements en faisant :</p>
<pre>
export WORKON_HOME=$HOME/.virtualenvs
mkdir -p $WORKON_HOME</pre>
<p>Ensuite histoire de ne plus avoir à le faire, dans votre .bash_profile :</p>
<pre>
export PYTHONPATH=~/.local 
export WORKON_HOME=~/.virtualenvs 
export PATH=$PATH:$PYTHONPATH/bin 
source ~/.local/bin/virtualenvwrapper.sh</pre>
<p>un petit coup de</p>
<pre>
source ~/.local/bin/virtualenvwrapper.sh</pre>
<p>et Voila ! (à dire comme avec l&#8217;accent d&#8217;un américain qui prend un accent français).</p>
<p>Vous aller pouvoir faire des mkvirtualenv en veux tu en voilà !</p>
<p>(Un petit tips, si vous faites du django, il ne faut pas oublier dans votre django.fcgi d&#8217;ajouter une ligne</p>
<pre> sys.path.insert(0,'/home/$USER/.virtualenvs /VENV_NAME/lib/python2.6/site-packages'</pre>
<p>)
<div class="TweetButton_button" style="float: right; margin-left: 10px;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share data-url="http://j-mad.com/blog/2012/07/24/installation-de-virtualenvwrapper-chez-alwaysdata/" data-text="Installation de virtualenvwrapper chez Alwaysdata"data-count="vertical" data-via="mrjmad" data-lang="fr""><img src="http://j-mad.com/blog/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
 <p><a href="http://j-mad.com/blog/?flattrss_redirect&amp;id=2225&amp;md5=ff863204ad2aadc5978ee0001bd59920" title="Flattr" target="_blank"><img src="http://j-mad.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2012/07/24/installation-de-virtualenvwrapper-chez-alwaysdata/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=17478&amp;popout=1&amp;url=http%3A%2F%2Fj-mad.com%2Fblog%2F2012%2F07%2F24%2Finstallation-de-virtualenvwrapper-chez-alwaysdata%2F&amp;language=fr_FR&amp;category=text&amp;title=Installation+de+virtualenvwrapper+chez+Alwaysdata&amp;description=J%26%238217%3Bai+il+y+a+quelques+temps+fait+de+multiples+tests+chez+AD.+Certains+n%C3%A9cessitaient+l%26%238217%3Butilisation+de+paquet+python+non+install%C3%A9+par+d%C3%A9faut+sur+le+serveur+mutu+AD.+Du+coup%2C+j%26%238217%3Bai...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Pony rider in the skyyyy&#8230; c&#8217;est le retour des djangocong YeeHa !!</title>
		<link>http://j-mad.com/blog/2011/11/15/pony-rider-in-the-skyyyy-cest-le-retour-des-djangocong-yeeha%c2%a0/</link>
		<comments>http://j-mad.com/blog/2011/11/15/pony-rider-in-the-skyyyy-cest-le-retour-des-djangocong-yeeha%c2%a0/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 22:54:51 +0000</pubDate>
		<dc:creator>J-Mad</dc:creator>
				<category><![CDATA[Django]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=1795</guid>
		<description><![CDATA[Je vous préviens, tout de suite, j&#8217;aurais pu céder à la facilité et parsemer mon billet d&#8217;annonce d&#8217;image de petit poney rose, pour coller aux thèmes du poney, de django, de l&#8217;amour platonique qui anime tout ceux qui font du django ( #sharethelove nan ?? ha non pardon c&#8217;est pas la bonne conférence). Mais non, je <a href='http://j-mad.com/blog/2011/11/15/pony-rider-in-the-skyyyy-cest-le-retour-des-djangocong-yeeha%c2%a0/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://j-mad.com/blog/wp-content/uploads/2011/11/harlequin.jpg" rel="thumbnail" rel="lightbox[1795]"><img class="alignleft size-full wp-image-1801" style="margin: 15px;" title="harlequin" src="http://j-mad.com/blog/wp-content/uploads/2011/11/harlequin.jpg" alt="" width="240" height="204" /></a><a href="../wp-content/uploads/2011/11/leya.jpg" rel="thumbnail" rel="lightbox[1795]"><img class="size-full wp-image-1796 alignright" style="margin-top: 15px; margin-bottom: 15px;" title="leya" src="http://j-mad.com/blog/wp-content/uploads/2011/11/leya.jpg" alt="" width="259" height="210" /></a>Je vous préviens, tout de suite, j&#8217;aurais pu céder à la facilité et parsemer mon billet d&#8217;annonce d&#8217;image de petit poney rose, pour coller aux thèmes du poney, de django, de l&#8217;amour platonique qui anime tout ceux qui font du django ( #sharethelove nan ?? ha non pardon c&#8217;est pas la bonne conférence). Mais non, je ne vais pas me laisser aller à cela. C&#8217;est dit.</p>
<p style="text-align: left;">Donc, pour la troisième année les <a href="http://rencontres.django-fr.org/2012/" target="_blank">Djangocongs</a> ont lieu, à nouveau dans le sud. Mais cette année ce ne sera pas à Marseille (après tout il faut bien vous faire découvrir de nouvelles villes) mais à Montpellier pendant le week end du 14-15 avril.</p>
<p><a href="http://j-mad.com/blog/wp-content/uploads/2011/11/superman.jpg" rel="thumbnail" rel="lightbox[1795]"><img class="alignleft size-full wp-image-1797" style="margin: 15px;" title="superman" src="http://j-mad.com/blog/wp-content/uploads/2011/11/superman.jpg" alt="" width="240" height="180" /></a></p>
<p>&nbsp;</p>
<p>Du coup, le staff s&#8217;élargit et accueille :</p>
<ul>
<li>des locaux (<a href="https://twitter.com/#!/n1k0/" target="_blank">nico</a> et <a href="https://twitter.com/#!/langlois_s/" target="_blank">stéphane</a> pour ne pas les nommer), véritables supermens de l&#8217;organisation, qui avec l&#8217;agilité qui les caractérisent s&#8217;occupent de tout et du reste. (Enfin c&#8217;est tout de même moi qui continue à faire les factures que les gentils sponsors vont recevoir, des sousssssss)</li>
</ul>
<ul>
<li>pleins de bonnes volontés, qui ont décidés que pour la troisième, il était temps de montrer qu&#8217;eux aussi avait des biscottos sous le tee-shirt geek et ont très gentiment proposés leur aide.</li>
</ul>
<p>Un staff élargi qui se retrousse les manches pour que cette troisième édition soit plus qu&#8217;un succès, soit une apothéose.</p>
<p>Et pour cela, plusieurs choses :</p>
<ul>
<li>la retour du découpage en quatre temps, avec simplement quelques arrangement pour parfaire le tout</li>
<li>une unité de lieu, &#8230; enfin.</li>
<li>Un lieu juste magique,.. les pieds dans l&#8217;eau, au bords de la plage, l&#8217;eau turquoise, les palmiers, le ciel bleu, le sable fin (et si il pleut ça sera à cause des nordistes).</li>
</ul>
<p>Mais pour que cette troisième édition soit vraiment une <a href="http://rencontres.django-fr.org/2012/" target="_blank">édition mémorable</a>, une édition totalement gaga, il va falloir que toi, cher <a href="http://j-mad.com/blog/wp-content/uploads/2011/11/gaga.jpg" rel="thumbnail" rel="lightbox[1795]"><img class="alignright size-full wp-image-1799" style="margin: 15px;" title="gaga" src="http://j-mad.com/blog/wp-content/uploads/2011/11/gaga.jpg" alt="" width="240" height="218" /></a>lecteur, tu y mettes un peu du tien. Bien sur il faudra t&#8217;inscrire, des que cela sera possible (mais ne t’inquiète pas, tu seras au courant). Bien sur il faudra ne pas oublier de prendre tes billets de train, ton ordi et ton maillot starwars. <a href="http://j-mad.com/blog/wp-content/uploads/2011/11/stormtrooper.jpg" rel="thumbnail" rel="lightbox[1795]"><img class="alignright size-full wp-image-1798" style="margin: 15px;" title="stormtrooper" src="http://j-mad.com/blog/wp-content/uploads/2011/11/stormtrooper.jpg" alt="" width="240" height="180" /></a></p>
<p>Mais vous pouvez faire plus . Pour cela rien de plus simple,  il va falloir <a href="https://docs.google.com/spreadsheet/viewform?hl=fr_FR&amp;formkey=dEFYWExmMDFxNzRSVk1rTS1RQndyelE6MQ" target="_blank">prendre son courage ponifique à deux mains et proposer un sujet de conférence</a> (ATTENTION, tu n&#8217;as que jusqu&#8217;au 13 janvier). Vous ne savez pas de quoi parler ? Vous avez l&#8217;impression de ne rien avoir à dire ? Si vous utilisez django, vous vous trompez sûrement. Je suis sur que vous avez un retour d&#8217;expérience enrichissant pour tous et que vous allez pouvoir partager en douze minutes. Vous avez utilisé django dans un contexte non web, fait des zigouigouis avec HTML5 ou de la haute dispo, lancé le dev d&#8217;un module utilisé par la terre entière et vous avez du coup une vraie expérience de lead de projet avec des utilisateurs ??? Vous voyez que vous en avez des choses à nous apprendre.</p>
<p>&nbsp;</p>
<p>Vous ne vous reconnaissez dans aucune des phrases du dessus ? C&#8217;est pas grave, vous avez sûrement autre chose à nous raconter. Et en plus, comme on est conciliant, si vous avez peur que douze minutes cela soit trop pour vous, si vous êtes plus du genre 5 minutes douche comprise, alors vous allez être aux anges. Parce que vous aller pouvoir candidater pour un LT de 5 minutes. Le monde est bien fait non ?<br />
<a href="http://j-mad.com/blog/wp-content/uploads/2011/11/lapin.jpg" rel="thumbnail" rel="lightbox[1795]"><img class="alignright size-full wp-image-1800" style="margin: 15px;" title="lapin" src="http://j-mad.com/blog/wp-content/uploads/2011/11/lapin.jpg" alt="" width="240" height="228" /></a><br />
<a href="http://j-mad.com/blog/wp-content/uploads/2011/11/musclor.jpg" rel="thumbnail" rel="lightbox[1795]"><img class="alignleft size-full wp-image-1808" style="margin: 15px;" title="musclor" src="http://j-mad.com/blog/wp-content/uploads/2011/11/musclor.jpg" alt="" width="240" height="184" /></a>Et si vraiment, vraiment tu penses que cette année, non, tu ne peux proposer un sujet, ce n&#8217;est pas grave. Après avoir passé une bonne demi journée à apprendre en écoutant des conférences qui seront, forcément, super intéressantes tu pourras participer jusqu&#8217;à plus soif (non je parle pas de l&#8217;apéro&#8230;) lors des sessions de barcamp et de sprint. Sans oublier la dernière demi journée qui te permettra de faire le fou sur la plage (ou tout autre activité ne nécessitant pas de haut de forme).</p>
<p>Plus que 150 jours ….</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Ps : pour ceux qui n&#8217;ont pas reconnu la référence du titre : <a href="http://www.youtube.com/watch?v=lxn48wSiCzg" target="_blank">www.youtube.com/watch?v=lxn48wSiCzg</a><br />
Ps2 : merci à <a href="http://twitter.com/langlois_s/" target="_blank">stéphane</a> de m&#8217;avoir fait découvrir <a href="http://marikasurinen.com" target="_blank">Mari Kasurinen</a>
<div class="TweetButton_button" style="float: right; margin-left: 10px;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share data-url="http://j-mad.com/blog/2011/11/15/pony-rider-in-the-skyyyy-cest-le-retour-des-djangocong-yeeha%c2%a0/" data-text="Pony rider in the skyyyy&#038;%238230; c&#038;%238217;est le retour des djangocong YeeHa !!"data-count="vertical" data-via="mrjmad" data-lang="fr""><img src="http://j-mad.com/blog/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
 <p><a href="http://j-mad.com/blog/?flattrss_redirect&amp;id=1795&amp;md5=b2f5985d8871d9dfbe399a66c4871d80" title="Flattr" target="_blank"><img src="http://j-mad.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2011/11/15/pony-rider-in-the-skyyyy-cest-le-retour-des-djangocong-yeeha%c2%a0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=17478&amp;popout=1&amp;url=http%3A%2F%2Fj-mad.com%2Fblog%2F2011%2F11%2F15%2Fpony-rider-in-the-skyyyy-cest-le-retour-des-djangocong-yeeha%25c2%25a0%2F&amp;language=fr_FR&amp;category=text&amp;title=Pony+rider+in+the+skyyyy%26%238230%3B+c%26%238217%3Best+le+retour+des+djangocong+YeeHa%C2%A0%21%21&amp;description=Je+vous+pr%C3%A9viens%2C+tout+de+suite%2C+j%26%238217%3Baurais+pu+c%C3%A9der+%C3%A0+la+facilit%C3%A9+et+parsemer+mon+billet+d%26%238217%3Bannonce+d%26%238217%3Bimage+de+petit+poney+rose%2C+pour+coller+aux+th%C3%A8mes+du+poney%2C+de+django%2C...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Django-ratelimit-backend ne réglera pas vos problèmes de foie, mais de rate oui&#8230;</title>
		<link>http://j-mad.com/blog/2011/11/01/django-ratelimit-backend-ne-reglera-pas-vos-problemes-de-foie-mais-de-rate-oui/</link>
		<comments>http://j-mad.com/blog/2011/11/01/django-ratelimit-backend-ne-reglera-pas-vos-problemes-de-foie-mais-de-rate-oui/#comments</comments>
		<pubDate>Mon, 31 Oct 2011 22:42:16 +0000</pubDate>
		<dc:creator>J-Mad</dc:creator>
				<category><![CDATA[La Django-app du mois]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=1754</guid>
		<description><![CDATA[Deuxième édition de la django app du mois précédent, encore une fois sur le fil, alors que les citrouilles continuent à ricaner dans leurs coins. Ce mois-ci c&#8217;est django-ratelimit-backend, une des multiples apps de monsieur Brutasse (qui ne doit jamais dormir pour publier autant de truc&#8230;) 1- Où on le trouve, comment on l’installe, tout <a href='http://j-mad.com/blog/2011/11/01/django-ratelimit-backend-ne-reglera-pas-vos-problemes-de-foie-mais-de-rate-oui/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Deuxième édition de la django app du mois précédent, encore une fois sur le fil, alors que les citrouilles continuent à ricaner dans leurs coins. Ce mois-ci c&#8217;est <a href="https://github.com/brutasse/django-ratelimit-backend" target="_blank">django-ratelimit-backend</a>, une des multiples apps de monsieur <a href="https://twitter.com/brutasse" target="_blank">Brutasse</a> (qui ne doit jamais dormir pour publier autant de truc&#8230;)</p>
<p>1- Où on le trouve, comment on l’installe, tout ça quoi (et la doc) ?</p>
<p>Deux possibilités pour le trouver, sur sa page <a href="https://github.com/brutasse/django-ratelimit-backend" target="_blank">github</a> (on regrettera le choix de github et non bitbucket mais bon:) )  ou sur sa page <a href="http://pypi.python.org/pypi/django-ratelimit-backend/0.1" target="_blank">pypi</a>. Ce qui du coup vous permettra de l&#8217;installer de deux façon :</p>
<ul>
<li>un petit git clone bien de chez nous</li>
<li>un simple : pip install django-ratelimit-backend</li>
</ul>
<p>La doc est dispo sur la page<a href="http://django-ratelimit-backend.readthedocs.org/en/latest/index.html" target="_blank"> readthedocs du projet</a>. Et elle est bien fournie. Une aide à l&#8217;install, un quickstart et une section pour expliquer comment modifier le critère de limitation et une référence complète du code.</p>
<h1>2- Mais au fait, à quoi ça sert ?</h1>
<p>A empêcher les vilains méchants pas beau de crier &#8216;des logins ou un sort&#8217; devant vos jolis sites webs Django. En clair, à &#8216;bannir&#8217; pendant 5 minutes des IP qui auraient tentées de se logguer sur votre appli à de trop nombreuses reprises.<br />
Les réglages de base sont :</p>
<ul>
<li>si tu tentes de te logguer 30 fois sans y arriver</li>
<li>dans une période de moins de 5 minutes</li>
<li>alors tu es bannis 5 minutes.</li>
</ul>
<h1>3- Comment ça marche ?</h1>
<p>C&#8217;est relativement facile.<br />
Première chose, il n&#8217;est même pas nécessaire d&#8217;ajouter l&#8217;app dans vos INSTALLED_APPS, à part si vous voulez lancer les tests (vous pourrez alors installer tox si vous voulez tester avec toutes les versions de django)</p>
<p>Il vous faudra par contre ajouter un backend d&#8217;authentification à savoir :  &#8216;ratelimitbackend.backends.RateLimitModelBackend&#8217;.</p>
<p>Il vous faudra de plus :</p>
<ul>
<li>utiliser la vue ratelimitbackend.views.login à la place de django.contrib.auth.views.login</li>
<li>si vous utilisez l&#8217;admin, utiliser ratelimitbackend. admin au lieu de l&#8217;admin normal de django.</li>
<li>Ajouter le middleware ratelimitbackend.middleware.RateLimitMiddleware</li>
</ul>
<p>Vous pourrez bien entendu modifier les critères de détection de vilains. Pour cela il vous suffira d&#8217;implémenter votre propre middleware (tout est bien expliqué dans la doc, ne paniquez pas!)
<div class="TweetButton_button" style="float: right; margin-left: 10px;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share data-url="http://j-mad.com/blog/2011/11/01/django-ratelimit-backend-ne-reglera-pas-vos-problemes-de-foie-mais-de-rate-oui/" data-text="Django-ratelimit-backend ne réglera pas vos problèmes de foie, mais de rate oui&#038;%238230;"data-count="vertical" data-via="mrjmad" data-lang="fr""><img src="http://j-mad.com/blog/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
 <p><a href="http://j-mad.com/blog/?flattrss_redirect&amp;id=1754&amp;md5=4db01d81571d0a66a38e7597cdb4dc90" title="Flattr" target="_blank"><img src="http://j-mad.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2011/11/01/django-ratelimit-backend-ne-reglera-pas-vos-problemes-de-foie-mais-de-rate-oui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=17478&amp;popout=1&amp;url=http%3A%2F%2Fj-mad.com%2Fblog%2F2011%2F11%2F01%2Fdjango-ratelimit-backend-ne-reglera-pas-vos-problemes-de-foie-mais-de-rate-oui%2F&amp;language=fr_FR&amp;category=text&amp;title=Django-ratelimit-backend+ne+r%C3%A9glera+pas+vos+probl%C3%A8mes+de+foie%2C+mais+de+rate+oui%26%238230%3B&amp;description=Deuxi%C3%A8me+%C3%A9dition+de+la+django+app+du+mois+pr%C3%A9c%C3%A9dent%2C+encore+une+fois+sur+le+fil%2C+alors+que+les+citrouilles+continuent+%C3%A0+ricaner+dans+leurs+coins.+Ce+mois-ci+c%26%238217%3Best+django-ratelimit-backend%2C+une...&amp;tags=Django%2CPython%2Creview%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Sans lui, zinnia-rrivait pas. Lui qui ? Django Zinnia, la django app du mois précédent</title>
		<link>http://j-mad.com/blog/2011/09/30/sans-lui-zinnia-rrivait-pas-lui-qui%c2%a0-django-zinnia-la-django-app-du-mois-precedent/</link>
		<comments>http://j-mad.com/blog/2011/09/30/sans-lui-zinnia-rrivait-pas-lui-qui%c2%a0-django-zinnia-la-django-app-du-mois-precedent/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 21:59:56 +0000</pubDate>
		<dc:creator>J-Mad</dc:creator>
				<category><![CDATA[La Django-app du mois]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=1695</guid>
		<description><![CDATA[Cela fait maintenant plusieurs mois que je n&#8217;arrive pas à rattraper le retard d&#8217;une django app du mois. J&#8217;ai donc décidé de suivre les conseils de ce cher daks et d&#8217;officialiser mon retard en parlant de Django app du mois précédent. Voici donc la première django app du mois précédent (et bon j&#8217;ai bien failli <a href='http://j-mad.com/blog/2011/09/30/sans-lui-zinnia-rrivait-pas-lui-qui%c2%a0-django-zinnia-la-django-app-du-mois-precedent/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Cela fait maintenant plusieurs mois que je n&#8217;arrive pas à rattraper le retard d&#8217;une django app du mois. J&#8217;ai donc décidé de suivre les conseils de ce cher daks et d&#8217;officialiser mon retard en parlant de Django app du mois précédent. Voici donc la première django app du mois précédent (et bon j&#8217;ai bien failli devoir parler de la django app d&#8217;il y a deux mois), Django Zinnia, un moteur de blog qu&#8217;il est bien (et merci à <a href="http://twitter.com/#!/arcagenis/" target="_blank">arcagenis</a> pour la découverte)</p>
<h1>1- Où on le trouve, comment on l’installe, tout ça quoi (et la doc) ?</h1>
<p>Où est ce qu&#8217;on le trouve, sur son <a href="http://django-blog-zinnia.com/blog/" target="_blank">site web</a>, sa page <a href="http://pypi.python.org/pypi/django-blog-zinnia/0.9" target="_blank">pypi</a> et sa page <a href="https://github.com/Fantomas42/django-blog-zinnia" target="_blank">github</a>.</p>
<p>Pour l&#8217;installer, vous aurez plusieurs plusieurs solutions :</p>
<ul>
<li>un git clone tout simple</li>
<li>un petit pip install en utilisant le support git de pip</li>
<li>un petit easy_install ( ou pip install normal) pour avoir la dernière version stable.</li>
</ul>
<p>Niveau démo, il existe et c&#8217;est carrément cool :</p>
<ul>
<li>une démo du rendu (qui sert à héberger la doc)</li>
<li>une démo de la version d&#8217;administration.</li>
<li>Un planet qui liste tous les blogs utilisant Zinnia</li>
</ul>
<p>Concernant la <a href="http://django-blog-zinnia.com/documentation/" target="_blank">doc</a>, elle est vraiment super bien foutue et très complète. Installation, Configuration, Configuration avancée, extensibilité, etc etc … C&#8217;est vraiment une des meilleures docs d&#8217;application django que j&#8217;ai pu lire. Pour ne pas dire la meilleure d&#8217;ailleurs.</p>
<p>Cerise sur le gâteau, on peut même voir la <a href="http://django-blog-zinnia.com/documentation/coverage/" target="_blank">couverture de code des tests.</a></p>
<h1>2- Mais au fait, à quoi ça sert ?</h1>
<p>Bon, je l&#8217;ai dit c&#8217;est un moteur de blog. Donc on a des catégories, des billets, des tags, et des flux RSS.</p>
<p>Mais ce n&#8217;est pas tout, Zinnia propose vraiment pas mal de petites fonctionnalités qui en font un vrai moteur de blog, qui (et je le dis sincèrement) peut imaginer concurrencer certains moteurs de blogs php très connus.</p>
<p>Zinnia offre par exemple :</p>
<ul>
<li>des url shortenners</li>
<li>de la publication de tweets automatique sur publication d&#8217;article</li>
<li>un moteur de recherche interne</li>
<li>détection des spams avec askimet (ou autre)</li>
<li>des sitemap</li>
<li>des channels, un truc spécifique à Zinnia</li>
<li>une extension facile, ….</li>
</ul>
<p>Et si vous avez déjà un blog ? Genre WordPress ou Blogger ?</p>
<p>Et ben Zinnia offre des moulinettes d&#8217;import / export. Et ça, c&#8217;est vraiment terrible.</p>
<h1>3- Bon et en conclusion ?</h1>
<p>Il y a a mon sens plein de bonnes idées dans Zinnia :</p>
<ul>
<li>Les script d&#8217;import / export sont tout simplement un must have qui vont que l&#8217;on peut vraiment imaginer migrer un blog existant sous Zinnia.</li>
<li>Les channels qui permettent de réutiliser le moteur de recherche interne (qui utilise <a href="http://pyparsing.wikispaces.com/" target="_blank">pyparsing</a>) pour faire des recherches parmis les articles et en sortir une partie.</li>
<li>Les models qui sont bien fait, à base de classe abstract et permettent de surcharger sans difficulté les choses.</li>
<li>Il utilise south ce qui doit faciliter les migrations.</li>
</ul>
<p>A tout cela il faut ajouter le fait qu&#8217;il n&#8217;y est au final que peu de dépendances. Au niveau des apps django, il n&#8217;y a que deux dépendances obligatoires :</p>
<ul>
<li><a href="https://github.com/django-mptt/django-mptt/" target="_blank">django-mptt</a></li>
<li><a href="http://code.google.com/p/django-tagging/" target="_blank">django-tagging</a></li>
</ul>
<p>Après cela dépends des fonctionnalités que vous voulez mettre en place, mais cela reste très light et très clair. (je ne parlerais pas par exemple de pinax qui en comparaison me fait l&#8217;effet d&#8217;une usine à gaz).</p>
<p>Je vais donc suivre ce projet avec intérêt et même si je ne suis pas sur de passer tout de suite le mad blog en Zinnia, je vais en migrer d&#8217;autre d&#8217;ici quelques temps, ça, c&#8217;est certain.
<div class="TweetButton_button" style="float: right; margin-left: 10px;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share data-url="http://j-mad.com/blog/2011/09/30/sans-lui-zinnia-rrivait-pas-lui-qui%c2%a0-django-zinnia-la-django-app-du-mois-precedent/" data-text="Sans lui, zinnia-rrivait pas. Lui qui %3f Django Zinnia, la django app du mois précédent"data-count="vertical" data-via="mrjmad" data-lang="fr""><img src="http://j-mad.com/blog/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
 <p><a href="http://j-mad.com/blog/?flattrss_redirect&amp;id=1695&amp;md5=ae8d0b48525a73b49422c194923bc4d3" title="Flattr" target="_blank"><img src="http://j-mad.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2011/09/30/sans-lui-zinnia-rrivait-pas-lui-qui%c2%a0-django-zinnia-la-django-app-du-mois-precedent/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=17478&amp;popout=1&amp;url=http%3A%2F%2Fj-mad.com%2Fblog%2F2011%2F09%2F30%2Fsans-lui-zinnia-rrivait-pas-lui-qui%25c2%25a0-django-zinnia-la-django-app-du-mois-precedent%2F&amp;language=fr_FR&amp;category=text&amp;title=Sans+lui%2C+zinnia-rrivait+pas.+Lui+qui%C2%A0%3F+Django+Zinnia%2C+la+django+app+du+mois+pr%C3%A9c%C3%A9dent&amp;description=Cela+fait+maintenant+plusieurs+mois+que+je+n%26%238217%3Barrive+pas+%C3%A0+rattraper+le+retard+d%26%238217%3Bune+django+app+du+mois.+J%26%238217%3Bai+donc+d%C3%A9cid%C3%A9+de+suivre+les+conseils+de+ce+cher+daks+et...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Django-Autocomplete, and all your requests will be complete, but  be careful with the horn</title>
		<link>http://j-mad.com/blog/2011/08/20/django-autocomplete-and-all-your-requests-will-be-complete-but-be-careful-with-the-horn/</link>
		<comments>http://j-mad.com/blog/2011/08/20/django-autocomplete-and-all-your-requests-will-be-complete-but-be-careful-with-the-horn/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 23:33:26 +0000</pubDate>
		<dc:creator>J-Mad</dc:creator>
				<category><![CDATA[La Django-app du mois]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=1598</guid>
		<description><![CDATA[Bon, je suis encore en retard pour la django app du mois de juillet, mais je m&#8217;améliore, je n&#8217;ai plus que 20 jours de retard. Espérons que la django app du mois d&#8217;aout soit à l&#8217;heure&#8230;. En attendant de voir si en août, à l&#8217;heure je serais, je vous propose de découvrir cette petite django-app <a href='http://j-mad.com/blog/2011/08/20/django-autocomplete-and-all-your-requests-will-be-complete-but-be-careful-with-the-horn/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Bon, je suis encore en retard pour la django app du mois de juillet, mais je m&#8217;améliore, je n&#8217;ai plus que 20 jours de retard.</p>
<p>Espérons que la django app du mois d&#8217;aout soit à l&#8217;heure&#8230;. En attendant de voir si en août, à l&#8217;heure je serais, je vous propose de découvrir cette petite django-app bien sympatique.</p>
<p>Mais avant un peu de contexte. Je cherche depuis quelques temps une django app pour faire de l&#8217;autocompletion. <a href="http://djangopackages.com" target="_blank">Djangopackages</a> qui est décidément très souvent mon ami propose un <a href="http://djangopackages.com/grids/g/auto-complete/" target="_blank">tableau récapitulatif assez sympa d&#8217;un certain nombre d&#8217;app qui propose cela</a>.</p>
<p>Parmi la liste, j&#8217;ai décidé de tester <a href="https://bitbucket.org/tyrion/django-autocomplete" target="_blank">django-autocomplete</a> qui me paraissait le mieux répondre à mes besoin, à savoir de l&#8217;autocomplete facile coté admin, comme coté site non admin.</p>
<p>Nouveauté ce mois si au niveau du billet, je vais vous présenter deux versions de l&#8217;app à savoir la <a href="https://bitbucket.org/tyrion/django-autocomplete" target="_blank">version &#8216;officielle&#8217; faite par tyrion</a> et un <a href="https://bitbucket.org/etienned/django-autocomplete" target="_blank">fork fait par etienned</a>. Pourquoi vous présentez deux versions&nbsp;? Parce que la version d&#8217;etienned propose quelques améliorations visuelles intéressantes (et quelques petits refactor pas débiles).</p>
<h1>1- Où on le trouve, comment on l’installe, tout ça quoi (et la doc)&nbsp;?</h1>
<p>Ici cela dépends de la version que vous désirez tester de django-autocomplete. Si vous voulez tester la <a href="https://bitbucket.org/tyrion/django-autocomplete" target="_blank">version première de tyrion</a> alors vous avez&nbsp; deux possibilité&nbsp;:</p>
<ul>
<li>par un petit hg clone à partir de sa page bitbucket</li>
<li>en utilisant easy_install ou pip.</li>
</ul>
<p>Par contre pour la version <a href="https://bitbucket.org/etienned/django-autocomplete" target="_blank">d&#8217;etienned</a>, pas de package, donc pas d&#8217;easy_install ou de pip, il n&#8217;y a qu&#8217;une solution, un bon vieux hg clone</p>
<p>Chose suffisamment rare pour qu&#8217;elle soit mis en avant, il y a une démo de la version première, que vous pourrez tester <a href="http://autocomplete.ep.io/example/" target="_blank">ici</a>.</p>
<p>Concernant la doc, pour les deux versions, tout se trouve dans bitbucket.</p>
<ul>
<li>Dans la version de tyrion vous aurez droit au fichier <a href="https://bitbucket.org/tyrion/django-autocomplete/src/fef4e822ff0f/README.rst" target="_blank">Readme</a> et au <a href="https://bitbucket.org/tyrion/django-autocomplete/wiki/Home" target="_blank">wiki</a>.</li>
<li>Dans la version d&#8217;etienned il n&#8217;y a que le fichier Readme qui est composé en grande partie du descriptif des addons que propose ce fork (et qui se finit par un exemple d&#8217;utilisation dans l&#8217;admin).</li>
</ul>
<p>Est ce que c&#8217;est suffisant&nbsp;? Si vous envisagez de n&#8217;utiliser l&#8217;autocomplétion que dans la partie admin, clairement oui. Sinon alors là, clairement non. Vraiment pas même. Et à vous les joies de la lecture du code source pour comprendre comment cela fonctionne (ou alors vous pouvez continuer à lire mon billet et voir comment tout cela fonctionne dans la partie 3 <img src='http://j-mad.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
<h1>2- Mais au fait, à quoi ça sert&nbsp;?</h1>
<p>Tout simplement à proposer un mécanisme d&#8217;autocomplétion sur les champs texte ou Int mais aussi&nbsp; les foreignkey et les manytomany. Et qui, cerise sur le gâteau, ce veut simple au niveau de son déploiement</p>
<p>Et à le faire d&#8217;une façon un peu &#8216;magique&#8217;. On déclare seulement quels sont les models qui mettront en place l&#8217;autocomplétion et pour lesquels de leur champs. Et après tout ce fait presque tout seul (en tout cas pour la mise en place des urls qui permettent de retourner le résultat du filtrage en fonction des caractères tapés, c&#8217;est tout automatique).</p>
<h1>3- Comment ça marche&nbsp;?</h1>
<p>C&#8217;est presque tout simple.&nbsp; En tout cas si vous voulez intégrer django-autcomplete dans l&#8217;admin.</p>
<p>Imaginons que vous vouliez autocomplete les auteurs de bouquin dans une app de critique de livre.</p>
<p>Vous allez commencer par déclarer une classe qui configure votre autocomplete&nbsp;:</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">from</span> autocomplete.<span style="color: black;">views</span> <span style="color: #ff7700;font-weight:bold;">import</span> AutocompleteSettings<br />
<span style="color: #ff7700;font-weight:bold;">class</span> AuthorAutocomplete<span style="color: black;">&#40;</span>AutocompleteSettings<span style="color: black;">&#41;</span>:<br />
search_fields <span style="color: #66cc66;">=</span> <span style="color: black;">&#40;</span><span style="color: #483d8b;">'^first_name'</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">'^last_name'</span><span style="color: black;">&#41;</span></div></div>
<p>Ensuite&nbsp;?</p>
<p>Vous déclarez simplement où vous voulez utiliser votre autocomplete. En partant du principe que votre model pour les reviews de bouquin s&#8217;appelle Reviews et que le champ pour l&#8217;autheur du bouquin s&#8217;appelle book_author cela donnera cela&nbsp;:</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">from</span> autocomplete.<span style="color: black;">views</span> <span style="color: #ff7700;font-weight:bold;">import</span> autocomplete<br />
autocomplete.<span style="color: black;">register</span><span style="color: black;">&#40;</span>Reviews.<span style="color: black;">book_author</span><span style="color: #66cc66;">,</span> AuthorAutocomplete<span style="color: black;">&#41;</span></div></div>
<p>et voilà. C&#8217;est fini. Vous avez dans votre admin, un champ ForeignKey en autocomplétion. Et sans forcer.</p>
<p>En lisant la doc vous verrez que l&#8217;on peut faire de façon différente, spécifier le queryset sur lequel on veut limiter l&#8217;autocomplete, etc etc …</p>
<p>Maintenant, qu&#8217;est ce qui se passe si vous voulez mettre un peu d&#8217;autocomplétion dans votre site version pas admin&nbsp;?</p>
<p>Hum ben là, c&#8217;est pas beaucoup plus compliqué en fait. Le problème est juste qu&#8217;il n&#8217;existe pas de doc.<br />
Mais si vous farfouillez dans le code vous verrez qu&#8217;il existe une classe de widget (AutocompleteWidget qui se trouve dans&nbsp; autocomplete.widgets qui permet de mettre en place l&#8217;autocomplétion).</p>
<p>Il vous suffit alors dans votre formulaire, de rajouter le paramêtre widget à votre Field et de lui passer un AutocompleteWidget (qui a lui même en paramètre le champ qui mettra en place l&#8217;autocomplétion).</p>
<p>Si l&#8217;on reprend l&#8217;exemple d&#8217;au dessus on pourrait avoir quelque chose ressemblant à cela&nbsp;:</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">class</span> ReviewForm<span style="color: black;">&#40;</span>forms.<span style="color: black;">ModelForm</span><span style="color: black;">&#41;</span>:<br />
author <span style="color: #66cc66;">=</span> forms.<span style="color: black;">ChoiceField</span><span style="color: black;">&#40;</span>widget<span style="color: #66cc66;">=</span>AutocompleteWidget<span style="color: black;">&#40;</span>Review.<span style="color: black;">book_author</span> <span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></div></div>
<p>Il y a bien évidement le widget qui va bien pour la version multiple sélection (MultipleAutocompleteWidget)</p>
<p>Et si l&#8217;on continue à fouiller un peu plus, dans utils, on trouvera une très sympathique autocompleteform_factory qui permet de générer un form en prenant un paramètre le Model qui va bien, un dictionnaire listant les champs implémentant l&#8217;autocomplétion<br />
ainsi que les champs à exclure.</p>
<h1>4 conclusion et tips.</h1>
<p>J&#8217;ai eu quelques problèmes lors de mes tests lorsque j&#8217;ai voulu installer django-autocomplete en temps qu&#8217;app dans le répertoire de mon projet et pas dans mon pythonpath. J&#8217;avais des phénomènes bizarre de double exécution de code qui me donnais de jolies exception. Je n&#8217;ai pas vraiment réussi à comprendre le pourquoi du comment ni pourquoi en sortant simplement l&#8217;app du répertoire de mon projet cela se mettait à fonctionner parfaitement&#8230;</p>
<p>Pour ceux qui utilisent grappeli, je viens de voir qu&#8217;il existait un fork de<a href="https://bitbucket.org/dwaiter/django-autocomplete-grappelli" target="_blank"> django-autocomplete</a> pour en faciliter l&#8217;intégration. Mais par contre, là, je n&#8217;ai pas du tout essayé.</p>
<p>Ha et pour finir, le titre est une référence un peu obscure à un film avec Jack Black:).
<div class="TweetButton_button" style="float: right; margin-left: 10px;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share data-url="http://j-mad.com/blog/2011/08/20/django-autocomplete-and-all-your-requests-will-be-complete-but-be-careful-with-the-horn/" data-text="Django-Autocomplete, and all your requests will be complete, but%2520be careful with the horn"data-count="vertical" data-via="mrjmad" data-lang="fr""><img src="http://j-mad.com/blog/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
 <p><a href="http://j-mad.com/blog/?flattrss_redirect&amp;id=1598&amp;md5=38d9c06c803de5fc545baac75f968bb8" title="Flattr" target="_blank"><img src="http://j-mad.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2011/08/20/django-autocomplete-and-all-your-requests-will-be-complete-but-be-careful-with-the-horn/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=17478&amp;popout=1&amp;url=http%3A%2F%2Fj-mad.com%2Fblog%2F2011%2F08%2F20%2Fdjango-autocomplete-and-all-your-requests-will-be-complete-but-be-careful-with-the-horn%2F&amp;language=fr_FR&amp;category=text&amp;title=Django-Autocomplete%2C+and+all+your+requests+will+be+complete%2C+but++be+careful+with+the+horn&amp;description=Bon%2C+je+suis+encore+en+retard+pour+la+django+app+du+mois+de+juillet%2C+mais+je+m%26%238217%3Bam%C3%A9liore%2C+je+n%26%238217%3Bai+plus+que+20+jours+de+retard.+Esp%C3%A9rons+que+la+django+app...&amp;tags=Django%2CPython%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Impostor, aucun rapport avec le courrier, la poste ou les gens de petite taille</title>
		<link>http://j-mad.com/blog/2011/07/28/impostor-aucun-rapport-avec-le-courrier-la-poste-ou-les-gens-de-petite-taille/</link>
		<comments>http://j-mad.com/blog/2011/07/28/impostor-aucun-rapport-avec-le-courrier-la-poste-ou-les-gens-de-petite-taille/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 19:54:25 +0000</pubDate>
		<dc:creator>J-Mad</dc:creator>
				<category><![CDATA[La Django-app du mois]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=1499</guid>
		<description><![CDATA[Avec énormément de retard (non monsieur Daks, je ne vais pas renommer ma rubrique la django app du mois dernier) voici donc la django app du mois de juin. Ce mois-ci, enfin le mois dernier, je vais vous présenter Impostor une application que j&#8217;ai découvert au détour d&#8217;un tweet (de dzen je crois ) 1- <a href='http://j-mad.com/blog/2011/07/28/impostor-aucun-rapport-avec-le-courrier-la-poste-ou-les-gens-de-petite-taille/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Avec énormément de retard (non monsieur <a href="https://twitter.com/daks_" target="_blank">Daks</a>, je ne vais pas renommer ma rubrique la django app du mois dernier) voici donc la django app du mois de juin.</p>
<p>Ce mois-ci, enfin le mois dernier, je vais vous présenter Impostor une application que j&#8217;ai découvert au détour d&#8217;un tweet (de <a href="https://twitter.com/dzen" target="_blank">dzen</a> je crois )</p>
<h1>1- Où on le trouve, comment on l’installe, tout ça quoi (et la doc) ?</h1>
<p>&nbsp;</p>
<p>Deux possibilité pour le trouver, sa page <a href="https://github.com/samastur/Impostor" target="_blank">github</a> ou sa page <a href="http://djangopackages.com/packages/p/impostor/" target="_blank">django packages</a>. Pas de page pypi, enfin pas encore, espérons qu&#8217;elle arrive vite.</p>
<p>Pour l&#8217;installer, pas le choix, il faut passer par github.<br />
Un petit git clone https://github.com/samastur/Impostor.git et c&#8217;est plié.</p>
<p>Quand à la doc, Elle se limite au <a href="https://github.com/samastur/Impostor/blob/master/README.rst" target="_blank">readme.rst</a>. Mais cela suffit. Et puis le readme est bien clair. Il vous expliquera comment l&#8217;installer dans votre projet django et comment vous en servir (et puis si vous continuer à lire, je vous l&#8217;expliquerais aussi)</p>
<h1>2- Mais au fait, à quoi ça sert ?</h1>
<p>&nbsp;</p>
<p>Tout simplement à se déguiser lorsque l&#8217;on se logue. D&#8217;ailleurs c&#8217;est un des meilleurs noms d&#8217;app django que j&#8217;ai pu croiser. Décrivant à la fois bien la finalité de l&#8217;app tout en étant rigolo.</p>
<p>Impostor vous permettra donc, si vous avez un login staff member de vous loguer en temps qu&#8217;un au tre utilisateur. Vous verrez donc l&#8217;appli comme il la voit, vous pourrez interagir avec django en étant considéré comme l&#8217;utilisateur dont vous avez prit les traits (enfin le login).</p>
<h1>3- Comment ça marche ?</h1>
<p>C&#8217;est tout simple.<br />
Il suffit d&#8217;ajouter un backend d&#8217;authentification à votre application django, à savoir &#8216;impostor.backend.AuthBackend&#8217;</p>
<p>ce qui doit vous donner quelque chose ressemblant à :</p>
<pre>
 AUTHENTICATION_BACKENDS = (
 'django.contrib.auth.backends.ModelBackend',
 'impostor.backend.AuthBackend',
 )</pre>
<p>et bien entendu il faut ajouter &#8216;impostor&#8217; à vos INSTALLED_APPS</p>
<p>Ensuite ?</p>
<p>Un simple petit syncdb et c&#8217;est fini, vous allez pouvoir vous déguiser en un de vos utilisateurs. Comment ?<br />
Au lieu de vous loguer avec votre login il vous suffira de vous loguer ainsi :</p>
<pre>
 votrelogin as leloginquevousvoulezdevenir</pre>
<p>&nbsp;</p>
<p>et de taper votre password.
<div class="TweetButton_button" style="float: right; margin-left: 10px;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share data-url="http://j-mad.com/blog/2011/07/28/impostor-aucun-rapport-avec-le-courrier-la-poste-ou-les-gens-de-petite-taille/" data-text="Impostor, aucun rapport avec le courrier, la poste ou les gens de petite taille"data-count="vertical" data-via="mrjmad" data-lang="fr""><img src="http://j-mad.com/blog/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
 <p><a href="http://j-mad.com/blog/?flattrss_redirect&amp;id=1499&amp;md5=8fcf70fbca716e51f44063aca3c2ff41" title="Flattr" target="_blank"><img src="http://j-mad.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2011/07/28/impostor-aucun-rapport-avec-le-courrier-la-poste-ou-les-gens-de-petite-taille/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=17478&amp;popout=1&amp;url=http%3A%2F%2Fj-mad.com%2Fblog%2F2011%2F07%2F28%2Fimpostor-aucun-rapport-avec-le-courrier-la-poste-ou-les-gens-de-petite-taille%2F&amp;language=fr_FR&amp;category=text&amp;title=Impostor%2C+aucun+rapport+avec+le+courrier%2C+la+poste+ou+les+gens+de+petite+taille&amp;description=Avec+%C3%A9norm%C3%A9ment+de+retard+%28non+monsieur+Daks%2C+je+ne+vais+pas+renommer+ma+rubrique+la+django+app+du+mois+dernier%29+voici+donc+la+django+app+du+mois+de+juin.+Ce...&amp;tags=Django%2CPython%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Django-urlcrypt, après les contes c&#8217;est l&#8217;url de la crypte.</title>
		<link>http://j-mad.com/blog/2011/06/04/django-urlcrypt-apres-les-contes-cest-lurl-de-la-crypte/</link>
		<comments>http://j-mad.com/blog/2011/06/04/django-urlcrypt-apres-les-contes-cest-lurl-de-la-crypte/#comments</comments>
		<pubDate>Sat, 04 Jun 2011 15:26:46 +0000</pubDate>
		<dc:creator>J-Mad</dc:creator>
				<category><![CDATA[La Django-app du mois]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=1463</guid>
		<description><![CDATA[Voila, comme dit dans le billet précédent, je vais donc faire deux billets de django app de mai, ça m&#8217;apprendra à être en retard. Donc la deuxième django app du mois sera django-urlcrypt. Une petite précision avant d&#8217;aller plus loin, c&#8217;est une des toutes premières fois où je vais parler d&#8217;une app sans avoir fait <a href='http://j-mad.com/blog/2011/06/04/django-urlcrypt-apres-les-contes-cest-lurl-de-la-crypte/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Voila, comme dit dans le billet précédent, je vais donc faire deux billets de django app de mai, ça m&#8217;apprendra à être en retard.</p>
<p>Donc la deuxième django app du mois sera django-urlcrypt. Une petite précision avant d&#8217;aller plus loin, c&#8217;est une des toutes premières fois où je vais parler d&#8217;une app sans avoir fait plus que la tester sur un projet de test, sans avoir d&#8217;idée précise de où ni comment je vais l&#8217;utiliser &#8216;en vrai&#8217;.</p>
<h1>1- Où on le trouve, comment on l’installe, tout ça quoi (et la doc) ?</h1>
<p>Alors on le trouve soit sur sa page <a title="django-urlcrypt" href="http://pypi.python.org/pypi/django-urlcrypt" target="_blank">pypi</a> soit sur sa page <a title="django-urlcrypt" href="https://github.com/dziegler/django-urlcrypt" target="_blank">github</a>.</p>
<p>Pour l&#8217;installation là encore, les trois moyens habituels :</p>
<ul>
<li> par easy_install</li>
<li> pip</li>
<li> un petit git clone des familles</li>
</ul>
<p>La doc, là c&#8217;est comme l&#8217;app précédente, elle est limitée au contenu de la page de pypi ou au fichier <a title="readme" href="https://github.com/dziegler/django-urlcrypt#readme" target="_blank">Readme.rst</a>.</p>
<p>Bon alors c&#8217;est vrai que la doc est suffisante pour comprendre comment l&#8217;app marche, mais sur une app qui est aussi &#8216;sensible&#8217;, une bonne lecture du code ne fait pas de mal (c&#8217;est d&#8217;ailleurs ce que j&#8217;ai fait quand j&#8217;ai commencé à faire joujou avec).</p>
<h1>2- Mais au fait, à quoi ça sert ?</h1>
<p>En fait l&#8217;app a deux utilité même si une seule est vraiment mise en avant sur la doc de l&#8217;app. La première c&#8217;est de fournir aux utilisateurs une url ressemblant à ça :  http://www.mydomain.com/r/TkNJBkNFAghDWkdFGPUAQEfcDUJfEBIREgEUFl1BQ18IQkdDUUcPSh4ADAYAWhYKHh8KHBsHEw qui les authentifiera automatiquement et qui en plus les redirigera vers l&#8217;url que vous aurez voulu.  (genre le renvoyer sur /profil ou /inbox)</p>
<p>L&#8217;autre fonctionnalité moins mise en avant, c&#8217;est que l&#8217;on peut encoder des infos dans l&#8217;url, dans un message qui se trouve être un dictionnaire. Alors honnêtement je ne sais pas trop encore à quoi cela peut servir, mais je trouve l&#8217;idée coolos.</p>
<h1>3- Comment ça marche ?</h1>
<p>C&#8217;est tout simple.</p>
<p>Dans une vue, on peut utiliser la fonction urlcrypt.generate_login_token qui prend en param l&#8217;utilisateur et l&#8217;url de redirect et qui génére le token qui encode le tout. Ensuite il suffit de créer l&#8217;url complète qui va bien.</p>
<p>Dans un template, on utilise le template tags encoded_url qui prend comme argument un user et une url de redirect.</p>
<p>Enfin on peut utiliser les fonctions urlcrypt.encode_token et urlcrypt.decode_token<br />
qui permettront de crypter / décrypter un message contenu dans un dictionnaire (voir l&#8217;aide pour plus d&#8217;infos).</p>
<p>Au niveau des configurations possibles, on peut configurer :</p>
<ul>
<li> à combien de requêtes à droit un visiteur</li>
<li> l&#8217;url de fallblack si l&#8217;authentification contenu dans l&#8217;url echoue</li>
<li> un path vers une clé privée RSA qui permettra d&#8217;ajouter un cryptage RSA lorsque l&#8217;on génère le token.  L&#8217;utilisation de ce paramètre est très très fortement recommandé (pour rappel pour généré le clé : ssh-keygen -t rsa -f  )</li>
</ul>
<h1>4- conclusion</h1>
<p>Le mécanisme de login par url cryptée me séduit beaucoup. Mais d&#8217;un autre coté je me pose des questions au niveau sécurité. Parce que l&#8217;url, l&#8217;utilisateur il va devoir la stocker. Et qu&#8217;autant mémoriser un mot de passe, on peut le faire, autant apprendre une url&#8230;, qu&#8217;en pensez vous ?</p>
<p>La question de la durée de vie de l&#8217;url me semble aussi importante. J&#8217;aurais aimé avoir dans l&#8217;app un système qui permette de rendre des url obsolètes parce que trop vieilles..</p>
<p>Enfin concernant la deuxième méthode d&#8217;utilisation, à savoir encoder des messages dans l&#8217;url, je trouve l&#8217;idée ravissante, j&#8217;ai envie de l&#8217;utiliser mais je ne sais pas à quoi elle pourrait bien me servir. A réfléchir donc.</p>
<p>&nbsp;</p>
<h2><span style="color: #ff0000;">UPDATE:</span></h2>
<p>on vient de me pointer quelques problèmes qui existent avec cette app (<a href="http://www.reddit.com/r/django/comments/e040c/djangourlcrypt/">discussion visible ici</a>) Apparement un des problèmes a été réglé en utilisant RSA (mais son utilisation n&#8217;est toujours pas obligatoire) mais il me semble que le hash du password est toujours utilisé dans certain cas. Ce qui n&#8217;est vraiment pas une bonne idée. En l&#8217;état l&#8217;app n&#8217;est donc pas forcément à utiliser, mais plutôt à étudier pour imaginer son propre système.</p>
<p>&nbsp;
<div class="TweetButton_button" style="float: right; margin-left: 10px;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share data-url="http://j-mad.com/blog/2011/06/04/django-urlcrypt-apres-les-contes-cest-lurl-de-la-crypte/" data-text="Django-urlcrypt, après les contes c&#038;%238217;est l&#038;%238217;url de la crypte."data-count="vertical" data-via="mrjmad" data-lang="fr""><img src="http://j-mad.com/blog/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
 <p><a href="http://j-mad.com/blog/?flattrss_redirect&amp;id=1463&amp;md5=b50a2fdf9bafa52eb8f996147905dbf0" title="Flattr" target="_blank"><img src="http://j-mad.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2011/06/04/django-urlcrypt-apres-les-contes-cest-lurl-de-la-crypte/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=17478&amp;popout=1&amp;url=http%3A%2F%2Fj-mad.com%2Fblog%2F2011%2F06%2F04%2Fdjango-urlcrypt-apres-les-contes-cest-lurl-de-la-crypte%2F&amp;language=fr_FR&amp;category=text&amp;title=Django-urlcrypt%2C+apr%C3%A8s+les+contes+c%26%238217%3Best+l%26%238217%3Burl+de+la+crypte.&amp;description=Voila%2C+comme+dit+dans+le+billet+pr%C3%A9c%C3%A9dent%2C+je+vais+donc+faire+deux+billets+de+django+app+de+mai%2C+%C3%A7a+m%26%238217%3Bapprendra+%C3%A0+%C3%AAtre+en+retard.+Donc+la+deuxi%C3%A8me+django+app+du...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Django-countries ,l&#8217;app garantie sans cowboy ni rodéo. djangoApp de mai 1 sur 2</title>
		<link>http://j-mad.com/blog/2011/06/04/django-countries-lapp-garantie-sans-cowboy-ni-rodeo-djangoapp-de-mai-1-sur-2/</link>
		<comments>http://j-mad.com/blog/2011/06/04/django-countries-lapp-garantie-sans-cowboy-ni-rodeo-djangoapp-de-mai-1-sur-2/#comments</comments>
		<pubDate>Sat, 04 Jun 2011 13:29:33 +0000</pubDate>
		<dc:creator>J-Mad</dc:creator>
				<category><![CDATA[La Django-app du mois]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://j-mad.com/blog/?p=1459</guid>
		<description><![CDATA[Il va falloir que je me surveille .. parce qu&#8217;encore une fois je publie ma django app du mois un peu en retard. Pas grand chose, juste 4 jours.. Mais ça commence comme ça et après on finit par ne plus tenir de rythme du tout. Du coup, pour marquer, le coup, je publierais deux <a href='http://j-mad.com/blog/2011/06/04/django-countries-lapp-garantie-sans-cowboy-ni-rodeo-djangoapp-de-mai-1-sur-2/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Il va falloir que je me surveille .. parce qu&#8217;encore une fois je publie ma django app du mois un peu en retard. Pas grand chose, juste 4 jours.. Mais ça commence comme ça et après on finit par ne plus tenir de rythme du tout.</p>
<p>Du coup, pour marquer, le coup, je publierais deux django app du mois de mai, même si je les publie en juin.</p>
<p>Et pour commencer, django-countries. C&#8217;est d&#8217;ailleurs assez rigolo parce que je parlais il y a peu de moyen de gérer les pays, avec une liste de choix existantes, etc.. et op, je tombe sur django-countries.</p>
<h1>1- Où on le trouve, comment on l’installe, tout ça quoi (et la doc) ?</h1>
<p>Vous trouverez django-countries soit sur sa page <a href="http://pypi.python.org/pypi/django-countries">pypi</a> soit sur sa page <a title="django-countries" href="https://bitbucket.org/smileychris/django-countries/">bitbucket</a>.</p>
<p>Pour l&#8217;installation, vous avez les trois moyens désormais classique :</p>
<ul>
<li> un easy_install</li>
<li> un pip install</li>
<li> un bon vieux hg clone</li>
</ul>
<p>La doc elle se limite à :</p>
<ul>
<li> la page pypi</li>
<li> le readme du repository</li>
</ul>
<p>Sachant que dans les deux cas, le contenu est le même. Mais vu la simplicité de l&#8217;app, cela suffit amplement.</p>
<h1>2- Mais au fait, à quoi ça sert ?</h1>
<p>L&#8217;app rajoute tout simplement un nouveau type de field, le CountryField. Ce CountryField vous permettra de gérer les codes à 2 lettres internationaux qui modélisent les pays mais aussi d&#8217;afficher un petit gif du drapeau qui va bien.</p>
<p>Et oui, comme dans les vrais sites et tout quoi.</p>
<h1>3- Comment ça marche ?</h1>
<p>C&#8217;est donc vraiment tout couillon. Un field CountryField. Et des instances de fiels qui ont les données membre :</p>
<ul>
<li> code (le code à deux lettres)</li>
<li> name (le vrai nom du pays)</li>
<li> flag (le chemin vers le drapeau)</li>
</ul>
<p>Rien de bien compliqué.
<div class="TweetButton_button" style="float: right; margin-left: 10px;;height:20px;margin-bottom:5px;"><a href="http://twitter.com/share data-url="http://j-mad.com/blog/2011/06/04/django-countries-lapp-garantie-sans-cowboy-ni-rodeo-djangoapp-de-mai-1-sur-2/" data-text="Django-countries ,l&#038;%238217;app garantie sans cowboy ni rodéo. djangoApp de mai 1 sur 2"data-count="vertical" data-via="mrjmad" data-lang="fr""><img src="http://j-mad.com/blog/wp-content/plugins/tweetbutton-for-wordpress/images/tweet.png" style="border:none" /></a></div>
 <p><a href="http://j-mad.com/blog/?flattrss_redirect&amp;id=1459&amp;md5=8d3e9f470c3a3c7476a312cc2170594c" title="Flattr" target="_blank"><img src="http://j-mad.com/blog/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://j-mad.com/blog/2011/06/04/django-countries-lapp-garantie-sans-cowboy-ni-rodeo-djangoapp-de-mai-1-sur-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=17478&amp;popout=1&amp;url=http%3A%2F%2Fj-mad.com%2Fblog%2F2011%2F06%2F04%2Fdjango-countries-lapp-garantie-sans-cowboy-ni-rodeo-djangoapp-de-mai-1-sur-2%2F&amp;language=fr_FR&amp;category=text&amp;title=Django-countries+%2Cl%26%238217%3Bapp+garantie+sans+cowboy+ni+rod%C3%A9o.+djangoApp+de+mai+1+sur+2&amp;description=Il+va+falloir+que+je+me+surveille+..+parce+qu%26%238217%3Bencore+une+fois+je+publie+ma+django+app+du+mois+un+peu+en+retard.+Pas+grand+chose%2C+juste+4+jours..+Mais...&amp;tags=Django%2CPython%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>
