<?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>Blogmotion &#187; Développement</title>
	<atom:link href="http://blogmotion.fr/category/programmation/feed" rel="self" type="application/rss+xml" />
	<link>http://blogmotion.fr</link>
	<description>Culture web et nouvelles technologies informatiques</description>
	<lastBuildDate>Wed, 09 May 2012 08:15:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<meta name="generator" content="WordPress" />
	<atom:link rel='hub' href='http://blogmotion.fr/?pushpress=hub'/>
		<item>
		<title>Générateur de logo de chargement en CSS3</title>
		<link>http://blogmotion.fr/programmation/javascript-css/css3-loading-7556</link>
		<comments>http://blogmotion.fr/programmation/javascript-css/css3-loading-7556#comments</comments>
		<pubDate>Mon, 26 Sep 2011 21:15:17 +0000</pubDate>
		<dc:creator>Mr Xhark</dc:creator>
				<category><![CDATA[Javascript et Css]]></category>
		<category><![CDATA[chargement]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[logo]]></category>

		<guid isPermaLink="false">http://blogmotion.fr/?p=7556</guid>
		<description><![CDATA[Voilà un générateur de barre de chargement que vous pouvez utiliser dans vos scripts Ajax, jQuery ou tout autre application web. A la différence des autres générateurs, celui-ci ne génère pas une image gif mais du CSS3. Ce qui implique d&#8217;utiliser un navigateur compatible. CSSLoad Via Vous devriez me suivre sur Twitter : @xhark Article [...]]]></description>
			<content:encoded><![CDATA[<p>Voilà un générateur de <strong>barre de chargement</strong> que vous pouvez utiliser dans vos scripts Ajax, jQuery ou tout autre application web.</p>
<p><img class="alignnone size-full wp-image-7558 aligncenter" style="border: 1px #ccc solid;" title="generateur" src="http://blogmotion.fr/wp-content/uploads/2011/09/generateur.png" alt="" width="590" height="300" /></p>
<p>A la différence des autres générateurs, celui-ci ne génère pas une image gif mais du <strong>CSS3</strong>. Ce qui implique d&#8217;utiliser un <a href="http://cssload.net/browser_support">navigateur compatible</a>.</p>
<p><p style="border-top: 2px solid rgb(65, 105, 175); border-bottom: 2px solid rgb(65, 105, 175); padding: 5px 20px 5px 45px; background: rgb(223, 235, 255) url(http://blogmotion.fr/wp-content/plugins/NiceWeb2CSS/icon/world.gif) no-repeat scroll 15px 50%; text-align: left; color: rgb(102, 102, 102);"><a href="http://cssload.net/">CSSLoad</a></p></p>
<p><em><a href="http://slydlinks.com/generateur-de-loader-en-ligne">Via</a></em></p>
Vous devriez me suivre sur Twitter : <strong><a href="http://twitter.com/xhark">@xhark</a></strong>
<hr />
<p><small><a href="http://blogmotion.fr/programmation/javascript-css/css3-loading-7556">Article original</a> écrit par Mr Xhark publié sur <a href="http://blogmotion.fr">Blogmotion</a> le 26/09/2011 |
<a href="http://blogmotion.fr/programmation/javascript-css/css3-loading-7556#comments">5 commentaires</a> |
<br />Attention : l'intégralité de ce billet est protégée par la licence <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/">Creative Commons</a> 
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blogmotion.fr/programmation/javascript-css/css3-loading-7556/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>[PHP] Allumer un ordinateur à distance via WoW</title>
		<link>http://blogmotion.fr/programmation/php-wake-on-wan-script-7083</link>
		<comments>http://blogmotion.fr/programmation/php-wake-on-wan-script-7083#comments</comments>
		<pubDate>Thu, 07 Apr 2011 21:48:15 +0000</pubDate>
		<dc:creator>Mr Xhark</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[allumer]]></category>
		<category><![CDATA[démarrage]]></category>
		<category><![CDATA[distance]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[magique]]></category>
		<category><![CDATA[paquet]]></category>
		<category><![CDATA[pc]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[réveil]]></category>

		<guid isPermaLink="false">http://blogmotion.fr/?p=7083</guid>
		<description><![CDATA[Si vous avez pour habitude d&#8217;éparpiller des PC un peu partout géographiquement parlant, alors le fait de pouvoir les allumer (et donc les éteindre) à distance doit vous intéresser. Pour cela il est nécessaire d&#8217;utiliser la technique du réveil à distance Wake on Wan qui pourrait se traduire par &#171;&#160;allumer (un ordinateur) à travers le [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous avez pour habitude d&#8217;éparpiller des PC un peu partout géographiquement parlant, alors le fait de pouvoir les allumer (et donc les éteindre) à distance doit vous intéresser. Pour cela il est nécessaire d&#8217;utiliser la technique du réveil à distance <strong><em>Wake on Wan</em></strong> qui pourrait se traduire par &laquo;&nbsp;allumer (un ordinateur) à travers le réseau internet&nbsp;&raquo;.</p>
<p><img class="alignnone size-full wp-image-7084 aligncenter" style="border:#ccc 1px solid" title="wow-php-script" src="http://blogmotion.fr/wp-content/uploads/2011/04/wow-php-script.jpg" alt="" width="590" height="152" /></p>
<p>Le WoW n&#8217;est autre que du <a href="http://fr.wikipedia.org/wiki/Wake-on-LAN">Wake On Lan</a> à travers Internet au lieu d&#8217;un réseau local, je ne rentrerai pas dans les détails de la mise en place qui nécessiterait un billet à elle tout seule. Pour faire simple l&#8217;idée c&#8217;est d&#8217;<strong>allumer un PC depuis n&#8217;importe où dans le monde dans le but de se connecter à distance</strong> (bureau à distance, ssh, vnc, http, etc.).<span id="more-7083"></span></p>
<p>De nombreux sites et logiciels permettent le réveil à distance via WoW, c&#8217;est à dire l&#8217;envoie de la trame magique, le plus connu étant <a href="http://www.depicus.com/wake-on-lan/welcome.aspx">Depicus</a> qui fournit une <a href="http://www.depicus.com/wake-on-lan/woli.aspx">interface web</a>, SOAP, en ligne de commande, une application iPhone/Android et j&#8217;en passe. Si vous êtes en IP fixe le recourt à ce type de service extérieur peu s&#8217;avérer dangereux dans le cas où le site exploite votre IP et l&#8217;adresse mac de la ou les machines à réveiller&#8230; car vous ne pourrez pas en changer. Seul le port est parfois paramétrable, le port 7 et 9 étant les plus utilisés.</p>
<p>Si vous aimez faire votre tambouille vous pouvez déclencher le réveil via un simple script PHP. Libre à vous ensuite de vous faire une interface agréable et (surtout) protégée par un .htaccess ou tout autre moyen (soyez imaginatif). Il existe de nombreux scripts sur la toile pour envoyer le paquet magique mais certains nécessitent une configuration et/ou des autorisations particulières pour fonctionner. Dans le cas où vous utilisez un hébergeur mutualisé ces scripts sont inopérants. Le seul script efficace que j&#8217;ai trouvé sur un <a href="http://www.hackernotcracker.com/2006-04/wol-wake-on-lan-tutorial-with-bonus-php-script.html">site américain</a> fonctionne même sur les pages persos Free.fr, réputées pour être restrictive.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
# Wake on LAN - (c) HotKey@spr.at, upgraded by Murzik
# Modified by Allan Barizo http://www.hackernotcracker.com
# Translated by Mr Xhark http://blogmotion.fr
flush();

// Numéro du port d'écoute de l'ordinateur cible. Habituellement tout port compris entre 1 et 50000 fonctionnera mais les ports 7 ou 9 sont à privilégier.
$socket_number = &quot;9&quot;;
// Adresse MAC du périphérique réseau de l'ordinateur cible
$mac_addy = &quot;aa:bb:cc:dd:ee:ff&quot;;
// Adresse IP de l'ordinateur cible (ip publique de votre routeur/modem). Entrez le nom de domaine si vous en utilisez-un (tel que Dynamic DNS/IP).
$ip_addy = gethostbyname(&quot;monpc.dyndns.org&quot;);

## fonction ##
function WakeOnLan($addr, $mac,$socket_number) {
  $addr_byte = explode(':', $mac);
  $hw_addr = '';
  for ($a=0; $a &lt;6; $a++) $hw_addr .= chr(hexdec($addr_byte[$a]));
  $msg = chr(255).chr(255).chr(255).chr(255).chr(255).chr(255);
  for ($a = 1; $a &lt;= 16; $a++) $msg .= $hw_addr;
  // send it to the broadcast address using UDP
  // SQL_BROADCAST option isn't help!!
  $s = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
  if ($s == false) {
	echo &quot;Erreur lors de la création du socket!\n&quot;;
	echo &quot;Code d'erreur: '&quot;.socket_last_error($s).&quot;' - &quot; . socket_strerror(socket_last_error($s));
	return FALSE;
	}
  else {
	// setting a broadcast option to socket:
	$opt_ret = socket_set_option($s, 1, 6, TRUE);
	if($opt_ret &lt;0) {
	  echo &quot;setsockopt() a échoué, erreur: &quot; . strerror($opt_ret) . &quot;\n&quot;;
	  return FALSE;
	  }
	if(socket_sendto($s, $msg, strlen($msg), 0, $addr, $socket_number)) {
	  echo &quot;Paquet magique émis avec succès!&quot;;
	  socket_close($s);
	  return TRUE;
	  }
	else {
	  echo &quot;L'envoie du paquet magique a échoué!&quot;;
	  return FALSE;
	  }
	}
  }
# envoi du paquet magique
WakeOnLan($ip_addy, $mac_addy,$socket_number)
?&gt;
</pre>
<p>En espérant que cela serve à quelqu&#8217;un. Si vous utilisez un firmware libre tel que Tomato <a href="http://blogmotion.fr/systeme/wake-on-lan-tomato-6450">voici la procédure pour activer le WoW à travers votre routeur</a>.</p>
<p><a href="http://www.hackernotcracker.com/2006-04/wol-wake-on-lan-tutorial-with-bonus-php-script.html">Source du script original</a></p>
<p><a href="http://www.flickr.com/photos/blazor85/3365758266/in/photostream/"><em>Illustration CC</em></a></p>
Vous devriez me suivre sur Twitter : <strong><a href="http://twitter.com/xhark">@xhark</a></strong>
<hr />
<p><small><a href="http://blogmotion.fr/programmation/php-wake-on-wan-script-7083">Article original</a> écrit par Mr Xhark publié sur <a href="http://blogmotion.fr">Blogmotion</a> le 07/04/2011 |
<a href="http://blogmotion.fr/programmation/php-wake-on-wan-script-7083#comments">12 commentaires</a> |
<br />Attention : l'intégralité de ce billet est protégée par la licence <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/">Creative Commons</a> 
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blogmotion.fr/programmation/php-wake-on-wan-script-7083/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>[PHP] Afficher les règles d&#8217;un reverse proxy en temps réel</title>
		<link>http://blogmotion.fr/programmation/php-sql/reverse-proxy-rules-6608</link>
		<comments>http://blogmotion.fr/programmation/php-sql/reverse-proxy-rules-6608#comments</comments>
		<pubDate>Thu, 25 Nov 2010 15:56:22 +0000</pubDate>
		<dc:creator>Mr Xhark</dc:creator>
				<category><![CDATA[PHP (My)SQL]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[règle]]></category>
		<category><![CDATA[reverse]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[serveur]]></category>

		<guid isPermaLink="false">http://blogmotion.fr/?p=6608</guid>
		<description><![CDATA[Le reverse proxy (proxy inverse) est souvent utilisé en entreprise. Il permet d&#8217;atteindre des applications depuis Internet sans laisser entrer le visiteur sur le réseau de l&#8217;entreprise. C&#8217;est une pierre angulaire de la sécurité dans le cas de l&#8217;utilisation de serveurs web. Je vous présente un script PHP permettant d&#8217;afficher les règles actives sur votre [...]]]></description>
			<content:encoded><![CDATA[<p>Le <strong><a href="http://fr.wikipedia.org/wiki/Reverse_proxy">reverse proxy</a></strong> (proxy inverse) est souvent utilisé en entreprise. Il permet d&#8217;atteindre des applications depuis Internet sans laisser entrer le visiteur sur le réseau de l&#8217;entreprise. C&#8217;est une <strong>pierre angulaire de la sécurité dans le cas de l&#8217;utilisation de serveurs web</strong>.</p>
<p>Je vous présente un script PHP permettant d&#8217;afficher les règles actives sur votre reverse proxy Apache.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-6607" style="border: 1px solid #cccccc;" title="reverse-proxy" src="http://blogmotion.fr/wp-content/uploads/2010/11/reverse-proxy.png" alt="" width="568" height="188" /></p>
<p><span id="more-6608"></span>Explication du schéma : les serveurs web 1 et 2 ainsi que le serveur SVN sont accessibles depuis l&#8217;intérieur du réseau de l&#8217;entreprise (LAN) ainsi que depuis l&#8217;extérieur (Internet). Plutôt que d&#8217;ouvrir un port différent pour que chaque serveur soit accessible depuis l&#8217;extérieur nous utilisons un reverse proxy avec une URL différente pour chaque serveur. Sur le principe le reverse proxy est situé comme dans une DMZ, sauf qu&#8217;un seul port est autorisé.</p>
<p><strong>Seul le reverse proxy est autorisé à atteindre les serveurs depuis l&#8217;extérieur</strong>. Ce qui <strong>limite fortement le risque d&#8217;attaque et d&#8217;intrusions </strong>par un tiers. D&#8217;autre part le reverse proxy est capable de réaliser de la mise en cache ce qui économie de la bande passante. Plusieurs reverse proxy existent : Apache pour le plus connu, nginx ou encore Varnish (le plus efficace).</p>
<p>Aujourd&#8217;hui je vous parle d&#8217;Apache, car le plus simple à configurer si vous n&#8217;avez pas de besoin de performance particulières. Les règles du proxy inverse sont stockées dans le fichier :</p>
<pre>/etc/apache2/mods-available/proxy.conf</pre>
<p>Parce que ce fichier est souvent sujet à des modifications, il est préférable d&#8217;avoir une vue en temps réel sur les règles. J&#8217;ai développé un script PHP (simple) permettant cela.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
# Auteur: Mr Xhark
# URL: http://blogmotion.fr
# Date: 25/11/2010
# Licence CC: http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
# Fonction : Affiche la correspondance des URL du reverse-proxy

echo '&lt;html&gt;&lt;meta&gt;&lt;title&gt;Correspondance des URL de la machine proxyrev&lt;/title&gt;&lt;/meta&gt;';
echo '&lt;body&gt;';
echo '&lt;h1&gt;Correspondance des URL de la machine &lt;em&gt;' . $_SERVER['SERVER_NAME'] . '&lt;/em&gt;&lt;/h1&gt;';

ob_start();

# fichier de configuration des URL (géré par apache2)
$fichierConf = '/etc/apache2/mods-available/proxy.conf';
$cmdOFF = &quot;more $fichierConf | sed '/ *#/d; /^ *$/d'&quot;;  // sans comm
$cmdON  = &quot;more $fichierConf&quot;;                          // avec comm

# récupération get
if ($_GET['c']) {
$c = $_GET['c'];
}
else $c = 1;

if ((int) $c == 1) {
$c = $cmdOFF;
$lien = '&lt;a href=&quot;?c=2&quot; title=&quot;avec commentaire&quot;&gt;Voir le fichier avec les commentaires&lt;/a&gt;';
}
else {
$c = $cmdON; // eviter toute tentative injection sql
$lien = '&lt;a href=&quot;?c=1&quot; title=&quot;sans commentaire&quot;&gt;Voir le fichier sans les commentaires&lt;/a&gt;';
}

passthru($c);

$result = ob_get_contents();
ob_end_clean();

echo $lien . '&lt;hr /&gt;';
echo '&lt;pre&gt;' . $result . '&lt;/pre&gt;';
echo '&lt;hr /&gt;' . $lien;
echo &quot;\n&lt;/body&gt;\n&lt;/html&gt;&quot;;
?&gt;
</pre>
<p>En haut et en bas du script se trouve un lien pour afficher ou masquer les commentaires. C&#8217;est très pratique et rend le fichier de configuration plus lisible.</p>
<p>Le script est <strong>simple mais efficace et vous ferez gagner du temps</strong> si vous êtes administrateur réseau. Comme d&#8217;habitude, le code est sous licence Creative Commons, <strong>profitez-en pour l&#8217;utiliser et/ou l&#8217;améliorer! </strong></p>
Vous devriez me suivre sur Twitter : <strong><a href="http://twitter.com/xhark">@xhark</a></strong>
<hr />
<p><small><a href="http://blogmotion.fr/programmation/php-sql/reverse-proxy-rules-6608">Article original</a> écrit par Mr Xhark publié sur <a href="http://blogmotion.fr">Blogmotion</a> le 25/11/2010 |
<a href="http://blogmotion.fr/programmation/php-sql/reverse-proxy-rules-6608#comments">Aucun commentaire</a> |
<br />Attention : l'intégralité de ce billet est protégée par la licence <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/">Creative Commons</a> 
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blogmotion.fr/programmation/php-sql/reverse-proxy-rules-6608/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>7 solutions pour utiliser des polices exotiques sur un site</title>
		<link>http://blogmotion.fr/programmation/javascript-css/font-webdesign-6247</link>
		<comments>http://blogmotion.fr/programmation/javascript-css/font-webdesign-6247#comments</comments>
		<pubDate>Sat, 11 Sep 2010 21:44:02 +0000</pubDate>
		<dc:creator>Mr Xhark</dc:creator>
				<category><![CDATA[Javascript et Css]]></category>
		<category><![CDATA[compatibilité]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[police]]></category>
		<category><![CDATA[remplacement]]></category>
		<category><![CDATA[vectoriel]]></category>

		<guid isPermaLink="false">http://blogmotion.fr/?p=6247</guid>
		<description><![CDATA[Le choix des polices d&#8217;écriture (font en anglais) dans la conception d&#8217;un site est assez restreint, voir standardisé. Si vous utilisez une police qui n&#8217;est pas présente sur l&#8217;ordinateur de vos visiteurs elle sera remplacé par une autre (que l&#8217;on peut définir grâce au css), ce qui constitue une contrainte pour le webdesign. Plusieurs solutions [...]]]></description>
			<content:encoded><![CDATA[<p>Le <strong>choix des polices d&#8217;écriture </strong>(font en anglais) dans la conception d&#8217;un site est assez <strong>restreint</strong>, voir standardisé.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-6248" style="border: 1px solid #ccc;" title="font-webdesign" src="http://blogmotion.fr/wp-content/uploads/2010/09/font-webdesign.png" alt="" width="590" height="137" /></p>
<p>Si vous utilisez une police qui n&#8217;est pas présente sur l&#8217;ordinateur de vos visiteurs elle sera remplacé par une autre (que l&#8217;on peut définir grâce au css), ce qui constitue une contrainte pour le webdesign.</p>
<p>Plusieurs solutions de contournement existent pour <strong>utiliser la police de votre choix</strong>, je vous en présente 7.<span id="more-6247"></span></p>
<h3>L&#8217;image statique de remplacement</h3>
<p>Le remplacement de texte par une image est à bannir s&#8217;il ne s&#8217;agit pas d&#8217;élément de design tel que bannière, fonds, etc. Si cette méthode était largement utilisée à l&#8217;époque du &laquo;&nbsp;web 1.0&#8243;, ce n&#8217;est plus le cas aujourd&#8217;hui (trop lourd).</p>
<h3>Typeface.js</h3>
<p><a href="http://typeface.neocracy.org/">Typeface</a> (javascript) utilise un <strong>tracé vectoriel</strong> effectué avec les librairies respectives des moteurs de  rendu : VML (IE) et SVG pour les autres. Si le JavaScript est  désactivé sur le navigateur des les textes par défaut seront affiché dans la police par défaut.</p>
<p>Assez limité, problème si appelé depuis une page imbriquée.</p>
<h3>sIFR 3</h3>
<p><a href="http://wiki.novemberborn.net/sifr3/">sIFR3</a> est une méthode basée sur Flash comportant une zone de texte dynamique. Le flash ne faisant pas nativement parti des navigateurs, cette méthode n&#8217;est pas parfaite et mal supportée sur certains périphériques propriétaires comme ceux d&#8217;Apple.</p>
<p><a href="http://dev.novemberborn.net/sifr3/beta/demo/">Voir démo</a>, <a href="http://www.deborahgarcia.net/utiliser-des-polices-exotiques-sur-un-site-web/">tutoriel ici</a> ainsi que <a href="http://www.allcrunchy.com/Web_Stuff/sIFR_lite/">sIFR Lite</a></p>
<h3>FLIR</h3>
<p><a href="http://www.deborahgarcia.net/utiliser-des-polices-exotiques-sur-un-site-web-methode-2-flir/">FaceLift Image Replacement</a> est une méthode qui combine <strong>PHP avec la libraire GD</strong> et JavaScript, très consommateur en ressource côté serveur.</p>
<h3>Cufón</h3>
<p><a href="http://cufon.shoqolate.com/generate/">Cufon</a> convertir une police (ttf, otf, pfb) en <strong>tracé vectoriel</strong> JavaScript à inclure dans votre site. Il suffit ensuite de télécharger et d&#8217;inclure la librairie Cufón après avoir sélectionné les caractères pouvant être utilisés (alphanumériques, latins, etc.) ce qui en influera directement sur la taille.</p>
<p>C&#8217;est une solution assez <strong>efficace</strong> si vous utilisez cette méthode à plusieurs reprises sur votre site, elle sera plus efficace qu&#8217;un remplacement d&#8217;images.</p>
<h3>Google Font</h3>
<p><a href="http://code.google.com/webfonts">Google Font Directory</a> est un service sorti en mai 2010 assorti de <a href="http://code.google.com/intl/fr/apis/webfonts/docs/getting_started.html">Google Font API</a> qui permet d&#8217;utiliser des polices hébergées par Google. Une solution propre et très bien supportée par les différents navigateur, à privilégier.</p>
<h3>Css3</h3>
<p>Le <a href="http://www.w3.org/TR/css3-webfonts/">CSS3</a> s&#8217;impose tout doucement grâce à l&#8217;évolution des navigateurs mais il est  encore trop tôt pour n&#8217;utiliser que la méthode <em>@font-face</em></p>
<h3>Conclusion</h3>
<p>Ce billet comporte de nombreux liens, n&#8217;hésitez pas à visiter les différents sites pour apprécier chaque solution.<br />
Enfin, ne perdez pas de vue la <strong>lisibilité, l&#8217;accessibilité et le référencement</strong> de votre site, quelle que soit la solution adoptée.</p>
Vous devriez me suivre sur Twitter : <strong><a href="http://twitter.com/xhark">@xhark</a></strong>
<hr />
<p><small><a href="http://blogmotion.fr/programmation/javascript-css/font-webdesign-6247">Article original</a> écrit par Mr Xhark publié sur <a href="http://blogmotion.fr">Blogmotion</a> le 11/09/2010 |
<a href="http://blogmotion.fr/programmation/javascript-css/font-webdesign-6247#comments">7 commentaires</a> |
<br />Attention : l'intégralité de ce billet est protégée par la licence <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/">Creative Commons</a> 
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blogmotion.fr/programmation/javascript-css/font-webdesign-6247/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Installer la recherche OpenSearch sur votre blog WordPress</title>
		<link>http://blogmotion.fr/programmation/javascript-css/moteur-recherche-6119</link>
		<comments>http://blogmotion.fr/programmation/javascript-css/moteur-recherche-6119#comments</comments>
		<pubDate>Sat, 14 Aug 2010 22:54:12 +0000</pubDate>
		<dc:creator>Mr Xhark</dc:creator>
				<category><![CDATA[Javascript et Css]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[intégrer]]></category>
		<category><![CDATA[moteur]]></category>
		<category><![CDATA[recherche]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blogmotion.fr/?p=6119</guid>
		<description><![CDATA[OpenSearch (à l&#8217;origine A9 chez Amazon) permet de créer un moteur de recherche rapide WordPress pour Firefox, à droite de la barre d&#8217;adresse, comme le populaire moteur Google. Une fois ce moteur ajouté il est possible pour l&#8217;utilisateur de rechercher rapidement sur votre blog WordPress, c&#8217;est le cas sur Blogmotion vous pouvez essayer. Voici comment [...]]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://www.opensearch.org/Home">OpenSearch</a></strong> (à l&#8217;origine A9 chez Amazon) permet de <strong>créer un moteur de recherche rapide WordPress pour Firefox</strong>, à droite de la barre d&#8217;adresse, comme le populaire moteur Google.</p>
<p>Une fois ce moteur ajouté il est possible pour l&#8217;utilisateur de rechercher rapidement sur votre blog WordPress, c&#8217;est le cas sur Blogmotion vous pouvez essayer.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-6120" style="border: 1px solid #ccc;" title="recherche-wp-xml" src="http://blogmotion.fr/wp-content/uploads/2010/08/recherche-wp-xml.png" alt="" width="590" height="69" /></p>
<p style="text-align: left;">Voici comment <strong>intégrer facilement OpenSearch à votre blog WordPress</strong>.<span id="more-6119"></span></p>
<h3>Installation</h3>
<p><a href="http://www.opensearch.org/Home"><strong>OpenSearch</strong></a> fonctionne grâce à un <strong>fichier XML</strong> décrivant le moteur de recherche. Vous pouvez l&#8217;appeler comme vous le souhaitez *.xml (<a href="view-source:http://blogmotion.fr/search.xml">search.xml</a> chez moi) mais il faut toutefois respecter le modèle de base pour le contenu.</p>
<p>Les éléments en rouge doivent être personnalisés et adaptés à votre blog (nom de domaine) :</p>
<pre id="line1">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/"&gt;
&lt;ShortName&gt;<strong><span style="color: #ff0000;">Blogmotion</span></strong>&lt;/ShortName&gt;
&lt;Description&gt;<strong><span style="color: #ff0000;">Culture web et nouvelles technos</span></strong>&lt;/Description&gt;
&lt;InputEncoding&gt;UTF-8&lt;/InputEncoding&gt;
&lt;Image width="16" height="16" type="image/x-icon"&gt;<strong><span style="color: #ff0000;">http://blogmotion.fr/favicon.ico</span></strong>&lt;/Image&gt;
&lt;Url type="text/html" method="get" template="<strong><span style="color: #ff0000;">http://blogmotion.fr/?s</span></strong>={searchTerms}"&gt;
&lt;/Url&gt;
&lt;Url type="application/x-suggestions+json" template="suggestionURL"/&gt;
&lt;moz:SearchForm&gt;searchFormURL&lt;/moz:SearchForm&gt;
&lt;/OpenSearchDescription&gt;
</pre>
<p>Les spécifications sont à <a href="http://www.opensearch.org/Specifications/OpenSearch/1.1#OpenSearch_description_document">consulter ici</a>.</p>
<p>Il ne vous reste plus qu&#8217;à <strong>insérer entre les balises &lt;head&gt;&lt;/head&gt;</strong> la ligne indiquant à Firefox que vous disposer d&#8217;un moteur OpenSearch. Sur WordPress ça se passe dans le fichier header.php de votre thème :</p>
<pre id="line11">&lt;<span class="start-tag">link</span><span class="attribute-name"> rel</span>=<span class="attribute-value">"search" </span><span class="attribute-name">type</span>=<span class="attribute-value">"application/opensearchdescription+xml" </span><span class="attribute-name">title</span>=<span class="attribute-value">"<strong><span style="color: #ff0000;">la recherche Blogmotion</span></strong>" </span><span class="attribute-name">href</span>="<strong><span style="color: #ff0000;">http://blogmotion.fr/search.xml</span></strong>"&gt;
</pre>
<h3>Conclusion</h3>
<p>Cette solution est simple, efficace et basée sur un standard.</p>
<p>Et puis parce que tous les sites n&#8217;ont pas ce système de recherche, vous pouvez utiliser <a href="https://addons.mozilla.org/en-US/firefox/addon/3682/">Add to Search Bar</a>, <strong>une extension Firefox qui permet de recherche sur n&#8217;importer quel site</strong> (<a href="https://addons.mozilla.org/img/uploads/previews/full/26/26482.png?modified=1223168575">démo ici</a>).</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 382px; width: 1px; height: 1px; overflow: hidden;">
<pre id="line11">&lt;<span class="start-tag">link</span><span class="attribute-name"> rel</span>=<span class="attribute-value">"search" </span><span class="attribute-name">type</span>=<span class="attribute-value">"application/opensearchdescription+xml" </span><span class="attribute-name">title</span>=<span class="attribute-value">"la recherche Blogmotion" </span><span class="attribute-name">href</span>="<a href="view-source:http://blogmotion.fr/search.xml">http://blogmotion.fr/search.xml</a>"&gt;
</pre>
</div>
Vous devriez me suivre sur Twitter : <strong><a href="http://twitter.com/xhark">@xhark</a></strong>
<hr />
<p><small><a href="http://blogmotion.fr/programmation/javascript-css/moteur-recherche-6119">Article original</a> écrit par Mr Xhark publié sur <a href="http://blogmotion.fr">Blogmotion</a> le 15/08/2010 |
<a href="http://blogmotion.fr/programmation/javascript-css/moteur-recherche-6119#comments">15 commentaires</a> |
<br />Attention : l'intégralité de ce billet est protégée par la licence <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/">Creative Commons</a> 
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blogmotion.fr/programmation/javascript-css/moteur-recherche-6119/feed</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Comment migrer facilement vers WordPress 3.0 (final)</title>
		<link>http://blogmotion.fr/programmation/php-sql/migration-wordpress-3-5765</link>
		<comments>http://blogmotion.fr/programmation/php-sql/migration-wordpress-3-5765#comments</comments>
		<pubDate>Thu, 17 Jun 2010 22:31:04 +0000</pubDate>
		<dc:creator>Mr Xhark</dc:creator>
				<category><![CDATA[PHP (My)SQL]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[migrer]]></category>
		<category><![CDATA[mise à jour]]></category>
		<category><![CDATA[tutoriel]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blogmotion.fr/?p=5765</guid>
		<description><![CDATA[La version finale de WordPress 3.0 &#171;&#160;Thelonious&#160;&#187; vient tout juste de sortir. Comme à chaque montée de version c&#8217;est la même corvée : migrer. D&#8217;autant qu&#8217;il s&#8217;agit là d&#8217;un changement majeur puisque WordPress passe de la version 2 à 3. Voici comment migrer rapidement un blog vers WordPress 3.0 à partir de WordPress 2.9.x. Avant [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-5769" style="border: 1px solid #ccc;" title="migrer-wordpress-3.0" src="http://blogmotion.fr/wp-content/uploads/2010/06/migrer-wordpress-3.0.png" alt="" width="590" height="100" /></p>
<p>La version finale de <strong>WordPress 3.0 &laquo;&nbsp;Thelonious&nbsp;&raquo; vient tout juste de <a href="http://wordpress.org/development/2010/06/thelonious/">sortir</a></strong>. Comme à chaque montée de version c&#8217;est la même corvée : migrer. D&#8217;autant qu&#8217;il s&#8217;agit là d&#8217;un changement majeur puisque WordPress passe de la version 2 à 3.</p>
<p>Voici comment <strong>migrer rapidement un blog vers WordPress 3.0 à partir de  WordPress 2.9.x</strong>.<span id="more-5765"></span></p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="580" height="324" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="guid=BQtfIEY1&amp;width=580&amp;height=324&amp;locksize=no&amp;dynamicseek=false&amp;qc_publisherId=p-18-mFEk4J448M" /><param name="src" value="http://v.wordpress.com/wp-content/plugins/video/flvplayer.swf?ver=1.21" /><param name="wmode" value="transparent" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="580" height="324" src="http://v.wordpress.com/wp-content/plugins/video/flvplayer.swf?ver=1.21" allowfullscreen="true" wmode="transparent" flashvars="guid=BQtfIEY1&amp;width=580&amp;height=324&amp;locksize=no&amp;dynamicseek=false&amp;qc_publisherId=p-18-mFEk4J448M"></embed></object></p>
<h3>Avant tout, sauvegardez</h3>
<p>L&#8217;étape première avant chaque mise à jour est de <strong>réaliser une sauvegarde complète de votre blog</strong>. Sauvegardez :</p>
<ol>
<li>la base de données (tables concernant WordPress)</li>
<li>les données : tous les fichiers et répertoires (faites une archive 7z, zip ou rar)</li>
</ol>
<p><strong>Ces fichiers vous permettront de revenir en arrière en cas d&#8217;échec ou d&#8217;erreur fatale.</strong></p>
<p>Avant tout, je vous recommande de tester cette mise à jour sur un serveur de test, de développement ou localement (<a href="http://www.apachefriends.org/fr/xampp.html">XAMPP</a> est multi-plateforme). En effet, thèmes et plugins risquent de ne pas être compatibles à 100% avec cette nouvelle mouture. Ne migrer pas directement WordPress sur un serveur en production sans être certain du résultat.</p>
<p>Il est également conseillé d&#8217;<strong>attendre quelques semaines avant de migrer</strong> afin que les bugs et problèmes remontent sur le web grâce à la communauté.</p>
<h3>Migrer manuellement</h3>
<p>Après avoir sauvegarder le blog, passons à la <strong>migration manuelle</strong> si la migration automatique ne vous convient pas ou ne fonctionne pas correctement.</p>
<ol>
<li>Supprimer les répertoires /wp-admin wp-includes</li>
<li>Télécharger la <a href="http://fr.wordpress.org/">version 3.0 FR de WordPress</a> puis extraire le contenu à la racine de votre blog (Windows va fusionner les dossiers existants, vous pouvez valider sans crainte les avertissements de remplacement).</li>
<li>Accéder à l&#8217;interface admin du blog : http://votreblog.tld/wp-admin puis cliquer sur le bouton de mise à jour de la BDD :<br />
<img class="aligncenter size-full wp-image-5766" style="border: 1px solid #ccc;" title="wordpress-3-migration_01" src="http://blogmotion.fr/wp-content/uploads/2010/06/wordpress-3-migration_01.png" alt="" width="550" height="184" /></li>
<li>Patientez quelques instants, et c&#8217;est terminé :<br />
<img class="aligncenter size-full wp-image-5767" style="border: 1px solid #ccc;" title="wordpress-3-migration_02" src="http://blogmotion.fr/wp-content/uploads/2010/06/wordpress-3-migration_02.png" alt="" width="550" height="159" /></li>
</ol>
<p>Vous pouvez maintenant profiter des nouveautés de <a href="http://wordpress.org/development/2010/06/thelonious/">WordPress 3.0</a>. Merci à toute la communauté pour le travail fourni, une fois de plus !</p>
Vous devriez me suivre sur Twitter : <strong><a href="http://twitter.com/xhark">@xhark</a></strong>
<hr />
<p><small><a href="http://blogmotion.fr/programmation/php-sql/migration-wordpress-3-5765">Article original</a> écrit par Mr Xhark publié sur <a href="http://blogmotion.fr">Blogmotion</a> le 18/06/2010 |
<a href="http://blogmotion.fr/programmation/php-sql/migration-wordpress-3-5765#comments">20 commentaires</a> |
<br />Attention : l'intégralité de ce billet est protégée par la licence <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/">Creative Commons</a> 
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blogmotion.fr/programmation/php-sql/migration-wordpress-3-5765/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Copier une table MySQL à l&#8217;identique</title>
		<link>http://blogmotion.fr/programmation/php-sql/copie-table-mysql-5675</link>
		<comments>http://blogmotion.fr/programmation/php-sql/copie-table-mysql-5675#comments</comments>
		<pubDate>Tue, 08 Jun 2010 12:04:57 +0000</pubDate>
		<dc:creator>Mr Xhark</dc:creator>
				<category><![CDATA[PHP (My)SQL]]></category>
		<category><![CDATA[clone]]></category>
		<category><![CDATA[copier]]></category>
		<category><![CDATA[données]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[table]]></category>

		<guid isPermaLink="false">http://blogmotion.fr/?p=5675</guid>
		<description><![CDATA[Voici une petite astuce pour cloner une table (My)SQL en effectuant une copie de la table à l&#8217;identique. Index, types et données, tout est préservé. Rien de sorcier, juste un peu de logique. Premièrement on crée la nouvelle table (table_clonee) à partir de la table_source : Puis nous insérons les données dans la nouvelle table [...]]]></description>
			<content:encoded><![CDATA[<p>Voici une petite astuce pour <strong>cloner une table (My)SQL</strong> en effectuant une copie de la table à l&#8217;identique. Index, types et données, tout est préservé.</p>
<p style="text-align: center;"><img class="size-full wp-image-5676 aligncenter" style="border: 1px solid #ccc;" title="clone-table-mysql" src="http://blogmotion.fr/wp-content/uploads/2010/06/clone-table-mysql.png" alt="" width="590" height="90" /></p>
<p>Rien de sorcier, juste un peu de logique. <span id="more-5675"></span></p>
<p>Premièrement on <strong>crée la nouvelle table</strong> (table_clonee) à partir de la table_source :</p>
<pre class="brush: sql; title: ; notranslate">CREATE TABLE table_clonee LIKE table_source ;</pre>
<p>Puis nous <strong>insérons les données</strong> dans la nouvelle table en &laquo;&nbsp;lisant&nbsp;&raquo; celles de la table_source</p>
<pre class="brush: sql; title: ; notranslate">INSERT INTO table_clonee SELECT * FROM table_source ;</pre>
<p>Simple et efficace.</p>
<p>Note : cela doit fonctionner également sur d&#8217;autres moteurs de bases de données, moyennant quelques adaptations syntaxiques</p>
Vous devriez me suivre sur Twitter : <strong><a href="http://twitter.com/xhark">@xhark</a></strong>
<hr />
<p><small><a href="http://blogmotion.fr/programmation/php-sql/copie-table-mysql-5675">Article original</a> écrit par Mr Xhark publié sur <a href="http://blogmotion.fr">Blogmotion</a> le 08/06/2010 |
<a href="http://blogmotion.fr/programmation/php-sql/copie-table-mysql-5675#comments">6 commentaires</a> |
<br />Attention : l'intégralité de ce billet est protégée par la licence <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/">Creative Commons</a> 
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blogmotion.fr/programmation/php-sql/copie-table-mysql-5675/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Rechercher un type de fichier en invite de commandes</title>
		<link>http://blogmotion.fr/programmation/batch/search-file-batch-5530</link>
		<comments>http://blogmotion.fr/programmation/batch/search-file-batch-5530#comments</comments>
		<pubDate>Mon, 10 May 2010 13:07:09 +0000</pubDate>
		<dc:creator>Mr Xhark</dc:creator>
				<category><![CDATA[Batch]]></category>
		<category><![CDATA[chercher]]></category>
		<category><![CDATA[fichier]]></category>
		<category><![CDATA[rapide]]></category>
		<category><![CDATA[recherche]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[trouver]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blogmotion.fr/?p=5530</guid>
		<description><![CDATA[L&#8217;outil de recherche intégré de Windows est assez lourd et inefficace dès lors que vous disposez de plusieurs dizaines de milliers de fichiers. En parcourant l&#8217;aide de la commande dir (pour directory), j&#8217;ai trouvé une petite astuce permettant de rechercher un fichier en invite de commande : /S    Affiche les fichiers d&#8217;un répertoire et de [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;outil de <strong>recherche intégré de Windows est assez lourd et inefficace</strong> dès lors que vous disposez de plusieurs dizaines de milliers de fichiers.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-5531" style="border: 1px solid #ccc;" title="dir-windows" src="http://blogmotion.fr/wp-content/uploads/2010/05/dir-windows.png" alt="" width="590" height="100" /></p>
<p>En parcourant l&#8217;aide de la commande dir (pour directory), j&#8217;ai trouvé une petite astuce permettant de <strong>rechercher un fichier en invite de commande</strong> :</p>
<pre class="brush: bash; title: ; notranslate">dir lettre:\*.ext /S</pre>
<blockquote><p>/S    Affiche les fichiers d&#8217;un répertoire et de ses sous-répertoires.</p></blockquote>
<p>Exemple pour <strong>rechercher tous les MP3 d&#8217;un disque dur</strong> (sur C:)<span id="more-5530"></span> :</p>
<pre class="brush: bash; title: ; notranslate">dir c:\*.mp3 /S
D:\&gt;dir D:\*.dll  /s | more
 Le volume dans le lecteur D s'appelle DONNEES
 Le numéro de série du volume est 8C3B-CA0B

 Répertoire de C:\perso\musique
18/02/2007  00:24            35 328 piste_01.mp3
18/02/2007  00:24         1 631 744 piste02.mp3
18/02/2007  00:24            74 240 blogmotion.mp3

[...]

Répertoire de C:\backup\pop

8/03/2003  14:00            14 336 supergroupe.mp3
8/03/2003  14:00             7 680 popita.mp3
</pre>
<p>Comme les résultats sont souvent nombreux, je vous conseille de &laquo;&nbsp;piper&nbsp;&raquo; le résultat avec la commande <em>more</em> :</p>
<pre class="brush: bash; title: ; notranslate">dir c:\*.mp3 /S | more</pre>
<p>Il faut appuyer sur ENTREE pour faire défiler ligne par ligne et sur ESPACE pour faire défiler page par page.</p>
<p>C&#8217;est une méthode un peu à l&#8217;ancienne mais cela peut être <strong>utile pour réaliser des batch Windows</strong>. Sur environ <strong>50 Go de données il ne faut que quelques secondes</strong> (3 secondes en vérité) pour que le script fasse le tour des données, plutôt <strong>efficace</strong> !</p>
Vous devriez me suivre sur Twitter : <strong><a href="http://twitter.com/xhark">@xhark</a></strong>
<hr />
<p><small><a href="http://blogmotion.fr/programmation/batch/search-file-batch-5530">Article original</a> écrit par Mr Xhark publié sur <a href="http://blogmotion.fr">Blogmotion</a> le 10/05/2010 |
<a href="http://blogmotion.fr/programmation/batch/search-file-batch-5530#comments">4 commentaires</a> |
<br />Attention : l'intégralité de ce billet est protégée par la licence <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/">Creative Commons</a> 
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blogmotion.fr/programmation/batch/search-file-batch-5530/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[PHP] Récupérer et afficher le nombre d&#8217;abonnés au flux RSS</title>
		<link>http://blogmotion.fr/programmation/php-sql/compteur-abonnes-rss-5491</link>
		<comments>http://blogmotion.fr/programmation/php-sql/compteur-abonnes-rss-5491#comments</comments>
		<pubDate>Sun, 02 May 2010 20:38:21 +0000</pubDate>
		<dc:creator>Mr Xhark</dc:creator>
				<category><![CDATA[PHP (My)SQL]]></category>
		<category><![CDATA[abonnes]]></category>
		<category><![CDATA[afficher]]></category>
		<category><![CDATA[compteur]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[flux]]></category>
		<category><![CDATA[nombre]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blogmotion.fr/?p=5491</guid>
		<description><![CDATA[Pré-requis : avoir externalisé son flux RSS chez FeedBurner Afficher le compteur d&#8217;abonnés à votre flux RSS (feedcount) sur votre blog peut être favorable à une croissance du nombre d&#8217;abonnés. Je vous déconseille toutefois d&#8217;afficher votre compteur en dessous d&#8217;un minimum (100) car cela risque d&#8217;avoir l&#8217;effet l&#8217;inverse. FeedBurner propose un compteur paramétrable au niveau [...]]]></description>
			<content:encoded><![CDATA[<p><span style="text-decoration: underline;">Pré-requis</span> : avoir externalisé son flux RSS chez <a href="http://feedburner.google.com/">FeedBurner</a></p>
<p><strong>Afficher le compteur d&#8217;abonnés à votre flux RSS</strong> (feedcount) sur votre blog peut être favorable à une <strong>croissance du nombre d&#8217;abonnés</strong>. Je vous déconseille toutefois d&#8217;afficher votre compteur en dessous d&#8217;un minimum (100) car cela risque d&#8217;avoir l&#8217;effet l&#8217;inverse.</p>
<p style="text-align: center;"><a href="http://blogmotion.fr/wp-content/uploads/2010/05/compteur-abonnes-rss.png" rel="shadowbox[sbpost-5491];player=img;" title="compteur-abonnes-rss"><img class="aligncenter size-full wp-image-5492" style="border: 1px solid #ccc;" title="compteur-abonnes-rss" src="http://blogmotion.fr/wp-content/uploads/2010/05/compteur-abonnes-rss.png" alt="" width="590" height="77" /></a></p>
<p>FeedBurner propose un compteur paramétrable au niveau des couleurs du fond, du texte et du choix du texte (rarement utilisé). Mais il faut bien dire que ce compteur est <strong>absolument moche et ne s&#8217;intègre que très mal dans un design</strong>&#8230; il fait très vite tâche, à tel point qu&#8217;il ne vaut finalement mieux pas l&#8217;afficher. Suite à plusieurs demandes de lecteurs de Blogmotion, voici comment <strong>récupérer une valeur brute du nombre d&#8217;abonnés</strong>.<span id="more-5491"></span></p>
<p>Le fait de <strong>récupérer le compteur en variable</strong> va nous permettre de l&#8217;intégrer à un design, un bouton ou tout autre élément graphique (vous pourrez ensuite utiliser la librairie PHP GD2 par exemple). Avant tout <strong>vous devez avoir migré l&#8217;URL de votre flux RSS</strong>, suite au rachat du service par Google, si ce n&#8217;est pas le cas <strong><a href="http://blogmotion.fr/internet/migrer-flux-rss-feedburner-google-wordpress-2069">faites-le</a></strong>.</p>
<p>Nous allons implémenter une fonction de récupération de vos abonnés en PHP. Editez le fichier :</p>
<blockquote><p><em>/wp-content/votre_theme/functions.php</em></p></blockquote>
<p>Pour éviter de solliciter FeedBurner à chaque visite (ce qui ralentirait trop le blog) j&#8217;ai implémenté un <strong>système de cache</strong>. A l&#8217;époque où je n&#8217;utilisais pas WP-Super-Cache ce système de cache était indispensable&#8230; maintenant il ajoute une couche supplémentaire de cache (pas forcément utile).</p>
<p>A l&#8217;endroit ou vous souhaitez <strong>insérer le compte d&#8217;abonnés</strong> il suffira d&#8217;utiliser notre nouvelle fonction (header.php chez moi) :</p>
<pre class="brush: php; title: ; notranslate">&lt;?php if (function_exists('nbAboFeed')) echo nbAboFeed(); ?&gt; abonnés</pre>
<p>Passons maintenant au coeur du code PHP avec la fonction<em> nbAboFeed</em> :</p>
<pre class="brush: php; title: ; notranslate">function nbAboFeed($feedUri = 'login_feedburner', $feedFile = 'nbfeed.txt') {
 # Licence : Creative Commons
 # Author : Xhark, http://blogmotion.fr
 # en secondes
 $duree_cache = 3600;

 //si le fichier n'existe pas dans le cache (ou trop vieux)
 if (@filemtime($feedFile) &lt; time()-($duree_cache) ) {

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_URL, 'https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=' . $feedUri);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);  // necessaire pour windows
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);      // necessaire pour windows
 $data = curl_exec($ch);
 curl_close($ch);

 $xml = new SimpleXMLElement($data);
 $nbAbo = (int) $xml-&gt;feed-&gt;entry['circulation'];

 # nbAbo correctement récupéré, écriture dans cache
 if ( $nbAbo &gt; 0 )
 writeFeedFile($feedFile, $nbAbo);
 # si feedburner indisponible
 else
 # si fichier cache existe, renvoit de la valeur
 if(file_exists($feedFile)) return file_get_contents($feedFile);
 # si fichier cache jamais crée et feedburner indispo, msg erreur
 else return 'Erreur, feedburner indispo';
 }

 # déjà dans le cache
 else
 $nbAbo = file_get_contents($feedFile);

 return $nbAbo;
}

function writeFeedFile($feedFile, $nbAbo) {
 $ret = file_put_contents($feedFile, $nbAbo);
 if (!$ret)
 echo 'Erreur ecriture feed';
 return;
}</pre>
<p>J&#8217;ai jugé bon de séparer la fonction d&#8217;écriture du cache, c&#8217;est pour cette raison qu&#8217;elle n&#8217;est pas intégrée à la fonction nbAboFeed. Ce code est fonctionnel mais pas forcément optimisé. <strong>Vos propositions d&#8217;améliorations sont les bienvenues</strong> puisque, comme tout le contenu du blog, ce code source est sous licence Creative Commons.</p>
<p>Le cache est positionné par défaut à 3600 secondes (1 heure), ce qui est amplement suffisant pour suivre l&#8217;évolution des abonnés. <strong>Évitez toutefois de définir un temps de cache trop élevé</strong>, sinon vos visiteurs auront l&#8217;impression que votre nombre d&#8217;abonnés stagne.</p>
<p><a href="http://code.google.com/intl/fr/apis/feedburner/awareness_api.html">Documentation Awareness API</a></p>
Vous devriez me suivre sur Twitter : <strong><a href="http://twitter.com/xhark">@xhark</a></strong>
<hr />
<p><small><a href="http://blogmotion.fr/programmation/php-sql/compteur-abonnes-rss-5491">Article original</a> écrit par Mr Xhark publié sur <a href="http://blogmotion.fr">Blogmotion</a> le 02/05/2010 |
<a href="http://blogmotion.fr/programmation/php-sql/compteur-abonnes-rss-5491#comments">19 commentaires</a> |
<br />Attention : l'intégralité de ce billet est protégée par la licence <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/">Creative Commons</a> 
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blogmotion.fr/programmation/php-sql/compteur-abonnes-rss-5491/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Charger des images à la volée (on scrolling)</title>
		<link>http://blogmotion.fr/programmation/javascript-css/lazy-load-chargement-5411</link>
		<comments>http://blogmotion.fr/programmation/javascript-css/lazy-load-chargement-5411#comments</comments>
		<pubDate>Sat, 17 Apr 2010 14:20:30 +0000</pubDate>
		<dc:creator>Mr Xhark</dc:creator>
				<category><![CDATA[Javascript et Css]]></category>
		<category><![CDATA[accélérer]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[caché]]></category>
		<category><![CDATA[chargement]]></category>
		<category><![CDATA[lent]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[vitesse]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blogmotion.fr/?p=5411</guid>
		<description><![CDATA[Si vous hébergez vos images sur votre serveur et que celles-ci sont nombreuses, votre serveur peut fortement ralentir la cadence d&#8217;envoi de ces images à cause de la bande passante nécessaire. Si votre blog/site rencontre une forte affluence, les visiteurs auront tendances à partir en courant si vos images, et donc vos pages sont trop [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous hébergez vos images sur votre serveur et que celles-ci sont nombreuses, votre serveur peut fortement ralentir la cadence d&#8217;envoi de ces images à cause de la <strong>bande passante nécessaire</strong>. Si votre blog/site rencontre une <strong>forte affluence</strong>, les visiteurs auront tendances à partir en courant si vos images, et donc <strong>vos pages sont trop longues à charger</strong> (des études l&#8217;ont prouvé).</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-5412" style="border: 1px solid #ccc;" title="lazyload" src="http://blogmotion.fr/wp-content/uploads/2010/04/lazyload.jpg" alt="" width="590" height="279" /></p>
<p>Une page comportant un nombre important d&#8217;image est longue à charger et c&#8217;est d&#8217;autant plus vraie sur les configurations légères (ultra-portable et mobiles). La raison est simple : <strong>toutes les images sont chargées d&#8217;un coup d&#8217;un seul</strong>.</p>
<h3>La solution : le lazy load</h3>
<p>Lazy signifie <strong>paresseux</strong> (ça y est vous comprenez l&#8217;image d&#8217;illustration:) ). <span id="more-5411"></span></p>
<p>Le principe est simple et efficace : <strong>les images sont chargées au scroll</strong>, c&#8217;est à dire que toutes les images que vous ne voyez pas ne sont pas chargées. Cela <strong>soulage à la fois votre serveur mais également le pauvre navigateur des visiteurs</strong>.</p>
<p>Si vous avez du mal à comprendre, voyez par vous même cet <strong>exemple chez <a href="http://designrfix.com/inspiration/beautiful-olympic-inspired-designs">Designrfix</a></strong> en descendant rapidement en milieu de page.</p>
<p><a href="http://www.appelsiini.net/projects/lazyload">LazyLoad</a> est un <a href="http://plugins.jquery.com/project/lazyload">plugin jQuery</a> capable de réaliser ce <strong>retardement de chargement</strong>. Vous pouvez l&#8217;intégrer très facilement dans un n&#8217;importe quel site, voir la <a href="http://www.appelsiini.net/projects/lazyload">documentation</a> à ce sujet.</p>
<p>Si vous utilisez <strong>WordPress</strong>, il existe l&#8217;équivalent en plugin : <strong><a href="http://wordpress.org/extend/plugins/jquery-image-lazy-loading/">jQuery Image Lazy Load WP</a></strong> crée par AYN. Il vous suffit de l&#8217;activer pour qu&#8217;il s&#8217;occupe de retarder le chargement de vos images.</p>
<h3>Conclusion</h3>
<p>Cette astuce permet de <strong>réduire drastiquement la bande passante consommée</strong> dans le cas où de nombreuses images sont présentes dans vos billets, qui plus est si votre taux de rebond est important (les images ne seront pas chargées pour rien).</p>
<p>Rien ne vous empêche cependant d&#8217;utilisation en parallèle un <strong>frontal de cache</strong> tel que nginx, lighttpd ou varnish qui <strong>soulagera votre serveur Apache et l&#8217;interpréteur PHP</strong> (je vous en reparlerai).</p>
<p><em><a href="http://www.flickr.com/photos/torek/2467519466/sizes/l/">Crédit photo CC</a></em></p>
Vous devriez me suivre sur Twitter : <strong><a href="http://twitter.com/xhark">@xhark</a></strong>
<hr />
<p><small><a href="http://blogmotion.fr/programmation/javascript-css/lazy-load-chargement-5411">Article original</a> écrit par Mr Xhark publié sur <a href="http://blogmotion.fr">Blogmotion</a> le 17/04/2010 |
<a href="http://blogmotion.fr/programmation/javascript-css/lazy-load-chargement-5411#comments">20 commentaires</a> |
<br />Attention : l'intégralité de ce billet est protégée par la licence <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/fr/">Creative Commons</a> 
</small></p>]]></content:encoded>
			<wfw:commentRss>http://blogmotion.fr/programmation/javascript-css/lazy-load-chargement-5411/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>

