<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://fashion.hosmoz.net/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Digital Fashion - javascript</title>
  <link>http://fashion.hosmoz.net/</link>
  <description>Rien de grand ne se fit jamais sans enthousiasme.</description>
  <language>en</language>
  <pubDate>Wed, 23 Jul 2008 21:28:31 +0200</pubDate>
  <copyright>2003-2007 &amp;copy; Geoffrey Bachelet</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Google Gears</title>
    <link>http://fashion.hosmoz.net/post/2007/05/31/Google-Gears</link>
    <guid isPermaLink="false">urn:md5:99f7c521434927fe2c3749b689ccd233</guid>
    <pubDate>Thu, 31 May 2007 10:09:00 +0200</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Geekeries</category>
        <category>ajax</category><category>firefox</category><category>google</category><category>google gears</category><category>javascript</category><category>offline</category><category>roxitude</category><category>sqlite</category>    
    <description>    &lt;p&gt;La dernière petite roxitude de google: &lt;a href=&quot;http://gears.google.com/&quot;&gt;Google Gears&lt;/a&gt;, une extension firefox qui embarque une base SQLite pour faciliter le développement d'applications offline.&lt;/p&gt;


&lt;p&gt;on en parle &lt;a href=&quot;http://ajaxian.com/archives/audible-ajax-episode-21-dojo-offline-on-google-gears&quot;&gt;là&lt;/a&gt;, &lt;a href=&quot;http://www.sitepoint.com/blogs/2007/05/31/gdd07-google-gears-%e2%80%93-bringing-server-client-even-closer/&quot;&gt;là&lt;/a&gt; et puis aussi &lt;a href=&quot;http://www.theage.com.au/news/biztech/gears-puts-google-in-the-drivers-seat/2007/05/31/1180205350391.html&quot;&gt;là&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://fashion.hosmoz.net/post/2007/05/31/Google-Gears#comment-form</comments>
      <wfw:comment>http://fashion.hosmoz.net/post/2007/05/31/Google-Gears#comment-form</wfw:comment>
      <wfw:commentRss>http://fashion.hosmoz.net/feed/rss2/comments/825</wfw:commentRss>
      </item>
    
  <item>
    <title>Éviter les appels de fonction en double en javascript</title>
    <link>http://fashion.hosmoz.net/post/2007/04/12/Eviter-les-appels-de-fonction-en-double-en-javascript</link>
    <guid isPermaLink="false">urn:md5:4ade4fc5c913f47948358bd4a9c7f804</guid>
    <pubDate>Thu, 12 Apr 2007 13:22:00 +0200</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Coding</category>
        <category>javascript</category><category>jquery</category><category>library</category><category>rigolo</category>    
    <description>    &lt;p&gt;Dans un accès de désespoir vu l'activité débordante de ce blog en ce moment, je me lance et je vous propose cette petite librairie javascript qui va vous permettre d'éviter les appels de fonction en double:&lt;/p&gt;

&lt;pre&gt;
var Defer = {
	config: {
		defaultTimeout: 1000
	},
	stack: {},
	schedule: function(id, fn, timeout) {
		if (typeof(timeout) == 'undefined') {
			timeout = Defer.config.defaultTimeout;
		}
		if (typeof(Defer.stack[id]) == 'undefined') {
			Defer.stack[id] = {defer: false, fn: fn, timeout: timeout };
			window.setTimeout('Defer.execute(\'' + id + '\')', timeout);
		} else {
			Defer.stack[id].defer = true;
		}
	},
	execute: function(id) {
		if (typeof(Defer.stack[id]) != 'undefined' &amp;amp;&amp;amp; !Defer.stack[id].defer) {
			Defer.stack[id].fn();
			Defer.stack[id] = undefined;
		} else {
			Defer.stack[id].defer = false;
			window.setTimeout('Defer.execute(\'' + id + '\')', Defer.stack[id].timeout);
		}
	},
};
&lt;/pre&gt;


&lt;p&gt;On peut l'utiliser ainsi par exemple (&lt;a href=&quot;http://jquery.com/&quot;&gt;jquery&lt;/a&gt; requis):&lt;/p&gt;

&lt;pre&gt;
$(document).ready(function() {
	$('#nickname').keyup(function() {
		Defer.schedule('chknickname', function() {
			$.get('/account/check_nickname.php', { nickname: $('#nickname').val() }, function(data) {
				data = eval(data);
				$('#nickname_availability').html(data ? 'Pseudo disponible' : 'Pseudo indisponible');
			});
		}, 2000);
	});
});
&lt;/pre&gt;


&lt;p&gt;Concrétement, ce bout de code attache à un &lt;code&gt;input&lt;/code&gt; un événement qui ne sera executé que s'il n'est pas répété avant une certaine période (2 secondes ici). C'est à dire qu'on évite de faire une requête xmlhttp à chaque &lt;code&gt;keyup&lt;/code&gt;, on attend plutot que l'utilisateur arrête de taper un moment avant de balancer la sauce. A noter que de par la méthode utiliser, l'espace de nommage d'execution de la fonction change (par exemple ici, on ne peut pas utiliser &lt;code&gt;this&lt;/code&gt; pour accéder a l'&lt;code&gt;input&lt;/code&gt;).&lt;/p&gt;


&lt;p&gt;Voila voila.&lt;/p&gt;</description>
    
    
    
          <comments>http://fashion.hosmoz.net/post/2007/04/12/Eviter-les-appels-de-fonction-en-double-en-javascript#comment-form</comments>
      <wfw:comment>http://fashion.hosmoz.net/post/2007/04/12/Eviter-les-appels-de-fonction-en-double-en-javascript#comment-form</wfw:comment>
      <wfw:commentRss>http://fashion.hosmoz.net/feed/rss2/comments/757</wfw:commentRss>
      </item>
    
  <item>
    <title>Le firebug nouveau est arrivé</title>
    <link>http://fashion.hosmoz.net/post/2006/12/05/Le-firebug-nouveau-est-arrive</link>
    <guid isPermaLink="false">urn:md5:d5a923255f62f471634bbd7f45301cd0</guid>
    <pubDate>Tue, 05 Dec 2006 11:05:00 +0100</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Coding</category>
        <category>firebug</category><category>firefox</category><category>javascript</category><category>optimisation</category><category>organisation</category><category>way of life</category>    
    <description>    &lt;p&gt;&lt;a href=&quot;http://www.getfirebug.com/&quot;&gt;Firebug 1.0b1&lt;/a&gt; est sorti. Et il est bien (tm).&lt;/p&gt;</description>
    
    
    
          <comments>http://fashion.hosmoz.net/post/2006/12/05/Le-firebug-nouveau-est-arrive#comment-form</comments>
      <wfw:comment>http://fashion.hosmoz.net/post/2006/12/05/Le-firebug-nouveau-est-arrive#comment-form</wfw:comment>
      <wfw:commentRss>http://fashion.hosmoz.net/feed/rss2/comments/729</wfw:commentRss>
      </item>
    
  <item>
    <title>Liens du jour</title>
    <link>http://fashion.hosmoz.net/post/2006/08/30/Liens-du-jour</link>
    <guid isPermaLink="false">urn:md5:b05ee39ead55f1ca7088f8c241b04771</guid>
    <pubDate>Wed, 30 Aug 2006 14:29:00 +0200</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Rubrique à brac</category>
        <category>javascript</category><category>optimisation</category><category>php</category><category>sql</category><category>zend framework</category>    
    <description>    &lt;p&gt;Liens en vrac:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://mysqldba.blogspot.com/&quot;&gt;MySQL DBA&lt;/a&gt;, le blog d'un &lt;acronym&gt;DBA&lt;/acronym&gt; de chez &lt;a href=&quot;http://www.flickr.com/&quot;&gt;flickr&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.thinkvitamin.com/features/webapps/serving-javascript-fast&quot;&gt;Serving Javascript Fast&lt;/a&gt;, par un développeur de chez &lt;a href=&quot;http://www.flickr.com/&quot;&gt;flickr&lt;/a&gt; (décidément...) A noter que cet article parle des méthodes de cache d'une manière assez généraliste pour être appliquée à autre chose que du JavaScript, et n'oubliez pas non plus de lire les commentaires, il y en a de très interressants.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.gen-x-design.com/archives/ajax-prototype-a-primer&quot;&gt;AJAX &amp;amp; Protoype: A Primer&lt;/a&gt;, explication simple et claire sur l'utilisation d'AJAX et des Classes avec Prototype.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.akrabat.com/category/zend-framework/&quot;&gt;Akra's Devnotes: Zend Framework&lt;/a&gt;, la catégorie Zend Framework du blog de Rob Allen, très interressante.&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://fashion.hosmoz.net/post/2006/08/30/Liens-du-jour#comment-form</comments>
      <wfw:comment>http://fashion.hosmoz.net/post/2006/08/30/Liens-du-jour#comment-form</wfw:comment>
      <wfw:commentRss>http://fashion.hosmoz.net/feed/rss2/comments/580</wfw:commentRss>
      </item>
    
  <item>
    <title>Tracs en vruc</title>
    <link>http://fashion.hosmoz.net/post/2006/03/15/510-tracs-en-vruc</link>
    <guid isPermaLink="false">urn:md5:c3c31fc92f1bf2012aef553ac98cd232</guid>
    <pubDate>Wed, 15 Mar 2006 08:47:41 +0000</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>General</category>
        <category>google</category><category>javascript</category>    
    <description>    &lt;p&gt;Comme dirait l'autre :)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.clubic.com/actualite-32850-mcafee-une-mise-a-jour-boiteuse-supprime-excel.html&quot;&gt;McAfee&amp;nbsp;: une mise à jour boiteuse supprime Excel&lt;/a&gt;, ahah.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ubuntuforums.org/showpost.php?p=818037&amp;amp;postcount=61&quot;&gt;Re: Possible to get the administrator password ?&lt;/a&gt;, un peu moins drole (enfin ça dépend des gouts hein).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.jeuxdemaux.com/2006/03/13/709-google-mars&quot;&gt;Google Mars&lt;/a&gt;, jolies images.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_style.asp&quot; hreflang=&quot;en&quot;&gt;style Object&lt;/a&gt;, la référence ultime de Element.style sous &lt;acronym&gt;IE&lt;/acronym&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.logahead.com/&quot; hreflang=&quot;en&quot;&gt;logahead&lt;/a&gt;: affaire à suivre.&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://fashion.hosmoz.net/post/2006/03/15/510-tracs-en-vruc#comment-form</comments>
      <wfw:comment>http://fashion.hosmoz.net/post/2006/03/15/510-tracs-en-vruc#comment-form</wfw:comment>
      <wfw:commentRss>http://fashion.hosmoz.net/feed/rss2/comments/508</wfw:commentRss>
      </item>
    
  <item>
    <title>Sélectionner dans un select multiple avec des checkbox</title>
    <link>http://fashion.hosmoz.net/post/2006/02/16/496-selectionner-dans-un-select-multiple-avec-des-checkbox</link>
    <guid isPermaLink="false">urn:md5:be919b20b0cbf6984d0431b7d3602ac6</guid>
    <pubDate>Thu, 16 Feb 2006 13:10:03 +0000</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Coding</category>
        <category>dom</category><category>javascript</category>    
    <description>    &lt;p&gt;&lt;a href=&quot;http://more.zubrowka.org/~ash/code/js/checkbox-select.html&quot;&gt;Un petit exemple&lt;/a&gt; vaut mieux qu'un grand discours :-)&lt;/p&gt;

&lt;pre&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; recognizePattern = &lt;span style=&quot;color: #3366CC;&quot;&gt;'autoselect-'&lt;/span&gt;;
&amp;nbsp;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; inputCollection = document.&lt;span style=&quot;color: #006600;&quot;&gt;getElementsByTagName&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'input'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; collectionLength = inputCollection.&lt;span style=&quot;color: #006600;&quot;&gt;length&lt;/span&gt;;
&amp;nbsp;
&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; j = &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;; j &amp;lt; collectionLength; j++&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; myInput = inputCollection&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;j&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;;
&amp;nbsp;
	&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;myInput.&lt;span style=&quot;color: #006600;&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'type'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; == &lt;span style=&quot;color: #3366CC;&quot;&gt;'checkbox'&lt;/span&gt; &amp;amp;&amp;amp; myInput.&lt;span style=&quot;color: #006600;&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'id'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;indexOf&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;recognizePattern&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; == &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
		myInput.&lt;span style=&quot;color: #006600;&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'change'&lt;/span&gt;, &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
			&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; mySelect = document.&lt;span style=&quot;color: #006600;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'slt'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
			&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; optLength = mySelect.&lt;span style=&quot;color: #006600;&quot;&gt;options&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;length&lt;/span&gt;;
&amp;nbsp;
			&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; re = &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;new&lt;/span&gt; RegExp&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;getAttribute&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'id'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;substr&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;recognizePattern.&lt;span style=&quot;color: #006600;&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
			&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;for&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; i = &lt;span style=&quot;color: #CC0000;&quot;&gt;0&lt;/span&gt;; i &amp;lt; optLength; i++&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
				&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;re.&lt;span style=&quot;color: #006600;&quot;&gt;exec&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;mySelect.&lt;span style=&quot;color: #006600;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
					mySelect.&lt;span style=&quot;color: #006600;&quot;&gt;options&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;i&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;selected&lt;/span&gt; = &lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;this&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;checked&lt;/span&gt;;
&amp;nbsp;
				&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
			&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
		&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;, &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
&amp;nbsp;
	&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;</description>
    
    
    
          <comments>http://fashion.hosmoz.net/post/2006/02/16/496-selectionner-dans-un-select-multiple-avec-des-checkbox#comment-form</comments>
      <wfw:comment>http://fashion.hosmoz.net/post/2006/02/16/496-selectionner-dans-un-select-multiple-avec-des-checkbox#comment-form</wfw:comment>
      <wfw:commentRss>http://fashion.hosmoz.net/feed/rss2/comments/495</wfw:commentRss>
      </item>
    
  <item>
    <title>Considérations nocturne sur PHP</title>
    <link>http://fashion.hosmoz.net/post/2006/01/28/489-considerations-nocturne-sur-php</link>
    <guid isPermaLink="false">urn:md5:3b5c3cacdf063b8fcde555b5a60cbf3d</guid>
    <pubDate>Sat, 28 Jan 2006 03:49:56 +0000</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Geekeries</category>
        <category>javascript</category><category>php</category>    
    <description>    &lt;p&gt;Souvent le week end, je fais une nuit blanche du samedi au dimanche pour travailler. Bon ok, là on est la nuit de vendredi à samedi, et je vais pas tarder à aller me coucher, mais quand même. Bon enfin de toute façon c'est pas le sujet. Le truc, c'est que du coup je suis obligé de me taper la compagnie de &lt;a href=&quot;http://iseki.domtomconnection.com/wiki/Accueil&quot;&gt;Christophe&lt;/a&gt;, et je crois que finalement, c'est avec lui que j'ai le plus de discussions en rapport avec le nom du chan sur lequel on traine (&lt;em&gt;#&lt;strong&gt;php&lt;/strong&gt;mafia&lt;/em&gt; (d'ailleurs, note pour plus tard: renouveler phpmafia.net, ça urge)).&lt;/p&gt;


&lt;p&gt;On va commencer par parler du &lt;em&gt;chroot&lt;/em&gt;. En gros, j'ai émis l'idée qu'une fonction &lt;em&gt;chroot&lt;/em&gt; builtin serait utile. &lt;a href=&quot;http://fr.php.net/chroot&quot;&gt;Elle existe&lt;/a&gt;, mais ne fait pas exactement ce que je veux, ou du moins pas comme je le veux. En l'état actuel des choses, elle execute un &lt;em&gt;vrai chroot&lt;/em&gt;, et n'est donc utilisable qu'avec les droits &lt;em&gt;root&lt;/em&gt;, ce qui est bien, mais pas top. Le but ultime serait d'éviter tout risque de faille du type &lt;em&gt;remote file access&lt;/em&gt;, alors si c'est pour me taper a coté de ça des &lt;em&gt;remote code execution with privilege escalation&lt;/em&gt;, ben ça perd de son interêt.&lt;/p&gt;


&lt;p&gt;Deuxième challenge, implémenter la structure &lt;code&gt;with()&lt;/code&gt; en &lt;acronym&gt;PHP&lt;/acronym&gt;. Pour ceux qui ne connaissent pas, un petit dessin en javascript:&lt;/p&gt;

&lt;pre&gt;&lt;span style=&quot;color: #000066; font-weight: bold;&quot;&gt;with&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;document&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
	getElelementById&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'foo'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Bon, l'exemple que je viens de donner ne sert &lt;strong&gt;a rien&lt;/strong&gt;, mais je pense qu'on comprend tout de suite le but de la structure sus-citée. J'aimerai donc pouvoir disposer de la même chose en &lt;acronym&gt;PHP&lt;/acronym&gt;. Etant donné que je n'ai pas les compétences C requises, la seule solution qu'il me reste est de l'implémenter d'une manière ou d'une autre en &lt;acronym&gt;PHP&lt;/acronym&gt;. C'est d'autant plus complexe que je m'impose le cahier des charges simples mais strict suivant:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conserver les références&lt;/li&gt;
&lt;li&gt;Ne pas casser la coloration syntaxique&lt;/li&gt;
&lt;li&gt;Ne pas avoir une syntaxe trop tarabiscotée&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ce qui exclut une solution du genre:&lt;/p&gt;

&lt;pre&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$object&lt;/span&gt; = &lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Object&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #0000ff;&quot;&gt;$with&lt;/span&gt; = &lt;a href=&quot;http://www.php.net/array&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'method();'&lt;/span&gt;, &lt;span style=&quot;color: #ff0000;&quot;&gt;'autremethode();'&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;'foo = &amp;quot;bar&amp;quot;'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #b1b100;&quot;&gt;foreach&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$with&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$item&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt; &lt;a href=&quot;http://www.php.net/eval&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;eval&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'$object-&amp;gt;'&lt;/span&gt; . &lt;span style=&quot;color: #0000ff;&quot;&gt;$item&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;


&lt;p&gt;Puisque ça casse la coloration syntaxique. J'ai pensé a un truc genre:&lt;/p&gt;

&lt;pre&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; foo&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
	method&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
	foo = &lt;span style=&quot;color: #ff0000;&quot;&gt;'bar'&lt;/span&gt;;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
&amp;nbsp;
with&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;new&lt;/span&gt; Object, &lt;span style=&quot;color: #ff0000;&quot;&gt;'foo'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;


&lt;p&gt;Mais j'ai des doutes sur la faisabilité de la chose. A voir si on peut en tirer quelque chose via l'&lt;acronym&gt;API&lt;/acronym&gt; de Réflexion (décidemment je l'aime bien celle là).&lt;/p&gt;


&lt;p&gt;Dernière chose, on aimerait bien avoir des trucs genre bash, par exemple pouvoir faire:&lt;/p&gt;

&lt;pre&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;require_once&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'header-*.php'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
&lt;span style=&quot;color: #b1b100;&quot;&gt;require&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'{foo,bar}.php'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;


&lt;p&gt;Voilà voilà, petit papa noël, si tu passes par là...&lt;/p&gt;</description>
    
    
    
          <comments>http://fashion.hosmoz.net/post/2006/01/28/489-considerations-nocturne-sur-php#comment-form</comments>
      <wfw:comment>http://fashion.hosmoz.net/post/2006/01/28/489-considerations-nocturne-sur-php#comment-form</wfw:comment>
      <wfw:commentRss>http://fashion.hosmoz.net/feed/rss2/comments/487</wfw:commentRss>
      </item>
    
  <item>
    <title>Prototype + Behaviour = Magie</title>
    <link>http://fashion.hosmoz.net/post/2006/01/21/481-prototype-behaviour-magie</link>
    <guid isPermaLink="false">urn:md5:6321310c55b8439164977885c478b145</guid>
    <pubDate>Sat, 21 Jan 2006 22:37:05 +0000</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Coding</category>
        <category>javascript</category>    
    <description>    &lt;pre&gt;Behaviour.&lt;span style=&quot;color: #006600;&quot;&gt;register&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
&amp;nbsp;
	&lt;span style=&quot;color: #3366CC;&quot;&gt;'#checkall'&lt;/span&gt;: &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;el&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
	
		el.&lt;span style=&quot;color: #006600;&quot;&gt;style&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;display&lt;/span&gt; = &lt;span style=&quot;color: #3366CC;&quot;&gt;'block'&lt;/span&gt;;
		el.&lt;span style=&quot;color: #006600;&quot;&gt;onclick&lt;/span&gt; = &lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;
		
			$$&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'input.delete'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;element&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt; element.&lt;span style=&quot;color: #006600;&quot;&gt;checked&lt;/span&gt; = $F&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;'checkall'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;
		
		&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
	
	&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;
	
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/pre&gt;


&lt;p&gt;Franchement, j'aime.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;EDIT&lt;/strong&gt;: A la demande générale, &lt;a href=&quot;http://fashion.hosmoz.net/share/examples/prototype-behaviour-magie&quot;&gt;un exemple&lt;/a&gt; :-) A savoir: la version que j'utilise de &lt;a href=&quot;http://prototype.conion.net/&quot;&gt;prototype&lt;/a&gt; est partiellement tirée du &lt;acronym&gt;SVN&lt;/acronym&gt;. Et oui, &lt;code&gt;$$&lt;/code&gt; n'est pas encore disponible dans prototype &lt;em&gt;release&lt;/em&gt; (ainsi que &lt;code&gt;String.strip()&lt;/code&gt;, nécessaire à &lt;code&gt;$$&lt;/code&gt;).&lt;/p&gt;</description>
    
    
    
          <comments>http://fashion.hosmoz.net/post/2006/01/21/481-prototype-behaviour-magie#comment-form</comments>
      <wfw:comment>http://fashion.hosmoz.net/post/2006/01/21/481-prototype-behaviour-magie#comment-form</wfw:comment>
      <wfw:commentRss>http://fashion.hosmoz.net/feed/rss2/comments/479</wfw:commentRss>
      </item>
    
  <item>
    <title>Prototype gets selector magic</title>
    <link>http://fashion.hosmoz.net/post/2006/01/19/478-prototype-gets-selector-magic</link>
    <guid isPermaLink="false">urn:md5:b7728a605bb6350dc9663ba3e46eaca6</guid>
    <pubDate>Thu, 19 Jan 2006 10:38:44 +0000</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Coding</category>
        <category>javascript</category>    
    <description>    &lt;p&gt;&lt;a href=&quot;http://mir.aculo.us/articles/2006/01/18/prototype-gets-selector-magic&quot;&gt;via&lt;/a&gt; &lt;a href=&quot;http://mir.aculo.us&quot;&gt;miraculous&lt;/a&gt;:&lt;/p&gt;


&lt;p&gt;On en rêvait tous, c'est désormais chose faite: le support de &lt;code&gt;getElementBySelector&lt;/code&gt; a été ajouté à &lt;a href=&quot;http://prototype.conio.net&quot; hreflang=&quot;en&quot;&gt;prototype&lt;/a&gt; via la fonction &lt;code&gt;$$&lt;/code&gt; \o/&lt;/p&gt;


&lt;p&gt;On a plus qu'a attendre l'intégration de la librairie &lt;a href=&quot;http://bennolan.com/behaviour/&quot; hreflang=&quot;en&quot;&gt;Behaviour&lt;/a&gt; :p&lt;/p&gt;</description>
    
    
    
          <comments>http://fashion.hosmoz.net/post/2006/01/19/478-prototype-gets-selector-magic#comment-form</comments>
      <wfw:comment>http://fashion.hosmoz.net/post/2006/01/19/478-prototype-gets-selector-magic#comment-form</wfw:comment>
      <wfw:commentRss>http://fashion.hosmoz.net/feed/rss2/comments/476</wfw:commentRss>
      </item>
    
  <item>
    <title>La panoplie du parfait petit web2.0developer</title>
    <link>http://fashion.hosmoz.net/post/2006/01/13/471-la-panoplie-du-parfait-petit-web20developer</link>
    <guid isPermaLink="false">urn:md5:2aee058cdd052a4727770ebabb27b2bd</guid>
    <pubDate>Fri, 13 Jan 2006 10:24:13 +0000</pubDate>
    <dc:creator>Geoffrey</dc:creator>
        <category>Coding</category>
        <category>javascript</category>    
    <description>    &lt;p&gt;Pour ceux que ça interresse, une sélection de quelques outils pour développer des sites &lt;em&gt;web2.0 enabled&lt;/em&gt;&lt;sup&gt;[&lt;a href=&quot;http://fashion.hosmoz.net/post/2006/01/13/#pnote-471-1&quot; id=&quot;rev-pnote-471-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt; .&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://prototype.conio.net/&quot; hreflang=&quot;en&quot;&gt;Le framework Prototype&lt;/a&gt;, avec &lt;a href=&quot;http://www.electrolinux.com/traductions/prototype.js.html&quot; hreflang=&quot;en&quot;&gt;sa documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://script.aculo.us/&quot; hreflang=&quot;en&quot;&gt;La librairie script.aculo.us&lt;/a&gt;, basée sur prototype&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dean.edwards.name/my/cssQuery/&quot; hreflang=&quot;en&quot;&gt;La fonction cssQuery&lt;/a&gt;, pour sélectionner des éléments via des sélecteurs &lt;acronym&gt;CSS&lt;/acronym&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bennolan.com/behaviour/&quot; hreflang=&quot;en&quot;&gt;Behavior&lt;/a&gt;, pour du javascript &lt;em&gt;non-obtrusif&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dean.edwards.name/weblog/&quot; hreflang=&quot;en&quot;&gt;Le blog de Dean Edwards&lt;/a&gt; en général, et en particulier ses billets sur la gestion de &lt;a href=&quot;http://dean.edwards.name/weblog/2005/09/busted/&quot; hreflang=&quot;en&quot;&gt;window.onload&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;J'en profite pour noter ça sur &lt;a href=&quot;http://fashion.hosmoz.net/wiki/webdev:tools&quot;&gt;mon wiki&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://fashion.hosmoz.net/post/2006/01/13/#rev-pnote-471-1&quot; id=&quot;pnote-471-1&quot;&gt;1&lt;/a&gt;] Bien que je ne cautionne pas le terme web 2.0 ou tous les buzz qui tournent autour des technologies sous-jacentes, force est de constater que ce terme est bien pratique quand on veut parler des technologies sus-évoquée&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
          <comments>http://fashion.hosmoz.net/post/2006/01/13/471-la-panoplie-du-parfait-petit-web20developer#comment-form</comments>
      <wfw:comment>http://fashion.hosmoz.net/post/2006/01/13/471-la-panoplie-du-parfait-petit-web20developer#comment-form</wfw:comment>
      <wfw:commentRss>http://fashion.hosmoz.net/feed/rss2/comments/471</wfw:commentRss>
      </item>
    
</channel>
</rss>