<?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>Casus Belli le blog &#187; Coding</title>
	<atom:link href="http://www.casusbelli.fr/cb_blog/category/coding/feed" rel="self" type="application/rss+xml" />
	<link>http://www.casusbelli.fr/cb_blog</link>
	<description>Agence de communication interactive. Marketing on-line, conception et réalisation de plateformes web.</description>
	<lastBuildDate>Thu, 09 Sep 2010 11:31:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>_why, oh _why?</title>
		<link>http://www.casusbelli.fr/cb_blog/coding/_why-oh-_why-3025</link>
		<comments>http://www.casusbelli.fr/cb_blog/coding/_why-oh-_why-3025#comments</comments>
		<pubDate>Tue, 18 May 2010 08:54:57 +0000</pubDate>
		<dc:creator>Zbi</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[lenteur]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[_why]]></category>

		<guid isPermaLink="false">http://www.casusbelli.fr/cb_blog/?p=3025</guid>
		<description><![CDATA[Il y a quelques temps déjà, Oz nous faisait partager son amour débordant pour le mystérieux _why, dans un article passionné. Pour vous montrer à quel point l&#8217;internet peut parfois être lent, je tenais à vous montrer cet article sorti aujourd&#8217;hui sur l&#8217;éminent site Smashing Magazine. Quasiment un an après, ils se réveillent et nous [...]]]></description>
			<content:encoded><![CDATA[<p>Il y a quelques temps déjà, Oz nous faisait partager son <a href="http://www.casusbelli.fr/cb_blog/webtrends/chunky-bacon-1668">amour débordant pour le mystérieux _why</a>, dans un article passionné. Pour vous montrer à quel point l&#8217;internet peut parfois être lent, je tenais à vous montrer cet article sorti aujourd&#8217;hui sur l&#8217;éminent site <a href="http://www.smashingmagazine.com/2010/05/15/why-a-tale-of-a-post-modern-genius/">Smashing Magazine</a>. Quasiment un an après, ils se réveillent et nous proposent une bref revue des exploits de l&#8217;homme invisible. À lire, pour ceux qui veulent en savoir plus.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.casusbelli.fr%2Fcb_blog%2Fcoding%2F_why-oh-_why-3025&amp;linkname=_why%2C%20oh%20_why%3F" target="_blank"><img src="http://www.casusbelli.fr/cb_blog/wp-content/share.png" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.casusbelli.fr/cb_blog/coding/_why-oh-_why-3025/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le 1er film d&#8217;animation CG&#8230;</title>
		<link>http://www.casusbelli.fr/cb_blog/motion-design/le-premier-film-danimation-cg-2873</link>
		<comments>http://www.casusbelli.fr/cb_blog/motion-design/le-premier-film-danimation-cg-2873#comments</comments>
		<pubDate>Wed, 21 Apr 2010 08:33:59 +0000</pubDate>
		<dc:creator>Zbi</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Motion design]]></category>
		<category><![CDATA[Animation]]></category>
		<category><![CDATA[Cinéma]]></category>
		<category><![CDATA[Geek Chic]]></category>
		<category><![CDATA[histoire]]></category>
		<category><![CDATA[informatique]]></category>

		<guid isPermaLink="false">http://www.casusbelli.fr/cb_blog/?p=2873</guid>
		<description><![CDATA[

À l&#8217;heure où l&#8217;on nous vend du film en 3D à la pelle et des films d&#8217;animations réalisés avec des bécanes équivalentes à celles de la nasa, on oublie souvent qu&#8217;il n&#8217;y a pas si longtemps, on était bien loin de tout ça. Pour preuve, ce tout premier film d&#8217;animation réalisé par ordinateur.

“Soviet computer animation [...]]]></description>
			<content:encoded><![CDATA[<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/0O4mm3hXNgA&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/0O4mm3hXNgA&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"></embed></object><br />
<br />
À l&#8217;heure où l&#8217;on nous vend du film en 3D à la pelle et des films d&#8217;animations réalisés avec des bécanes équivalentes à celles de la nasa, on oublie souvent qu&#8217;il n&#8217;y a pas si longtemps, on était bien loin de tout ça. Pour preuve, ce tout premier film d&#8217;animation réalisé par ordinateur.<br />
<br />
“Soviet computer animation was made in 1968. A group of russian physicists and mathematicians with N.Konstantinov in the head of it created mathematic model of the cat and its moving and realized this model in the program for the computer “BESM-4?. Computer printed hundreds of frames on the paper using alphabet symbols and then they were converted to the cinefilm.”</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.casusbelli.fr%2Fcb_blog%2Fmotion-design%2Fle-premier-film-danimation-cg-2873&amp;linkname=Le%201er%20film%20d%26%238217%3Banimation%20CG%26%238230%3B" target="_blank"><img src="http://www.casusbelli.fr/cb_blog/wp-content/share.png" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.casusbelli.fr/cb_blog/motion-design/le-premier-film-danimation-cg-2873/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>::Nike Music Shoe::</title>
		<link>http://www.casusbelli.fr/cb_blog/webtrends/nike-music-shoe-2867</link>
		<comments>http://www.casusbelli.fr/cb_blog/webtrends/nike-music-shoe-2867#comments</comments>
		<pubDate>Tue, 20 Apr 2010 08:22:09 +0000</pubDate>
		<dc:creator>Stilgar</dc:creator>
				<category><![CDATA[Art]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Webtrends]]></category>
		<category><![CDATA[Musique]]></category>
		<category><![CDATA[Nike]]></category>

		<guid isPermaLink="false">http://www.casusbelli.fr/cb_blog/?p=2867</guid>
		<description><![CDATA[
La nouvelle campagne Nike au Japon pour les Nike&#8217;s Free Run+ traine depuis quelques jours sur la toile mais sur le site a été ajouté un fond lançant dynamiquement des animations calées sur la musique (le tout tournant via un framework Flash made in Japan : Progression 4).
PS : Si vous voulez en savoir comment [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.casusbelli.fr/cb_blog/uploads/2010/04/Capture-d’écran-2010-04-20-à-10.10.161.png"  rel="lightbox[roadtrip]"><img class="alignnone size-medium wp-image-2869" title="Capture d’écran 2010-04-20 à 10.10.16" src="http://www.casusbelli.fr/cb_blog/uploads/2010/04/Capture-d’écran-2010-04-20-à-10.10.161-300x207.png" alt="" width="300" height="207" /></a></p>
<p>La nouvelle campagne Nike au Japon pour les Nike&#8217;s Free Run+ traine depuis quelques jours sur la toile mais sur le <a href="http://nike.jp/musicshoe/" target="_blank">site</a> a été ajouté un fond lançant dynamiquement des animations calées sur la musique (le tout tournant via un framework Flash made in Japan : <a href="http://progression.jp/en/" target="_blank">Progression 4</a>).</p>
<p><em>PS : Si vous voulez en savoir comment ils ont fait (pour la musique), c&#8217;est </em><a href="http://createdigitalmusic.com/2010/04/16/bendable-musical-shoes-for-nike-and-how-they-were-made/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+createdigitalmusic+%28createdigitalmusic.com%29" target="_blank"><em>ici</em></a><em> que ca se passe.</em></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.casusbelli.fr%2Fcb_blog%2Fwebtrends%2Fnike-music-shoe-2867&amp;linkname=%3A%3ANike%20Music%20Shoe%3A%3A" target="_blank"><img src="http://www.casusbelli.fr/cb_blog/wp-content/share.png" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.casusbelli.fr/cb_blog/webtrends/nike-music-shoe-2867/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>They make apps</title>
		<link>http://www.casusbelli.fr/cb_blog/webtrends/they-make-apps-2376</link>
		<comments>http://www.casusbelli.fr/cb_blog/webtrends/they-make-apps-2376#comments</comments>
		<pubDate>Tue, 09 Feb 2010 09:54:26 +0000</pubDate>
		<dc:creator>Zbi</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Vie de la boîte]]></category>
		<category><![CDATA[Webtrends]]></category>
		<category><![CDATA[annuaire]]></category>
		<category><![CDATA[developpement]]></category>
		<category><![CDATA[iphone]]></category>

		<guid isPermaLink="false">http://www.casusbelli.fr/cb_blog/?p=2376</guid>
		<description><![CDATA[

En recherche d&#8217;un développeur iPhone? Sorti il y a quelques semaines, they make apps s&#8217;avère être les nouvelles pages jaunes du genre. Mais en réalité, pas la peine de chercher beaucoup plus loin, contactez-nous plutôt! ^^

Ceci n&#8217;est absolument pas une publicité déguisée pour nos services. C&#8217;est pas notre genre.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.casusbelli.fr/cb_blog/uploads/2010/02/picture-71-480x411.png"  rel="lightbox[roadtrip]"><img src="http://www.casusbelli.fr/cb_blog/uploads/2010/02/picture-71-480x411.png" alt="" title="they make apps" width="480" height="411" class="alignnone size-full wp-image-2377" /></a><br />
<br />
En recherche d&#8217;un développeur iPhone? Sorti il y a quelques semaines, <a href="http://theymakeapps.com/">they make</a> apps s&#8217;avère être les nouvelles pages jaunes du genre. Mais en réalité, pas la peine de chercher beaucoup plus loin, <a href="mailto: info@casus-belli.fr">contactez-nous</a> plutôt! ^^<br />
<br />
<em>Ceci n&#8217;est absolument pas une publicité déguisée pour nos services. C&#8217;est pas notre genre.</em></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.casusbelli.fr%2Fcb_blog%2Fwebtrends%2Fthey-make-apps-2376&amp;linkname=They%20make%20apps" target="_blank"><img src="http://www.casusbelli.fr/cb_blog/wp-content/share.png" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.casusbelli.fr/cb_blog/webtrends/they-make-apps-2376/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>L&#8217;appel de C(thulhu)</title>
		<link>http://www.casusbelli.fr/cb_blog/inutile/lappel-de-cthulhu-2239</link>
		<comments>http://www.casusbelli.fr/cb_blog/inutile/lappel-de-cthulhu-2239#comments</comments>
		<pubDate>Mon, 11 Jan 2010 14:32:12 +0000</pubDate>
		<dc:creator>0z</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Hard Geeking]]></category>
		<category><![CDATA[Inutile]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[humour]]></category>
		<category><![CDATA[Lovecraft]]></category>

		<guid isPermaLink="false">http://www.casusbelli.fr/cb_blog/?p=2239</guid>
		<description><![CDATA[
Voilà ce qui arrive lorsque l&#8217;on tente d&#8217;appliquer la récursivité au langage C&#8230; On s&#8217;expose au réveil des anciens et à la perte totale de santé mentale&#8230; [via boingboing]
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.casusbelli.fr/cb_blog/uploads/2010/01/cthulhu.png"  rel="lightbox[roadtrip]"><img src="http://www.casusbelli.fr/cb_blog/uploads/2010/01/cthulhu.png" alt="" title="C 4 C(thulhu)" width="500" height="343" class="alignnone size-full wp-image-2240" /></a></p>
<p>Voilà ce qui <a href="http://www.bobhobbs.com/files/kr_lovecraft.html" title="The C Programming Language by Brian W Kernighan &#038; Dennis M Ritchie &#038; HP Lovecraft">arrive</a> lorsque l&#8217;on tente d&#8217;appliquer la récursivité au langage C&#8230; On s&#8217;expose au réveil des anciens et à la perte totale de santé mentale&#8230; <small>[via <a href="http://www.boingboing.net/2010/01/10/if-hp-lovecraft-wrot.html" title="boingboing, if HP Lovecraft wrote C manuals">boingboing</a>]</small></p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.casusbelli.fr%2Fcb_blog%2Finutile%2Flappel-de-cthulhu-2239&amp;linkname=L%26%238217%3Bappel%20de%20C%28thulhu%29" target="_blank"><img src="http://www.casusbelli.fr/cb_blog/wp-content/share.png" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.casusbelli.fr/cb_blog/inutile/lappel-de-cthulhu-2239/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>sc140, tweet me music !</title>
		<link>http://www.casusbelli.fr/cb_blog/musique/sc140-tweet-me-music-2132</link>
		<comments>http://www.casusbelli.fr/cb_blog/musique/sc140-tweet-me-music-2132#comments</comments>
		<pubDate>Thu, 10 Dec 2009 11:00:14 +0000</pubDate>
		<dc:creator>0z</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Musique]]></category>
		<category><![CDATA[generative art]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[SuperCollider]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.casusbelli.fr/cb_blog/?p=2132</guid>
		<description><![CDATA[
Voici une étonnante compilation de musique générative codé par 14 musiciens, en moins de 140 caractères. Avant-gardistes et expérimentales, ces créations utilisent SuperCollider, un langage de programmation open source permettant la synthèse audio en temps réel. A découvrir&#8230; [via Boing Boing]
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.casusbelli.fr/cb_blog/uploads/2009/12/_images__content_wp-content_uploads_2009_11_twitter-music-140-characters.jpg"  rel="lightbox[roadtrip]"><img src="http://www.casusbelli.fr/cb_blog/uploads/2009/12/_images__content_wp-content_uploads_2009_11_twitter-music-140-characters.jpg" alt="" title="twitter-music-140-characters" width="200" height="200" class="aligncenter size-full wp-image-2133" /></a></p>
<p>Voici une étonnante <a href="http://supercollider.sourceforge.net/sc140/">compilation</a> de musique générative codé par 14 musiciens, en moins de 140 caractères. Avant-gardistes et expérimentales, ces créations utilisent <a href="http://en.wikipedia.org/wiki/SuperCollider">SuperCollider</a>, un langage de programmation open source permettant la synthèse audio en temps réel. A découvrir&#8230; [via <a href="http://www.boingboing.net/2009/12/09/computer-music-from.html">Boing Boing</a>]</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.casusbelli.fr%2Fcb_blog%2Fmusique%2Fsc140-tweet-me-music-2132&amp;linkname=sc140%2C%20tweet%20me%20music%20%21" target="_blank"><img src="http://www.casusbelli.fr/cb_blog/wp-content/share.png" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.casusbelli.fr/cb_blog/musique/sc140-tweet-me-music-2132/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FOWD 2009</title>
		<link>http://www.casusbelli.fr/cb_blog/webtrends/fowd-2009-2048</link>
		<comments>http://www.casusbelli.fr/cb_blog/webtrends/fowd-2009-2048#comments</comments>
		<pubDate>Mon, 23 Nov 2009 10:12:03 +0000</pubDate>
		<dc:creator>Zbi</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Graphisme]]></category>
		<category><![CDATA[Webtrends]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[FOWD]]></category>
		<category><![CDATA[intenet explorer must die]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://www.casusbelli.fr/cb_blog/?p=2048</guid>
		<description><![CDATA[We should treat these visual details as rewards for the browsers that support the advanced code… rather than something missing or broken in the browsers that don’t yet support that advanced code. That’s a big shift in thinking for a lot of folks.


—Dan Cederholm, Handcrafted CSS (en parlant de CSS3)

Que s&#8217;est-il dit cette année durant [...]]]></description>
			<content:encoded><![CDATA[<h3>We should treat these visual details as rewards for the browsers that support the advanced code… rather than something missing or broken in the browsers that don’t yet support that advanced code. That’s a big shift in thinking for a lot of folks.</h3>
<h3 style="text-align: right;">
<h3></h3>
<h3>—Dan Cederholm, Handcrafted CSS (en parlant de CSS3)</h3>
</h3>
<p>Que s&#8217;est-il dit cette année durant la conférence Future of Web Design?</p>
<p>Que désormais, on attendrait une certaine consistance dans l&#8217;expérience user et plus sur l&#8217;aspect graphique entre les différents browsers. J&#8217;en connais qui vont prier pour que ça se réalise&#8230;</p>
<p>Le résumé sur <a href="http://www.idsgn.org/posts/user-experience-the-future-of-web-design/" target="_blank">IDSGN</a>, sur <a href="http://www.swiss-miss.com/2009/11/fowd-09-dan-cederholm.html" target="_blank">Swissmiss</a> et les vidéos sur <a href="http://events.carsonified.com/fowd/2009/london/content" target="_blank">Carsonified</a>. Comme tout les ans, ça fait rêver.</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.casusbelli.fr%2Fcb_blog%2Fwebtrends%2Ffowd-2009-2048&amp;linkname=FOWD%202009" target="_blank"><img src="http://www.casusbelli.fr/cb_blog/wp-content/share.png" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.casusbelli.fr/cb_blog/webtrends/fowd-2009-2048/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ahah, jah !</title>
		<link>http://www.casusbelli.fr/cb_blog/coding/ahah-jah-1903</link>
		<comments>http://www.casusbelli.fr/cb_blog/coding/ahah-jah-1903#comments</comments>
		<pubDate>Fri, 30 Oct 2009 13:10:10 +0000</pubDate>
		<dc:creator>0z</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Hard Geeking]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[microformat]]></category>
		<category><![CDATA[rest/ahah]]></category>
		<category><![CDATA[XOXO]]></category>

		<guid isPermaLink="false">http://www.casusbelli.fr/cb_blog/?p=1903</guid>
		<description><![CDATA[En faisant un tour hier soir sur le site dédié aux &#956;Fs [1], j&#8217;ai re-découvert en explorant XOXO [2], une alternative simple à l&#8217;ajax, dénommée ahah [3].

ahah a vu le jour en 2005, enfanté par Kevin Marks (le CV de ce monsieur est plus qu&#8217;impressionnant), sous le nom de jah.
ahah permet comme l&#8217;Ajax de mettre [...]]]></description>
			<content:encoded><![CDATA[<p>En faisant un tour hier soir sur le site dédié aux <abbr title="Microformats, kesako ? Un &mu;F est une façon élégante de marquer les contenus lisibles par les utilisateurs afin d'en faciliter le traitement par les machines. Un des &mu;F les plus utilisé est hCard une représentation conforme du format vCard (utilisé par Microsoft, Apple et la fondation Mozilla entre autres).">&mu;Fs</abbr> <small><a href="http://www.casusbelli.fr/cb_blog/coding/ahah-jah-1903#microformats" title="Plus d'informations" rel="nofollow">[1]</a></small>, j&#8217;ai re-découvert en explorant <abbr title="eXtensible Open XHTML Outlines, une façon efficace d'écrire des listes xml en utilisant la syntaxe xhtml, afin d'être valide dans les deux environnements">XOXO</abbr> <small><a href="http://www.casusbelli.fr/cb_blog/coding/ahah-jah-1903#xoxo" title="Plus d'informations" rel="nofollow">[2]</a></small>, une alternative simple à l&#8217;ajax, dénommée <abbr title="Asynchronous HTML And HTTP">ahah</abbr> <small><a href="http://www.casusbelli.fr/cb_blog/coding/ahah-jah-1903#ahah" title="Plus d'informations" rel="nofollow">[3]</a></small>.<br />
<span id="more-1903"></span></p>
<p><abbr title="Asynchronous HTML And HTTP">ahah</abbr> a vu le jour en 2005, enfanté par <a href="http://en.wikipedia.org/wiki/Kevin_Marks" rel="nofollow" >Kevin Marks</a> (le CV de ce monsieur est plus qu&#8217;impressionnant), sous le nom de <a href="http://homepage.mac.com/kevinmarks/staticjah.html" rel="nofollow" ><abbr title="Just Async HTML ou Javascript Async HTML selon les gouts.">jah</abbr></a>.</p>
<p><abbr title="Asynchronous HTML And HTTP">ahah</abbr> permet comme l&#8217;<acronym title="asynchronous JavaScript + XML">Ajax</acronym> de mettre à jour dynamiquement le contenu d&#8217;une page web. Le principe en est simple, on lance une requête XMLHttpRequest sur un simple fichier xhtml, et on injecte directement le code XHTML dans le conteneur ciblé, sans le parser en XML et sans aucun traitement javascript pour l&#8217;insérer dans le DOM. La contrepartie ? L&#8217;utilisation de la méthode non standard innerHTML qui est tout de même implémentée dans tous les navigateurs majeurs.</p>
<p>Bien que moins connu que l&#8217;<acronym title="asynchronous JavaScript + XML">Ajax</acronym>, <abbr title="Asynchronous HTML And HTTP">ahah</abbr> à été intégré à plusieurs librairie javascript et est disponible par exemple dans le core de drupal, entre autre pour la gestion des formulaires, il fait aussi parti des recommandations du standard <abbr title="World Wide Web Consortium">w3c</abbr> <a href="http://en.wikipedia.org/wiki/XForms">xForms</a>.</p>
<p>L&#8217;idée est très intéressante mais l&#8217;implémentation proposée ne résiste pas à <a href="http://jslint.com/">jslint</a>, mettant en avant l&#8217;usage de trois variables globales, dont la variable stockant la requête, empêchant plusieurs appels simultané à la fonction <code>ahah</code>.</p>
<p>La nuit portant conseil, voici l&#8217;implémentation qui m&#8217;est venue à l&#8217;esprit ce matin, en me faisant mon premier café.</p>
<pre>
var ahah = (function(){
    var request = function () {
        if (window.ActiveXObject) {
            var activexmodes = ["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
            var mode;
            for (var i = 0; i < activexmodes.length; i += 1) {
                var activexmode = activexmodes[i];
                try{
                    if(new ActiveXObject(activexmode)){
                        mode = activexmode;
                    }
                }
                catch(e) {
                }
            }
            request = function () {
                return new ActiveXObject(mode);
            };
        }
        else if (window.XMLHttpRequest) {
            request = function () {
                return new XMLHttpRequest();
            };
        }
        return request();
    };
    return function (url, id) {
        var container = document.getElementById(id);
        container.innerHTML = 'sending...';
        var xhr = request();
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4)
            {
                if (xhr.status === 200) {
                    container.innerHTML = xhr.responseText;
                } else{
                    container.innerHTML = "Jah error: "+xhr.statusText;
                }
            }
        };
        xhr.open("GET", url,  true);
        xhr.send(null);
    };
})();
</pre>
<p>On attribue à <code>ahah</code> la valeur de retour d'une fonction auto éxécutante. Ce retour est une fonction prenant l'url à ouvrir et l'id de l'élément que l'on souhaite peupler. On récupère l'élément que l'on assigne à une <a href="http://fr.wikipedia.org/wiki/Fermeture_(informatique)">closure</a> accessible à la fonction anonyme qui gère le changement d'état et donc l'affichage du retour.</p>
<p>La fonction <code>request</code>, elle aussi stocké dans une closure au début de la fonction auto éxécutante, délivre un object <abbr title="XMLHttpRequest">xhr</abbr> en fonction du navigateur. Au premier appel, elle se réécrit elle même, afin d'éviter les tests répétés. Au final, une seule variable globale, et possibilité d'appels simultanés. Vous pouvez tester <a href="http://casusbelli.fr/sandbox/ahah/">ici</a>.</p>
<dl>
<dt id="microformats"><small>[1] Pour vous renseigner plus avant sur les microformats :</small></dt>
<dd><small><a href="http://microformats.org" rel="nofollow" >microformats.org</a></small></dd>
<dd><small><a href="http://fr.wikipedia.org/wiki/Microformat" rel="nofollow" >article wikipedia</a></small></dd>
<dt id="xoxo"><small>[2] Pour vous renseigner plus avant sur le &mu;F XOXO :</small></dt>
<dd><small><a href="http://microformats.org/wiki/xoxo" rel="nofollow" >spécifications XOXO</a></small></dd>
<dd><small><a href="http://en.wikipedia.org/wiki/XOXO" rel="nofollow" >article wikipedia</a></small></dd>
<dt id="ahah"><small>[3] Pour vous renseigner plus avant sur le &mu;F rest/ahah (anciennement jah) :</small></dt>
<dd><small><a href="http://microformats.org/wiki/rest/ahah" rel="nofollow" >spécifications ahah</a></small></dd>
<dd><small><a href="http://epeus.blogspot.com/2005/05/jah-ajax-without-xml.html" rel="nofollow" >la naissance de jah</a></small></dd>
<dd><small><a href="http://en.wikipedia.org/wiki/AHAH" rel="nofollow" >article wikipedia</a></small></dd>
</dl>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.casusbelli.fr%2Fcb_blog%2Fcoding%2Fahah-jah-1903&amp;linkname=ahah%2C%20jah%20%21" target="_blank"><img src="http://www.casusbelli.fr/cb_blog/wp-content/share.png" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.casusbelli.fr/cb_blog/coding/ahah-jah-1903/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mate mon shell !</title>
		<link>http://www.casusbelli.fr/cb_blog/coding/mate-mon-shell-1825</link>
		<comments>http://www.casusbelli.fr/cb_blog/coding/mate-mon-shell-1825#comments</comments>
		<pubDate>Wed, 21 Oct 2009 10:43:47 +0000</pubDate>
		<dc:creator>0z</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Hard Geeking]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[power user]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.casusbelli.fr/cb_blog/?p=1825</guid>
		<description><![CDATA[
Attention la lecture de ce post n&#8217;est pas recommandée aux âmes sensibles&#8230;

La semaine dernière, dans l&#8217;article sur le livre de Douglas Crockford, je vous présentais une méthode pour utiliser un ECMAScript (dont le javascript est l&#8217;émanation principale) dans votre shell, avec Ejscript.
Il existe bien sûr plusieurs autres méthodes, la plus connue étant Rhino, un interpréteur écrit [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.casusbelli.fr/cb_blog/uploads/2009/10/jscinbash1.png"  rel="lightbox[roadtrip]"><img class="alignnone size-full wp-image-1827" title="jsc in bash" src="http://www.casusbelli.fr/cb_blog/uploads/2009/10/jscinbash1.png" alt="" width="487" height="319" /></a></p>
<p>Attention la lecture de ce post n&#8217;est pas recommandée aux âmes sensibles&#8230;</p>
<p><span id="more-1825"></span></p>
<p>La semaine dernière, dans l&#8217;article sur le livre de Douglas Crockford, je vous présentais une méthode pour utiliser un <a href="http://fr.wikipedia.org/wiki/Ecmascript" target="_blank">ECMAScript</a> (dont le javascript est l&#8217;émanation principale) dans votre shell, avec <a href="http://www.ejscript.org/index.html" target="_blank">Ejscript</a>.</p>
<p>Il existe bien sûr plusieurs autres méthodes, la plus connue étant <a href="http://www.mozilla.org/rhino/" target="_blank">Rhino</a>, un interpréteur écrit en Java. Les plus aventureux seront sans doute tentés par la compilation pure et dure du <a href="https://developer.mozilla.org/fr/Introduction_au_shell_JavaScript" target="_blank">noyau javascript de mozilla</a>. Sous windows, dans le powershell, l&#8217;utilitaire <code>cscript</code> remplit cet office.</p>
<p>Sous OSX, Je cherchais depuis un petit moment comment utiliser le moteur javascript de webkit pour faire la même chose. Au détour de mes pérégrinations, je suis tombé sur ce <a href="http://www.phpied.com/javascript-shell-scripting/" target="_blank">post</a> de Stoyan, dont le livre <a href="http://www.packtpub.com/object-oriented-javascript-applications-libraries/book">Object-Oriented JavaScript</a> explique très bien la programmation objet propre à ce langage et ses différences avec des modèles dit classiques.</p>
<p>En résumé, le noyeau javascript de webkit est caché dans ce répertoire :</p>
<pre>/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc</pre>
<p>Pour l&#8217;utiliser dans votre shell, il vous suffit d&#8217;ajouter le chemin à votre PATH, ou de créer un lien dans un répertoire exposé (ici <code>/usr/bin</code>, mais j&#8217;ai une préférence pour <code>/usr/local/bin</code> ou même <code>/opt/bin</code>):</p>
<pre>$ sudo ln /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc \
/usr/bin/jsc</pre>
<p>Un petit tour dans l&#8217;aide :</p>
<pre>$ jsc -h
Usage: jsc [options] [files] [-- arguments]
  -d         Dumps bytecode (debug builds only)
  -e         Evaluate argument as script code
  -f         Specifies a source file (deprecated)
  -h|--help  Prints this help message
  -i         Enables interactive mode (default if no files are specified)
  -s         Installs signal handlers that exit on a crash (Unix platforms only)</pre>
<p>Lancé sans option, jsc est en mode interpréteur et vous permet d&#8217;évaluer ligne à ligne votre code. </p>
<p>Avec un nom de fichier, il exécute le script vous permettant de passer des arguments après le délimiteur <code>--</code> :</p>
<pre>$ jsc arg.js -- 1 2 3</pre>
<p>Ces arguments pourront être récupérés par le classique <code>arguments</code>.</p>
<p>Trois fonctions utiles dans cette environnement :</p>
<ul>
<li><code>print()</code>: pour afficher dans le terminal</li>
<li><code>quit()</code>: quitte <code>jsc</code></li>
<li><code>load()</code>: charge et exécute un fichier externe</li>
</ul>
<p>Vous n&#8217;avez plus d&#8217;excuses pour ne pas utiliser vos scripts javascript en local.</p>
<p>[EDIT]:<br />
En continuant mes recherches, j&#8217;ai découvert un post plus ancien <a href="http://www.pulletsforever.com/pulletsforever/Pullets_Forever_Blog/Entries/2009/7/12_Running_JSLint_with_Safaris_JavaScript_Core.html">ici</a> qui décrit en plus comment utiliser <a href="http://www.jslint.com/">jslint</a> dans le shell, ce qui facilitera les étapes de debugs.<br />
Si vous utilisez textmate, voici des <a href="http://wonko.com/post/pretty-jslint-output-for-textmate">instructions</a> pour intégrer jslint (en partie dans les commentaires et sur le blog de Stoyan).</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.casusbelli.fr%2Fcb_blog%2Fcoding%2Fmate-mon-shell-1825&amp;linkname=Mate%20mon%20shell%20%21" target="_blank"><img src="http://www.casusbelli.fr/cb_blog/wp-content/share.png" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.casusbelli.fr/cb_blog/coding/mate-mon-shell-1825/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Bonnes parties ?</title>
		<link>http://www.casusbelli.fr/cb_blog/coding/bonnes-parties-1790</link>
		<comments>http://www.casusbelli.fr/cb_blog/coding/bonnes-parties-1790#comments</comments>
		<pubDate>Thu, 15 Oct 2009 13:33:11 +0000</pubDate>
		<dc:creator>0z</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Hard Geeking]]></category>
		<category><![CDATA[Douglas Crockford]]></category>
		<category><![CDATA[ejscript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[John Resig]]></category>
		<category><![CDATA[livre]]></category>

		<guid isPermaLink="false">http://www.casusbelli.fr/cb_blog/?p=1790</guid>
		<description><![CDATA[
Ces derniers temps, je code essentiellement en javascript et ce de manière assez intensive. Nombre des ressources disponibles à ce sujet n&#8217;ont que très peu d&#8217;intérêt, mais pourtant au milieu de cette masse, il existe un livre qui sort réellement du lot : Javascript: The Good Parts de Douglas Crockford chez O&#8217;REILLY.

Douglas Crockford est une [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.casusbelli.fr/cb_blog/uploads/2009/10/thegoodparts.png"  rel="lightbox[roadtrip]"><img class="alignnone size-full wp-image-1791" title="Javascript The Good Parts" src="http://www.casusbelli.fr/cb_blog/uploads/2009/10/thegoodparts.png" alt="" width="500" height="277" /></a></p>
<p>Ces derniers temps, je code essentiellement en javascript et ce de manière assez intensive. Nombre des ressources disponibles à ce sujet n&#8217;ont que très peu d&#8217;intérêt, mais pourtant au milieu de cette masse, il existe un livre qui sort réellement du lot : <a href="9780596517748" target="_blank">Javascript: The Good Parts</a> de <a href="http://www.crockford.com/" target="_blank">Douglas Crockford</a> chez O&#8217;REILLY.</p>
<p><span id="more-1790"></span></p>
<p>Douglas Crockford est une des grandes autorités en matière de js. Il est à l&#8217;origine de plusieurs livres et <a href="http://javascript.crockford.com/javascript.html" target="_self">essais</a> sur le sujet, mais surtout de plusieurs outils et extensions pour ce langage, comme par exemple JSlint (un vérificateur de code), JSMin et surtout Json, le format léger de données dérivé de la notation des objets js.</p>
<p>Dans The Good Parts, il se propose de réduire la syntaxe js aux éléments vraiment pertinents qui font la force et la beauté de ce &laquo;&nbsp;Lisp en habit de C&nbsp;&raquo;, tout en écartant les nombreuses monstruosités incluses dans le langages tel que <code>eval</code>, <code>with</code>, la gestion aberrante de <code>==</code>, et surtout l&#8217;utilisation des variables par défaut globales.</p>
<p>Autre force du livre, il expose le modèle objet du js, hérité de <a href="http://en.wikipedia.org/wiki/Self_(programming_language)" target="_blank">self</a>, sans le grimer avec des ersatz de déclarartion de classe emprunté au Java ou au C++. Ce modèle basé sur les <a href="http://en.wikipedia.org/wiki/Prototype-based_programming">prototypes</a> (clonage d&#8217;un objet) est sans doute une des forces du langage, et Crockford la maîtrise parfaitement passant outre le mot clé batard <code>new</code>. Avec en sus, un modèle objet fonctionnel permettant propriétés et méthodes privées et utilisant les closures, un autre avantage du langage&#8230;</p>
<p><span style="text-decoration: underline;">ex:</span></p>
<pre>var mammal = function (spec) {
    var private = "mamal";
    var that = {};

    that.get_name = function (  ) {
        return spec.name;
    };

    that.says = function (  ) {
        return spec.saying || '';
    };

    that.specie = function (  ) {
        return private;
    };

    return that;
};
var myMammal = mammal({name: 'Herb'});
document.writeln(myMammal.get_name());
document.writeln(myMammal.specie());</pre>
<p>Alors si vous n&#8217;avez qu&#8217;un livre à lire sur le sujet, n&#8217;hésitez plus et passez la barre de l&#8217;anglais&#8230;</p>
<p>Dans le même registre, sur le site de John Resig, le créateur de jQuery, vous trouverez un excellent <a href="http://ejohn.org/apps/learn/">tutorial</a> sur le sujet, issu de son prochain livre qui devrait sortir très prochainement et qui s&#8217;appellera <a href="http://jsninja.com/">Secrets of the JavaScript Ninja</a>.</p>
<p>Enfin, si vous ne pouvez plus vous passer de Javascript et avez envie d&#8217;utiliser un ECMAscript côté serveur ou en tant que langage  shell, je vous conseille le très intéressant <a href="http://www.ejscript.org/index.html">ejscript</a>&#8230;</p>
<a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?linkurl=http%3A%2F%2Fwww.casusbelli.fr%2Fcb_blog%2Fcoding%2Fbonnes-parties-1790&amp;linkname=Bonnes%20parties%20%3F" target="_blank"><img src="http://www.casusbelli.fr/cb_blog/wp-content/share.png" alt="Share/Bookmark"/></a>]]></content:encoded>
			<wfw:commentRss>http://www.casusbelli.fr/cb_blog/coding/bonnes-parties-1790/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
