<?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>./maxime.sh &#187; Web</title>
	<atom:link href="http://maxime.sh/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://maxime.sh</link>
	<description>Le blog de Maxime VALETTE : Web, Vin, Littérature, Culture outrancière.</description>
	<lastBuildDate>Mon, 26 Jul 2010 07:23:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Lily Poulp&#8217; et le Friedrich Effect</title>
		<link>http://maxime.sh/2010/07/lily-poulp-et-le-friedrich-effect/</link>
		<comments>http://maxime.sh/2010/07/lily-poulp-et-le-friedrich-effect/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 13:55:02 +0000</pubDate>
		<dc:creator>Maxime</dc:creator>
				<category><![CDATA[Ma vie]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://maxime.sh/?p=3109</guid>
		<description><![CDATA[Mes petits pandas. Vous parlez tous depuis hier de Paul le Poulpe qui aurait deviné l&#8217;issue du match Espagne-Allemagne d&#8217;hier soir. Mais je vous le dis ici, il n&#8217;y a qu&#8217;un seul poulpe qui vaille la peine en ce monde, c&#8217;est Lily Poulp&#8217;. Dédipix de Friedrich en mode photo de fille surexposée. Et si je [...]]]></description>
			<content:encoded><![CDATA[<p>Mes petits pandas. Vous parlez tous depuis hier de <a href="http://search.twitter.com/search?q=pulpo+paul" target="_blank">Paul le Poulpe</a> qui aurait deviné l&#8217;issue du match Espagne-Allemagne d&#8217;hier soir. Mais je vous le dis ici, il n&#8217;y a qu&#8217;un seul poulpe qui vaille la peine en ce monde, c&#8217;est <a href="http://aetazeichnung.blogspot.com/" target="_blank">Lily Poulp&#8217;</a>.</p>
<p class="image border"><a href="http://maxime.sh/wp-content/uploads/2010/07/Mobile-Photo-7-juil.-2010-20-27-38.jpg" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/07/Mobile-Photo-7-juil.-2010-20-27-38.jpg" alt="Mobile Photo 7 juil. 2010 20 27 38.jpg" border="0" /></a><br /><em>Dédipix de Friedrich en mode photo de fille surexposée.</em></p>
<p>Et si je dis ça c&#8217;est bien sûr uniquement parce que <a href="http://friedri.sh" target="_blank">Friedrich</a>, le plus beau chat de la Terre, a maintenant l&#8217;honneur d&#8217;être mentionné sur son blog. Avant d&#8217;être dessiné ? Si c&#8217;est le cas, Lily, fais gaffe, on l&#8217;a déjà dessiné gros une fois, il a eu du mal à s&#8217;en remettre.</p>
<p class="image border"><a href="http://maxime.sh/wp-content/uploads/2010/07/cqen.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/07/cqen.png" alt="cqen.png" border="0" /></a></p>
<p>Ces quelques dessins résument très bien ce qu&#8217;on appelle communément le <em>&laquo;&nbsp;Friedrich effect&nbsp;&raquo;</em>, cet effet qui rend gaga n&#8217;importe quel être humain après avoir eu un contact visuel avec mon chat ! Admirez. Merci Lily.</p>
<p style="text-align: center; margin: 20px;">Voir <a href="http://aetazeichnung.blogspot.com/2010/07/friedrich-part-1.html" target="_blank">Friedrich part 1</a> sur Lily Poulp&#8217;</li></p>
]]></content:encoded>
			<wfw:commentRss>http://maxime.sh/2010/07/lily-poulp-et-le-friedrich-effect/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Coral, un CDN gratuit pour votre site</title>
		<link>http://maxime.sh/2010/07/coral-un-cdn-gratuit-pour-votre-site/</link>
		<comments>http://maxime.sh/2010/07/coral-un-cdn-gratuit-pour-votre-site/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 08:49:00 +0000</pubDate>
		<dc:creator>Maxime</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://maxime.sh/?p=3025</guid>
		<description><![CDATA[CDN est l&#8217;abréviation couramment utilisée pour Content Delivery Network, ce qui signifie en bon français Réseau de distribution de contenus. En clair, il s&#8217;agit d&#8217;un réseau d&#8217;ordinateurs dédiés à délivrer du contenu statique, à l&#8217;inverse du contenu généré dynamiquement par un site en fonction de sa base de données ou de l&#8217;utilisateur identifié. Les fichiers [...]]]></description>
			<content:encoded><![CDATA[<p>CDN est l&#8217;abréviation couramment utilisée pour <i>Content Delivery Network</i>, ce qui signifie en bon français <i>Réseau de distribution de contenus</i>. En clair, il s&#8217;agit d&#8217;un réseau d&#8217;ordinateurs dédiés à délivrer du contenu statique, à l&#8217;inverse du contenu généré dynamiquement par un site en fonction de sa base de données ou de l&#8217;utilisateur identifié.</p>
<p>Les fichiers mis à disposition sur un CDN sont en général les images d&#8217;un site, ses fichiers JavaScript, ses feuilles de style. L&#8217;avantage est double : D&#8217;une part ça soulage le serveur qui préfère occuper son temps à générer des pages dynamiques plus rapidement, d&#8217;autre part les CDN sont souvent géolocalisés et l&#8217;utilisateur récupère les fichiers sur le serveur le plus proche de chez lui, diminuant le temps de réponse global du site.</p>
<p>L&#8217;inconvénient est unique : <b>Ça coûte cher</b>. Mais une solution gratuite existe.</p>
<p class="image"><a href="http://maxime.sh/wp-content/uploads/2010/07/logo.jpg" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/07/logo.jpg" alt="logo.jpg" border="0" /></a></p>
<p><a href="http://coralcdn.org/" target="_blank">CoralCDN</a> se veut être la solution de CDN pour tous les gens qui ont envie de réduire leur trafic (très limité dans le cas d&#8217;un hébergement mutualisé par exemple) et d&#8217;accélérer le chargement de leurs pages, mais qui n&#8217;en ont pas les moyens.</p>
<p>Le système CoralCDN est on ne peut plus simple : Il suffit d&#8217;ajouter <span class="code">.nyud.net</span> au nom de domaine dans l&#8217;adresse du fichier que l&#8217;on souhaite mettre en cache sur CoralCDN, et le tour est joué.</p>
<p>Exemple :</p>
<p class="code">http://ootweet.com/images/ootweet.png</p>
<p>devenant…</p>
<p class="code">http://ootweet.com<b>.nyud.net</b>/images/ootweet.png</p>
<p>… le fichier est automatiquement répliqué sur tous les serveurs de CoralCDN.</p>
<p class="image"><a href="http://maxime.sh/wp-content/uploads/2010/07/map-world-gen-1.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/07/map-world-gen-1.png" alt="map-world-gen-1.png" border="0" /></a><br /><em>260 serveurs à travers le monde. C&#8217;est mieux qu&#8217;une Dédibox à Bezons.</em></p>
<p>Vous l&#8217;aurez compris, pour l&#8217;utiliser sur votre site vous n&#8217;avez vraiment pas grand chose à modifier, alors autant en profiter si vous avez des problèmes pour boucler votre bande passante en fin de mois. Encore mieux, si vous êtes sur WordPress, vous n&#8217;avez qu&#8217;<a href="http://wordpress.org/extend/plugins/free-cdn/" target="_blank">un plugin</a> à installer pour profiter de CoralCDN dès maintenant :)</p>
<p>A noter que selon la <a href="http://wiki.coralcdn.org/wiki.php?n=Main.FAQ" target="_blank">FAQ</a>, la taille des fichiers transférés sur le CDN est limitée à 50 Mo, pas besoin de tenter de mettre vos DivX en cache.</p>
<p>Une utilisation détournée mais néanmoins intéressante pour tous ceux qui travaillent derrière un proxy : Les domaines créés grâce à CoralCDN et son .nyud.net échappent la plupart du temps aux filtres de contrôle. Ainsi, si VDM est bloqué à votre boulot par exemple, vous pouvez vous y rendre en tapant l&#8217;URL suivante :</p>
<p class="code">http://www.viedemerde.fr<b>.nyud.net</b></p>
<p>A noter que ce proxy de fortune fonctionne sur les ports 80, 8080 et 8090.</p>
<p>Si vous tombez souvent sur des filtrages en visitant vos sites préférés, vous pouvez installer le bookmarklet <a href="javascript:void((function(){location.href=location.href.replace(/^http\:\/\/([^\/\@]+)\/(?:)/,%22http://%22+%22$1%22.replace(%22\:%22,%22.%22)+%22.nyud.net/%22);})())" target="_blank">Coralize</a> (glissez-le dans votre barre personnelle) et cliquez dessus dès que le monstre proxy tentera une attaque sur votre humble personne.</p>
<p>Voilà pour l&#8217;astuce du jour mes petits pandas, je vais maintenant me plonger dans un bain de glaçons pendant que Friedrich <a href="http://friedri.sh/post/749062364/dyson-air-multiplier-with-a-cat" target="_blank">joue avec le ventilateur</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maxime.sh/2010/07/coral-un-cdn-gratuit-pour-votre-site/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Sportscafe, le VDM-like par Eric Dupin</title>
		<link>http://maxime.sh/2010/07/sportscafe-le-vdm-like-par-eric-dupin/</link>
		<comments>http://maxime.sh/2010/07/sportscafe-le-vdm-like-par-eric-dupin/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 07:11:53 +0000</pubDate>
		<dc:creator>Maxime</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://maxime.sh/?p=3060</guid>
		<description><![CDATA[Un petit message d&#8217;encouragement à mon ami Eric Dupin qui lance aujourd&#8217;hui son nouveau site, SportsCafe. Le nom vous dit sûrement quelque chose, en effet pendant quelques temps c&#8217;était un blog dédié au sport. Manquant de volontaires pour le mettre à jour, Eric a eu une idée originale pour réutiliser le nom de domaine (faut [...]]]></description>
			<content:encoded><![CDATA[<p>Un petit message d&#8217;encouragement à mon ami <a href="http://www.presse-citron.net" target="_blank">Eric Dupin</a> qui lance aujourd&#8217;hui son nouveau site, <a href="http://www.sportscafe.fr/" target="_blank">SportsCafe</a>. Le nom vous dit sûrement quelque chose, en effet pendant quelques temps c&#8217;était un blog dédié au sport. Manquant de volontaires pour le mettre à jour, Eric a eu une idée originale pour réutiliser le nom de domaine (faut pas gâcher).</p>
<p class="image"><a href="http://maxime.sh/wp-content/uploads/2010/07/7fa6.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/07/7fa6.png" alt="7fa6.png" border="0" /></a></p>
<p>Le site est donc un <strong>recueil de petites phrases</strong> sur le sport, où chacun peut <strong>soumettre sa citation</strong> sportive qui sera ensuite <strong>validée</strong> par les administrateurs. Sur la page d&#8217;accueil, vous avez <strong>deux votes possibles</strong> sur chaque citation et il y aura même <strong>un classement</strong> des meilleures. Attention cependant, les soumissions sont limitées à <strong>300 caractères</strong> !</p>
<p>Ça me rappelle quelque chose mais j&#8217;arrive pas à savoir quoi.</p>
<p>Eric n&#8217;a pas mentionné Presse-citron dans les liens sur la droite, je suppose que ce n&#8217;est que par humilité. Cependant comme dit Shakira, Whois don&#8217;t lie :</p>
<p class="code">nic-hdl:     ED1527-FRNIC<br />
type:        PERSON<br />
contact:     Eric Dupin<br />
address:     Bloobox Net<br />
address:     31, rue de Cuire<br />
address:     69004 Lyon<br />
country:     FR<br />
phone:       +33 4 78 28 91 60<br />
e-mail:      afc80c8ffec2adb3f77b2e489a11b614-698230@contact.gandi.net<br />
changed:     02/03/2009 nicfr@gandi.net<br />
anonymous:   NO<br />
obsoleted:   NO<br />
source:      FRNIC</p>
<p>J&#8217;aurais bien créé une catégorie LOL pour l&#8217;occasion mais j&#8217;ai pas le temps.</p>
<p>J&#8217;en profite pour souhaiter un bon anniversaire à Eric, nous deux, ça fait <a href="http://data.nimages.fr/ericn3i.jpg" target="_blank">déjà un an</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maxime.sh/2010/07/sportscafe-le-vdm-like-par-eric-dupin/feed/</wfw:commentRss>
		<slash:comments>48</slash:comments>
		</item>
		<item>
		<title>Vive Super Populo !</title>
		<link>http://maxime.sh/2010/06/vive-super-populo/</link>
		<comments>http://maxime.sh/2010/06/vive-super-populo/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 05:28:03 +0000</pubDate>
		<dc:creator>Maxime</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://maxime.sh/?p=2983</guid>
		<description><![CDATA[Aujourd&#8217;hui, le grand blogueur Korben est devenu num&#233;ro 1 du classement High Tech Wikio, grillant la politesse &#224; son nouveau meilleur ami Eric Dupin, grâce à sa si bonne ma&#238;trise du populisme. Alors qu&#8217;il soit premier c&#8217;est plut&#244;t cool, mais en lisant des articles comme Vive Super Crapule j&#8217;aurais plut&#244;t envie de le mettre premier [...]]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui, le grand blogueur Korben est devenu num&eacute;ro 1 du classement High Tech Wikio, grillant la politesse &agrave; son nouveau meilleur ami <a target="_blank" href="http://ootweet.com/users/pressecitron/mentions">Eric Dupin</a>, grâce à sa si bonne ma&icirc;trise du populisme. Alors qu&#8217;il soit premier c&#8217;est plut&ocirc;t cool, mais en lisant des articles comme <a href="http://www.korben.info/vive-super-crapule.html" target="_blank">Vive Super Crapule</a> j&#8217;aurais plut&ocirc;t envie de le mettre premier de la cat&eacute;gorie Sport tellement son style est épuisant, tandis que son BFF Lyonnais m&eacute;riterait une bonne place au classement SEO.</p>
<p class="image border"><a href="http://maxime.sh/wp-content/uploads/2010/06/20081205_abraham.jpg" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/06/20081205_abraham.jpg" alt="20081205_abraham.jpg" border="0" /></a></p>
<p>Mais je ne mériterais pas mes insultes quotidiennes avec pour seule matière quelques gratuites remarques. Nous allons donc analyser ensemble ce merveilleux exercice de style :</p>
<blockquote>
<p><span style="font-family: 'Lucida Grande', Verdana, Arial, sans-serif;">Pr&eacute;venu par mon&nbsp;<a target="_blank" href="http://graphism.fr/lhadopi-prend-les-enfants-pour-des-idiots-avec-super-crapule">frangin</a>, voici que le gouvernement &eacute;tend sa&nbsp;<strong>propagande</strong>&nbsp;de merde &agrave; la jeunesse en expliquant pourquoi les t&eacute;l&eacute;chargeurs sont des&nbsp;<strong>super crapules</strong>, et pourquoi super Hadopi avec son super slip va mettre toutes les super crapules bien cach&eacute;es derri&egrave;re leur ordinateur dans une super prison !</span></p>
</blockquote>
<p>Ça commence fort. L&#8217;outrage se ressent du fin fond de son Auvergne, &agrave; tel point qu&#8217;il ose utiliser le mot de Cambronne devant ses lecteurs qui rappelons-le, ont une moyenne d&#8217;&acirc;ge de 14 ans (d&eacute;duction établie &agrave; partir du niveau des commentaires). Il n&#8217;oubliera pas non plus de remercier la famille, c&#8217;est important la famille, ça crée de l&#8217;affect. On poursuit avec un peu de fausse ironie pour dire qu&#8217;ils ont vraiment rien coooompriiis (accent d&#8217;ado rebelle).</p>
<blockquote>
<p><span style="font-family: 'Lucida Grande', Verdana, Arial, sans-serif;">Merci &agrave;&nbsp;<a target="_blank" href="http://www.curiosphere.tv/video-documentaire/17-4-1-1-education-aux-medias/109072--quest-ce-que-la-loi-hadopi">Curiosph&egrave;re</a>, le site de l&rsquo;<strong>EDUCATION</strong>&nbsp;en image de FRANCE 5 qui fait de super dessins anim&eacute;s avec nos imp&ocirc;ts&hellip;&nbsp;Je propose donc de&nbsp;r&eacute;habiliter&nbsp;Super Crapule et de lancer un fan club pour soutenir ce petit gamin, qui m&ecirc;me s&rsquo;il lui manque des dents, m&rsquo;a l&rsquo;air super rebelzzz et super sympathique et ne m&eacute;rite pas d&rsquo;aller en prison, ni m&ecirc;me de se faire suspendre sa connexion internet !</span></p>
</blockquote>
<p>L&agrave; c&#8217;est du classique, mais &ccedil;a marche toujours : Ils ont fait &ccedil;a avec l&#8217;argent du contribuable ! C&#8217;est une honte de payer des imp&ocirc;ts pour financer des vid&eacute;os &eacute;ducatives ! Il vaut mieux financer des <a target="_blank" href="http://www.korben.info/abonnes-orange-avez-vous-gagne-un-ipad-publicite.html">billets sponsoris&eacute;s</a>. Ah bah oui l&agrave; on le dit plus trop que c&#8217;est pay&eacute; par nos imp&ocirc;ts. Et puisque la Super Crapule est un ado rebelle comme nous, il faut l&#8217;accepter dans notre groupe de super résistants du P2P.</p>
<blockquote>
<p><span style="font-family: 'Lucida Grande', Verdana, Arial, sans-serif;">On ne met pas les enfants en prison, non mais ho ! et encore moins Super Crapule, qui luttera encore et toujours contre l&rsquo;hypocrisie du gouvernement et des majors qui ne veulent respectivement qu&rsquo;une chose : Contr&ocirc;ler le net et s&rsquo;en mettre encore plus plein les fouilles !</span></p>
</blockquote>
<p>Nouvelle technique : Faire peur. Oui il faut faire peur pour avoir des commentaires et faire le BUZZ. Alors dire que le gouvernement va pouvoir lire ton skyblog &ccedil;a fout tout de suite les p&eacute;toches. Et puis de toute fa&ccedil;on tout &ccedil;a c&#8217;est fait par des riches qui veulent &ecirc;tre encore plus riches, alors c&#8217;est mal.</p>
<blockquote>
<p><span style="font-family: 'Lucida Grande', Verdana, Arial, sans-serif;">J&rsquo;aimerai bien un second &eacute;pisode ou Super Artiste, qui se fait exploiter par Super Major, viendrait d&eacute;fendre Super Crapule contre Super&nbsp;<a title="Hadopi" href="http://www.korben.info/hadopi-payer-prouver-innocence.html">Hadopi</a>&hellip; Ou encore Super Libert&eacute; qui viendrait expliquer que &nbsp;Super Hadopi n&rsquo;est en fait que la double personnalit&eacute; de Super Censure , qui est un pretexte pour mettre en place une Super infrastructure capable de censurer les Super Internautes qui l&rsquo;ouvrent trop&hellip;</span></p>
</blockquote>
<p>Dernier paragraphe, l&#8217;apoth&eacute;ose, le point Godwin du populisme &agrave; la Korben : L&#8217;argument de la Libert&eacute;. Comme son <a target="_blank" href="http://free.korben.info/index.php/T&eacute;l&eacute;chargements_et_&eacute;changes_de_fichiers">wiki de la libert&eacute;</a> qui apprend aux gamins &agrave; t&eacute;l&eacute;charger tranquilou sous Windows sans se faire rep&eacute;rer. Mais c&#8217;est au nom de la Libert&eacute; tu vois, on a le droit. Sinon apr&egrave;s c&#8217;est la censure et sans que tu t&#8217;en aper&ccedil;oives tu liras la Pravda en buvant ta soupe de rutabaga.</p>
<p class="image"><a href="http://maxime.sh/wp-content/uploads/2010/06/aq8b.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/06/aq8b.png" alt="aq8b.png" border="0" /></a><br /><em>Pas moi qui l&#8217;ai dit.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://maxime.sh/2010/06/vive-super-populo/feed/</wfw:commentRss>
		<slash:comments>109</slash:comments>
		</item>
		<item>
		<title>Bookmarklet &#8211; Tout aimer sur Facebook</title>
		<link>http://maxime.sh/2010/06/bookmarklet-tout-aimer-sur-facebook/</link>
		<comments>http://maxime.sh/2010/06/bookmarklet-tout-aimer-sur-facebook/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 10:50:42 +0000</pubDate>
		<dc:creator>Maxime</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://maxime.sh/?p=2948</guid>
		<description><![CDATA[Hier, Facebook a ajouté la possibilité d&#8217;aimer les commentaires postés par les gens sur son site. Après avoir transformé la fonction &#171;&#160;Devenir fan&#160;&#187;, c&#8217;est encore une nouvelle possibilité d&#8217;aimer, de s&#8217;aimer, vive l&#8217;amour sur Facebook. Alors, c&#8217;est très bien de pouvoir aimer plein de choses, j&#8217;ai tant d&#8217;amour à donner. Mais si peu de temps [...]]]></description>
			<content:encoded><![CDATA[<p>Hier, Facebook a ajouté la possibilité d&#8217;aimer les commentaires postés par les gens sur son site. Après avoir transformé la fonction &laquo;&nbsp;Devenir fan&nbsp;&raquo;, c&#8217;est encore une nouvelle possibilité d&#8217;aimer, de s&#8217;aimer, vive l&#8217;amour sur Facebook.</p>
<p class="image border"><a href="http://maxime.sh/wp-content/uploads/2010/06/you-like-this-facebook-t-shirt-1.jpg" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/06/you-like-this-facebook-t-shirt-1.jpg" alt="you-like-this-facebook-t-shirt-1.jpg" border="0" /></a></p>
<p>Alors, c&#8217;est très bien de pouvoir aimer plein de choses, j&#8217;ai tant d&#8217;amour à donner. Mais si peu de temps pour une tâche répétitive ! Attendez&#8230; Un être humain, faire une tâche répétitive ? Autant laisser le Javascript s&#8217;en occuper pour moi.</p>
<p>C&#8217;est pourquoi j&#8217;ai créé ces bookmarklets dont l&#8217;unique fonction est de <strong>tout aimer sur Facebook</strong>. Trêve de blablas, la sauce est ici :</p>
<ul>
<li>Facebook en <strong>Français</strong> : <a href="javascript:(function(e,a,g,h,f,c,b,d){if(!(f=e.jQuery)||g%3Ef.fn.jquery||h(f)){c=a.createElement(%22script%22);c.type=%22text/javascript%22;c.src=%22http://ajax.googleapis.com/ajax/libs/jquery/%22+g+%22/jquery.min.js%22;c.onload=c.onreadystatechange=function(){if(!b&#038;&#038;(!(d=this.readyState)||d==%22loaded%22||d==%22complete%22)){h((f=e.jQuery).noConflict(1),b=1);f(c).remove()}};a.documentElement.childNodes[0].appendChild(c)}})(window,document,%221.4.2%22,function($,L){(function(){var%20b=[];var%20a=0;$(%22button%22).each(function(){if($(this).find(%22span%22).html()==%22J'aime%22){b[a]=$(this);a++}});var%20c=function(){like=b.shift();like.click();if(b.length%3E0){setTimeout(c,500)}};c()})();});">J&#8217;aime</a> &#8211; <a href="javascript:(function(e,a,g,h,f,c,b,d){if(!(f=e.jQuery)||g%3Ef.fn.jquery||h(f)){c=a.createElement(%22script%22);c.type=%22text/javascript%22;c.src=%22http://ajax.googleapis.com/ajax/libs/jquery/%22+g+%22/jquery.min.js%22;c.onload=c.onreadystatechange=function(){if(!b&#038;&#038;(!(d=this.readyState)||d==%22loaded%22||d==%22complete%22)){h((f=e.jQuery).noConflict(1),b=1);f(c).remove()}};a.documentElement.childNodes[0].appendChild(c)}})(window,document,%221.4.2%22,function($,L){(function(){var%20b=[];var%20a=0;$(%22button%22).each(function(){if($(this).find(%22span%22).html()==%22Je%20n'aime%20plus%22){b[a]=$(this);a++}});var%20c=function(){like=b.shift();like.click();if(b.length%3E0){setTimeout(c,500)}};c()})();});">Je n&#8217;aime plus</a></li>
<li>Facebook en <strong>Anglais</strong> : <a href="javascript:(function(e,a,g,h,f,c,b,d){if(!(f=e.jQuery)||g%3Ef.fn.jquery||h(f)){c=a.createElement(%22script%22);c.type=%22text/javascript%22;c.src=%22http://ajax.googleapis.com/ajax/libs/jquery/%22+g+%22/jquery.min.js%22;c.onload=c.onreadystatechange=function(){if(!b&#038;&#038;(!(d=this.readyState)||d==%22loaded%22||d==%22complete%22)){h((f=e.jQuery).noConflict(1),b=1);f(c).remove()}};a.documentElement.childNodes[0].appendChild(c)}})(window,document,%221.4.2%22,function($,L){(function(){var%20b=[];var%20a=0;$(%22button%22).each(function(){if($(this).find(%22span%22).html()==%22Like%22){b[a]=$(this);a++}});var%20c=function(){like=b.shift();like.click();if(b.length%3E0){setTimeout(c,500)}};c()})();});">Like</a> &#8211; <a href="javascript:(function(e,a,g,h,f,c,b,d){if(!(f=e.jQuery)||g%3Ef.fn.jquery||h(f)){c=a.createElement(%22script%22);c.type=%22text/javascript%22;c.src=%22http://ajax.googleapis.com/ajax/libs/jquery/%22+g+%22/jquery.min.js%22;c.onload=c.onreadystatechange=function(){if(!b&#038;&#038;(!(d=this.readyState)||d==%22loaded%22||d==%22complete%22)){h((f=e.jQuery).noConflict(1),b=1);f(c).remove()}};a.documentElement.childNodes[0].appendChild(c)}})(window,document,%221.4.2%22,function($,L){(function(){var%20b=[];var%20a=0;$(%22button%22).each(function(){if($(this).find(%22span%22).html()==%22Unlike%22){b[a]=$(this);a++}});var%20c=function(){like=b.shift();like.click();if(b.length%3E0){setTimeout(c,500)}};c()})();});">Unlike</a></li>
</ul>
<p>Pour installer ces bookmarklets, il suffit de les glisser dans votre barre de signets. Une fois sur une page de Facebook, cliquez dessus et vous aimerez tout en quelques secondes (il y a une sorte d&#8217;anti-flood Javascript sur Facebook à détourner).</p>
<p>L&#8217;énorme avantage quand vous aimez quelque chose est que <strong>votre nom ainsi qu&#8217;un lien vers votre profil</strong> apparaissent en dessous des éléments. Un excellent moyen d&#8217;améliorer son personal branding et de gagner beaucoup d&#8217;amis !</p>
<p>A vous la gloire. On dit merci qui mes petits pandas ?</p>
]]></content:encoded>
			<wfw:commentRss>http://maxime.sh/2010/06/bookmarklet-tout-aimer-sur-facebook/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Conférence VDM à l&#8217;IÉSEG Lille</title>
		<link>http://maxime.sh/2010/05/conference-vdm-a-lieseg-lille/</link>
		<comments>http://maxime.sh/2010/05/conference-vdm-a-lieseg-lille/#comments</comments>
		<pubDate>Thu, 06 May 2010 12:03:47 +0000</pubDate>
		<dc:creator>Maxime</dc:creator>
				<category><![CDATA[Entrepreneuriat]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://maxime.sh/?p=2857</guid>
		<description><![CDATA[Que de projets et de jours chargés en ce moment, désolé de n&#8217;avoir pu écrire ces derniers temps, tout va bien pour moi en tout cas, j&#8217;espère que pour vous aussi mes petits pandas. Guillaume et moi avions été invités par l&#8217;association Next Entrepreneur de l&#8217;IÉSEG Lille à partager notre expérience d&#8217;entrepreneurs autour du thème [...]]]></description>
			<content:encoded><![CDATA[<p>Que de projets et de jours chargés en ce moment, désolé de n&#8217;avoir pu écrire ces derniers temps, tout va bien pour moi en tout cas, j&#8217;espère que pour vous aussi mes petits pandas.</p>
<p>Guillaume et moi avions été invités par l&#8217;association Next Entrepreneur de l&#8217;IÉSEG Lille à partager notre expérience d&#8217;entrepreneurs autour du thème de VDM, FML et de Beta&#038;Cie en général. C&#8217;était notre première conférence sur le sujet, mais tout s&#8217;est très bien passé, les gens étaient au rendez-vous malgré la concurrence de l&#8217;happy hour du bar d&#8217;à côté (j&#8217;ai tenté de m&#8217;échapper pour récupérer une pinte à un moment).</p>
<p>Quoiqu&#8217;il en soit, j&#8217;ai récupéré le flux de la conférence et je l&#8217;ai encodé en moult formats pour que ceux qui n&#8217;ont pas pu y assister en profite à leur tour&#8230;</p>
<p>Version audio :</p>
<p><a href="http://cdn.betacie.com/.maxime/conference/IESEG_Lille_20042010.mp3">Conférence VDM à l&#8217;IÉSEG Lille &mdash; 20 avril 2010</a></p>
<p>Version vidéo :</p>
<p class="image"><video width='600' height='360' controls preload='none'><br />
	<source src='http://cdn.betacie.com/.maxime/conference/IESEG_Lille_20042010.mp4' type='video/mp4'><br />
	<source src='http://cdn.betacie.com/.maxime/conference/IESEG_Lille_20042010.ogg' type='video/ogg; codecs="theora, vorbis"'><br />
	Pas de bras pas de chocolat, t&#8217;avais qu&#8217;à avoir un vrai navigateur.<br />
</video></p>
<p>Présentation Keynote :</p>
<p class="image"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/betacie/confrence-vdm-liseg-lille-3990931" title="Conférence VDM à l&#39;IÉSEG Lille">Conférence VDM à l&#39;IÉSEG Lille</a></strong><object id="__sse3990931" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=keynoteiesegslideshare-100506062340-phpapp01&#038;stripped_title=confrence-vdm-liseg-lille-3990931" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse3990931" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=keynoteiesegslideshare-100506062340-phpapp01&#038;stripped_title=confrence-vdm-liseg-lille-3990931" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>
<p>Téléchargements :</p>
<ul class="download">
<li class="file">Télécharger <a href="http://cdn.betacie.com/.maxime/conference/IESEG_Lille_20042010.avi" target="_blank">IESEG_Lille_20042010.avi</a></li>
<li class="desc">Version XviD &mdash; Taille : 300,2 Mo</li>
</ul>
<ul class="download">
<li class="file">Télécharger <a href="http://cdn.betacie.com/.maxime/conference/IESEG_Lille_20042010.mp4" target="_blank">IESEG_Lille_20042010.mp4</a></li>
<li class="desc">Version H264 &mdash; Taille : 728 Mo</li>
</ul>
<ul class="download">
<li class="file">Télécharger <a href="http://cdn.betacie.com/.maxime/conference/IESEG_Lille_20042010.m4v" target="_blank">IESEG_Lille_20042010.m4v</a></li>
<li class="desc">Version M4V &mdash; Taille : 1,07 Go</li>
</ul>
<p>Si vous avez des questions supplémentaires sur la conférence, n&#8217;hésitez pas à les poser en commentaires, j&#8217;essaierai d&#8217;y répondre :)</p>
]]></content:encoded>
			<wfw:commentRss>http://maxime.sh/2010/05/conference-vdm-a-lieseg-lille/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
<enclosure url="http://cdn.betacie.com/.maxime/conference/IESEG_Lille_20042010.mp3" length="83643696" type="audio/mpeg" />
<enclosure url="http://cdn.betacie.com/.maxime/conference/IESEG_Lille_20042010.mp4" length="727973863" type="video/mp4" />
<enclosure url="http://cdn.betacie.com/.maxime/conference/IESEG_Lille_20042010.ogg" length="463280136" type="audio/ogg" />
<enclosure url="http://cdn.betacie.com/.maxime/conference/IESEG_Lille_20042010.avi" length="300195136" type="video/x-msvideo" />
<enclosure url="http://cdn.betacie.com/.maxime/conference/IESEG_Lille_20042010.mp3" length="83643696" type="audio/mpeg" />
		</item>
		<item>
		<title>Twitter : La fin d&#8217;un modèle</title>
		<link>http://maxime.sh/2010/04/twitter-la-fin-dun-modele/</link>
		<comments>http://maxime.sh/2010/04/twitter-la-fin-dun-modele/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 08:13:59 +0000</pubDate>
		<dc:creator>Maxime</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://maxime.sh/?p=2843</guid>
		<description><![CDATA[Cette nuit aura été marqué par un tweet, puis un communiqué de presse : Twitter rachète Tweetie 2. Les conséquences de ce rachat sont simples, de prime abord : Le client devient gratuit (actuellement à 2,39 euros) et sera renommé Twitter for iPhone. Si la nouvelle pouvait se faire attendre, suite au développement d&#8217;un premier [...]]]></description>
			<content:encoded><![CDATA[<p>Cette nuit aura été marqué par un <a href="http://twitter.com/twitter/status/11912673829" target="_blank">tweet</a>, puis un <a href="http://blog.twitter.com/2010/04/twitter-for-iphone.html" target="_blank">communiqué de presse</a> : <b>Twitter rachète Tweetie 2</b>. Les conséquences de ce rachat sont simples, de prime abord : Le client devient gratuit (actuellement à 2,39 euros) et sera renommé Twitter for iPhone.</p>
<p class="image"><a href="http://maxime.sh/wp-content/uploads/2010/04/twitter_logo.jpg" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/04/twitter_logo-500.jpg" alt="twitter_logo.jpg" border="0" /></a></p>
<p>Si la nouvelle pouvait se faire attendre, suite au développement d&#8217;un premier client <em>officiel</em> pour BlackBerry, elle va sûrement choquer beaucoup de développeurs de clients Twitter autour du monde, et nous n&#8217;avons pas fini d&#8217;en entendre parler. Pourtant, mes petits pandas, il va falloir vous y habituer : <strong>La fête est finie</strong> :)</p>
<p>A dire vrai, Echofon, Tweetdeck et consorts n&#8217;ont pas de soucis à se faire. S&#8217;ils sont intelligents ils devaient se douter que ça arriverait tôt ou tard. On ne lève pas 100 millions de dollars en laissant s&#8217;échapper 70 % de son trafic monétisable. Nous avons eu le problème de notre côté avec FML, la version anglaise de VDM, c&#8217;est pourquoi j&#8217;ai décidé d&#8217;en parler un peu aujourd&#8217;hui.</p>
<p class="image"><a href="http://maxime.sh/wp-content/uploads/2010/04/mss2.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/04/mss2.png" alt="mss2.png" border="0" /></a></p>
<p>En effet, <a href="http://www.fmylife.com" target="_blank">FMyLife</a> est particulièrement populaire aux Etats-Unis comme vous le savez. Mais il l&#8217;est spécialement sur appareils mobiles, et a fortiori sur iPhone où nous comptabilisons près de la moitié de notre trafic global. C&#8217;est donc bien beau de paraître utopiste et de laisser tout le monde gagner de l&#8217;argent en faisant des applications payantes ou financées par la publicité, mais on ne pouvait pas se permettre d&#8217;en perdre pour que les autres en gagnent, à un moment on n&#8217;est pas Mère Térésa SARL.</p>
<p>C&#8217;est pourquoi en Décembre dernier nous étions passés sur une API fermée (cf. <a href="http://techcrunch.com/2010/01/02/fmylife-api/" target="_blank">TechCrunch</a>) où seulement les applications que nous choisissons ont un accès à notre contenu et à l&#8217;API en général. De cette manière nous avons sorti des <a href="http://www.fmylife.com/applications/official" target="_blank">clients officiels</a> gratuits, financés par la publicité, tout comme le site Internet, et avons pu garder la main sur notre trafic et notre monétisation, tout en laissant libre cours aux développeurs la création d&#8217;applications non-concurrentes.</p>
<p>En conclusion, les applications Twitter existantes se devront d&#8217;innover et de créer de la valeur ajoutée au lieu de réinventer la roue du client Twitter.</p>
<p class="image"><a href="http://maxime.sh/wp-content/uploads/2010/04/9fs9.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/04/9fs9-500.png" alt="9fs9.png" border="0" /></a></p>
<p>Ainsi je pense que dans les prochains mois, nous allons assister à l&#8217;ajout de nouvelles conditions dans l&#8217;API de Twitter. Elle ne deviendra sûrement jamais une API fermée, cependant l&#8217;apparition d&#8217;applications officielles (et de leur monétisation qui va avec, le marché de la publicité mobile étant très juteux) va couper l&#8217;herbe sous le pied aux applications qui n&#8217;auront aucune valeur ajoutée par rapport à l&#8217;application officielle.</p>
<p>Twitter pourra conserver son avance dans le monde des applications grâce à des fonctionnalités API utilisables uniquement par leurs applications officielles, ainsi que le fait de savoir d&#8217;avance les prochaines évolutions du service de microblogging et d&#8217;adapter leurs développements en conséquence (les comptes payants me viennent tout de suite à l&#8217;esprit).</p>
<p>Enfin, concernant Tweetie 2 for Mac (qui n&#8217;est pas concernée par le rachat, contrairement à ce qu&#8217;on peut lire sur le NY Times ou dans certains autres blogs &mdash; lisez le vrai communiqué), Loren Brichter nous <a href="http://www.macheist.com/forums/viewtopic.php?pid=370710#p370710" target="_blank">annonce</a> que le développement est toujours &laquo;&nbsp;en cours&nbsp;&raquo;. Je sens qu&#8217;on va avoir du mal à avoir une version non-bêta rapidement (cf. <a href="http://maxime.sh/2010/01/nachetez-pas-tweetie/" target="_blank">N&#8217;achetez pas Tweetie</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://maxime.sh/2010/04/twitter-la-fin-dun-modele/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Faille SQL : LoL Guru, je LIKE.</title>
		<link>http://maxime.sh/2010/03/faille-sql-lol-guru-je-like/</link>
		<comments>http://maxime.sh/2010/03/faille-sql-lol-guru-je-like/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 11:50:54 +0000</pubDate>
		<dc:creator>Maxime</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://maxime.sh/?p=2745</guid>
		<description><![CDATA[Aujourd&#8217;hui a été annoncé en grandes pompes (&#8230;) le nouveau site du groupe PlayWeb, dirigé de main de maître par Romain Casolari (on sent que c&#8217;est le même, vu les sites), alias Chauffeur de Buzz, j&#8217;ai nommé LoL Guru. Le nom fait déjà frémir, cependant la description vaut le détour : Bienvenue sur mon site, [...]]]></description>
			<content:encoded><![CDATA[<p>Aujourd&#8217;hui a été annoncé <a href="http://www.nowhereelse.fr/lol-guru-ouvre-ses-portes-30948/" target="_blank">en grandes pompes</a> (&#8230;) le nouveau site du <a href="http://www.groupeplayweb.com/" target="_blank">groupe PlayWeb</a>, dirigé de main de maître par <a href="http://casolari.fr/" target="_blank">Romain Casolari</a> (on sent que c&#8217;est le même, vu les sites), alias Chauffeur de Buzz, j&#8217;ai nommé <a href="http://lolguru.com/" target="_blank">LoL Guru</a>. Le nom fait déjà frémir, cependant la description vaut le détour :</p>
<blockquote class="quote"><p>Bienvenue sur mon site, je suis LoL Guru ®, né le 21 décembre 1891, je suis considéré comme le Gourou du Divertissement !!! Je blogue, mets à jour ce site depuis le début du XXe siècle pour partager avec vous les news, photos, vidéos, sites Internet, jeux et coloriages en ligne, prochaines et dernières sorties de DVD, jeux vidéo, logiciels, applications, &#8230;</p>
<p>Amusez-vous bien LOL</p></blockquote>
<p>Moi quand on me propose de m&#8217;amuser, je dis jamais non.</p>
<p>Mais&#8230; J&#8217;ai des loisirs un peu différents.</p>
<p>En tant que développeur, le backoffice d&#8217;un site si énorme m&#8217;intriguait. Je l&#8217;imaginais déjà rempli d&#8217;algorithmes, une interface à la Minority Report pour taper plus vite que son ombre, de <em>l&#8217;autocompletion</em> en AJAX en veux-tu en voilà&#8230;</p>
<p class="image border"><a href="http://maxime.sh/wp-content/uploads/2010/03/akaa.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/03/akaa-500.png" alt="akaa.png" border="0" /></a><br /><em>Paie ta déception.</em></p>
<p>Ouais bon, on repassera. Je vous reprends encore quelques minutes de votre temps, mes petits pandas, pour vous expliquer comment j&#8217;en suis arrivé là.</p>
<p>Il ne faut pas très longtemps, même pour un con comme moi, pour trouver l&#8217;adresse de l&#8217;administration du site. En effet, un aller simple sur <span class="code">http://fr.lolguru.com/admin/connexion.asp</span> nous laissait apparaître un joli formulaire d&#8217;identification.</p>
<p>Ayant peu d&#8217;espoir mais ne pouvant repartir sans avoir testé, je me lance et écris une apostrophe comme identifiant, ainsi qu&#8217;en mot de passe. Je m&#8217;attendais à me faire rejeter bien comme il faut, avec une alerte automatique au GIGN. Quand je vois simplement l&#8217;erreur suivante :</p>
<p class="code">[Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans la chaîne dans l&#8217;expression &quot;login like &#8217;&#8217;&#8217; and password like &#8217;&#8217;&#8217;&quot;.</p>
<p>Je n&#8217;ai donc pas pu accéder à l&#8217;administration du site. Cependant deux points m&#8217;intriguent :</p>
<ul>
<li>L&#8217;utilisation de la syntaxe SQL <strong>LIKE</strong> pour l&#8217;identification autorise le wildcard %. Très dangereux pour un système d&#8217;identification.</li>
<li>Mes apostrophes n&#8217;ont en plus pas été échappées par un antislash, ce qui a provoqué l&#8217;erreur SQL. Très très dangereux&#8230;</li>
</ul>
<p>L&#8217;idée de mettre le wildcard % comme identifiant ainsi que mot de passe rendrait donc la requête SQL suivante : <span class="code">login like &#8216;%&#8217; and password like &#8216;%&#8217;</span>, ce qui sélectionnerait donc n&#8217;importe quel identifiant stocké dans la base. Et effectivement, j&#8217;ai été identifié comme administrateur (voir capture d&#8217;écran ci-dessus).</p>
<p class="image border"><a href="http://maxime.sh/wp-content/uploads/2010/03/axcv.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/03/axcv-500.png" alt="axcv.png" border="0" /></a><br /><em>Faut toujours deux preuves.</em></p>
<p>Ne cherchez plus à aller sur cette page, elle a été supprimée / renommée depuis. Encore mes talents de <a href="http://maxime.sh/2010/01/yes-we-ads-envoie-du-bois-invisible/" target="_blank">prestidigitateur</a>.</p>
<p>Pour résumer, voici 4 erreurs à ne pas reproduire sur votre site :</p>
<ul>
<li>Ne pas utiliser la syntaxe SQL LIKE en dehors de cas très particuliers (comme la recherche dans une table).</li>
<li>Ne pas afficher les erreurs SQL lorsque son site est en production (ou au moins, pas les requêtes complètes&#8230;).</li>
<li>Ne pas oublier d&#8217;échapper les données injectées dans une requêtes.</li>
<li>Eviter d&#8217;avoir un répertoire administration avec un nom évident si on n&#8217;est pas sûr de sa sécurité.</li>
</ul>
<p>Si vous ne savez pas protéger correctement votre administration et que vous êtes sur Apache, vous pouvez tout aussi bien utiliser la méthode de la protection par .htaccess/.htpasswd.</p>
<p>Au-delà de cette faille, j&#8217;ai été surpris par l&#8217;austérité de ce backoffice. Rempli de cases austères tel un formulaire de l&#8217;administration pénitencière, avec des couleurs hasardeuses et des fautes d&#8217;orthographe, ça ne donne pas vraiment envie de travailler et produire du contenu.</p>
<p>Et vous, est-ce que l&#8217;administration de votre blog/site est agréable ? Est-ce que ça a de l&#8217;importance pour vous ?</p>
]]></content:encoded>
			<wfw:commentRss>http://maxime.sh/2010/03/faille-sql-lol-guru-je-like/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>L&#8217;infrastructure VDM : Memcache</title>
		<link>http://maxime.sh/2010/03/linfrastructure-vdm-memcache/</link>
		<comments>http://maxime.sh/2010/03/linfrastructure-vdm-memcache/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 19:44:50 +0000</pubDate>
		<dc:creator>Maxime</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Ma vie]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://maxime.sh/?p=2661</guid>
		<description><![CDATA[La semaine dernière, je vous annonçais la création d&#8217;une suite d&#8217;articles concernant l&#8217;infrastructure de VDM. J&#8217;ai commencé en présentant mes serveurs MySQL. Récapitulatif : L’infrastructure que j’ai montée pour VDM/FML Dans cette série de billets (normalement trois en comptant celui là), je vais vous raconter ce qui se passe derrière les URL viedemerde.fr et fmylife.com, [...]]]></description>
			<content:encoded><![CDATA[<p>La semaine dernière, je vous annonçais la création d&#8217;une suite d&#8217;articles concernant l&#8217;infrastructure de VDM. J&#8217;ai commencé en présentant mes <a href="http://maxime.sh/2010/03/linfrastructure-vdm-mysql/" target="_blank">serveurs MySQL</a>. Récapitulatif :</p>
<p class="image"><a href="http://maxime.sh/wp-content/uploads/2010/03/betacie_network1.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/03/betacie_network1-500.png" border="0" alt="betacie_network.png" /></a><br />
<em>L’infrastructure que j’ai montée pour VDM/FML</em></p>
<p>Dans cette série de billets (normalement trois en comptant celui là), je vais vous raconter ce qui se passe derrière les URL viedemerde.fr et fmylife.com, qui représentent 98% du trafic de l’infrastructure d’hébergement de ma société, Beta&amp;Cie. Ces articles n’ont pas pour vocation de me vanter ou de dire au monde entier que ma solution est la meilleure, c’est juste ma solution et elle marche bien jusqu’à maintenant.</p>
<p>Aujourd&#8217;hui, parlons de <strong>Memcache</strong>.</p>
<h2>Présentation de memcached</h2>
<p>Comme nous l&#8217;avons vu la semaine dernière, les serveurs de données sont bien remplis en données diverses et variées, que ce soit des votes, des anecdotes, les informations de connexion. Beaucoup de données, dont une partie est redondante. Mais pas la totalité de la page puisque chaque anecdote est votée, impossible donc de <em>cacher</em> toute la page.</p>
<p>Un <a href="http://memcached.org/" target="_blank">serveur memcached</a> (d pour daemon) est un serveur léger qui permet de stocker temporairement des données en RAM. Si léger qu&#8217;il ne dispose d&#8217;aucun système d&#8217;identification pour accéder ou modifier ces données, donc faites bien attention à ne faire écouter le serveur qu&#8217;en local si vous installez un jour une telle solution pour votre serveur.</p>
<h2>Son utilisation sur VDM</h2>
<p>La technologie memcached permet donc de stocker n&#8217;importe quel type de données. Il sert souvent par exemple sur des clusters de serveurs Web pour centraliser les sessions PHP. On peut donc facilement en tirer profit pour mettre en cache plusieurs informations du site, et ainsi soulager de manière significative les serveurs MySQL.</p>
<p class="image border"><a href="http://maxime.sh/wp-content/uploads/2010/03/memcache.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/03/memcache.png" border="0" alt="memcache.png" /></a><br />
<em>One server to rule them all.</em></p>
<p>La problématique est maintenant la mise en place de cette solution sur le code PHP existant de VDM. PHP possède une <a href="http://php.net/manual/en/ref.memcache.php" target="_blank">extension Memcache</a> qui permet d&#8217;implémenter facilement une solution de cache.</p>
<p>La solution que j&#8217;ai retenue est résumée dans le code suivant. Les requêtes SQL sont transformées en hash MD5 pour le nom de la clé, et l&#8217;objet du résultat de la requête est stockée en cache, avec un cache par défaut d&#8217;une heure (3600 secondes). De cette manière, si la clé n&#8217;existe pas sur le serveur memcached, la requête est automatiquement exécutée et le résultat stocké.</p>
<pre class="brush: php;">&lt;?php

$memcache = new Memcache();
$memcache-&gt;pconnect(&quot;127.0.0.1&quot;,&quot;9000&quot;);

function mcache($query,$timeout=3600,$force=false) {

	global $memcache;

	$hash = md5($query);

	if (!$force) {

		$value = $memcache-&gt;get($hash);

	}

	if ($force || $value === FALSE) {

		$result = mysql_query($query);
		$value = mysql_fetch_object($result);
		$memcache-&gt;set($hash,$value,NULL,$timeout);

	}

	return $value;

}

function mcache_set($query,$value,$timeout=3600) {

	global $memcache;

	$hash = md5($query);

	$value = $memcache-&gt;set($hash,$value,NULL,$timeout);

	return $value;

}

function mcache_delete($query) {

	global $memcache;

	$hash = md5($query);
	$value = $memcache-&gt;delete($hash);

	return $value;

}

?&gt;</pre>
<p>Grâce à ces fonctions nous avons conservé toutes nos requêtes, et pouvons utiliser de manière transparente soit Memcache soit MySQL. Plus pratique pour pouvoir synchroniser rapidement les données entre les deux serveurs, en plus d&#8217;avoir facilité la migration vers Memcache.</p>
<p>Exemple d&#8217;utilisation :</p>
<pre class="brush: php;">&lt;?php

/* Je suis un nul alors je mets pas de mot de passe en root */
mysql_connect(&quot;localhost&quot;,&quot;root&quot;,&quot;&quot;);
mysql_select_db(&quot;base&quot;);

/* La requête MySQL normale sans cache */
$result = mysql_query(&quot;SELECT texte FROM articles WHERE id = '1337' LIMIT 1&quot;);
$row = mysql_fetch_object($result);

/* La requête avec le cache Memcache */
$row = mcache(&quot;SELECT texte FROM articles WHERE id = '1337' LIMIT 1&quot;);

?&gt;</pre>
<p>Grâce aux fonctions <span class="code">mcache()</span> et consorts, on peut donc sans trop de difficultés alléger le travail des serveurs de bases de données. Si vous avez besoin de mettre en cache un tableau de résultats, vous pouvez utiliser la fonction suivante :</p>
<pre class="brush: php;">&lt;?php

function mcache_array($query,$timeout=3600,$force=false) {

	global $memcache;

	$hash = md5($query);

	if (!$force) {

		$value = $memcache-&gt;get($hash);

	}

	if ($force || $value === FALSE) {

		$memcache-&gt;delete($hash);

		$result = mysql_query($query);
		while ($row = mysql_fetch_object($result)) {
			$value[] = $row;
		}

		$memcache-&gt;set($hash,$value,NULL,$timeout);

	}

	if (!is_array($value)) $value = array();
	return $value;

}

?&gt;</pre>
<p>Ainsi, sur VDM et FML, nous mettons en cache principalement les données suivantes :</p>
<ul>
<li>Les données &laquo;&nbsp;statiques&nbsp;&raquo; des anecdotes (texte, auteur, etc.)</li>
<li>Les totaux des votes sur les anecdotes (mis à jour à chaque vote sans appel à MySQL)</li>
<li>Les ID des dernières anecdotes lues par les utilisateurs, pour afficher les &laquo;&nbsp;NEW&nbsp;&raquo;</li>
<li>Certains rendus XML de l&#8217;API pour les applications mobiles</li>
</ul>
<p>Au niveau des chiffres, voici des statistiques sur les 3 dernières semaines d&#8217;utilisation du serveur memcached :</p>
<ul>
<li>900 connexions simultanées en permanence</li>
<li>90 000 connexions par jour</li>
<li>14,4 Mo écrits par seconde (via 622 requêtes en moyenne)</li>
<li>1,8 Go de données stockées en ce moment</li>
<li>6,9 millions de données stockées en ce moment</li>
<li>1,3 milliard de données stockées en tout</li>
</ul>
<p>Comme d&#8217;habitude, n&#8217;hésitez pas à commenter pour plus d&#8217;informations, j&#8217;ai sûrement oublié beaucoup de choses. La semaine prochaine nous parlerons de serveurs Web.</p>
]]></content:encoded>
			<wfw:commentRss>http://maxime.sh/2010/03/linfrastructure-vdm-memcache/feed/</wfw:commentRss>
		<slash:comments>75</slash:comments>
		</item>
		<item>
		<title>PD.TC, le raccourcisseur du LOL</title>
		<link>http://maxime.sh/2010/03/pd-tc-le-raccourcisseur-du-lol/</link>
		<comments>http://maxime.sh/2010/03/pd-tc-le-raccourcisseur-du-lol/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 08:03:53 +0000</pubDate>
		<dc:creator>Maxime</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://maxime.sh/?p=2577</guid>
		<description><![CDATA[Peu de gens le savent, Beta&#038;Cie faisait partie des premiers à créer un service de &#171;&#160;raccourcisseur d&#8217;URL&#160;&#187;, en mauvais français. C&#8217;était en 2008 et il fonctionne toujours. Cependant aujourd&#8217;hui, 7 caractères c&#8217;est trop long. Il a fallu en trouver un autre. Laissez-moi vous présenter PD.TC, le raccourcisseur d&#8217;URL le plus LOL. Grâce à son acronyme [...]]]></description>
			<content:encoded><![CDATA[<p>Peu de gens le savent, Beta&#038;Cie faisait partie des premiers à créer un service de &laquo;&nbsp;raccourcisseur d&#8217;URL&nbsp;&raquo;, en mauvais français. C&#8217;était en 2008 et il <a href="http://shrt.fr/" target="_blank">fonctionne toujours</a>. Cependant aujourd&#8217;hui, 7 caractères c&#8217;est trop long. Il a fallu en trouver un autre.</p>
<p class="image"><a href="http://maxime.sh/wp-content/uploads/2010/03/2hgh.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/03/2hgh-500.png" alt="2hgh.png" border="0" /></a></p>
<p>Laissez-moi vous présenter <strong>PD.TC</strong>, le raccourcisseur d&#8217;URL le plus LOL. Grâce à son acronyme équivoque, vos soirées Twitter n&#8217;en seront que plus gaies. Ô la joie de balancer à son prochain &laquo;&nbsp;C&#8217;est où que t&#8217;as trouvé machin ? PDTC&nbsp;&raquo;. Oui, c&#8217;est aujourd&#8217;hui à votre portée.</p>
<p>Mais pour bien l&#8217;utiliser au quotidien, quelle idée d&#8217;utiliser un simple formulaire ! Toi la star de Twitter, tu as besoin de l&#8217;intégrer directement dans les outils que tu utilises quotidiennement.</p>
<p>Voici trois tutoriaux qui couvriront toutes tes attentes pour utiliser PD.TC dans les meilleures conditions possibles, et ainsi diffuser l&#8217;esprit du LOL partout autour de toi.</p>
<h2>Utiliser PD.TC avec n&#8217;importe quel client Twitter</h2>
<p>Pour pouvoir utiliser mon service sur la plupart des clients Twitter Mac/Windows/Linux, mes petits pandas, il va falloir utiliser une méthode de sioux.</p>
<p><strong>Sous Mac/Linux :</strong> Ouvrez une fenêtre de Terminal pour modifier le fichier hosts en tapant ces deux lignes :</p>
<pre class="brush: bash;">echo '91.191.146.209 tinyurl.com' | sudo tee -a /etc/hosts</pre>
<p><strong>Sous Windows :</strong> Ajoutez la ligne <span class="code">91.191.146.209 tinyurl.com</span> dans votre fichier hosts, dont l&#8217;emplacement varie selon les versions. En général dans <span class="code">C:\Windows\system32\drivers\etc\hosts</span>.</p>
<p>De cette manière, toutes les URL TinyURL passeront par mes serveurs qui simuleront son comportement. En contrepartie vous ne pourrez plus raccourcir d&#8217;URL sur TinyURL (en même temps le site est tout moche, c&#8217;est pas une perte), mais les URL raccourcies de TinyURL <em>marcheront toujours</em> !</p>
<p class="image"><a href="http://maxime.sh/wp-content/uploads/2010/03/bq6d.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/03/bq6d.png" alt="bq6d.png" border="0" /></a></p>
<p>Modifiez ensuite dans votre client Twitter votre URL Shortening Service en indiquant TinyURL, et vous pourrez utiliser PD.TC facilement et rapidement.</p>
<p class="image"><a href="http://maxime.sh/wp-content/uploads/2010/03/q8vr.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/03/q8vr.png" alt="q8vr.png" border="0" /></a></p>
<p>Je pense que la technique marche à peu près avec n&#8217;importe quel client Twitter, à partir du moment que vous modifiez le fichier hosts et que vous pouvez sélectionner TinyURL dans votre client, tout roule.</p>
<h2>Utiliser PD.TC avec Tweetie iPhone</h2>
<p>Tweetie 2 pour iPhone intègre nativement la possibilité d&#8217;avoir son propre raccourcisseur d&#8217;URL. Il suffit donc d&#8217;aller dans les réglages &laquo;&nbsp;URL shortening&nbsp;&raquo; de Tweetie :</p>
<p class="image"><a href="http://maxime.sh/wp-content/uploads/2010/03/IMG_0620.png" target="_blank"><img src="http://maxime.sh/wp-content/uploads/2010/03/IMG_0620-iphone.png" alt="IMG_0620.PNG" border="0" /></a><br /><em>Settings > Services > URL Shortening > Custom&#8230;</em></p>
<p>Et entrez l&#8217;URL suivante pour utiliser PD.TC automatiquement :</p>
<p class="code">http://pd.tc/?api=1&#038;url=%@</p>
<h2>Utiliser PD.TC avec PHP</h2>
<p>Vous pouvez utiliser PD.TC dans tous vos scripts et applications. Voici un simple exemple en PHP, que vous pourrez adapter à à peu près tous les langages de programmation existants :</p>
<pre class="brush: php;">&lt;?php

/* Appel de pd.tc avec l'URL qu'on veut raccourcir */

$url = &quot;http://www.google.fr&quot;;
$pdtc = file_get_contents(&quot;http://pd.tc/?api=1&amp;url=&quot;.urlencode($url));

/* Retournera : string(17) &quot;http://pd.tc/0236&quot; */

var_dump($pdtc);

?&gt;</pre>
<p>A noter que j&#8217;enregistre tous les accès aux URL, donc si le service est utilisé je ferai peut-être des classements &#038; consorts, mais pour le moment c&#8217;est surtout pour le fun du nom de domaine que j&#8217;ai créé ce service, et ça restera pour le fun :)</p>
]]></content:encoded>
			<wfw:commentRss>http://maxime.sh/2010/03/pd-tc-le-raccourcisseur-du-lol/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
	</channel>
</rss>
