<?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>Blog perso de Paul Da Silva &#187; Tweak</title>
	<atom:link href="http://www.paulds.fr/category/tweak/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paulds.fr</link>
	<description>Un blog utilisant WordPress</description>
	<lastBuildDate>Fri, 30 Jul 2010 15:23:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>[Echofon] Faire en sorte qu&#8217;echofon réduise toutes les URL</title>
		<link>http://www.paulds.fr/2010/06/echofon-faire-en-sorte-quechofon-reduise-toutes-les-url/</link>
		<comments>http://www.paulds.fr/2010/06/echofon-faire-en-sorte-quechofon-reduise-toutes-les-url/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 07:52:15 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tweak]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[echofon]]></category>
		<category><![CDATA[extension firefox]]></category>
		<category><![CDATA[twitterfox]]></category>

		<guid isPermaLink="false">http://blog.p4ul.info/?p=967</guid>
		<description><![CDATA[
			
				
			
		
En tant que gros utilisateur de twitter (essentiellement consommateur, puis depuis peu gros posteur / floodeur) j&#8217;ai opté pour la superbe extension firefox Echofon, anciennement Twitterfox. Cette extension permet de twitter directement depuis son navigateur web (Firefox en l&#8217;occurrence).
Mais j&#8217;avais un léger soucis avec cette extension : elle ne réduit les URL contenues dans un [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px; position:relative; bottom:20px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F06%2Fechofon-faire-en-sorte-quechofon-reduise-toutes-les-url%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F06%2Fechofon-faire-en-sorte-quechofon-reduise-toutes-les-url%2F&amp;source=Paul_Da_Silva&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>En tant que gros <a href="http://twitter.com/Paul_Da_Silva" target="_blank">utilisateur de twitter</a> (essentiellement consommateur, puis depuis peu gros posteur / floodeur) j&#8217;ai opté pour la superbe extension firefox Echofon, anciennement Twitterfox. Cette extension permet de twitter directement depuis son navigateur web (Firefox en l&#8217;occurrence).</p>
<p>Mais j&#8217;avais un léger soucis avec cette extension : elle ne réduit les URL contenues dans un tweet que si celui-ci fait plus de 140 caractères&#8230; Je ne sais pas trop pourquoi, mais ce comportement ne me plaisait pas. J&#8217;ai donc résolu le problème ^^</p>
<p>Pour ce faire il va vous falloir éditer l&#8217;un des fichiers de l&#8217;extension pour en modifier deux lignes. Le fichier se trouve dans votre profil Firefox, dans le dossier chrome de votre extension :</p>
<p>Sous Linux :</p>
<p><em>/home/[vous]/.Mozilla/firefox/[votre_profil]/extensions/twitternotifier@naan.net/chrome/</em></p>
<p>Sous Windows :</p>
<p><em>C:\Documents and Settings\[vous]\Application Data\Mozilla\Firefox\Profiles\[votre_profil]\extensions\twitternotifier@naan.net\chrome\</em></p>
<p>En remplaçant bien sûr [vous] et [votre_profil] par les valeurs correspondantes. Sous Windows le dossier &laquo;&nbsp;Application Data&nbsp;&raquo; est un dossier caché, il faut donc en activer l&#8217;affichage</p>
<p>Il va s&#8217;agir de modifier le fichier twitterfox.js contenu dans le dossier &laquo;&nbsp;content&nbsp;&raquo; de l&#8217;archive Echofon.jar (s&#8217;ouvre avec winrar par exemple) elle même contenue dans le dossier chrome de l&#8217;extension (donc le chemin précisé au dessus). Si vous avez réussi à trouver le fameux fichier, vous avez déjà fait le plus dur <img src='http://www.paulds.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <span id="more-967"></span></p>
<p>Il suffit ensuite de modifier la ligne 702 :</p>
<blockquote class="js"><p>if (text.length &gt; 140) {</p></blockquote>
<p>devient :</p>
<blockquote class="js"><p>if(true){</p></blockquote>
<p>Et la ligne 715 :</p>
<blockquote class="js"><p>if (url.length &gt; 25 &amp;&amp; !url.match(/tinyurl\.com/i)) {</p></blockquote>
<p>devient :</p>
<blockquote class="js"><p>if (url.length &gt; 10 &amp;&amp; !url.match(/tinyurl\.com/i)) {</p></blockquote>
<p>Sauvez les modifications (en replaçant le fichier twitternotifier.js dans l&#8217;archive Echofon.jar si besoin&#8230; Normalement il n&#8217;y a pas besoin de redémarrer Firefox, mais si ça ne marche pas vous pouvez essayer&#8230;</p>
<p>Ainsi chaque fois que vous postez une URL de plus de 10 caractères (au lieu de 25), quelle que soit la taille du tweet en lui même, l&#8217;url est réduite via bit.ly <img src='http://www.paulds.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Et si vous voulez encore plus de fun avec Echofon le plus simple c&#8217;est encore de me suivre sur twitter : <a href="http://twitter.com/Paul_Da_Silva" target="_blank">@Paul_Da_Silva</a> (oh le vilain placement !)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulds.fr/2010/06/echofon-faire-en-sorte-quechofon-reduise-toutes-les-url/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Une API Allocine ça vous dit ?</title>
		<link>http://www.paulds.fr/2010/05/une-api-allocine-ca-vous-dit/</link>
		<comments>http://www.paulds.fr/2010/05/une-api-allocine-ca-vous-dit/#comments</comments>
		<pubDate>Mon, 31 May 2010 19:52:11 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Tweak]]></category>
		<category><![CDATA[API allocine]]></category>
		<category><![CDATA[cinéma]]></category>

		<guid isPermaLink="false">http://blog.p4ul.info/?p=906</guid>
		<description><![CDATA[
			
				
			
		
Je cherchais désespérément une API qui me permette de me connecter à une grande base de données de film pour un projet perso (dont je vous reparlerai dans quelques mois) et mes recherches m&#8217;ont assez vite amenés dans un cul de sac : sur IMDB ou Allocine point de salut, ailleurs, et ne me basant [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px; position:relative; bottom:20px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F05%2Fune-api-allocine-ca-vous-dit%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F05%2Fune-api-allocine-ca-vous-dit%2F&amp;source=Paul_Da_Silva&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Je cherchais désespérément une API qui me permette de me connecter à une grande base de données de film pour un projet perso (dont je vous reparlerai dans quelques mois) et mes recherches m&#8217;ont assez vite amenés dans un cul de sac : sur IMDB ou Allocine point de salut, ailleurs, et ne me basant que sur Google, pas moyen non plus de trouver mon bonheur.</p>
<p>Dans un moment d&#8217;égarement j&#8217;ai naïvement tapé la recherche &laquo;&nbsp;API films&nbsp;&raquo; sur Google &#8211; c&#8217;est dire à quel point je n&#8217;avais plus d&#8217;espoir&#8230;</p>
<p>Et là je suis tombé sur une page d&#8217;un wiki assez peu rempli, mais avec que de la qualité dedans ! Cet article en particulier va me sauver la vie : <a href="http://wiki.gromez.fr/dev/api/allocine" target="_blank">Growiki &#8211; API Allocine</a>.</p>
<p>Je n&#8217;ai pas eu le temps d&#8217;entrer dans les détails des fonctionnalités du truc, mais cela semble largement suffisant pour ce que j&#8217;ai à en faire à savoir de la recherche d&#8217;infos sur un film à partir d&#8217;un titre qu&#8217;il soit en VO ou en VF.</p>
<p>L&#8217;url se compose alors de la façon suivante :</p>
<blockquote><p>http://api.allocine.fr/xml/search?q=<em>h2g2</em>&amp;partner=1         //remplacez <em>h2g2</em> par le film de votre choix</p></blockquote>
<p>Il doit y avoir une multitude d&#8217;options possibles pour affiner les résultats et je vous en tiendrai au courant vous comme l&#8217;auteur de l&#8217;article initial sur le wiki quand j&#8217;aurai commencé à m&#8217;attaquer à mon projet perso, mais je voulais partager dès aujourd&#8217;hui cette découverte qui pourra vous faciliter <span style="text-decoration: line-through;">la vie</span> le développement.</p>
<p>Petit point amusant : la méthode grâce à laquelle l&#8217;API a été découverte est plutôt originale &#8211; son découvreur a en effet du analyser les échanges de son téléphone android avec le réseau après avoir lancé l&#8217;application Allocine (android donc) pour découvrir l&#8217;adresse de l&#8217;API. La suite est de la déduction logique en se basant sur l&#8217;url précédemment trouvée et sur les messages d&#8217;erreur très (trop) explicites de l&#8217;API.</p>
<p>Chapeau bas à <a href="http://http://wiki.gromez.fr" target="_blank">Gromez</a> pour cette découverte donc !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulds.fr/2010/05/une-api-allocine-ca-vous-dit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Note de service : apparition du pagebreak sur le blog</title>
		<link>http://www.paulds.fr/2010/05/note-de-service-apparition-du-pagebreak-sur-le-blog/</link>
		<comments>http://www.paulds.fr/2010/05/note-de-service-apparition-du-pagebreak-sur-le-blog/#comments</comments>
		<pubDate>Thu, 13 May 2010 13:05:12 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Mes sites]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tweak]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[pagebreak]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.p4ul.info/?p=826</guid>
		<description><![CDATA[
			
				
			
		
Avec ma manie de toujours écrire des quantités astronomiques sans réussir à synthétiser le fond de ma pensée en quelques lignes (imaginez combien twitter me torture avec ses 140 caractères), ce blog s&#8217;est vite retrouvé à avoir des pages plus longues que mon bras (non sérieusement, je suis sûr qu&#8217;en en imprimant certaines, &#8230;).

De plus, [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px; position:relative; bottom:20px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F05%2Fnote-de-service-apparition-du-pagebreak-sur-le-blog%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F05%2Fnote-de-service-apparition-du-pagebreak-sur-le-blog%2F&amp;source=Paul_Da_Silva&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Avec ma manie de toujours écrire des quantités astronomiques sans réussir à synthétiser le fond de ma pensée en quelques lignes (imaginez combien twitter me torture avec ses 140 caractères), ce blog s&#8217;est vite retrouvé à avoir des pages plus longues que mon bras (non sérieusement, je suis sûr qu&#8217;en en imprimant certaines, &#8230;).</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-827" style="border: 3px solid #ccc;" title="pagebreak" src="http://blog.p4ul.info/wp-content/uploads/2010/05/pagebreak.png" alt="page break wordpress" width="600" height="125" /></p>
<p>De plus, j&#8217;ai découvert récemment, ne m&#8217;étant impliqué dans ce blog que depuis quelques semaines, combien le taux de rebond de mon blog n&#8217;avait aucun rapport avec celui de mes autres sites&#8230; Les visiteurs, avides de nouveautés, ne venant parfois que pour vérifier si un nouvel article est paru (héhé en voilà un pour vous d&#8217;ailleurs bande de petits rebondisseurs).</p>
<p>Bref, j&#8217;ai pris la décision de rajouter des pagebreak quand les articles sont trop longs pour remédier à ces deux problèmes : avoir une présentation globalement plus agréable et augmenter potentiellement le nombre de pages vues. Pour cette deuxième partie de solution je réfléchis à n&#8217;insérer le pagebreak qu&#8217;au bout de quelques jours de publication de l&#8217;article &#8211; histoire de ne pas contraindre les habitués à visualiser 12.000 pages et leur fournir directement ce qui les intéresse : le contenu.</p>
<p>Bon, bien sûr, je ne pouvais pas faire les choses comme tout le monde et j&#8217;ai un tout petit peu customisé mes pagebreak pour qu&#8217;ils soient esthétique (tous les gouts sont dans la nature, en termes de webdesign les miens sont très mauvais et j&#8217;assume !) et SEO friendly.</p>
<p>Pour cela 3 fichiers à modifier : deux dans le thème de votre Wordpress et un dans le dossier wp-includes (si si, celui qu&#8217;il faut pas modifier normalement&#8230;).</p>
<p><span id="more-826"></span></p>
<h3>Le fichier wp-content/themes/[votre_theme]/index.php</h3>
<p>Modification très simple ici : il s&#8217;agit de rajouter le titre de l&#8217;article dans le texte du pagebreak (et de le mettre à votre goût) : cherchez la ligne suivante (avec &laquo;&nbsp;Lire la suite&#8230;&nbsp;&raquo; qui corresponde au texte actuel de vos pagebreak) :</p>
<blockquote class="php"><p>&lt;?php the_content(&laquo;&nbsp;Lire la suite&#8230;&nbsp;&raquo;); ?&gt;</p></blockquote>
<p>Et remplacez simplement par ceci :</p>
<blockquote class="php"><p>&lt;?php the_content(the_title(&#8216;Lire la suite de : &#8216;,&nbsp;&raquo;, false)); ?&gt;</p></blockquote>
<p>En appelant la méthode the_title(); on va récupérer le titre de l&#8217;article courant. Les paramètres servent à préciser respectivement : le texte à inclure avant le titre, après le titre et si l&#8217;on doit l&#8217;afficher ou le retourner en PHP.</p>
<h3>Le fichier wp-content/themes/[votre_theme]/style.css</h3>
<p>Ok là je vous tiens pas la main, modifiez juste la class <em>.more-link</em> (appliquée directement sur le lien <em>a</em> et pas sur le paragraphe <em>p</em> qui le contient malheureusement) pour la mettre à votre goût.</p>
<h3>Le fichier wp-includes/post-template.php</h3>
<p>Cette modification, relativement mineure ne sert qu&#8217;à ajouter une balise title sur le lien du pagebreak &#8211; ce que je n&#8217;ai pas trouvé comment faire autrement, directement dans le thème. Les fichiers contenus dans le dossier <em>wp-includes</em> sont assez critiques alors ne les éditez que si vous savez ce que vous faites (ou que vous suivez à la lettre ce que je vais écrire ici).</p>
<p>A la ligne 226, dans la fonction <em>get_the_content();</em> Wordpress créé le fameux pagebreak. On aurait pu, si on était de gros grades, faire toutes les modifications uniquement à cette ligne&#8230; Mais là ce que je veux faire n&#8217;est pas, à ma connaissance, prévu par Wordpress : ajouter une balise <em>title</em> au pagebreak. Pour ce faire rien de plus simple : on va remplacer la ligne 226 de votre fichier par celle ci :</p>
<blockquote class="php"><p>$output .= apply_filters( &#8216;the_content_more_link&#8217;, &#8216; &lt;a href=&nbsp;&raquo;&#8216; . get_permalink() . &laquo;&nbsp;#more-$id\&nbsp;&raquo; class=\&nbsp;&raquo;more-link\&nbsp;&raquo; title=&#8217;&nbsp;&raquo;.get_the_title().&nbsp;&raquo;&#8216;&gt;$more_link_text&lt;/a&gt;&nbsp;&raquo;, $more_link_text );</p></blockquote>
<p>La méthode <em>get_the_title();</em> permet en effet de retourner le titre en PHP.</p>
<p>Et vous, vous en pensez quoi des pagebreaks ? (pas les miens hein, le principe en général !)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulds.fr/2010/05/note-de-service-apparition-du-pagebreak-sur-le-blog/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BBKeys : Quand Bouygues ne sécurise pas ses box</title>
		<link>http://www.paulds.fr/2010/05/bbkeys-quand-bouygues-ne-securise-pas-ses-box/</link>
		<comments>http://www.paulds.fr/2010/05/bbkeys-quand-bouygues-ne-securise-pas-ses-box/#comments</comments>
		<pubDate>Fri, 07 May 2010 11:05:37 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Hadopi]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Tweak]]></category>
		<category><![CDATA[3g]]></category>
		<category><![CDATA[bouygues]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[wpa]]></category>

		<guid isPermaLink="false">http://blog.p4ul.info/?p=776</guid>
		<description><![CDATA[
			
				
			
		
Hier sur twitter je suis tombé sur un relevé de combinaisons clefs / ESSID pour les Bbox de Bouygues Telecom. Un peu intrigué de savoir comment quelqu&#8217;un avait réussi à pondre une liste de plus de 13.000 de ces combinaisons j&#8217;ai un peu fouiné et je suis tombé sur un outil assez formidable : BBKeys.
L&#8217;idée [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px; position:relative; bottom:20px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F05%2Fbbkeys-quand-bouygues-ne-securise-pas-ses-box%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F05%2Fbbkeys-quand-bouygues-ne-securise-pas-ses-box%2F&amp;source=Paul_Da_Silva&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Hier sur twitter je suis tombé sur un relevé de combinaisons clefs / ESSID pour les Bbox de Bouygues Telecom. Un peu intrigué de savoir comment quelqu&#8217;un avait réussi à pondre une liste de plus de 13.000 de ces combinaisons j&#8217;ai un peu fouiné et je suis tombé sur un outil assez formidable : BBKeys.</p>
<p>L&#8217;idée est simple : pour générer le couple ESSID / clef WPA par défaut, Bouygues (enfin plutôt Thompson qui fabrique le modem) se base sur un algorithme qui lui même se base sur le numéro de série de la Box.</p>
<p>Là où ça se gâte (pour Bouygues) et ça commence à devenir intéressant (pour nous) c&#8217;est qu&#8217;à partir de l&#8217;ESSID il est possible de retrouver une portion du numéro de série de la box qui suffit à générer la clef WPA par défaut&#8230;</p>
<p>En un mot : à partir du SSID visible par tous, il est possible de retrouver la clef WPA par défaut&#8230; En assumant que les gens sont c*ns (et ils le sont souvent), on a des chances qu&#8217;ils ne l&#8217;aient pas changé et par conséquent on gagne un accès au net gratos sur l&#8217;IP de ses voisins (coucou Hadopi, c&#8217;est pas moi c&#8217;est madame Michu&#8230;) !</p>
<p>Assez enthousiasmé par tout cela, et malgré le fait que personne ne soit abonné Bbox par chez moi, j&#8217;entreprends de télécharger l&#8217;outil pour regarder un peu mieux comment ça fonctionne&#8230; Et là surprise : on me demande un code Allopass&#8230;</p>
<p><span id="more-776"></span></p>
<p>Bon, je suis développeur, je sais que les fins de mois sont dures (généralement la fin de mois commence le 8 du mois ^^) et donc je me décide à payer 2€ pour contribuer aux efforts du petit génie qui a pondu le script&#8230;</p>
<p>Me voilà en possession du script que j&#8217;ouvre naturellement dans un IDE que j&#8217;avais déjà lancé (encore un réflexe de développeur) pour lire dans les commentaires du script, par ailleurs entièrement en anglais, la phrase suivante :</p>
<blockquote><p>Le 20/09/2009 by M1ck3y http://www.crack-wpa.fr/<br />
Modification des années de production pour générer les clés WPA par défaut des Bbox Bouygues Telecom (Thomson TG787),<br />
c&#8217;est la SEULE et UNIQUE modification nécessaire pour que ce tool génère les clés WPA par défaut des Bbox&#8230; Une faille énorme donc.</p></blockquote>
<p>Et là je m&#8217;énerve un peu&#8230;</p>
<p>Le dénommé M1ck3y n&#8217;a donc eu qu&#8217;à changer quelques signes dans un code écrit entièrement par un autre pour que cela fonctionne avec les Bbox et il se permet de vendre le truc. En d&#8217;autres termes : il vend le travail d&#8217;un autre&#8230;</p>
<p>Le site sur lequel j&#8217;ai téléchargé (et payé donc) le script ne fait mention d&#8217;aucune licence&#8230; Qu&#8217;à cela ne tienne : je vais lancer une interface web mobile gratuite qui permette de profiter de BBKeys&#8230; L&#8217;IDE étant déjà ouvert je n&#8217;ai qu&#8217;à créer un nouveau projet, me baser sur le thème général des applis iPhone et quelques minutes (une petite heure quoi) plus tard <a href="http://bbkeys.p4ul.info">http://bbkeys.p4ul.info</a> était né !</p>
<p>Le principe est là encore très simple (je crois que je n&#8217;aime pas les choses compliquées, juste les gens compliqués) : vous tombez par hasard sur un réseau Bbox alors que vous n&#8217;avez que votre accès 3G sous la main&#8230; Qu&#8217;à cela ne tienne : un coup de web mobile plus tard BBKeys vous retourne une ou plusieurs clefs pouvant correspondre au point d&#8217;accès si le client ne l&#8217;a pas changé ! Et vous voilà connecté en wifi au lieu d&#8217;un bête accès 3G !</p>
<p style="text-align: center;"><strong>[<a href="http://bbkeys.p4ul.info">Accéder à BBKeys en ligne</a>]</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulds.fr/2010/05/bbkeys-quand-bouygues-ne-securise-pas-ses-box/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>[Facebook] Voir le contenu d&#8217;une fanpage sans avoir à devenir fan</title>
		<link>http://www.paulds.fr/2010/04/facebook-voir-le-contenu-dune-fanpage-sans-avoir-a-devenir-fan/</link>
		<comments>http://www.paulds.fr/2010/04/facebook-voir-le-contenu-dune-fanpage-sans-avoir-a-devenir-fan/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 14:01:26 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tweak]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.p4ul.info/?p=753</guid>
		<description><![CDATA[
			
				
			
		
Je sais pas vous (enfin si j&#8217;ai quand même une vague idée) mais moi je suis fatigué de voir ce type de pages pulluler sur le réseau social des jeunes. Je veux bien sûr parler des fanpage dont il faut devenir membre pour voir le contenu. Souvent le contenu en question n&#8217;est pas des plus [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px; position:relative; bottom:20px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F04%2Ffacebook-voir-le-contenu-dune-fanpage-sans-avoir-a-devenir-fan%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F04%2Ffacebook-voir-le-contenu-dune-fanpage-sans-avoir-a-devenir-fan%2F&amp;source=Paul_Da_Silva&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Je sais pas vous (enfin si j&#8217;ai quand même une vague idée) mais moi je suis fatigué de voir ce type de pages pulluler sur le réseau social des jeunes. Je veux bien sûr parler des fanpage dont il faut devenir membre pour voir le contenu. Souvent le contenu en question n&#8217;est pas des plus intéressant mais le titre est suffisamment aguicheur pour qu&#8217;un nombre colossal de pigeons se laissent avoir et oublient de quitter les groupes une fois le &laquo;&nbsp;précieux&nbsp;&raquo; contenu découvert. Ces listes de pigeons servent ensuite à envoyer de la pub soit via le mur soit directement par messages.</p>
<p>Je me suis un peu penché sur le problème et y ai trouvé une solution très simple et diablement efficace : une seule ligne de javascript (pondue par mes soins un jour de repos !) qui permet d&#8217;afficher le contenu caché sans avoir à rejoindre quoi que ce soit.</p>
<p>La ligne en question la voici :</p>
<blockquote class="js"><pre style="overflow-x:scroll">javascript:spans=document.getElementById("tab_canvas").getElementsByTagName("span"); for(var sp in spans){spans[sp].style.visibility="visible"}</pre>
</blockquote>
<p>Pour que cela fonctionne il faut que vous soyez sur l&#8217;onglet de la page qui contient le contenu caché. Souvent il s&#8217;agit du premier onglet à être ouvert quand vous cliquez sur un lien. Ensuite vous avez deux solutions : la copier/coller dans la barre d&#8217;adresse à la place de l&#8217;url et valider avec la touche entrée comme si vous veniez d&#8217;entrer une réelle url. Ou, plus simple, ajouter un favoris dans votre navigateur dont l&#8217;adresse serait cette fameuse ligne. En plaçant le favoris dans la barre personnelle de Firefox par exemple vous n&#8217;aurez plus qu&#8217;à cliquer sur le bouton pour que le contenu de la page se mette à jour en direct.</p>
<h3>Comment et pourquoi cela fonctionne</h3>
<p>Le principe de ces pages est très simple : le créateur ajoute un onglet à sa page pour y faire figurer son contenu et décide de n&#8217;afficher le contenu qu&#8217;aux membres en le cachant aux autres dans un bête <em>&lt;span&gt;</em> caché par la propriété CSS <em>visibility:hidden</em>. Partant de là il suffit de parcourir tous les <em>spans</em> de la page affichée et de transformer la propriété <em>visibility:hidden</em> en <em>visibility:visible</em>.</p>
<p>Bien sûr cette méthode ne fonctionne que pour les balises <em>&lt;span&gt;</em> et uniquement si celles-ci ont été cachées en utilisant la propriété <em>visibility</em>. Mais jusqu&#8217;à présent je n&#8217;ai pas trouvé une seule page sur laquelle cela ne soit pas fait comme cela.</p>
<p>Petit conseil aux super développeurs qui ont pondu un concept du genre : utilisez des <em>&lt;div&gt;</em> ou d&#8217;autres balises et les propriétés <em>display</em> ou <em>opacity</em> pour continuer à ferrer du pigeon ! Et quand ça ne suffira plus il faudra songer à cacher le contenu côté serveur et à le faire apparaître en Ajax ^^</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulds.fr/2010/04/facebook-voir-le-contenu-dune-fanpage-sans-avoir-a-devenir-fan/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Retrouver le créateur d&#8217;une fanpage sur Facebook</title>
		<link>http://www.paulds.fr/2010/04/retrouver-le-createur-dune-fanpage-sur-facebook/</link>
		<comments>http://www.paulds.fr/2010/04/retrouver-le-createur-dune-fanpage-sur-facebook/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 09:57:17 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tweak]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[créateur]]></category>
		<category><![CDATA[fan]]></category>

		<guid isPermaLink="false">http://blog.p4ul.info/?p=728</guid>
		<description><![CDATA[
			
				
			
		
Cet article fait référence à une version de Facebook qui n&#8217;est plus d&#8217;actualité.
Pour trouver la nouvelle méthode à utiliser pour identifier le créateur d&#8217;une fanpage, lisez l&#8217;article suivant :
[Facebook] Trouver le créateur d’une fanpage (bis).
Je sais j&#8217;écris beaucoup à propos de Facebook ces derniers temps. Mais là j&#8217;ai trouvé un truc assez intéressant pour retrouver [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px; position:relative; bottom:20px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F04%2Fretrouver-le-createur-dune-fanpage-sur-facebook%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F04%2Fretrouver-le-createur-dune-fanpage-sur-facebook%2F&amp;source=Paul_Da_Silva&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p style="margin: 5px 20px; border: 1px solid #F00; background: #FEEEEE; padding: 5px 10px; text-align: center;">Cet article fait référence à une version de Facebook qui n&#8217;est plus d&#8217;actualité.<br />
Pour trouver la nouvelle méthode à utiliser pour identifier le créateur d&#8217;une fanpage, lisez l&#8217;article suivant :<br />
<a href="http://blog.p4ul.info/2010/05/facebook-trouver-le-createur-dune-fanpage-bis/">[Facebook] Trouver le créateur d’une fanpage (bis)</a>.</p>
<p>Je sais j&#8217;écris beaucoup à propos de Facebook ces derniers temps. Mais là j&#8217;ai trouvé un truc assez intéressant pour retrouver le créateur d&#8217;une page fan sur le réseau social le plus utilisé du moment.</p>
<p>Je vous préviens tout de suite, la technique est assez compliquée et implique de trifouiller un peu plus que d&#8217;habitude.</p>
<p>L&#8217;idée est assez simple à la base :  lorsque l&#8217;on affiche la liste des fans d&#8217;une page, ceux-ci sont affichés par ordre d&#8217;inscription &#8211; les derniers inscrits étant affichés en premier. Aussi, en toute logique, le créateur de la page doit-être le dernier de la liste aka le premier inscrit.</p>
<p>Lorsque la page n&#8217;a qu&#8217;un faible nombre de fans il est assez simple de tous les parcourir à la main &#8211; Mais si l&#8217;on s&#8217;attaque à un sujet hautement intellectuel tel que &laquo;&nbsp;Obliger un agent de la SNCF à travailler et le regarder pleurer&nbsp;&raquo; (exemple pris au hasard parmi les derniers statuts de mes amis facebook), on ne va pas s&#8217;amuser à parcourir xx pages à la main.</p>
<h3>De quoi a-t-on besoin ?</h3>
<p>Pour trouver cette astuce je me suis basé sur Firefox ainsi que deux de mes extensions préférées : Tamper Data et Firebug.</p>
<p>Avec Tamper Data on va modifier la requête envoyée par Facebook pour choisir d&#8217;afficher la dernière page &#8211; ceci va générer un bug et les données, bien que transmises, ne seront pas affichées &#8211; il faudra donc les lire à l&#8217;aide de Firebug.</p>
<h4>Tamper Data</h4>
<p>Tamper Data permet de modifier tous les paramètres d&#8217;une requête envoyée au serveur &#8211; qu&#8217;elle soit synchrone ou asynchrone. Cette extension est très pratique pour faire des essais en Ajax et avait déjà été utilisée dans un précédent hack qui permettait de visionner tous les profils Facebook, qu&#8217;ils soient publics ou non. <a href="https://addons.mozilla.org/fr/firefox/addon/966" target="_blank">Télécharger</a></p>
<h4>Firebug</h4>
<p>Je n&#8217;ai même pas envie de présenter cette extension tant vous auriez tort de ne pas déjà la connaître ! En l&#8217;occurrence elle va nous servir à analyser le retour d&#8217;une requête Ajax que le script côté client a du mal à rendre&#8230; C&#8217;est pas grave, on est plus fort que Chuck Norris, on lit directement le code source ! <a href="https://addons.mozilla.org/fr/firefox/addon/1843" target="_blank">Télécharger</a></p>
<p><span id="more-728"></span></p>
<h3>La méthode</h3>
<p>Avant toutes choses il faut afficher la popup listant les fans de la page. Pour ce faire, un simple clic sur le nombre de fans devrait suffire (si ça bloque là, le mieux c&#8217;est que vous arrêtiez tout de suite sinon on va pas s&#8217;en sortir hein !)</p>
<p>Une fois la popup chargée &#8211; et surtout pas avant &#8211; lancez les deux extensions nécessaires à savoir Tamper Data et Firebug.</p>
<p>Dans la fenêtre de Tamper Data cliquez sur &laquo;&nbsp;Démarrer altération&nbsp;&raquo; et laissez Firebug ouvert sur la console.</p>
<p>Il ne reste plus qu&#8217;à descendre tout en bas de la popup listant les fans pour cliquer sur &laquo;&nbsp;Suiv.&nbsp;&raquo; Ceci aura pour effet de déclencher Tamper Data qui vous proposera de modifier la requête. Acceptez et décochez la case &laquo;&nbsp;Continuer altération&nbsp;&raquo; : nous n&#8217;avons qu&#8217;une requête à forger.</p>
<p><a href="http://blog.p4ul.info/wp-content/uploads/2010/04/alteration.png" rel="lightbox[728]"><img class="aligncenter size-medium wp-image-739" title="alteration" src="http://blog.p4ul.info/wp-content/uploads/2010/04/alteration-300x245.png" alt="" width="300" height="245" /></a></p>
<p>Dans la fenêtre qui s&#8217;ouvre vous pouvez modifier tous les paramètres transmis en Ajax à Facebook. Le paramètre qui nous intéresse est le paramètre &laquo;&nbsp;Page&nbsp;&raquo; que vous devez passer à l&#8217;indice de la dernière page. Les pages contenant 100 personnes à chaque fois il suffit de diviser le nombre de fans par 100 pour trouver l&#8217;indice de la dernière page. Pour mon exemple : il y a 7944 fans donc il faut remplacer le paramètre &laquo;&nbsp;1&#8243; par &laquo;&nbsp;79&#8243;.</p>
<p>Une fois ce paramètre modifié, vous pouvez envoyer la requête en cliquant sur &laquo;&nbsp;Ok&nbsp;&raquo;. Veillez bien à ce que Firebug soit lancé avant de cliquer sur le bouton &laquo;&nbsp;Ok&nbsp;&raquo;, sinon ça ne sert à rien <img src='http://www.paulds.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  A la question &laquo;&nbsp;voulez vous modifier &#8230;&nbsp;&raquo; répondez &laquo;&nbsp;Oui&nbsp;&raquo;.</p>
<p>Enfin, il vous suffit d&#8217;analyser le retour Json de la dernière requête passée à Facebook &#8211; et plus précisément son dernier enregistrement &#8211; pour trouver le créateur de la page.</p>
<p>La requête à analyser est celle dont l&#8217;url est <em>http://www.facebook.com/ajax/social_graph/fetch.php?__a=1</em>. En cliquant sur le petit signe + à gauche de l&#8217;url vous pourrez visionner le retour Json de la requête. Celui-ci est un tableau associatif de la forme suivante :</p>
<blockquote><p>&laquo;&nbsp;id_profil&nbsp;&raquo;:{&laquo;&nbsp;id&nbsp;&raquo;:0000,&nbsp;&raquo;title&nbsp;&raquo;:&nbsp;&raquo;Prénom Nom&nbsp;&raquo;,&nbsp;&raquo;alternate_title&nbsp;&raquo;:&nbsp;&raquo;",&nbsp;&raquo;href&nbsp;&raquo;:&nbsp;&raquo;http:\/\/www.facebook.com\/url&nbsp;&raquo;,&nbsp;&raquo;subtitle&nbsp;&raquo;:&nbsp;&raquo;",&nbsp;&raquo;index&nbsp;&raquo;:89,&nbsp;&raquo;pic&nbsp;&raquo;:&nbsp;&raquo;http:\/\/profile.ak.fbcdn.net\/image.jpg&nbsp;&raquo;,&nbsp;&raquo;actionText&nbsp;&raquo;:&nbsp;&raquo;Ajouter comme ami(e)&nbsp;&raquo;,&nbsp;&raquo;action&nbsp;&raquo;:&nbsp;&raquo;add_friend&nbsp;&raquo;}</p></blockquote>
<p>L&#8217;enregistrement qui nous intéresse est donc le dernier du tableau, celui qui arrive juste avant les informations relatives au nombre de membres du groupe et de la page &#8211; celui qui précède : <em><code>,"count":7944,"page":79}</code></em></p>
<p>Et plus particulièrement, ce qui nous intéresse ici c&#8217;est le paramètre <em>title</em> qui contient le couple nom / prénom du créateur et éventuellement le <em>alternate_title</em> qui contient l&#8217;url encodée du profil du créateur.</p>
<p>Je songe à faire une extension Firefox qui automatise tout le process parce que là c&#8217;est peut-être un peu compliqué pour un novice&#8230; Ça vous brancherai ?</p>
<p>Accessoirement je me permet de rebondir sur un fait d&#8217;actualité : <a href="http://www.numerama.com/magazine/15508-un-eveque-fait-condamner-facebook-france-pour-une-page-insultante.html" target="_blank">Facebook a été condamné à donner le nom du créateur d&#8217;une page jugée insultante</a>&#8230; Si vous le voulez le nom, je l&#8217;ai <img src='http://www.paulds.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Mais elle ne risque pas grand chose : elle vit en Allemagne.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulds.fr/2010/04/retrouver-le-createur-dune-fanpage-sur-facebook/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>[Facebook] Inviter tous ses amis à un groupe / fanpage en une seule fois</title>
		<link>http://www.paulds.fr/2010/04/facebook-inviter-tous-ses-amis-a-un-groupe-fanpage-en-une-seule-fois/</link>
		<comments>http://www.paulds.fr/2010/04/facebook-inviter-tous-ses-amis-a-un-groupe-fanpage-en-une-seule-fois/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 11:22:23 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Tweak]]></category>
		<category><![CDATA[fan]]></category>
		<category><![CDATA[groupe]]></category>
		<category><![CDATA[invitation]]></category>

		<guid isPermaLink="false">http://blog.p4ul.info/?p=715</guid>
		<description><![CDATA[
			
				
			
		
Il peut-arriver, parfois, que l&#8217;on ait une bonne raison de vouloir inviter tous ses amis facebook à rejoindre un groupe ou à grossir les rangs d&#8217;une fanpage quelconque.
Cette manœuvre peut-être assez fastidieuse si l&#8217;on doit tous les sélectionner un par un&#8230; Aussi je vous propose aujourd&#8217;hui une astuce qui vous permettra de sélectionner tous vos [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px; position:relative; bottom:20px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F04%2Ffacebook-inviter-tous-ses-amis-a-un-groupe-fanpage-en-une-seule-fois%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F04%2Ffacebook-inviter-tous-ses-amis-a-un-groupe-fanpage-en-une-seule-fois%2F&amp;source=Paul_Da_Silva&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Il peut-arriver, parfois, que l&#8217;on ait une bonne raison de vouloir inviter tous ses amis facebook à rejoindre un groupe ou à grossir les rangs d&#8217;une fanpage quelconque.</p>
<p>Cette manœuvre peut-être assez fastidieuse si l&#8217;on doit tous les sélectionner un par un&#8230; Aussi je vous propose aujourd&#8217;hui une astuce qui vous permettra de sélectionner tous vos amis d&#8217;un coup. Libre à vous, ensuite, de désélectionner ceux qui ne seraient pas intéressés par la fanpage de Benjamin Biolay (ouais pourquoi pas).</p>
<p>Une fois la popup DHTML servant à inviter les amis ouverte (donc après avoir cliqué sur &laquo;&nbsp;Recommander à des amis&nbsp;&raquo; pour une fanpage ou &laquo;&nbsp;Inviter des amis à rejoindre le groupe&nbsp;&raquo; pour un groupe), vous devrez copier/coller le code suivant dans la barre d&#8217;adresse de votre navigateur :</p>
<blockquote class="js"><p>javascript:els=document.getElementById(&#8216;friends&#8217;).getElementsByTagName(&#8216;li&#8217;);for(var id in els){if(typeof els[id] === &#8216;object&#8217;){fs.click(els[id]);}}</p></blockquote>
<p>Il suffit ensuite d&#8217;appuyer sur la touche entrée et d&#8217;attendre quelques secondes (en fonction de votre nombre d&#8217;amis) pour voir toutes les petites vignettes s&#8217;illuminer.</p>
<p>Vous n&#8217;avez plus qu&#8217;à valider votre choix pour effectivement inviter tous vos amis; comme si vous veniez de tous les sélectionner à la main.</p>
<h3>Petite analyse du code en question :</h3>
<p>On commence par préciser que l&#8217;on ne va pas passer une url mais un code javascript avec la bête instruction <em>javascript:</em></p>
<p>Ensuite, on va sélectionner tous les <em>&lt;li&gt;</em> enfants de la liste <em>&lt;ul id=&nbsp;&raquo;friends&nbsp;&raquo;&gt;</em>.</p>
<p>Ces <em>&lt;li&gt;</em> sont stockés dans la variable <em>els</em> que l&#8217;on va parcourir dans une boucle <em>for in</em> que les habitués du javascript ou même du bash devraient connaître.</p>
<p>Finalement, pour chacun de ces éléments, on va appeler la fonction <em>fs.click(els[id]);</em> qui est normalement appelée si l&#8217;on clique effectivement sur l&#8217;élément en question.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulds.fr/2010/04/facebook-inviter-tous-ses-amis-a-un-groupe-fanpage-en-une-seule-fois/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Redimensionner plusieurs éléments du DOM en jQuery</title>
		<link>http://www.paulds.fr/2010/04/design-colonnes-meme-longueur/</link>
		<comments>http://www.paulds.fr/2010/04/design-colonnes-meme-longueur/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 10:43:03 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tweak]]></category>
		<category><![CDATA[div]]></category>
		<category><![CDATA[float]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.p4ul.info/?p=704</guid>
		<description><![CDATA[
			
				
			
		
Je vois souvent la question se poser un peu partout sur le web : avec cette manie (bonne manie, mais manie tout de même)  de structurer les pages à grand renforts de &#60;div&#62; (en y ajoutant le plus souvent la propriété float) là où nos ancêtres (ou juste nous il y a quelques années) utilisaient [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px; position:relative; bottom:20px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F04%2Fdesign-colonnes-meme-longueur%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F04%2Fdesign-colonnes-meme-longueur%2F&amp;source=Paul_Da_Silva&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Je vois souvent la question se poser un peu partout sur le web : avec cette manie (bonne manie, mais manie tout de même)  de structurer les pages à grand renforts de <em>&lt;div&gt;</em> (en y ajoutant le plus souvent la propriété <em>float</em>) là où nos ancêtres (ou juste nous il y a quelques années) utilisaient une grande quantité de <em>&lt;table&gt;</em>, les présentations en plusieurs colonnes souffrent d&#8217;un défaut majeur : elles n&#8217;ont plus nécessairement la même longueur.</p>
<p>Il existe un certain nombre de solutions pour remédier à cela. Celle que je vous propose aujourd&#8217;hui se base sur un bête code javascript (ignoré des Serps donc, mais peu importe vu qu&#8217;il s&#8217;agit de mise en page) et plus précisément sur du jQuery.</p>
<p>L&#8217;idée est d&#8217;attribuer le même nom de classe à tous les éléments du DOM que l&#8217;on veut voir de la même taille et ensuite d&#8217;appeler, à la fin du chargement de la page, une fonction javascript qui va redimensionner tous les éléments correspondants à un sélecteur jQuery que l&#8217;on basera sur la fameuse classe ajoutée à tous les éléments à redimensionner.</p>
<p>L&#8217;avantage, par rapport aux autres solutions, est qu&#8217;elle ne nécessite presque aucun code supplémentaire et par conséquent, que l&#8217;on garde la logique sémantique de la page. Et, après tout, c&#8217;est là tout le but de l&#8217;abandon des <em>&lt;table&gt;</em> au profit des <em>&lt;div&gt;</em>.</p>
<p>Trêves de blabla, voici le code javascript, à ajouter de préférence dans un fichier séparé :</p>
<blockquote class="js"><p>function redimensionner(selecteur){<br />
var hauteur=0;<br />
$(selecteur).each(function(){<br />
if($(this).height()&gt;hauteur) hauteur = $(this).height();<br />
});</p>
<p>$(selecteur).each(function(){ $(this).height(hauteur); });<br />
}</p></blockquote>
<p>Il suffira ensuite d&#8217;appeler, au chargement de la page, ladite fonction en lui passant en argument le sélecteur jQuery qui matche nos éléments à redimensionner. Le code se chargera de déterminer la taille du plus grand élément et de mettre les autres à l&#8217;échelle.</p>
<p>Concrètement, il vous faudra ajouter le morceau de code suivant :</p>
<blockquote class="js"><p>$(document).ready(function(){<br />
redimensionner(&#8216;div.toSize&#8217;);<br />
});</p></blockquote>
<p>Pour redimensionner tous les <em>&lt;div&gt;</em> ayant la classe <em>toSize</em> à la taille du plus grand de ces éléments. Pour plus de détails sur les sélecteurs jQuery, je vous renvoie à <a href="http://api.jquery.com/category/selectors/">l&#8217;excellente doc en ligne</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulds.fr/2010/04/design-colonnes-meme-longueur/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Créer et installer un outil pour surveiller le passage de Google sur son site</title>
		<link>http://www.paulds.fr/2010/03/creer-et-installer-un-outil-pour-surveiller-le-passage-de-google-sur-son-site/</link>
		<comments>http://www.paulds.fr/2010/03/creer-et-installer-un-outil-pour-surveiller-le-passage-de-google-sur-son-site/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 07:00:56 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Programmation]]></category>
		<category><![CDATA[Tweak]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[serp]]></category>

		<guid isPermaLink="false">http://blog.p4ul.info/?p=664</guid>
		<description><![CDATA[
			
				
			
		
Il peut être utile, dans bien des cas, de surveiller l&#8217;activité de notre cher Google (ou de ses amis SERPs divers et variés) sur son(/ses) sites. Pour ce faire je n&#8217;ai pas trouvé mieux qu&#8217;un outil, fait maison et installé sur la quasi-totalité de mes sites.
Comme je ne suis pas avare de mes idées je [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px; position:relative; bottom:20px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F03%2Fcreer-et-installer-un-outil-pour-surveiller-le-passage-de-google-sur-son-site%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F03%2Fcreer-et-installer-un-outil-pour-surveiller-le-passage-de-google-sur-son-site%2F&amp;source=Paul_Da_Silva&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Il peut être utile, dans bien des cas, de surveiller l&#8217;activité de notre cher Google (ou de ses amis SERPs divers et variés) sur son(/ses) sites. Pour ce faire je n&#8217;ai pas trouvé mieux qu&#8217;un outil, fait maison et installé sur la quasi-totalité de mes sites.</p>
<p>Comme je ne suis pas avare de mes idées je vais vous détailler un peu le fonctionnement dudit outil et vous en donner les sources afin que vous puissiez l&#8217;installer éventuellement sur votre site.</p>
<h3>Se baser sur l&#8217;user-agent</h3>
<p>Comme souvent quand on cherche à définir un comportement spécifique pour un type de visiteur particulier il suffit de se baser sur le user-agent de celui-ci. Pour rappel le user-agent d&#8217;un navigateur (ou d&#8217;un bot d&#8217;ailleurs) est une chaine de caractères qui identifie l&#8217;outil utilisé pour accéder à un site.</p>
<p>En PHP on peut le récupérer simplement avec la variable super globale $_SERVER et plus précisément avec $_SERVER['HTTP_USER_AGENT'].</p>
<p>Par exemple, si vous utilisez Firefox 3.6 sous Windows le user-agent envoyé à tous les sites que vous visitez sera : <em>Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.2) Gecko/20100115  Firefox/3.6</em></p>
<p>A partir de là, et sachant que chaque Crawler (les bots qui visitent inlassablement le net pour indexer le contenu) utilisent des user-agent bien connus il est simple de les surveiller.</p>
<p><span id="more-664"></span></p>
<h3>Un script à inclure sur toutes les pages</h3>
<p>Pour que le script ait un quelconque intérêt il faut bien sûr que vous l&#8217;ajoutiez à toutes vos pages. La bonne nouvelle c&#8217;est que le script en question n&#8217;affiche rien à vos visiteurs et vous permet simplement de remplir un fichier html de votre choix dont vous seul connaitrez l&#8217;adresse &#8211; si vous êtes aussi parano que moi vous pouvez même le mettre dans un dossier protégé par .htaccess : les connexions de notre script à ce fichier se passant en local rien ne transitera par le protocole HTTP.</p>
<p>L&#8217;idéal pour que le script soit utilisé sur toutes vos pages est d&#8217;inclure celui-ci directement dans un fichier de config, déjà inclu sur la totalité de vos pages. Pour ma part j&#8217;ai choisi le fichier dans lequel je défini les paramètres de mon site et qui comporte entre autre les informations de connexion à la base de données.</p>
<p>Juste au cas où, je vous rappèle la syntaxe à utiliser pour inclure le script :</p>
<blockquote class="php"><p>&lt;?php include &laquo;&nbsp;chemin/script.php&nbsp;&raquo;; ?&gt;</p></blockquote>
<h3>Et dans le script on met quoi ?</h3>
<p>C&#8217;est vrai que là à part inclure un fichier vide sur toutes vos pages ça n&#8217;a pas grand intérêt comme article&#8230;</p>
<p>Le plus simple c&#8217;est de regarder l&#8217;algo de ce que l&#8217;on veut que le script fasse :</p>
<p>- Regarder si le user agent-appartient à une liste de bots &laquo;&nbsp;surveillés&nbsp;&raquo;<br />
- Si c&#8217;est le cas ajouter un marqueur de cette visite dans un fichier<br />
- Pour éviter les mauvaises surprises, limiter la taille de ce fichier à un certain nombre d&#8217;enregistrements</p>
<h3>Regarder si l&#8217;user-agent est intéressant</h3>
<blockquote class="php"><p>$bots = array(&laquo;&nbsp;crawler&nbsp;&raquo;,&nbsp;&raquo;Googlebot&nbsp;&raquo;,&nbsp;&raquo;Scooter&nbsp;&raquo;,&nbsp;&raquo;Slurp&nbsp;&raquo;);</p>
<p>for($i=0, $iMax=count($bots); $i&lt;$iMax; $i++)<br />
{<br />
if(strpos($_SERVER['HTTP_USER_AGENT'],$bots[$i]))<br />
{<br />
//le code ici<br />
}<br />
}</p></blockquote>
<p>Les bots à surveiller sont simplement dans un array ($bots) sur lequel on va boucler pour vérifier si le user-agent contient la chaine de caractères qui correspond. Si c&#8217;est le cas, on va rentrer dans le vif de notre script : l&#8217;ajout d&#8217;un marqueur de visite dans un fichier.</p>
<h3>Créer un marqueur de la visite</h3>
<p>Là encore rien de bien compliqué, à ceci près que l&#8217;on va en profiter pour vider systématiquement le fichier et en limiter la taille à un certain nombre d&#8217;enregistrements. Si vous ne faites pas cela et que le fichier devient trop conséquent il pourrait bloquer le chargement du reste des pages et empêcher aux bots de les visiter&#8230; Ce qui est à peu près le contraire de ce que l&#8217;on veut faire.</p>
<blockquote class="php"><p>if ($_SERVER['QUERY_STRING'] != &laquo;&nbsp;&nbsp;&raquo;)<br />
$url = &laquo;&nbsp;http://&nbsp;&raquo; . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'] . &laquo;&nbsp;?&nbsp;&raquo; . $_SERVER['QUERY_STRING']. &laquo;&nbsp;&nbsp;&raquo;;<br />
else<br />
$url = &laquo;&nbsp;http://&nbsp;&raquo; . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF']. &laquo;&nbsp;&nbsp;&raquo;;</p>
<p>$f = fopen(&laquo;&nbsp;robots.html&nbsp;&raquo;,&nbsp;&raquo;r+&nbsp;&raquo;);<br />
$prev=file_get_contents(&#8217;save.html&#8217;);<br />
$prev = explode(&#8216;&lt;br /&gt;&#8217;, $prev);<br />
$prev = array_splice($prev,0, 15);<br />
$prev = implode(&#8216;&lt;br /&gt;&#8217;, $prev);</p>
<p>rewind($f);<br />
ftruncate($f, 0);<br />
fwrite($f, &#8216;[ '.date("d/m/Y H:i").' | '.$_SERVER['REMOTE_ADDR'].&#8217; | &#8216;.$bot.&#8217; ] : &lt;a href=&nbsp;&raquo;&#8216;.$url.&#8217;&nbsp;&raquo;&gt;&#8217;.$url.&#8217;&lt;/a&gt;&lt;br /&gt;&#8217;.&nbsp;&raquo;\r&nbsp;&raquo;.$prev);<br />
fclose($f);</p></blockquote>
<p>Petite explication rapide avant de vous donner un lien pour télécharger le script : on commence par récupérer l&#8217;url complète à laquelle le bot essaye d&#8217;accéder. Celle-ci est stockée dans la variable $url et sera réutilisée au moment d&#8217;insérer une nouvelle ligne dans le fichier.</p>
<p>On récupère ensuite le contenu du fichier déjà existant sous la forme d&#8217;une chaine (file_get_contents) que l&#8217;on transforme en tableau (explode). On réduit la taille de ce tableau à 15 enregistrements avec la fonction array_splice et on le retransforme en chaine de caractères avec implode.</p>
<p>Ensuite on vide le fichier en plaçant le pointeur de lecture en début de fichier (fseek) et en vidant tout ce qui suit (ftruncate). Il ne reste plus qu&#8217;à ajouter notre nouvelle ligne suivie des 15 anciennes que l&#8217;on souhaitait garder et à refermer le fichier (fclose).</p>
<p>N&#8217;oubliez pas de donner les droits en écriture à Apache sur le fichier html sous peine de voir le script ne pas fonctionner et une belle erreur s&#8217;afficher pour les bots.</p>
<p>Pour tester le script, il vous suffit de changer votre user-agent &#8211; soit en utilisant une extension firefox très sympathique : <a href="https://addons.mozilla.org/fr/firefox/addon/59">user-agent switcher</a> &#8211; soit en modifiant la chaine general.useragent.extra.firefox dans le about:config</p>
<p>Et pour les plus feignants d&#8217;entre vous : un petit fichier zip contenant les deux fichiers nécessaires à la mise en place de mouchard : [<a href="http://blog.p4ul.info/wp-content/uploads/2010/03/script.zip">script</a>].</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulds.fr/2010/03/creer-et-installer-un-outil-pour-surveiller-le-passage-de-google-sur-son-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Débloquer ses amis et/ou applications sur Facebook &#8211; bis</title>
		<link>http://www.paulds.fr/2010/01/debloquer-ses-amis-et-applications-sur-facebook/</link>
		<comments>http://www.paulds.fr/2010/01/debloquer-ses-amis-et-applications-sur-facebook/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 14:42:26 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Tweak]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[bloquer]]></category>

		<guid isPermaLink="false">http://blog.p4ul.info/?p=633</guid>
		<description><![CDATA[
			
				
			
		
Il semblerait qu&#8217;en plus de ne pas poster souvent sur ce blog je me contente de faire des rééditions de mes précédents billets. Après avoir fait une nouvelle version du billet expliquant les méthodes pour tricher au concours VDM, je vais aujourd&#8217;hui vous proposer une nouvelle version de mon billet qui décrivait la marche à [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px; position:relative; bottom:20px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F01%2Fdebloquer-ses-amis-et-applications-sur-facebook%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.paulds.fr%2F2010%2F01%2Fdebloquer-ses-amis-et-applications-sur-facebook%2F&amp;source=Paul_Da_Silva&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Il semblerait qu&#8217;en plus de ne pas poster souvent sur ce blog je me contente de faire des rééditions de mes précédents billets. Après avoir fait une nouvelle version du billet expliquant les méthodes pour tricher au concours VDM, je vais aujourd&#8217;hui vous proposer une nouvelle version de <a href="http://blog.p4ul.info/2009/07/recevoir-a-nouveau-les-notifications-de-vos-contacts-masques-sur-facebook/">mon billet qui décrivait la marche à suivre pour débloquer ses amis ou applications bloqués par inadvertance sur Facebook</a>.</p>
<p>En effet, comme assez régulièrement maintenant, Facebook a mis à jour sa plateforme en la rendant encore un peu plus brouillon et toujours moins intuitive (il semblerait qu&#8217;il s&#8217;agisse d&#8217;une contrainte de montée en version chez eux)&#8230;</p>
<p>La marche à suivre reste plus ou moins la même que sur la précédente version, seule la dernière étape diffère. Et quand je dis qu&#8217;elle diffère je ne pourrais pas être plus réaliste puisqu&#8217;entre IE (6 sous Win XP en VM) et Firefox (3.5.6 sous ubuntu) j&#8217;ai deux écrans différents pour arriver à la même chose&#8230;</p>
<p>Et comme souvent, un dessin valant mille mots : cette explication va se faire en images !</p>
<p>Comme avant, l&#8217;idée va être de commencer par bloquer un de ses contacts &#8211; peu importe qui, on annulera cela de toutes façons juste après.</p>
<div id="attachment_635" class="wp-caption aligncenter" style="width: 546px"><a href="http://blog.p4ul.info/wp-content/uploads/2010/01/facebook-debloquer-un-ami.png" rel="lightbox[633]"><img class="size-full wp-image-635" title="facebook debloquer un ami" src="http://blog.p4ul.info/wp-content/uploads/2010/01/facebook-debloquer-un-ami.png" alt="facebook debloquer un ami" width="536" height="66" /></a><p class="wp-caption-text">Commencer par masquer un contact</p></div>
<p>Quand vous aurez cliqué sur le bouton, la publication en question sera remplacé par l&#8217;écran suivant :</p>
<div id="attachment_636" class="wp-caption aligncenter" style="width: 550px"><a href="http://blog.p4ul.info/wp-content/uploads/2010/01/facebook-demasquer-un-ami.png" rel="lightbox[633]"><img class="size-full wp-image-636" title="facebook demasquer un ami" src="http://blog.p4ul.info/wp-content/uploads/2010/01/facebook-demasquer-un-ami.png" alt="facebook demasquer un ami" width="540" height="64" /></a><p class="wp-caption-text">Ensuite, validez le masquage</p></div>
<p>Éventuellement, si la publication concerne une application, un troisième bouton proposant de bloquer l&#8217;application apparaîtra entre les deux qui sont visibles sur la capture d&#8217;écran précédente.</p>
<p>Vous pouvez choisir de masquer l&#8217;application ou la personne. Ce choix n&#8217;aura aucune incidence sur le reste de l&#8217;opération.</p>
<p>Maintenant que l&#8217;application est masquée, l&#8217;encart qui contenait la publication ressemble à la capture suivante :</p>
<div id="attachment_638" class="wp-caption aligncenter" style="width: 550px"><a href="http://blog.p4ul.info/wp-content/uploads/2010/01/facebook-demasquer-une-application.png" rel="lightbox[633]"><img class="size-full wp-image-638" title="facebook demasquer une application" src="http://blog.p4ul.info/wp-content/uploads/2010/01/facebook-demasquer-une-application.png" alt="facebook demasquer une application" width="540" height="58" /></a><p class="wp-caption-text">Cliquez sur &quot;modifier les options&quot;</p></div>
<p>Et le lien qui nous intéresse est bien sûr : &laquo;&nbsp;modifier les options&nbsp;&raquo;.</p>
<p>En fonction de votre navigateur / OS l&#8217;une des deux fenêtres suivantes va s&#8217;afficher. Il suffit ensuite de paramêtrer les options comme bon vous semble :</p>
<table style="margin: 0 auto;">
<tbody>
<tr>
<td style="padding: 5px;"><a rel="lightbox[facebookDebloquer]" href="http://blog.p4ul.info/wp-content/uploads/2010/01/facebook-demasquer-un-ami-ou-une-application.png"><img class="aligncenter size-thumbnail wp-image-637" title="facebook demasquer un ami ou une application" src="http://blog.p4ul.info/wp-content/uploads/2010/01/facebook-demasquer-un-ami-ou-une-application-150x150.png" alt="" width="150" height="150" /></a></td>
<td style="padding: 5px;"><a rel="lightbox[facebookDebloquer]" href="http://blog.p4ul.info/wp-content/uploads/2010/01/facebook-afficher-flux-actualite.png"><img class="aligncenter size-thumbnail wp-image-634" title="facebook afficher flux actualite" src="http://blog.p4ul.info/wp-content/uploads/2010/01/facebook-afficher-flux-actualite-150x150.png" alt="" width="150" height="150" /></a></td>
</tr>
</tbody>
</table>
<p>Plusieurs autres options sont possibles : utiliser les options disponibles en bas de page sous l&#8217;intitulé &laquo;&nbsp;modifier les options&nbsp;&raquo;, aller sur la page de l&#8217;application bloquée la bloquer puis la débloquer, &#8230; Mais je préfère la méthode bourrin que je vous présente ici.</p>
<p><em>Note de service : ce blog devrait reprendre peu à peu de l&#8217;activité grâce à un nouveau rythme de travail que vous présenterai avec notamment un article sur comme Windows a diminué ma productivité, comment gagner 3h par jour, la présentation de nouveaux projets ambicieux, et de nombreuses astuces de geek au fur et à mesure que je les découvre / &laquo;&nbsp;invente&nbsp;&raquo;.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulds.fr/2010/01/debloquer-ses-amis-et-applications-sur-facebook/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
	</channel>
</rss>
