<?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>Sunfox &#187; code</title>
	<atom:link href="http://sunfox.org/blog/tags/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://sunfox.org</link>
	<description>Le blogue de Sunny Ripert</description>
	<lastBuildDate>Thu, 05 May 2011 13:09:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mort aux tabulations</title>
		<link>http://sunfox.org/blog/2009/05/23/mort-aux-tabulations/</link>
		<comments>http://sunfox.org/blog/2009/05/23/mort-aux-tabulations/#comments</comments>
		<pubDate>Sat, 23 May 2009 16:21:34 +0000</pubDate>
		<dc:creator>Sunny</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[éditeurs]]></category>
		<category><![CDATA[caractères]]></category>
		<category><![CDATA[clavier]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[text]]></category>

		<guid isPermaLink="false">http://sunfox.org/?p=1395</guid>
		<description><![CDATA[\t Le signe tabulation en informatique est utilisé pour aligner du texte ou indenter du code. Mais c&#8217;est un caractère perfide : dans un environnement à chasse fixe c&#8217;est le seul caractère qui a décidé de prendre plus de place que les autres. Et cette taille est variable, jusqu&#8217;à même prendre parfois une taille nulle. [...]]]></description>
			<content:encoded><![CDATA[<p><code style="float:right;font:bold 5em Helvetica, sans-serif;-moz-border-radius:.2em;-webkit-border-radius:.2em;border-radius:.2em;background:#A9AC99;color:#fff;text-decoration: line-through;padding:.1em .4em;margin:0 0 1ex 1ex">\t</code></p>
<p>Le signe tabulation en informatique est utilisé pour aligner du texte ou indenter du code. Mais c&#8217;est un caractère perfide : dans un environnement à chasse fixe c&#8217;est le seul caractère qui a décidé de prendre <strong>plus de place que les autres</strong>.</p>
<p>Et cette <strong>taille est variable</strong>, jusqu&#8217;à même prendre parfois <strong>une taille nulle</strong>. Elle est d&#8217;autant plus variable qu&#8217;aucun éditeur ne s&#8217;accorde sur la taille maximale que le caractère doit prendre, entre 8 et 2 caractères. Du coup, ça <strong>casse l&#8217;indentation voulue</strong> lorsque l&#8217;on décide de l&#8217;ouvrir autre part.</p>
<p>Exemple d&#8217;alignement avec des tabulations qui font 8 caractères de large au maximum&nbsp;:</p>
<pre>Spam	Egg	Yoke
Foo	Bar	Yoke
Whizzey	Bam	Yoke</pre>
<p>Le même texte affiché dans un éditeur où les tabulations font 4 de large&nbsp;:</p>
<pre>Spam    Egg Yoke
Foo Bar Yoke
Whizzey Bam Yoke</pre>
<p>On perd l&#8217;alignement choisi et donc le sens des colonnes.</p>
<p>De plus, c&#8217;est un <strong>caractère invisible</strong>. Il n&#8217;apparaîtra différent d&#8217;un espace que dans certains éditeurs de texte. Or <strong>mélangez les deux</strong> et vous n&#8217;avez pas fini de vous tirez les cheveux, surtout lorsque l&#8217;indentation est importante, comme en Python.</p>
<p>Le choix de la taille d&#8217;indentation doit être choisi <strong>par projet</strong> plutôt que de s&#8217;adapter aux facéties de chaque développeur. En remplaçant les tabulations avec des espaces, ces problèmes n&#8217;ont plus lieu.</p>
<p>Enfin la tabulation est pénible à écrire dans certaines applications&mdash;comme dans un navigateur web&mdash;car la touche tabulation sert avant tout à <strong>passer d&#8217;un champ à l&#8217;autre</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sunfox.org/blog/2009/05/23/mort-aux-tabulations/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Somethingest :&gt;</title>
		<link>http://sunfox.org/blog/2008/05/27/somethingest/</link>
		<comments>http://sunfox.org/blog/2008/05/27/somethingest/#comments</comments>
		<pubDate>Tue, 27 May 2008 07:41:01 +0000</pubDate>
		<dc:creator>Sunny</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://sunfox.org/?p=927</guid>
		<description><![CDATA[module Enumerable def somethingest(method) inject do &#124;acc, elem&#124; elem.send(method, acc) ? elem : acc end end def biggest somethingest :> end def smallest somethingest :< end end [42, 51, -9.2, 5].biggest # => 51 [42, 51, -9.2, 5].smallest # => -9.2]]></description>
			<content:encoded><![CDATA[<pre class="ruby"><code>module Enumerable
  def somethingest(method)
    inject do |acc, elem|
      elem.send(method, acc) ? elem : acc
    end
  end

  def biggest
    somethingest :>
  end

  def smallest
    somethingest :<
  end
end

[42, 51, -9.2, 5].biggest <span class="comment"># => 51</span>
[42, 51, -9.2, 5].smallest <span class="comment"># => -9.2</span></code></pre>
]]></content:encoded>
			<wfw:commentRss>http://sunfox.org/blog/2008/05/27/somethingest/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ruby++</title>
		<link>http://sunfox.org/blog/2008/01/20/ruby/</link>
		<comments>http://sunfox.org/blog/2008/01/20/ruby/#comments</comments>
		<pubDate>Sun, 20 Jan 2008 20:10:54 +0000</pubDate>
		<dc:creator>Sunny</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://sunfox.org/blog/2008/01/20/ruby/</guid>
		<description><![CDATA[Ceci est du ruby pour les tordus de C++ : endl = "\n"; $stdout]]></description>
			<content:encoded><![CDATA[<p>Ceci est du ruby pour les tordus de <abbr>C++</abbr> :</p>
<pre class="ruby"><code>endl = "\n";
$stdout << 99 << " red balloons" << endl;</code></pre>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://sunfox.org/blog/2008/01/20/ruby/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>/usr/bin/dent</title>
		<link>http://sunfox.org/blog/2007/11/15/indent/</link>
		<comments>http://sunfox.org/blog/2007/11/15/indent/#comments</comments>
		<pubDate>Thu, 15 Nov 2007 13:48:58 +0000</pubDate>
		<dc:creator>Sunny</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://sunfox.org/blog/2007/11/15/indent/</guid>
		<description><![CDATA[#!/bin/bash cat &#034;$@&#034; &#124; sed &#039;s/^/\t/&#039;]]></description>
			<content:encoded><![CDATA[<pre class="bash" style="width:35ex"><code><span class="comment">#!/bin/bash</span>
cat &#034;$@&#034; | sed &#039;s/^/\t/&#039;</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://sunfox.org/blog/2007/11/15/indent/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Damn Hotlinkers</title>
		<link>http://sunfox.org/blog/2007/08/30/damn-hotlinkers/</link>
		<comments>http://sunfox.org/blog/2007/08/30/damn-hotlinkers/#comments</comments>
		<pubDate>Thu, 30 Aug 2007 21:44:11 +0000</pubDate>
		<dc:creator>Sunny</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[http]]></category>

		<guid isPermaLink="false">http://sunfox.org/blog/2007/08/30/damn-hotlinkers/</guid>
		<description><![CDATA[Je viens de pondre Damn Hotlinkers! un petit script ruby qui affiche une liste des fichiers victimes d&#8217;un hotlink à partir de ses logs HTTP. Et vous connaissez tous la punition pour le hotlink d&#8217;images&#8230;]]></description>
			<content:encoded><![CDATA[<p>Je viens de pondre <a href="http://github.com/sunny/damn_hotlinkers/tree/master" title="Projet et code source de Damn Hotlinkers sur github" lang="en">Damn Hotlinkers!</a> un petit script ruby qui affiche une liste des fichiers victimes d&#8217;un <i lang="en">hotlink</i> à partir de ses logs <abbr>HTTP</abbr>.</p>
<p>Et vous connaissez tous la punition pour le hotlink d&#8217;images&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://sunfox.org/blog/2007/08/30/damn-hotlinkers/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>“JavaScript Haute Performance”</title>
		<link>http://sunfox.org/blog/2007/08/30/javascript-haute-performance/</link>
		<comments>http://sunfox.org/blog/2007/08/30/javascript-haute-performance/#comments</comments>
		<pubDate>Thu, 30 Aug 2007 13:55:23 +0000</pubDate>
		<dc:creator>Sunny</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://sunfox.org/blog/2007/08/30/%e2%80%9cjavascript-haute-performance%e2%80%9d/</guid>
		<description><![CDATA[Très instructive présentation intitulée “High-Performance JavaScript: Why Everything You’ve Been Taught is Wrong” sur le développement d&#8217;applications web avec du JavaScript à très hautes doses.]]></description>
			<content:encoded><![CDATA[<p>Très instructive présentation intitulée “High-Performance JavaScript: Why Everything You’ve Been Taught is Wrong” sur le développement d&#8217;applications web avec du JavaScript à très hautes doses.</p>
<p><embed src='http://us.i1.yimg.com/cosmos.bcst.yahoo.com/player/media/swf/FLVVideoSolo.swf' flashvars='id=3881103&#038;emailUrl=http%3A%2F%2Fvideo.yahoo.com%2Futil%2Fmail%3Fei%3DUTF-8%26vid%3D1041101%26fr%3D&#038;imUrl=http%253A%252F%252Fvideo.yahoo.com%252Fvideo%252Fplay%253Fei%253DUTF-8%2526vid%253D1041101&#038;imTitle=Joseph%2BSmarr%253A%2B%2526quot%253BHigh-performance%2BJavaScript%253A%2BWhy%2BEverything%2BYou%2526%252339%253Bve%2BBeen%2BTaught%2BIs%2BWrong%2526quot%253B&#038;searchUrl=http://video.yahoo.com/search/video?p=&#038;profileUrl=http://video.yahoo.com/video/profile?yid=&#038;creatorValue=ZXJpY21pcmFnbGlh&#038;vid=1041101' type='application/x-shockwave-flash' width='425' height='350'></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://sunfox.org/blog/2007/08/30/javascript-haute-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ficlets</title>
		<link>http://sunfox.org/blog/2007/07/24/ficlets/</link>
		<comments>http://sunfox.org/blog/2007/07/24/ficlets/#comments</comments>
		<pubDate>Tue, 24 Jul 2007 20:20:24 +0000</pubDate>
		<dc:creator>Sunny</dc:creator>
				<category><![CDATA[web]]></category>
		<category><![CDATA[aol]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[photo]]></category>

		<guid isPermaLink="false">http://sunfox.org/blog/2007/07/24/ficlets/</guid>
		<description><![CDATA[Cerisier au Jardin des Plantes Une de mes photos inspire un poème sur Ficlets. Ficlets est un site qui invite à écrire des petites histoires et à compléter les histoires créées par les autres utilisateurs en y ajoutant une suite ou un début. L&#8217;authentification, très simple, passe par OpenID. Le site est chaleureux, ouvert, simple, [...]]]></description>
			<content:encoded><![CDATA[<p class="polaroid"><img src="http://farm1.static.flickr.com/47/137542679_9bfede2749_m.jpg" alt="[Photo de Cerisier en fleurs]" /><br />
<a title="Photo du cerisier du Jardin des Plantes sur Flickr" href="http://flickr.com/photos/24816568@N00/137542679/">Cerisier au Jardin des Plantes</a></p>
<p>Une de mes photos inspire <a href="http://ficlets.com/stories/4663" hreflang="en" title="Poème sur un cerisier">un poème</a> sur <a href="http://ficlets.com/" hreflang="en" title="Le site Ficlets">Ficlets</a>.</p>
<p>Ficlets est un site qui invite à écrire des petites histoires et à compléter les histoires créées par les autres utilisateurs en y ajoutant une suite ou un début.</p>
<p>L&#8217;authentification, très simple, passe par <a href="http://sunfox.org/blog/2007/05/12/decouvrir-openid/" title="Mon article décrivant l'authentification via OpenID">OpenID</a>. Le site est chaleureux, ouvert, simple, très joli, très abouti.</p>
<p>Chapeau à <abbr>AOL</abbr>, qui remonte énormément dans mon estime. Avec ce brin de poésie s&#8217;alliant au meilleur de la technologie, ils semblent enfin avoir compris à quoi devrait ressembler le web.</p>
]]></content:encoded>
			<wfw:commentRss>http://sunfox.org/blog/2007/07/24/ficlets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LOLPython</title>
		<link>http://sunfox.org/blog/2007/07/11/lolpython/</link>
		<comments>http://sunfox.org/blog/2007/07/11/lolpython/#comments</comments>
		<pubDate>Wed, 11 Jul 2007 09:50:25 +0000</pubDate>
		<dc:creator>Sunny</dc:creator>
				<category><![CDATA[gouttes]]></category>
		<category><![CDATA[cat]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://sunfox.org/blog/2007/07/11/lolpython/</guid>
		<description><![CDATA[I CAN HAZ LOLPYTHON PLZ?]]></description>
			<content:encoded><![CDATA[<p><span lang="enLOL">I CAN HAZ <a href="http://dalkescientific.com/writings/diary/archive/2007/06/01/lolpython.html" hreflang="en" title="LOLPython programming language">LOLPYTHON</a> PLZ?</span></p>
]]></content:encoded>
			<wfw:commentRss>http://sunfox.org/blog/2007/07/11/lolpython/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Edit!</title>
		<link>http://sunfox.org/blog/2007/07/09/edit/</link>
		<comments>http://sunfox.org/blog/2007/07/09/edit/#comments</comments>
		<pubDate>Mon, 09 Jul 2007 20:10:16 +0000</pubDate>
		<dc:creator>Sunny</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://sunfox.org/blog/2007/07/09/edit/</guid>
		<description><![CDATA[J&#8217;ai créé une petite application web, entre wiki et paster, nommée Edit!. Un morceau de code ou un bout de texte à partager ? Il suffit de vous rendre sur http://edit.sunfox.org/cequevousvoulez et de coller. C&#8217;est tout. La page s&#8217;enregistrera toute seule toutes les deux secondes. Pas besoin de s&#8217;identifier, pas de bouton Envoyer ni de [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai créé une petite application web, entre wiki et paster, nommée <a title="Page principale d'Edit!" href="http://edit.sunfox.org/">Edit!</a>.</p>
<p>Un morceau de code ou un bout de texte à partager ? Il suffit de vous rendre sur <tt>http://edit.sunfox.org/<var>cequevousvoulez</var></tt> et de coller. C&#8217;est tout. La page s&#8217;enregistrera toute seule toutes les deux secondes. Pas besoin de s&#8217;identifier, pas de bouton Envoyer ni de redirection, aucun autre choix à faire que <tt>cequevousvoulez</tt>.</p>
<p>En contrepartie de cette légèreté, tous ceux à qui vous avez fourni l&#8217;url peuvent modifier votre page et tout supprimer. Il n&#8217;y a pas de moyen d&#8217;annuler. Edit ne sert donc pas à stocker quelque chose auquel vous tenez énormément, mais peut tout de même servir de léger petit wiki à condition qu&#8217;il reste entre amis.</p>
<p><a title="Code source d'Edith sur Github" href="http://github.com/sunny/edith/">Son code</a> est disponible, sous <abbr title="GNU General Public Licence" lang="en">GPL</abbr>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sunfox.org/blog/2007/07/09/edit/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Installation SVN de WordPress et de ses plugins</title>
		<link>http://sunfox.org/blog/2007/05/28/installation-svn-de-wordpress-et-de-ses-plugins/</link>
		<comments>http://sunfox.org/blog/2007/05/28/installation-svn-de-wordpress-et-de-ses-plugins/#comments</comments>
		<pubDate>Mon, 28 May 2007 10:34:38 +0000</pubDate>
		<dc:creator>Sunny</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://sunfox.org/blog/2007/05/28/installation-svn-de-wordpress-et-de-ses-plugins/</guid>
		<description><![CDATA[Si vous avez un accès shell sur votre hébergement et que vous préférez mettre à jour WordPress ainsi que tous ses plugins en une commande plutôt qu&#8217;en vingt, une installation SVN vous ravira. La page téléchargement via svn de WordPress préconise de télécharger la version trunk de WordPress, mais c&#8217;est une version instable, pour développeurs, [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float:right" src="http://sunfox.org/blog/wp-content/uploads/2007/05/wp1.jpg" alt="[Logo WordPress]" /></p>
<p>Si vous avez un accès shell sur votre hébergement et que vous préférez mettre à jour WordPress ainsi que tous ses plugins en une commande plutôt qu&#8217;en vingt, une installation <abbr>SVN</abbr> vous ravira.</p>
<p>La page <a href="http://wordpress.org/download/svn/">téléchargement via svn</a> de WordPress préconise de télécharger la version <em>trunk</em> de WordPress, mais c&#8217;est une version instable, pour développeurs, des toutes dernières modifications. Téléchargez plutôt la dernière branche stable&nbsp;:</p>
<pre class="lightshell" style="clear:right"><samp>$</samp> <kbd>svn checkout http://svn.automattic.com/wordpress/branches/2.5/ wordpress</kbd></pre>
<p>Un dossier <tt>wordpress</tt> sera créé. Vous pouvez ensuite suivre la procédure d&#8217;installation normale.<br />
<span id="more-811"></span></p>
<h3>Installer des plugins</h3>
<p>Pour installer un plugin en svn il suffit d&#8217;aller dans le dossier <tt>wp-content/plugins</tt> et d&#8217;y éditer la valeur de <code>svn:externals</code>&nbsp;:</p>
<pre class="lightshell"><samp>$</samp> <kbd>svn propedit svn:externals .</kbd></pre>
<p>Ceci lancera un éditeur de texte où vous pourrez modifier la liste des plugins installés par <abbr>SVN</abbr>. Par défaut celle-ci aura akismet, mais vous pouvez ajouter des plugins de cette façon&nbsp;:</p>
<pre class="lightshell"><span class="comment">akismet http://svn.wp-plugins.org/akismet/trunk/</span>
permalink-redirect http://svn.fucoder.com/fucoder/permalink-redirect/
stats http://svn.wp-plugins.org/stats/trunk/</pre>
<h3>Mettre à jour</h3>
<p>Pour mettre à jour WordPress ainsi que tous ses plugins&nbsp;:</p>
<pre class="lightshell"><samp>$</samp> <kbd>svn update</kbd></pre>
<p>Puis visitez l&#8217;<abbr>URI</abbr> <tt>/wp-admin/upgrade.php</tt> pour mettre à jour la base de données comme lors d&#8217;une mise à jour classique. C&#8217;est tout&nbsp;! Pour passer à une autre branche, par exemple dans la sortie hypothétique d&#8217;une version 2.5.1, il faudra taper&nbsp;:</p>
<pre class="lightshell"><samp>$</samp> <kbd>svn switch http://svn.automattic.com/wordpress/<var>tags/2.5.1</var>/</kbd></pre>
<h3>Trouver des plugins svn</h3>
<p>L&#8217;ensemble des plugins disponibles sur <a href="http://wordpress.org/extend/plugins/">le site officiel</a> disposent d&#8217;un <abbr>SVN</abbr>. Pour le trouver il suffit de remplacer son nom dans cette url&nbsp;: <tt>http://svn.wp-plugins.org/<var>nom</var>/trunk/</tt>.</p>
<h3>Mise à jour de la langue</h3>
<p>Vous avez un WordPress en français et vous voulez mettre à jour la traduction en même temps que  le reste, automatiquement&nbsp;? Éditez la valeur du <code>svn:externals</code> cette fois sur le dossier <tt>wp-includes</tt> et ajoutez&nbsp;:</p>
<pre class="lightshell">languages http://svn.automattic.com/wordpress-i18n/fr_FR/tags/2.5/messages/</pre>
<p>Le seul inconvénient étant qu&#8217;il téléchargera par la même occasion le fichier source <code>.po</code> dans le même dossier (sans que cela ne gêne WordPress).</p>
<p>De la même façon vous pouvez également avoir des thèmes sous <abbr>SVN</abbr>, <i lang="it">via</i> <tt>http://svn.wp-themes.org/<var>nom</var>/trunk/</tt>.</p>
<p class="info"><strong>Édition</strong>&nbsp;: mis à jour pour WordPress 2.5</p>
]]></content:encoded>
			<wfw:commentRss>http://sunfox.org/blog/2007/05/28/installation-svn-de-wordpress-et-de-ses-plugins/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Startswith et Endswith en PHP</title>
		<link>http://sunfox.org/blog/2007/03/21/startswith-et-endswith-en-php/</link>
		<comments>http://sunfox.org/blog/2007/03/21/startswith-et-endswith-en-php/#comments</comments>
		<pubDate>Wed, 21 Mar 2007 18:04:48 +0000</pubDate>
		<dc:creator>Sunny</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[gouttes]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://sunfox.org/blog/2007/03/21/startswith-et-endswith-en-php/</guid>
		<description><![CDATA[function startswith($hay, $needle) { return substr($hay, 0, strlen($needle)) === $needle; } function endswith($hay, $needle) { return substr($hay, -strlen($needle)) === $needle; }]]></description>
			<content:encoded><![CDATA[<pre class="php"><code>function startswith($hay, $needle) {
  return substr($hay, 0, strlen($needle)) === $needle;
}

function endswith($hay, $needle) {
  return substr($hay, -strlen($needle)) === $needle;
}</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://sunfox.org/blog/2007/03/21/startswith-et-endswith-en-php/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Interrupteur</title>
		<link>http://sunfox.org/blog/2004/07/07/interrupteur/</link>
		<comments>http://sunfox.org/blog/2004/07/07/interrupteur/#comments</comments>
		<pubDate>Tue, 06 Jul 2004 23:13:35 +0000</pubDate>
		<dc:creator>Sunny</dc:creator>
				<category><![CDATA[articles]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[logiciels]]></category>
		<category><![CDATA[javascripte]]></category>
		<category><![CDATA[standards du web]]></category>

		<guid isPermaLink="false">http://sunfox.org/blog/2004/07/07/interrupteur/</guid>
		<description><![CDATA[Un petit truc dont j&#8217;avais besoin en javascript aujourd&#8217;hui était très instructif. J&#8217;ai appris à me servir des variables en javascript et à manipuler et modifier le beau et grand DOM. Je devais (tout simplement) remplacer une image quand on clique dessus par un clic, puis reremplacer l&#8217;image après&#8230; Heureusement qu&#8217;un certain Shinrei n&#8217;était pas [...]]]></description>
			<content:encoded><![CDATA[<p>Un petit truc dont j&#8217;avais besoin en javascript aujourd&#8217;hui était très instructif. J&#8217;ai appris à me servir des variables en javascript et à manipuler et modifier le beau et grand <acronym title="Document Object Model">DOM</acronym>.<br />
<span id="more-22"></span></p>
<p>Je devais (tout simplement) remplacer une image quand on clique dessus par un clic, puis reremplacer l&#8217;image après&#8230; Heureusement qu&#8217;un certain Shinrei n&#8217;était pas loin.</p>
<p>Je suis donc passé par plusieurs formes, dont une qui remplaçait le <code>src</code> de l&#8217;image, et une qui utilisait des variables. Mais finalement je suis resté sur cette forme, qui est à la fois très simple et très facilement modifiable en s&#8217;aidant du <abbr>CSS</abbr>.</p>
<p>Pour cela il nous faut un peu de JavaScript :</p>
<pre class="js"><code>&lt;script type="text/javascript"&gt;
function interrupteur() {
    if (document.getElementById("on"))
        document.getElementById("on").id = "off";
    else
        document.getElementById("off").id = "on";
}
&lt;/script&gt;</code></pre>
<p>En français ça donnerait&#038;nbsp: &laquo;&nbsp;Si on a un élément du document dont l&#8217;id est <code>on</code>, alors changer son id à <code>off</code>, ou bien alors changer son id à <code>on</code>.&nbsp;&raquo;</p>
<p>On peut ainsi appliquer tout ceci en donnant l&#8217;<code>id="off"</code> (ou <code>"on"</code>) ainsi qu&#8217;un moyen d&#8217;actionner la fonction sur n&#8217;importe quelle balise&nbsp;:</p>
<pre>&lt;body id="off" onclick="interrupteur()"&gt;</pre>
<p>Mais on oublie pas le zeste de css qui va définir les différents aspects selon qu&#8217;il soit allumé ou eteint, selon son id&nbsp;:</p>
<pre class="css">#off { background: black url(off.gif) no-repeat center; }
#on { background: white url(on.gif) no-repeat center; }</pre>
<p>Et voilà.</p>
]]></content:encoded>
			<wfw:commentRss>http://sunfox.org/blog/2004/07/07/interrupteur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

