<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://syndication.thedailywtf.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://syndication.thedailywtf.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
	<channel>
		<title>The Daily WTF: Edition Française</title> 
		<link>http://fr.thedailywtf.com/</link> 
		<description>Curious Perversions in Information Technology</description> 

		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://syndication.thedailywtf.com/WTF/FR" type="application/rss+xml" /><item>
			<author>Jocelyn Demoy</author> 
			<title>Article de fond: Test Driven Marketing (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/289191985/Test-Driven-Marketing-(T).aspx</link> 
			<category>Article de fond</category>
			<pubDate>Tue, 13 May 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6062</guid> 
			<description>&lt;p&gt; 1999 fut une grosse ann&amp;eacute;e pour les publications &lt;a href="http://hbsp.org/" target="_new"&gt;Harvard Business School&lt;/a&gt;. Dans les ann&amp;eacute;es pass&amp;eacute;es, ils avaient vu leur &amp;quot;business model&amp;quot; - vente de livres, journaux, articles, &amp;eacute;tudes de cas, et autres - se transformer de vente sur catalogue papier vers une boutique en ligne, pour aujourd'hui n&amp;eacute;cessiter une refonte totale du site web.&lt;/p&gt;
&lt;p&gt; Le nouveau site web d'HSBP &amp;eacute;tait au top. En plus d'un syst&amp;egrave;me de recherche plut&amp;ocirc;t avanc&amp;eacute;, le nouveau design du site proposait aussi des forums communautaires et une section appel&amp;eacute;e &amp;quot;Id&amp;eacute;es en route&amp;quot;, qui permettait aux utilisateurs de t&amp;eacute;l&amp;eacute;charger partout dans le monde des messages audio issus de penseurs influant dans le monde du business. Malgr&amp;eacute; le rapide d&amp;eacute;veloppement du projet, le cahier des charges flou, et la gestion de projet h&amp;eacute;sitante, le nouveau site fonctionnait correctement. Dans les leaders du .com, peu d'autres sites pouvaient en dire autant &amp;agrave; l'&amp;eacute;poque. &lt;/p&gt;
&lt;p&gt; Une des cl&amp;eacute;s du succ&amp;egrave;s du nouveau site des publications Harvard Business School c'&amp;eacute;tait la prise en compte des tests et de l'assurance qualit&amp;eacute; dans leur cycle de d&amp;eacute;veloppement. Les analystes d&amp;eacute;velopp&amp;egrave;rent toutes sortes de tests qui couvraient virtuellement chaque aspect du site. Ils travaill&amp;egrave;rent en &amp;eacute;troite collaboration avec le d&amp;eacute;partement logistique d'HSBP pour s'assurer que les tests - recherche, validation, gestion des clients, etc. - &amp;eacute;taient effectu&amp;eacute;s, et l'&amp;eacute;taient souvent. &lt;/p&gt;
&lt;p&gt; Cette strat&amp;eacute;gie de tests intensifs validait que le site fonctionnerait comme pr&amp;eacute;vu dans les ann&amp;eacute;es qui allaient suivre. Et c'est ce qu'il se passa, tout du moins avant un jour de 2002. Ce jour l&amp;agrave;, un des cas de test passa en &amp;eacute;chec : le &amp;quot;test de r&amp;eacute;sultat unique&amp;quot;. &lt;/p&gt;
&lt;p&gt; Le &amp;quot;Test de r&amp;eacute;sultat unique&amp;quot; faisait partie d'un trio de cas de tests pens&amp;eacute;s pour tester la logique de recherche du syst&amp;egrave;me. Tout comme le test &amp;quot;aucun r&amp;eacute;sultat&amp;quot;, qui revenait &amp;agrave; effectuer une recherche sur &amp;quot;&lt;em&gt;asdfasdf&lt;/em&gt;&amp;quot; pour ne produire aucun r&amp;eacute;sultat, et le test &amp;quot;plusieurs r&amp;eacute;sultats&amp;quot;, qui consistait &amp;agrave; effectuer une recherche sur &amp;quot;management&amp;quot; pour produire plusieurs pages de r&amp;eacute;sultats, le &amp;quot;Test de r&amp;eacute;sultat unique&amp;quot; effectuait une recherche - en l'occurrence &amp;quot;&lt;em&gt;monkey&lt;/em&gt;&amp;quot; - pour v&amp;eacute;rifier que le syst&amp;egrave;me retournait exactement un r&amp;eacute;sultat. &lt;/p&gt;
&lt;p&gt; Et pendant trois ans, &amp;quot;&lt;em&gt;monkey&lt;/em&gt;&amp;quot; retourna exactement un r&amp;eacute;sultat : &lt;em&gt;&lt;a href="http://hbsp.org/b01/en/common/item_detail.jhtml?id=99609" target="_new"&gt;Who's Got The Monkey?&lt;/a&gt; &lt;/em&gt;par William Oncken Jr. &amp;eacute;crit en 1974. L'article d'Oncken est destin&amp;eacute; aux managers qui &amp;quot;se retrouvent surcharg&amp;eacute; de travail pendant que leur subordonn&amp;eacute;s baillent aux corneilles&amp;quot;. Quant aux singes, ils sont simplement l'analogie du travail, et non pas ceux pour lesquels les managers devraient &lt;a href="http://www.newtechusa.com/ppi/main.asp" target="_new"&gt;soutraiter le travail&lt;/a&gt;. Apparement, Oncken n'&amp;eacute;tait pas si en avance que &amp;ccedil;a sur son temps. &lt;/p&gt;
&lt;p&gt; En tout cas, un jour de 2002, la recherche &amp;quot;monkey&amp;quot; retourna deux r&amp;eacute;sultats. Le premier, comme attendu &amp;eacute;tait &lt;em&gt;Who's Got The Monkey?&lt;/em&gt;. Le deuxi&amp;egrave;me &amp;eacute;tait &lt;em&gt;Who's Got The Monkey Now?&lt;/em&gt;, une r&amp;eacute;&amp;eacute;dition du Best seller de HBSP : &lt;em&gt;Who's Got The Monkey?&lt;/em&gt;. Bien s&amp;ucirc;r, le &amp;quot;Test de r&amp;eacute;sultat unique&amp;quot; n&amp;eacute;cessitait une simple mise &amp;agrave; jour des d&amp;eacute;veloppeurs, rien de bien m&amp;eacute;chant. Mais, intrigu&amp;eacute;s, ils d&amp;eacute;cid&amp;egrave;rent de regarder un peu plus en d&amp;eacute;tail ... &lt;/p&gt;
&lt;p&gt; Dans le cadre de la strat&amp;eacute;gie de tests intensifs dont on parlait plus t&amp;ocirc;t, l'&amp;eacute;quipe logistique d'HSBP remplissait son temps libre en ex&amp;eacute;cutant des tests unitaires. D'abord ils ex&amp;eacute;cutaient le test &amp;quot;aucun r&amp;eacute;sultat&amp;quot; puis le test &amp;quot;plusieurs r&amp;eacute;sultats&amp;quot; et ensuite le &amp;quot;Test de r&amp;eacute;sultat unique&amp;quot;. Ensuite, ils ajoutaient ce r&amp;eacute;sultat unique - &lt;em&gt;Who's Got The Monkey&lt;/em&gt;?- au panier, cr&amp;eacute;aient un nouveau compte client, soumettaient la commande et la validaient. Bien s&amp;ucirc;r, ils ne la validaient pas totalement - chacun savait que les commandes pour &amp;quot;Mr test test&amp;quot; et &amp;quot;123 rue du test&amp;quot; n'&amp;eacute;taient pas valid&amp;eacute;es. Chacun ... ou presque, le d&amp;eacute;partement marketing lui, l'ignorait. &lt;/p&gt;
&lt;p&gt;&lt;img class="wtf_imgfloatright" style="margin: 5px; float: right;" alt="" src="http://thedailywtf.com/images/200802/monkey2.jpg" /&gt; Quand le d&amp;eacute;partement marketing d'HSBP analysa les courbes de ventes, ils remarqu&amp;egrave;rent une tendance assez int&amp;eacute;ressante. &lt;em&gt;Who's Got The Monkey?&lt;/em&gt; &amp;eacute;tait LE best seller! Et comme tout d&amp;eacute;partement marketing aurait fait, ils ont fonc&amp;eacute;. HBSP cr&amp;eacute;a des brochures et des produits promotionnels du livre. Ils sont m&amp;ecirc;me all&amp;eacute;s jusqu'&amp;agrave; repackager cette boite de singes en plastiques en &amp;quot;les singes de &lt;em&gt;Who's Got The Monkey?&lt;/em&gt;&amp;quot;. Et finalement, en 2002, la version mise &amp;agrave; jour de&amp;nbsp; &lt;em&gt;Who's Got The Monkey?&lt;/em&gt; fut publi&amp;eacute;e par HSBP, cette m&amp;ecirc;me version fut retrouv&amp;eacute;e par le syst&amp;egrave;me de recherche qui, au final, causa l'&amp;eacute;chec du  &amp;quot;Test de r&amp;eacute;sultat unique&amp;quot;. &lt;/p&gt;
&lt;p&gt; Bien s&amp;ucirc;r, &amp;agrave; ce moment, il &amp;eacute;tait trop tard pour agir. Le succ&amp;egrave;s illusoire de &lt;em&gt;Who's got the monkey?&lt;/em&gt; avait d&amp;eacute;j&amp;agrave; &amp;eacute;t&amp;eacute; largement communiqu&amp;eacute; comme une r&amp;eacute;alit&amp;eacute;. Avec toutes les critiques et commentaires qui en d&amp;eacute;coulaient (dont beaucoup sont &lt;a target="_new" href="http://www.google.com/search?q=%22Who%27s+Got+the+Monkey%22+best+seller"&gt;toujours visibles&lt;/a&gt;) &amp;ccedil;a aurait m&amp;ecirc;me pu devenir un vrai best seller. Inutile de dire que HSBP a depuis chang&amp;eacute; sa politique de tests intensifs. &lt;/p&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/289191985" height="1" width="1"/&gt;</description> 
			<slash:comments>1</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Test-Driven-Marketing-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Test-Driven-Marketing-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Mais ça marchait pendant la démo (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/285128483/Mais-ca-marchait-pendant-la-demo-(T).aspx</link> 
			<category>Code du jour</category>
			<pubDate>Wed, 07 May 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6047</guid> 
			<description>&lt;p&gt;On est tous pass&amp;eacute; par l&amp;agrave; : tous nos tests unitaires fonctionnaient la veille mais quand il s'agit de lancer la d&amp;eacute;mo vous r&amp;eacute;alisez que vous avez oubli&amp;eacute; quelque chose. Depuis, on a invent&amp;eacute; la revue de code. Non pas qu'il y ait moins de bug, vous vous sentez juste mieux puisque quelqu'un d'autre a rat&amp;eacute; le probl&amp;egrave;me. &lt;/p&gt;
&lt;p&gt; Par chance pour les amis de Christian, il a l'&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;oelig;il&lt;/span&gt;. Quand un de ses coll&amp;egrave;gues atterrit dans une &amp;eacute;quipe projet assign&amp;eacute;e al&amp;eacute;atoirement, Christian jeta un coup d'&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;oelig;il &lt;/span&gt;au code. Apparemment, &amp;quot;Karl&amp;quot;, la personne en charge du module d'authentification n'&amp;eacute;tait pas attentif aux critiques du moment que son test unitaire passait. &lt;/p&gt;
&lt;p&gt; S'il avait seulement un utilisateur &amp;quot;utilisateurtest&amp;quot; dans la base de donn&amp;eacute;es, le test en question fonctionnait, et rapidement en plus. &lt;/p&gt;
&lt;pre&gt;  public void Authenticate( string username, string passhash )&lt;br /&gt;  {&lt;br /&gt;      SqlDataReader source = _Database.Query(&amp;quot;SELECT * FROM users;&amp;quot;);&lt;br /&gt;&lt;br /&gt;      while ( source.Read() )&lt;br /&gt;      {&lt;br /&gt;          if ( source[&amp;quot;user&amp;quot;].ToString() == username&lt;br /&gt;          &amp;amp;&amp;amp;   source[&amp;quot;pass&amp;quot;].ToString() == passhash )&lt;br /&gt;          {&lt;br /&gt;              this.authenticated = true;&lt;br /&gt;          }&lt;br /&gt;          else&lt;br /&gt;          {&lt;br /&gt;              this.authenticated = false;&lt;br /&gt;          }&lt;br /&gt;         &lt;br /&gt;      }&lt;br /&gt;  }&lt;/pre&gt;
&lt;p&gt; Quand notre h&amp;eacute;ros ajouta 10K lignes al&amp;eacute;atoires dans la base de donn&amp;eacute;es, le test unitaire &amp;eacute;tait certes tr&amp;egrave;s lent, mais passait toujours et la d&amp;eacute;mo fonctionnait. Karl fut mieux &amp;eacute;clair&amp;eacute; sur le probl&amp;egrave;me seulement lorsque Christian s'assura que &amp;quot;utilisateurtest&amp;quot; n'&amp;eacute;tait pas la derni&amp;egrave;re entr&amp;eacute;e dans la base de donn&amp;eacute;es. Apr&amp;egrave;s &amp;ccedil;a, lui et Karl ont pass&amp;eacute; quelque temps &amp;agrave; discuter du concept de la clause WHERE. &lt;/p&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/285128483" height="1" width="1"/&gt;</description> 
			<slash:comments>5</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Mais-ca-marchait-pendant-la-demo-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Mais-ca-marchait-pendant-la-demo-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Try Catch ... Return ! (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/284396994/Try-Catch--Return-!-(T).aspx</link> 
			<category>Code du jour</category>
			<pubDate>Tue, 06 May 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6046</guid> 
			<description>&lt;p&gt;&lt;strong&gt;Don&lt;/strong&gt; nous propose un bout de code sur l'envoi d'email, avec une fa&amp;ccedil;on plut&amp;ocirc;t sp&amp;eacute;ciale de g&amp;eacute;rer les exceptions :  &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;public Exception SendMail(&lt;br /&gt;      string Template,&lt;br /&gt;      Person Sender,&lt;br /&gt;      Person Receiver,&lt;br /&gt;      string Subject )&lt;br /&gt;  {&lt;br /&gt;     try&lt;br /&gt;     {&lt;br /&gt;        if ( Template.EndsWith(&amp;quot;.tmp&amp;quot;) == false )&lt;br /&gt;           Template += &amp;quot;.tmp&amp;quot;;&lt;br /&gt;&lt;br /&gt;        string Body = _Templates[Template];&lt;br /&gt;&lt;br /&gt;        // %%SomeWord%%&lt;br /&gt;        Regex word = new Regex(&amp;quot;\u0025\u0025[a-zA-Z]+\u0025\u0025&amp;quot;);&lt;br /&gt;&lt;br /&gt;        foreach ( Match match in word.Matches(Body) )&lt;br /&gt;        {&lt;br /&gt;           switch ( match.Value.Replace(&amp;quot;%%&amp;quot;, &amp;quot;&amp;quot;).toLower() )&lt;br /&gt;           {&lt;br /&gt;              case &amp;quot;username&amp;quot;:&lt;br /&gt;                 Body = Body.Replace(&amp;quot;%%username%%&amp;quot;,  Receiver.UserName);&lt;br /&gt;                 break;&lt;br /&gt;              case &amp;quot;password&amp;quot;:&lt;br /&gt;                 Body = Body.Replace(&amp;quot;%%password%%&amp;quot;,  Receiver.Password);&lt;br /&gt;                 break;&lt;br /&gt;              case &amp;quot;FirstName&amp;quot;:&lt;br /&gt;                 Body = Body.Replace(&amp;quot;%%firstname%%&amp;quot;, Receiver.GivenName);&lt;br /&gt;                 break;&lt;br /&gt;              case &amp;quot;LastName&amp;quot;:&lt;br /&gt;                 Body = Body.Replace(&amp;quot;%%lastname%%&amp;quot;,  Receiver.FamilyName);&lt;br /&gt;                 break;&lt;br /&gt;           }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        MailMessage mm = new MailMessage();&lt;br /&gt;        mm.From    = Sender.WorkAddr;&lt;br /&gt;        mm.To      = Receiver.HomeAddr;&lt;br /&gt;        mm.Subject = Subject;&lt;br /&gt;        mm.Body    = Body;&lt;br /&gt;&lt;br /&gt;        SmtpMail.SmtpServer = &amp;quot;mx.domain.net&amp;quot;;&lt;br /&gt;        SmtpMail.Send(mm);&lt;br /&gt;     }&lt;br /&gt;     catch ( Exception ex ) { return ex; }&lt;br /&gt;&lt;br /&gt;     return null;&lt;br /&gt;  }&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Peut &amp;ecirc;tre n'ai-je pas compris la fa&amp;ccedil;on dont les exceptions sont sens&amp;eacute;es fonctionner, mais je n'ai jamais ressenti le besoin d'en retourner une, uniquement de les lever. Au passage, &amp;ccedil;a doit &amp;ecirc;tre assez rare de r&amp;eacute;ussir &amp;agrave; obtenir un nom et pr&amp;eacute;nom correct dans le mail envoy&amp;eacute;. Saurez vous trouver pourquoi?&lt;/p&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/284396994" height="1" width="1"/&gt;</description> 
			<slash:comments>6</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Try-Catch--Return-!-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Try-Catch--Return-!-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Message d'erreur: SSII française recherche jeunes diplômés bénévoles.</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/283703422/SSII-francaise-recherche-jeunes-diplomes-benevoles.aspx</link> 
			<category>Message d'erreur</category>
			<pubDate>Mon, 05 May 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6052</guid> 
			<description>&lt;p&gt;A la une : la requ&amp;ecirc;te pour afficher au hasard un salon qui d&amp;eacute;bute le 22 avril, qui a &amp;eacute;t&amp;eacute; valid&amp;eacute; et qui a une photo. &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/pe.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bob&lt;/strong&gt; trouve easy php &amp;quot;peut-&amp;ecirc;tre pas si facile que &amp;ccedil;a tout compte fait&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/easyphp.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mehdi&lt;/strong&gt; nous informe d'une promotion tr&amp;egrave;s int&amp;eacute;ressante concernant l'aller retour &amp;quot;Paris gare fictive 1&amp;quot; &amp;agrave; &amp;quot;Paris gare fictive 2&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/gare_fictive.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Caroline&lt;/strong&gt; nous dit&amp;nbsp; &amp;quot;En pleine partie de solitaire de Windows, je suis tomb&amp;eacute;e sur ce petit bug&amp;quot;. Malchanceuse ou adepte de paint ? &amp;agrave; vous de juger.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/solitaire.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Atos Origin&lt;/strong&gt; &lt;a href="http://www.latribune.fr/info/ID2FEE09130D1870D1C125743B0021AC65" target="_new"&gt;confirme l'am&amp;eacute;lioration de son activit&amp;eacute;&lt;/a&gt;.... et pour cause !&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/cheap2.JPG" /&gt;&lt;/p&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/283703422" height="1" width="1"/&gt;</description> 
			<slash:comments>7</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/SSII-francaise-recherche-jeunes-diplomes-benevoles.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/SSII-francaise-recherche-jeunes-diplomes-benevoles.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Article de fond: Sauvegarde impeccable (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/280554572/Sauvegarde-impeccaple-(T).aspx</link> 
			<category>Article de fond</category>
			<pubDate>Wed, 30 Apr 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6040</guid> 
			<description>&lt;p&gt;Loi de Murphy 198&amp;sect;44 : Plus une solution de backup est compliqu&amp;eacute;e, moins il est probable qu&amp;rsquo;elle soit utilis&amp;eacute;e.&lt;/p&gt;
&lt;p&gt;Avec presque un demi-si&amp;egrave;cle d&amp;rsquo;exp&amp;eacute;rience dans l&amp;rsquo;utilisation de l&amp;rsquo;outil informatique pour faire tourner son entreprise,  la soci&amp;eacute;t&amp;eacute; de Chris M connaissait cette loi parfaitement. Enfin, jusqu'&amp;agrave; ce mercredi fatidique encore connu &amp;agrave; ce jour comme le crash de 68 &amp;ndash; o&amp;ugrave; ils jur&amp;egrave;rent de ne jamais s&amp;rsquo;y faire reprendre. Quarante ans plus tard, leur promesse &amp;eacute;tait tenue.&lt;/p&gt;
&lt;p&gt;Au fil des ans, l&amp;rsquo;employeur de Chris s&amp;rsquo;&amp;eacute;tait rapproch&amp;eacute; de l&amp;rsquo;infrastructure informatique parfaite.  Ils avaient engag&amp;eacute; les meilleurs administrateurs r&amp;eacute;seau que leur budget leur permettait et leur donnaient sans contraintes les ressources n&amp;eacute;cessaires pour s&amp;rsquo;assurer de la solidit&amp;eacute; de l&amp;rsquo;infrastructure. Et c&amp;rsquo;est ce qu&amp;rsquo;ils faisaient.&lt;/p&gt;
&lt;p&gt;Le plan de sauvegarde et de reprise d&amp;rsquo;activit&amp;eacute; de la soci&amp;eacute;t&amp;eacute; &amp;eacute;tait impeccable. Chaque syst&amp;egrave;me qu&amp;rsquo;ils avaient achet&amp;eacute; &amp;ndash; de ce vieux programme de paie sur le System/360 &amp;agrave; cette base de donn&amp;eacute;es pour l&amp;rsquo;OS/2 &amp;ndash; pouvait &amp;ecirc;tre r&amp;eacute;activ&amp;eacute;, soit physiquement, soit en passant par de la virtualisation. Un passage par leur &amp;laquo; architecture logicielle &amp;raquo; &amp;eacute;tait une &amp;eacute;preuve pour beaucoup ; Les nouveaux techniciens sont souvent &amp;eacute;tonn&amp;eacute;s d&amp;rsquo;apprendre, non seulement l&amp;rsquo;existence des disquettes 5p1/4  mais aussi que la soci&amp;eacute;t&amp;eacute; avait toujours les disquettes d&amp;rsquo;installation pour CP/M, ainsi qu&amp;rsquo;un lecteur pour les ex&amp;eacute;cuter.&lt;/p&gt;
&lt;p&gt; Naturellement, gr&amp;acirc;ce &amp;agrave; la loi de Murphy cit&amp;eacute;e pr&amp;eacute;c&amp;eacute;demment, cette sauvegarde &amp;eacute;labor&amp;eacute;e est rarement, voir jamais, appel&amp;eacute;e &amp;agrave; &amp;ecirc;tre utilis&amp;eacute;e. Le seul cas o&amp;ugrave; les techniciens r&amp;eacute;seau peuvent &amp;ecirc;tre sur la br&amp;egrave;che c&amp;rsquo;est lors du traditionnel  &amp;laquo;  Oh Zut ! J&amp;rsquo;ai accidentellement supprim&amp;eacute; cette pr&amp;eacute;sentation PowerPoint critique &amp;raquo;. Et encore, cela est simple &amp;agrave; r&amp;eacute;soudre en guidant l&amp;rsquo;utilisateur &amp;agrave; travers l&amp;rsquo;utilitaire de restauration int&amp;eacute;gr&amp;eacute; &amp;agrave; son poste.&lt;/p&gt;
&lt;p&gt; Un jour, les techniciens r&amp;eacute;seau relev&amp;egrave;rent une demande de restauration qui semblait int&amp;eacute;ressante. Un manager de la production avait besoin d&amp;rsquo;un rapport d&amp;rsquo;un &amp;laquo; vieux vieux &amp;raquo; syst&amp;egrave;me plus en production. &amp;laquo; Vieux vieux &amp;raquo; se r&amp;eacute;f&amp;eacute;rant &amp;agrave; un ancien syst&amp;egrave;me mainframe qui avait &amp;eacute;t&amp;eacute; remplac&amp;eacute; par le &amp;laquo; vieux &amp;raquo; syst&amp;egrave;me depuis dix ans pour &amp;ecirc;tre finalement arr&amp;ecirc;t&amp;eacute; en 2001. Restaurer le &amp;laquo; vieux vieux &amp;raquo; syst&amp;egrave;me signifiait installer un nouvel environnement &amp;eacute;mul&amp;eacute;, monter les vieilles images disques et prier que cela d&amp;eacute;marre sans accros. &lt;/p&gt;
&lt;p&gt; C&amp;rsquo;&amp;eacute;tait en fait la premi&amp;egrave;re fois qu&amp;rsquo;un utilisateur demandait une telle restauration, aussi, les techniciens r&amp;eacute;seau &amp;eacute;taient un peu nerveux. Mais, gr&amp;acirc;ce &amp;agrave; leurs m&amp;eacute;thodes m&amp;eacute;ticuleuses, tout se passa bien. Le syst&amp;egrave;me d&amp;eacute;marra sans probl&amp;egrave;me et le manager de la production fut appel&amp;eacute; &amp;agrave; se connecter sur le terminal que l&amp;rsquo;on avait install&amp;eacute; pour lui. Il s&amp;rsquo;assit dans sa chaise, tapa son nom d&amp;rsquo;utilisateur, et ensuite marqua une pause pendant un moment. &lt;/p&gt;
&lt;p&gt; &amp;laquo; Maintenant, quel &amp;eacute;tait mon mot de passe il y a cinq ans ? &amp;raquo; &lt;/p&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/280554572" height="1" width="1"/&gt;</description> 
			<slash:comments>5</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Sauvegarde-impeccaple-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Sauvegarde-impeccaple-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Jouons avec les maths (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/279858480/Jouons-avec-les-maths-(T).aspx</link> 
			<category>Code du jour</category>
			<pubDate>Tue, 29 Apr 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6037</guid> 
			<description>&lt;p&gt;&lt;strong&gt;Ward&lt;/strong&gt; n&amp;rsquo;est pas un d&amp;eacute;veloppeur chanceux. Lorsque les deux principaux (et uniques) d&amp;eacute;veloppeurs de l&amp;rsquo;application flash furent licenci&amp;eacute;s, il fut appel&amp;eacute; pour nettoyer leur bazar. Voici ce qu&amp;rsquo;il nous raconte :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt; Il y a quelques mois, je me suis vu demander d&amp;rsquo;effectuer quelques l&amp;eacute;g&amp;egrave;res modifications (5 heures de travail) sur une application faite par ces deux d&amp;eacute;veloppeurs (ils l&amp;rsquo;ont faite ensemble ce qui empire les choses). Cette application est pour une agence gouvernementale qui avait d&amp;eacute;j&amp;agrave; pay&amp;eacute; pour les mises &amp;agrave; jour &amp;agrave; effectuer. On me demandait simplement de remplacer la base de donn&amp;eacute;es avec une version mise &amp;agrave; jour, de compiler l&amp;rsquo;installeur et d&amp;rsquo;exp&amp;eacute;dier le tout.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Cela semblait plut&amp;ocirc;t facile mais apr&amp;egrave;s 150 heures de travail, 20K de lignes de code, une visite d&amp;rsquo;un des anciens d&amp;eacute;veloppeurs, il trouvait encore des perles comme :&lt;/p&gt;
&lt;blockquote&gt;// find the next &amp;quot;value&amp;quot; divisible by &amp;quot;value&amp;quot;&lt;br /&gt;
&lt;pre&gt;  value += 1&lt;br /&gt;  while ( 0 &amp;lt;&amp;gt; value%step )&lt;br /&gt;  {&lt;br /&gt;      value += 1&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;et&lt;br /&gt;&lt;br /&gt;// is value negative?&lt;br /&gt;  if ( &amp;quot;-&amp;quot; == value.toString().substr(0,1) )&lt;br /&gt;  {&lt;br /&gt;      // value is negative&lt;br /&gt;      ...&lt;br /&gt;  }&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt; Inutile de dire que Ward fut ravi quand son manageur le laissa r&amp;eacute;&amp;eacute;crire le projet entier de A &amp;agrave; Z.&lt;/p&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/279858480" height="1" width="1"/&gt;</description> 
			<slash:comments>0</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Jouons-avec-les-maths-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Jouons-avec-les-maths-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Article de fond: Code pin oublié? on vous le Post</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/279163496/Code-pin-oublie-on-vous-le-Post.aspx</link> 
			<category>Article de fond</category>
			<pubDate>Mon, 28 Apr 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6033</guid> 
			<description>&lt;p&gt;Le billet publi&amp;eacute; sur &lt;a href="http://fr.thedailywtf.com/Articles/WTF-avec-accuse-de-reception.aspx" target="_new"&gt;la poste Canadienne&lt;/a&gt;, semble avoir fait des &amp;eacute;mules. C&amp;rsquo;est &lt;strong&gt;Alexis&lt;/strong&gt; qui nous envoie un WTF sur la poste fran&amp;ccedil;aise. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://www.cityssimo.fr/" target="_new"&gt;Cityssimo&lt;/a&gt; est un service de LaPoste gratuit et parfois assez utile. Une carte d'acc&amp;egrave;s &amp;agrave; un local ouvert 24h/24 7j/7 o&amp;ugrave; tout est automatis&amp;eacute; et dans lequel LaPoste d&amp;eacute;pose vos colissimo re&amp;ccedil;us. Service tr&amp;egrave;s agr&amp;eacute;able donc, sauf que le colis doit &amp;ecirc;tre un colissimo normal (pas de recommand&amp;eacute;) les dimensions doivent &amp;ecirc;tre raisonnables etc. &lt;/p&gt;
&lt;p&gt;J'ai &amp;eacute;t&amp;eacute; introduit &amp;agrave; ce service il y a &amp;agrave; peu pr&amp;egrave;s un an par un coll&amp;egrave;gue de boulot. Celui-ci ayant perdu son code pin (ils pr&amp;eacute;f&amp;egrave;rent dire code pin que mot de passe pour le code &amp;agrave; 4 chiffres), il essaya de le r&amp;eacute;cup&amp;eacute;rer. Dans la partie &amp;quot;mon compte&amp;quot; du site, il y a un formulaire demandant l'email et le mot de pa... le code pin pardon. Les deux champs sont bien s&amp;ucirc;r obligatoires pour acc&amp;eacute;der &amp;agrave; son compte. Au dessous se trouve le fameux&amp;nbsp; &amp;quot;Code PIN oubli&amp;eacute; ?&amp;quot;. &lt;/p&gt;
&lt;p&gt; En cliquant dessus, mon coll&amp;egrave;gue, au lieu de se voir redirig&amp;eacute; sur une page pour r&amp;eacute;cup&amp;eacute;rer son code pin, voit simplement le formulaire d&amp;rsquo;acc&amp;egrave;s &amp;agrave; son compte valid&amp;eacute; et re&amp;ccedil;oit le message :&lt;/p&gt;
&lt;p&gt; &lt;em&gt;&amp;quot; Les informations saisies sont incorrectes. Merci de les ressaisir. Si vous avez oubli&amp;eacute; votre code PIN, veuillez cliquer sur &amp;laquo; Code PIN oubli&amp;eacute; ? &amp;raquo;. &amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt; Il suit donc consciencieusement le conseil du site en recliquant sur le fameux &amp;laquo; Code PIN oubli&amp;eacute; ? &amp;raquo; mais rien n&amp;rsquo;y fait, il revient toujours au m&amp;ecirc;me message l&amp;rsquo;invitant &amp;agrave; cliquer sur le lien &amp;laquo; code pin oubli&amp;eacute; &amp;raquo;. &lt;/p&gt;
&lt;p&gt;En regardant de plus pr&amp;egrave;s, on se rend compte que le lien renvoie vers :&lt;/p&gt;
&lt;p&gt; &lt;em&gt;javascript:document.forms[0].submit();&lt;/em&gt;&lt;/p&gt;
&lt;p&gt; En consultant le code source de la page (au moins on peut dire qu'il est a&amp;eacute;r&amp;eacute;) on ne trouve aucun autre formulaire que de connexion. Semble-t&amp;rsquo;il que quelqu'un ait oubli&amp;eacute; de traiter le probl&amp;egrave;me.&lt;/p&gt;
&lt;p&gt; Mon coll&amp;egrave;gue envoie alors un email au service et r&amp;eacute;cup&amp;egrave;re son &lt;strike&gt;mot de passe&lt;/strike&gt; code pin, ainsi que l&amp;rsquo;assurance que le probl&amp;egrave;me serait transmis au service technique. Il y a quelques jours de cela, un an apr&amp;egrave;s avoir re&amp;ccedil;u le mail, je me reconnecte sur le site de Cityssimo. En passant dans la rubrique &amp;quot;mon compte&amp;quot;, je me suis aper&amp;ccedil;u&amp;nbsp; avec&amp;nbsp; amusement que le probl&amp;egrave;me n'&amp;eacute;tait toujours pas r&amp;eacute;solu...&lt;br /&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/279163496" height="1" width="1"/&gt;</description> 
			<slash:comments>5</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Code-pin-oublie-on-vous-le-Post.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Code-pin-oublie-on-vous-le-Post.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Article de fond: Le robot de la peur (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/277392972/Le-robot-de-la-peur-(T).aspx</link> 
			<category>Article de fond</category>
			<pubDate>Fri, 25 Apr 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">5949</guid> 
			<description>&lt;p&gt;&lt;strong&gt;Josh Breckman&lt;/strong&gt; travaillait pour une entreprise qui avait obtenu un contrat pour le d&amp;eacute;veloppement d&amp;rsquo;un CMS (content management system, ou syst&amp;egrave;me de gestion de contenu) pour le site web d'une agence gouvernementale plut&amp;ocirc;t importante. Le gros du projet constituait &amp;agrave; d&amp;eacute;velopper le CMS pour que les employ&amp;eacute;s soient capables de construire et de maintenir le contenu de leur site. &lt;/p&gt;
&lt;p&gt;Comme ils avaient d&amp;eacute;j&amp;agrave; un site web existant avec un contenu cons&amp;eacute;quent, les utilisateurs voulaient profiter de la migration pour r&amp;eacute;organiser et recharger leur site dans le nouveau syst&amp;egrave;me avant que celui-ci ne soit mis en ligne. Comme vous pouvez l'imaginer, ce fut un processus tr&amp;egrave;s chronophage. Mais, apr&amp;egrave;s plusieurs mois, ils avaient finalement remis tout le contenu dans le nouveau syst&amp;egrave;me et l'avaient ouvert sur le World Wilde Web. &lt;/p&gt;
&lt;p&gt;Tout semblait fonctionner correctement pendant les quelques jours suivant la migration. Mais, au sixi&amp;egrave;me jour, les choses commenc&amp;egrave;rent &amp;agrave; se g&amp;acirc;ter : tout le contenu du site web avait compl&amp;egrave;tement disparu et les pages web pointaient toutes sur la page par d&amp;eacute;faut &amp;quot;veuillez saisir une page de contenu&amp;quot;. Oups...&lt;/p&gt;
&lt;p&gt;Josh fut appel&amp;eacute; en urgence pour trouver la panne et remarqua qu'une adresse IP particuli&amp;egrave;re avait supprim&amp;eacute; tout le contenu du syst&amp;egrave;me. L'adresse IP n'appartenait &amp;agrave; aucun hacker du bout du monde qui aurait voulu d&amp;eacute;truire une organisation gouvernementale. Non, l'adresse appartenait simplement &amp;agrave; googlebot.com, le robot d'indexation de Google. Oups.&lt;/p&gt;
&lt;p&gt;Apr&amp;egrave;s un peu de recherche (et de lutte pour trouver une sauvegarde non corrompue), Josh comprit le probl&amp;egrave;me. Un utilisateur avait copi&amp;eacute; et coll&amp;eacute; du contenu entier d&amp;rsquo;une page du CMS sur une autre, incluant un lien &amp;quot;edit&amp;quot; pour &amp;eacute;diter le contenu de la page. Normalement, cela n'aurait pas du poser de probl&amp;egrave;me car un utilisateur externe se voit demander de saisir son login et mot de passe. Mais, le syst&amp;egrave;me d'authentification du CMS ne g&amp;eacute;rait pas les techniques de hack sophistiqu&amp;eacute;es du robot de Google. Oups. &lt;/p&gt;
&lt;p&gt;Comme on peut le deviner, le robot de google n'utilise pas de cookies, ce qui signifie qu'il peut facilement contourner le syst&amp;egrave;me basique de v&amp;eacute;rification &amp;quot;estConnecte = faux&amp;quot;  du cookie. De m&amp;ecirc;me, il ne se soucie pas du code JavaScript des pages web, qui en temps normal devrait rediriger les utilisateurs qui ne sont pas connect&amp;eacute;s. Par contre, il suit tous les hyperliens de chaque page qu'il trouve, incluant bien &amp;eacute;videment ceux nomm&amp;eacute;s &amp;quot;Supprimer la page&amp;quot;. Oups &lt;/p&gt;
&lt;p&gt; Finalement, Josh fut en mesure de recharger une version pas trop vieille du site. Il remonta le probl&amp;egrave;me &amp;agrave; sa direction -- que la s&amp;eacute;curit&amp;eacute; pouvait &amp;ecirc;tre contourn&amp;eacute;e en d&amp;eacute;sactivant les cookies et le JavaScript -- mais ils ne saisirent pas vraiment o&amp;ugrave; &amp;eacute;tait le probl&amp;egrave;me. A la place, ils dirent au client de ne JAMAIS copier coller du contenu d'une page dans une autre. &lt;/p&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/277392972" height="1" width="1"/&gt;</description> 
			<slash:comments>2</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Le-robot-de-la-peur-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Le-robot-de-la-peur-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: xml contre csv : le choix est évident (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/276657711/xml-contre-csv--le-choix-est-evident-(T).aspx</link> 
			<category>Code du jour</category>
			<pubDate>Thu, 24 Apr 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">5933</guid> 
			<description>&lt;p&gt;Le bout de code du jour nous viens de &lt;strong&gt;Rob O&lt;/strong&gt;. Rob travaillait en tant que prestataire sur diff&amp;eacute;rents projets depuis environ une ann&amp;eacute;e quand on lui demanda de participer &amp;agrave; une r&amp;eacute;union avec deux avant vente et deux membres de la MOA client pour pr&amp;eacute;parer un nouveau projet. Bob n'avait pas remarqu&amp;eacute; que pendant la discussion, l'un des avant vente de sa soci&amp;eacute;t&amp;eacute; prenait des notes d'une mani&amp;egrave;re tr&amp;egrave;s &amp;eacute;nergique &amp;agrave; chaque fois qu'on leur posait une question &amp;agrave; propos de XML.&lt;/p&gt;
&lt;p&gt;Ils n'avaient pas plong&amp;eacute; beaucoup dans la partie technique mais les membres de la MOA savaient ce qu'ils voulaient. La compatibilit&amp;eacute; avec le mot &amp;agrave; la mode. Le &amp;quot;buzz&amp;quot; XML.&lt;/p&gt;
&lt;p&gt;Quand Bob n'&amp;eacute;tait pas ignor&amp;eacute; en tant que simple prestataire, on lui demandait si le syst&amp;egrave;me serait en mesure de g&amp;eacute;rer et d'envoyer diff&amp;eacute;rents types de fichiers et de messages comme XML qui bien s&amp;ucirc;r, en &amp;eacute;tait capable. A chaque fois qu'une question &amp;agrave; propos de XML &amp;eacute;tait pos&amp;eacute;e, un avant vente r&amp;eacute;pondait &amp;quot;Oui&amp;quot;, suivi d'un signe de t&amp;ecirc;te enthousiaste, &amp;quot; Notre syst&amp;egrave;me g&amp;egrave;rera le XML.&amp;quot;&lt;/p&gt;
&lt;p&gt;Plusieurs mois pass&amp;egrave;rent et arriva le d&amp;eacute;but de l'automne. Rob re&amp;ccedil;ut les sp&amp;eacute;cifications du syst&amp;egrave;me et commen&amp;ccedil;a &amp;agrave; travailler dessus. Apr&amp;egrave;s avoir d&amp;eacute;couvert que la documentation technique avait de s&amp;eacute;rieuses lacunes, il demanda un exemple de fichier d'&amp;eacute;change de donn&amp;eacute;es. Voici ce fichier :&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;iso8859-1&amp;quot; ?&amp;gt;&lt;br /&gt;&amp;lt;import tag=&amp;quot;1stTEST&amp;quot; type=&amp;quot;data&amp;quot; mode=&amp;quot;update&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;options&amp;gt; &lt;br /&gt;    &amp;lt;dateformat mmddyyyy=&amp;quot;true&amp;quot;/&amp;gt; &lt;br /&gt;        &amp;lt;notification&amp;gt; &lt;br /&gt;            &amp;lt;EMail&amp;gt;example@example.com&amp;lt;/EMail&amp;gt; &lt;br /&gt;        &amp;lt;/notification&amp;gt; &lt;br /&gt;    &amp;lt;/options&amp;gt; &lt;br /&gt;    &amp;lt;fields&amp;gt;&lt;br /&gt;        &amp;lt;field name=&amp;quot;name&amp;quot; type=&amp;quot;char&amp;quot; mapsto=&amp;quot;person.data&amp;quot;/&amp;gt; &lt;br /&gt;        &amp;lt;field name=&amp;quot;officeid&amp;quot; type=&amp;quot;char&amp;quot; mapsto=&amp;quot;custom.locationid&amp;quot;/&amp;gt; &lt;br /&gt;        &amp;lt;field name=&amp;quot;startyear&amp;quot; type=&amp;quot;char&amp;quot; mapsto=&amp;quot;person.yearstarted&amp;quot;/&amp;gt; &lt;br /&gt;        &amp;lt;field name=&amp;quot;personelid&amp;quot; type=&amp;quot;int&amp;quot; mapsto=&amp;quot;person.id&amp;quot;/&amp;gt; &lt;br /&gt;        &amp;lt;field name=&amp;quot;dob&amp;quot; type=&amp;quot;date&amp;quot; mapsto=&amp;quot;person.dateofbith&amp;quot;/&amp;gt; &lt;br /&gt;        &amp;lt;field name=&amp;quot;sex&amp;quot; type=&amp;quot;char&amp;quot; mapsto=&amp;quot;person.sex&amp;quot;/&amp;gt; &lt;br /&gt;        &amp;lt;field name=&amp;quot;modified&amp;quot; type=&amp;quot;date&amp;quot; mapsto=&amp;quot;record.modified&amp;quot;/&amp;gt; &lt;br /&gt;    &amp;lt;/fields&amp;gt; &lt;br /&gt;    &amp;lt;csvdata columnheaders=&amp;quot;false&amp;quot;&amp;gt; &lt;br /&gt;&amp;lt;![CDATA[&lt;br /&gt;&amp;quot;Jack Wade&amp;quot;,214,2002,111012,07/04/1975,&amp;quot;M&amp;quot;,02/11/2006&lt;br /&gt;&amp;quot;Sam Davidson&amp;quot;,214,1999,104841,10/15/1967,&amp;quot;M&amp;quot;,02/10/2006&lt;br /&gt;&amp;quot;Denise V Law&amp;quot;,214,1998,104660,01/21/1971,&amp;quot;F&amp;quot;,02/17/2006&lt;br /&gt;&amp;quot;Lisa Blake&amp;quot;,214,1989,100987,08/01/1982,&amp;quot;F&amp;quot;,01/21/2006&lt;br /&gt;&amp;quot;Andrew Match&amp;quot;,214,1991,101074,12/25/1980,&amp;quot;M&amp;quot;,02/28/2006&lt;br /&gt;]]&amp;gt; &lt;br /&gt;    &amp;lt;/csvdata&amp;gt; &lt;br /&gt;&amp;lt;/import&amp;gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Apr&amp;egrave;s v&amp;eacute;rification, c'&amp;eacute;tait effectivement le format que le client souhaitait pour son syst&amp;egrave;me. Un document XML parfaitement conforme, compatibilit&amp;eacute; avec le mot &amp;agrave; la mode accomplie !&lt;/p&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/276657711" height="1" width="1"/&gt;</description> 
			<slash:comments>6</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/xml-contre-csv--le-choix-est-evident-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/xml-contre-csv--le-choix-est-evident-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Une brève histoire de date (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/275154961/Une-brève-histoire-de-date-(T).aspx</link> 
			<category>Code du jour</category>
			<pubDate>Tue, 22 Apr 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">5912</guid> 
			<description>&lt;p&gt;&lt;strong&gt;Algirdas Kepezinskas&lt;/strong&gt; &amp;eacute;tait en train de d&amp;eacute;bugger du code d'un client lorsqu&amp;rsquo;il trouva l'un des plus merveilleux algorithmes de manipulation de date. J'ai enlev&amp;eacute; le nom de la fonction, et je vous laisserai comme exercice, d'essayer de trouver ce que ce gros tas d'arithm&amp;eacute;tique fait ...&lt;/p&gt;
&lt;p&gt;   &lt;/p&gt;
&lt;blockquote&gt;
&lt;pre style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; ?????? (Date date1, Date date2)&lt;br /&gt;{&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; retval = 0;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (date1 &amp;gt; date2) &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; 0;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; d1 = date1.Year * 10000 + date1.Month * 100 + date1.Day;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; d2 = date2.Year * 10000 + date2.Month * 100 + date2.Day;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; dat = d1 / 100;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; a = 0, d = 0;&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt; ((dat &amp;lt;= (d2 / 100)) &amp;amp;&amp;amp; (a &amp;lt; 12))&lt;br /&gt;  {&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt; daymo = 31;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (dat/100 == 2) &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ((dat%100 %4)==0) daymo -= 2; &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; daymo -= 3;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ((dat/100 % 2)==(dat/100 / 8)) daymo -= 1;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; ((d1/100 == dat) || (d2/100 == dat))&lt;br /&gt;    {&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (d1/100 == dat) d = daymo - (d1%100)+1;&lt;br /&gt;      &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (d2/100 == dat)&lt;br /&gt;      {&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (d1/100 == d2/100) d -= daymo - d2%100;&lt;br /&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; d = d2%100;&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; d = daymo;&lt;br /&gt;&lt;br /&gt;    retval += d;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (dat%100 == 12) dat = (dat/100 + 1)*100 + 1;&lt;br /&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt; dat += 1;&lt;br /&gt;&lt;br /&gt;    a +=1;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; retval;&lt;br /&gt;}&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt; On abandonne d&amp;eacute;j&amp;agrave;? Je vous donne un indice : la seule ligne de code avec laquelle Algirdas rempla&amp;ccedil;a la fonction ...&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; (date1 - date2);&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/275154961" height="1" width="1"/&gt;</description> 
			<slash:comments>3</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Une-brève-histoire-de-date-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Une-brève-histoire-de-date-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Message d'erreur: Vive les soldes...</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/274466270/Vive-les-soldes.aspx</link> 
			<category>Message d'erreur</category>
			<pubDate>Mon, 21 Apr 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6022</guid> 
			<description>&lt;p&gt;Je suis en vacances cette semaine, en Bretagne et sans acc&amp;egrave;s web (la pluviom&amp;eacute;trie perturbe les communications il parait ...) je vous ai n&amp;eacute;anmoins pr&amp;eacute;par&amp;eacute; quelques billets. N'h&amp;eacute;sitez pas &amp;agrave; continuer de m'envoyer vos contributions je les &amp;eacute;tudierai d&amp;egrave;s mon retour.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Guillaume G.&lt;/strong&gt; n'a probablement jamais grav&amp;eacute; aussi rapidement.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt; &lt;img src="http://img.thedailywtf.com/images/fr/errors/CDBurnerXP.jpg" alt="" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;David&lt;/strong&gt; lui est heureux d'apprendre que Nero fait aussi le m&amp;eacute;nage lors de l'installation...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src="http://img.thedailywtf.com/images/fr/errors/nero_erreur.jpg" alt="" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt; $submitter$ m'a envoy&amp;eacute; cette jolie publicit&amp;eacute; (merci &lt;strong&gt;R&amp;eacute;gis&lt;/strong&gt;)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src="http://img.thedailywtf.com/images/fr/errors/firstname.jpg" alt="" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Envoy&amp;eacute; par &lt;strong&gt;Benjamin &lt;/strong&gt;: &amp;quot;Pour ne pas prendre de risques, j&amp;rsquo;ai pr&amp;eacute;f&amp;eacute;r&amp;eacute; annuler&amp;hellip;&amp;quot;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src="http://img.thedailywtf.com/images/fr/errors/access.jpg" alt="" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour finir un&amp;nbsp; anonyme nous envoie : &amp;quot;Vive les soldes... sauf quand le pc est plant&amp;eacute;&amp;quot; &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/photo138_lite.jpg" /&gt; &lt;/p&gt;
&lt;/blockquote&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/274466270" height="1" width="1"/&gt;</description> 
			<slash:comments>5</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Vive-les-soldes.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Vive-les-soldes.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Article de fond: Le prix du non-sens (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/272644856/Le-prix-du-nonsens-(T).aspx</link> 
			<category>Article de fond</category>
			<pubDate>Fri, 18 Apr 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">5866</guid> 
			<description>&lt;p&gt;Quelques ann&amp;eacute;es plus t&amp;ocirc;t, Pete, un programmeur astucieux, d&amp;eacute;veloppa une application qui suivait les commissions pour les transactions commerciales. Pete a quitt&amp;eacute; depuis longtemps la soci&amp;eacute;t&amp;eacute; , son r&amp;ocirc;le ayant &amp;eacute;t&amp;eacute; repris par Andy.&lt;/p&gt;
&lt;p&gt; Andy n'avait pas beaucoup &amp;agrave; modifier le code de Pete, seulement lors de bugs &lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;occasionnels&lt;/span&gt;. D'ailleurs Andy&amp;nbsp; n'&amp;eacute;tait jamais tr&amp;egrave;s &amp;agrave; l'aise pour corriger les bugs de Pete, bien que ce soit principalement des erreurs de logique.&lt;/p&gt;
&lt;br /&gt;
Quand Andy apprit que son &amp;eacute;quipe allait devoir porter le code de Pete sur une nouvelle application, lui et son &amp;eacute;quipe se battirent corps et &amp;acirc;me pour obtenir une r&amp;eacute;&amp;eacute;criture compl&amp;egrave;te du code. &lt;em&gt;Les erreurs de logique sont les pires &lt;/em&gt;argumentait avec force Andy. &lt;em&gt;Les bugs peuvent rester cach&amp;eacute;s pendant des semaines avant qu'on doive se bousculer pour corriger les donn&amp;eacute;es erron&amp;eacute;es&lt;/em&gt;. Qu'importe, la direction n'avait pas les budgets, on demanda &amp;agrave; Andy d'effectuer un portage du code.&lt;br /&gt;
&lt;br /&gt;
Pete &amp;eacute;tait c&amp;eacute;l&amp;egrave;bre pour ses bidouilles. Souvent, cela signifiait r&amp;eacute;soudre un probl&amp;egrave;me qui n'existait pas avec la pire solution imaginable. Dans notre cas c'&amp;eacute;tait une bidouille pour le type MONEY, DECIMAL et SMALL MONEY de SQL Server.&lt;br /&gt;
&lt;br /&gt;
L'application devait stocker des dollars et des centimes dans sa base. Pour se faire, Pete cr&amp;eacute;a une colonne ENTIER dans la table commission appel&amp;eacute;e &amp;quot;prix_en_centime&amp;quot;. Heureusement, il avait pr&amp;eacute;vu de cr&amp;eacute;er sa propre classe &amp;quot;Money&amp;quot; pour utiliser &amp;quot;prix_en_centime&amp;quot; plus facilement, et il s'en servait comme adaptateur pour toutes ses op&amp;eacute;rations d'insertion mises &amp;agrave; jour.&lt;br /&gt;
&lt;pre&gt;Money myMoney = new Money(0.10); // $.10&lt;br /&gt;return myMoney.DBValue; // retourne 10&lt;/pre&gt;
Andy ouvrit Money.cs et eu un bref aper&amp;ccedil;u des changements de pr&amp;eacute;cisions :&lt;br /&gt;
&lt;pre&gt;public int DBValue&lt;br /&gt;{&lt;br /&gt;    // Pete 01/05- precision en centimes:&lt;br /&gt;    // get { return Convert.ToInt32(_value * 100.0); }&lt;br /&gt;&lt;br /&gt;    // Pete 01/20- precision en 1/10 de centimes:&lt;br /&gt;    // get { return Convert.ToInt32(_value * 1000.0); }&lt;br /&gt;&lt;br /&gt;    // Pete 02/13- precision en 1/100 de centimes:&lt;br /&gt;    get { return Convert.ToInt32(_value * 10000.0); }&lt;br /&gt;}&lt;/pre&gt;
Deux (imaginaires) d&amp;eacute;cimales ne suffisant pas pour suivre les commissions, ils avaient eu besoin d'une pr&amp;eacute;cision au dixi&amp;egrave;me de centime. Heureusement pour Pete, chaque &amp;quot;prix_en_centime&amp;quot; &amp;eacute;tait &amp;eacute;crit pour cela. Le champ avait d'abord &amp;eacute;t&amp;eacute; pass&amp;eacute; par sa classe Money et inject&amp;eacute; &amp;agrave; partir de sa propri&amp;eacute;t&amp;eacute; dbvalue, qui contiendrait la valeur effective &amp;agrave; &amp;eacute;crire dans la base de donn&amp;eacute;es. Concr&amp;egrave;tement, 0.1 &amp;euro; &amp;eacute;tait stock&amp;eacute; 10. Maintenant 10 centimes &amp;eacute;tait stock&amp;eacute; 100.&lt;br /&gt;
&lt;br /&gt;
Une autre mise &amp;agrave; jour ajouta un nouveau z&amp;eacute;ro &amp;agrave; la conversion pour encore plus de pr&amp;eacute;cision, donc maintenant, la valeur en base de Money(0.10) serait 1 000.&lt;br /&gt;
&lt;br /&gt;
Ce fut &amp;agrave; ce moment qu'Andy se retrouva avec plusieurs tables dont les donn&amp;eacute;es avaient des valeurs diff&amp;eacute;rentes dans la colonne 'prix_en_centime' qui d'ailleurs devraient &amp;ecirc;tre nomm&amp;eacute;es 'prix_en_centaines_de_centimes'. Ainsi, les valeurs ne signifiaient plus rien : une valeur de 500 000 pouvait aussi bien signifier 5 000&amp;euro;, ou 500 ou 50 en fonction de la version de la librairie utilis&amp;eacute;e pour encoder le prix.&lt;br /&gt;
&lt;br /&gt;
Bien qu'il le d&amp;eacute;sirait plus que tout, Andy n'&amp;eacute;tait pas en mesure d'abandonner le syst&amp;egrave;me de gestion mon&amp;eacute;taire. Les directives de la direction &amp;eacute;taient claires : &amp;quot;Adaptez mais ne changez rien&amp;quot;. Malgr&amp;eacute; cela, il fut capable d'introduire en douce une petite modification. Prix_en_centime fut transform&amp;eacute; en un type DECIMAL et le syst&amp;egrave;me devint (un peu) plus stable.&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/272644856" height="1" width="1"/&gt;</description> 
			<slash:comments>2</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Le-prix-du-nonsens-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Le-prix-du-nonsens-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Article de fond: La boucle assurance (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/271958372/La-boucle-assurance-(T).aspx</link> 
			<category>Article de fond</category>
			<pubDate>Thu, 17 Apr 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">5867</guid> 
			<description>&lt;p&gt;&amp;quot;Alors que pensez-vous de mon offre&amp;quot; demanda le recruteur de &lt;strong&gt;Ben&lt;/strong&gt;. Il y avait r&amp;eacute;fl&amp;eacute;chi depuis quelque temps. Ce n'&amp;eacute;tait pas exactement ce qu'il cherchait mais bon, il &amp;eacute;tait sans emploi depuis novembre 89 - presque trois mois entiers -&amp;nbsp; et pensa qu'il devrait probablement se remettre aux choses s&amp;eacute;rieuses. Il dit au recruteur qu'il souhaiterait parler au client et lui demanda de programmer un rendez-vous pour la semaine suivante.&amp;quot;&lt;/p&gt;
&lt;p&gt; &amp;quot;En fait...&amp;quot; r&amp;eacute;pondit le recruteur, &amp;quot;ils ont besoin de quelqu'un d&amp;egrave;s que possible. Peux-tu les rencontrer plus t&amp;ocirc;t, cet apr&amp;egrave;s-midi par exemple&amp;quot;.&lt;/p&gt;
&lt;p&gt; Heureusement, Ben s'&amp;eacute;tait non seulement lav&amp;eacute; mais aussi ras&amp;eacute; ce jour-ci. Il accepta donc l'entretien et deux petites heures plus tard, Ben arrivait &amp;agrave; la soci&amp;eacute;t&amp;eacute; pour rencontrer Wayne, le d&amp;eacute;veloppeur en chef.&lt;/p&gt;
&lt;p&gt; &amp;quot;Merci de venir si vite&amp;quot;, commen&amp;ccedil;a Wayne, &amp;quot;Le pr&amp;eacute;c&amp;eacute;dent sur le poste est parti si soudainement. Je vois que vous avez &amp;eacute;t&amp;eacute; chez Initech quelques mois, qu'avez-vous fait la bas?&amp;quot;&lt;/p&gt;
&lt;br /&gt;
&amp;quot;J'&amp;eacute;tais dans le d&amp;eacute;velo-&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wayle le coupa. &amp;quot;Ok, donc vous avez travaill&amp;eacute; en assembleur avant?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Oui, en fait, sur le dernier proj-&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wayle le coupa de nouveau. &amp;quot;&amp;ecirc;tes vous familier avec la programmation multi-t&amp;acirc;che?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Alors que Ben se lan&amp;ccedil;ait dans des explications sur le d&amp;eacute;veloppement multi-t&amp;acirc;che des ann&amp;eacute;es 90, il remarqua que Wayne avait d&amp;eacute;plac&amp;eacute; son attention sur son bloc notes. Tout en faisant d'occasionnels &amp;quot;hum hum&amp;quot; d'affirmation, Wayne commen&amp;ccedil;a &amp;agrave; &amp;eacute;crire quelques notes.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Ca me semble bien&amp;quot;, interrompit Wayne encore, &amp;quot;Maintenant jetez un coup d'&amp;oelig;il &amp;agrave; ce code. Dites moi ce qui cloche avec&amp;quot;.&lt;br /&gt;
Wayne pris le bloc note o&amp;ugrave; il &amp;eacute;tait manuscrit un code en C.
&lt;pre&gt;int i;&lt;br /&gt;char *p = 0x10000;&lt;br /&gt;for (i = 0; i &amp;lt; 1000000;i++) &lt;br /&gt;{&lt;br /&gt;   *p++ = 0;&lt;br /&gt;}&lt;/pre&gt;
Ben lui montra le d&amp;eacute;passement de capacit&amp;eacute; de l' integer et ajouta, &amp;quot;Mais dans tout les cas j'utiliserai simplement memset.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Super&amp;quot; dit Wayne , &amp;quot;Vous avez le job ! Pouvez-vous commencer maintenant?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Je pense&amp;quot; R&amp;eacute;pondit Ben un peu confus. Il &amp;eacute;tait 15h03 - exactement trois minutes apr&amp;egrave;s le d&amp;eacute;but de l'entretien - et Ben n'avait rien pr&amp;eacute;vu d'autre pour l'apr&amp;egrave;s midi. &amp;quot;Et bien ... allons-y !&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Parfait&amp;quot; Dit Wayne enthousiaste. &amp;quot;Ok, donc tout d'abord laisse moi te dire que ce sera le job le plus facile que tu n'aies jamais fait. Vraiment, on n'a pas trop besoin d'aide suppl&amp;eacute;mentaire mais depuis le d&amp;eacute;part du prestataire, on recherche quelqu'un pour combler le trou, tu sais comment &amp;ccedil;a marche.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wayne continua puis se tut pendant un bref moment. &amp;quot;J'ai mis en place la r&amp;egrave;gle des 80/20 ici. Tu en as d&amp;eacute;j&amp;agrave; entendu parler avant?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wayne ne laissa pas &amp;agrave; Ben une chance de r&amp;eacute;pondre, &amp;quot;Rien - et je dis bien rien - en informatique ne prend moins que 80 heures, et quoique tu puisses penser combien de temps &amp;ccedil;a prendra, multiplie le par 20, et dis &amp;ccedil;a &amp;agrave; son manager. Tu vois, 80/20&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ce n'&amp;eacute;tait pas vraiment la r&amp;egrave;gle des 80/20 que Ben connaissait mais il pensait que chacun devait avoir la sienne. Apr&amp;egrave;s avoir parcouru quelques autres &amp;quot;r&amp;egrave;gles&amp;quot; du service d&amp;eacute;veloppement, Wayne expliqua &amp;agrave; Ben ce sur quoi il allait travailler.&lt;br /&gt;
&lt;br /&gt;
C'&amp;eacute;tait une application logistique plut&amp;ocirc;t ennuyeuse qui tournait dans le MTWS maison, ou plut&amp;ocirc;t : Multi-Tasking Windowing System. Bien que Microsoft Windows 2.11 &amp;eacute;tait pr&amp;eacute;sent sur le march&amp;eacute; depuis un petit bout de temps, personne dans la soci&amp;eacute;t&amp;eacute; ne semblait y croire, cela explique pourquoi ils avaient d&amp;eacute;velopp&amp;eacute; leur propre solution.&lt;br /&gt;
&lt;br /&gt;
C'est Wayne qui avait con&amp;ccedil;u et d&amp;eacute;velopp&amp;eacute; MTWS. C'&amp;eacute;tait un gestionnaire de fen&amp;ecirc;tres bas&amp;eacute; sur Ms DOS qui utilisait des caract&amp;egrave;res ascii pour afficher des &amp;quot;fen&amp;ecirc;tres&amp;quot;. Chaque fen&amp;ecirc;tre pouvait h&amp;eacute;berger une des quatre applications diff&amp;eacute;rentes (dont une serait &amp;agrave; la charge de Ben), et permettait le dragging, le recadrage et les communications inter fen&amp;ecirc;tres.&lt;br /&gt;
&lt;br /&gt;
Apr&amp;egrave;s avoir regard&amp;eacute; bri&amp;egrave;vement le MTWS et l'application de logistique, Ben rentra chez lui pour la journ&amp;eacute;e et revint le lendemain t&amp;ocirc;t pour &amp;ecirc;tre pr&amp;ecirc;t &amp;agrave; commencer. Les jours qui suivirent furent plut&amp;ocirc;t calmes, tout comme les semaines et les mois qui suivirent.&lt;br /&gt;
&lt;br /&gt;
Sous la direction de Wayne, Ben passait une heure par jour &amp;agrave; effectuer de la maintenance ou quelques petits changement sur l'application qu'on lui avait assign&amp;eacute;, et le reste de la journ&amp;eacute;e &amp;agrave; se tourner les pouces.&lt;br /&gt;
&lt;br /&gt;
Avec tout ce temps libre et sans internet pour surfer, Ben passa son temps &amp;agrave; fouiller dans les entrailles de MTWS. C'&amp;eacute;tait du code C plut&amp;ocirc;t bien comment&amp;eacute; et bien structur&amp;eacute; qui avait des assemblies diss&amp;eacute;min&amp;eacute;es ici et l&amp;agrave;. Un jour, alors qu'il parcourait le sous syst&amp;egrave;me graphique, il remarqua une petite boucle ensevelie dans le code ...&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;for(i=0;i&amp;lt;1000000;i++) {;}&lt;/pre&gt;
&lt;br /&gt;
Il apparut que cette boucle tournait quelque soit l'action demand&amp;eacute;e. Il rev&amp;eacute;rifia et comprit que effectivement cette boucle &amp;eacute;tait effectu&amp;eacute;e &amp;agrave; chaque mise &amp;agrave; jour de l'&amp;eacute;cran.&lt;br /&gt;
&lt;br /&gt;
Pensant qu'il avait trouv&amp;eacute; un bug ou un vestige de bout de code, Ben demanda &amp;agrave; Wayne ce qu'il devait faire.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Ha,&amp;quot; gloussa Wayne. &amp;quot;Ceci, mon ami est ce que l'on appelle une 'boucle acc&amp;eacute;l&amp;eacute;ratrice'. Nous la consid&amp;eacute;rons comme ... une assurance&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Ben secoua la t&amp;ecirc;te, essayant de comprendre comment il avait pu passer &amp;agrave; cot&amp;eacute;, c'&amp;eacute;tait encore une technique pour s'affranchir du travail.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;L'id&amp;eacute;e,&amp;quot; continua Wayne, &amp;quot; c'est que &amp;agrave; tout moment nous pouvons avoir des semaines de travail calmes - tu sais, le genre o&amp;ugrave; tu n'as pas vraiment de bug &amp;agrave; corriger ou de changements &amp;agrave; faire - et bien, on enl&amp;egrave;ve juste un de ces z&amp;eacute;ro dans la boucle. Ensuite on dit &amp;agrave; la direction que on a eu des probl&amp;egrave;mes de vitesse avec le dernier changement demand&amp;eacute; et que, apr&amp;egrave;s beaucoup d'optimisations tr&amp;egrave;s compliqu&amp;eacute;es, nous avons &amp;eacute;t&amp;eacute; en mesure d'acc&amp;eacute;l&amp;eacute;rer le syst&amp;egrave;me de fa&amp;ccedil;on significative et que l'on devrait &amp;ecirc;tre capable de commencer les demandes de changement la semaine prochaine&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Tu vois&amp;quot;, dit Wayne apr&amp;egrave;s avoir marqu&amp;eacute; une br&amp;egrave;ve pause, &amp;quot;une assurance&amp;quot;.&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/271958372" height="1" width="1"/&gt;</description> 
			<slash:comments>7</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/La-boucle-assurance-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/La-boucle-assurance-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Pas tout à fait compris ce truc appelé "polymorphysme". (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/271210899/Pas-tout-à-fait-compris-ce-truc-appele-polymorphysme-(T).aspx</link> 
			<category>Code du jour</category>
			<pubDate>Wed, 16 Apr 2008 05:30:00 GMT</pubDate> 
			<guid isPermaLink="false">5876</guid> 
			<description>&lt;p&gt;Objet. L' encapsulation de champs et d'op&amp;eacute;rations pour rendre le code plus simple et plus r&amp;eacute;utilisable. Facile ! &lt;br /&gt;
Polymorphisme : L'habilit&amp;eacute; d'avoir des objets avec le m&amp;ecirc;me comportement, &amp;agrave; travers l'h&amp;eacute;ritage, les interfaces , etc.. Pig&amp;eacute;.&lt;/p&gt;
&lt;p&gt; Maintenant essayons d'appliquer ce truc appel&amp;eacute; Object-Polymorphisme&lt;/p&gt;
&lt;p&gt;  &lt;font size="2" face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(obj instanceof MMSNode) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMSNode node = (MMSNode)obj;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attribs = node.getAttribs();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if(obj instanceof MMSPhysComp) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMSPhysComp physComp = (MMSPhysComp)obj;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attribs = physComp.getAttribs();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if(obj instanceof MMSLogComp) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMSLogComp logComp = (MMSLogComp)obj;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attribs = logComp.getAttribs();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (obj instanceof MMSPhysLink) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MMSPhysLink physLink = (MMSPhysLink)obj;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; attribs = physLink.getAttribs();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;em&gt;code d&amp;eacute;couvert par &lt;strong&gt;David Shay]&lt;/strong&gt;&lt;/em&gt;&lt;/font&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt; Hummm wai, &amp;ccedil;a me semble bon ! Appelez moi Maitre de l'orient&amp;eacute; Objet.&lt;/p&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/271210899" height="1" width="1"/&gt;</description> 
			<slash:comments>7</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Pas-tout-à-fait-compris-ce-truc-appele-polymorphysme-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Pas-tout-à-fait-compris-ce-truc-appele-polymorphysme-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Rigoureux mais "Simple"</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/270469476/Rigoureux-mais-Simple.aspx</link> 
			<category>Code du jour</category>
			<pubDate>Tue, 15 Apr 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6013</guid> 
			<description>&lt;p&gt;&lt;strong&gt;Alexandre&lt;/strong&gt; partage avec nous un morceau de code du projet dont il a eu la &amp;quot;chance&amp;quot; d'h&amp;eacute;riter.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Il y a beaucoup de moyens d'initialiser une variable. Si l'on veut faire une variable dont le HiWord et le LoWord valent 1, on peut s'y prendre de la mani&amp;egrave;re suivante:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;X := $00010001;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ou bien&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;X := MakeLong(1,1);&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mais mes pr&amp;eacute;d&amp;eacute;cesseurs ont trouv&amp;eacute; une solution beaucoup plus lisible, je vous laisse la d&amp;eacute;couvrir:&lt;/p&gt;
&lt;blockquote&gt;
&lt;pre&gt;var&lt;br /&gt; MyUnit: LongInt;&lt;br /&gt;begin&lt;br /&gt; MyUnit := 1;&lt;br /&gt; UserData := ((MyUnit shl 16) or (MyUnit and $0000FFFF));&lt;br /&gt;end;&lt;/pre&gt;
&lt;/blockquote&gt;&lt;/blockquote&gt;
&lt;p&gt; D'apr&amp;egrave;s &lt;a href="http://fr.wikipedia.org/wiki/Pascal_%28langage%29" target="_new"&gt;Wikipedia&lt;/a&gt;: &amp;quot;Le pascal a &amp;eacute;t&amp;eacute; con&amp;ccedil;u pour servir &amp;agrave; l'enseignement de la programmation de mani&amp;egrave;re rigoureuse mais simple, en r&amp;eacute;action &amp;agrave; la complexit&amp;eacute; de l'Algol 68&amp;quot; ...   &lt;/p&gt;&lt;img src="http://syndication.thedailywtf.com/~r/WTF/FR/~4/270469476" height="1" width="1"/&gt;</description> 
			<slash:comments>5</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Rigoureux-mais-Simple.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Rigoureux-mais-Simple.aspx</feedburner:origLink></item>
		
	</channel>
</rss>
