<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://syndication.thedailywtf.com/~d/styles/itemcontent.css"?><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>Code du jour: Pour le budget 2010 (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/u4nl4fNdBPg/Pour-le-budget-2010-(T).aspx</link> 
			<category>Code du jour</category>
			<pubDate>Thu, 28 May 2009 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6589</guid> 
			<description>&lt;p&gt;&lt;img width="175" class="wtf_imgfloatright" style="margin: 5px; float: right;" alt="" src="http://imagecache2.allposters.com/images/pic/RHPOD/321-1530~Help-Button-on-Computer-Keyboard-Posters.jpg" /&gt;Contrairement aux d&amp;eacute;veloppeurs privil&amp;eacute;gi&amp;eacute;s, on n'a pas tous la chance de d&amp;eacute;velopper dans un &amp;quot;grand bureau priv&amp;eacute; climatis&amp;eacute;&amp;quot;. Dans mon ancienne soci&amp;eacute;t&amp;eacute;, les d&amp;eacute;veloppeurs arrivaient chaque matin en se demandant comment ils allaient trouver un si&amp;egrave;ge pour la journ&amp;eacute;e ou comment se procurer un c&amp;acirc;ble r&amp;eacute;seau pour pouvoir travailler. On est certes pas tous log&amp;eacute;s &amp;agrave; la m&amp;ecirc;me enseigne, cependant, peu d'entre nous peuvent se comparer &amp;agrave; ce qu'a v&amp;eacute;cu &lt;strong&gt;St&amp;eacute;phane&lt;/strong&gt; r&amp;eacute;cemment :&lt;/p&gt;
&lt;p&gt;&amp;quot;On ma demand&amp;eacute; d'aller faire une intervention dans une petite soci&amp;eacute;t&amp;eacute; pour corriger quelques bugs sur leur syst&amp;egrave;me de gestion. Apparemment, la personne qui &amp;eacute;tait en charge de la maintenance du logiciel venait de d&amp;eacute;missionner. &amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;J'ai commenc&amp;eacute; &amp;agrave; comprendre les raisons de son d&amp;eacute;part quand je suis entr&amp;eacute; dans mon nouveau bureau temporaire. Sur le bureau bancal, se tenait un vieil &amp;eacute;cran CRT 15&amp;quot; rattach&amp;eacute; &amp;agrave; un Pentium II de la marque Compaq qui &amp;eacute;tait bien encrass&amp;eacute;. J'ai d&amp;eacute;finitivement compris &amp;agrave; la lecture de la ligne de code suivante : &amp;quot;&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;if (exitStatus==(3-3)) // Desole, j'&amp;agrave;i des tou&amp;ccedil;hes de &amp;ccedil;&amp;agrave;ssees&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9alr6MpzBHcn0DqsdUgThvksCGk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9alr6MpzBHcn0DqsdUgThvksCGk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9alr6MpzBHcn0DqsdUgThvksCGk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9alr6MpzBHcn0DqsdUgThvksCGk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/u4nl4fNdBPg" height="1" width="1"/&gt;</description> 
			<slash:comments>8</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Pour-le-budget-2010-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Pour-le-budget-2010-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Mot de passe oublié (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/dRXR6QIg_Ig/Mot-de-passe-oublie-(T).aspx</link> 
			<category>Code du jour</category>
			<pubDate>Wed, 27 May 2009 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6578</guid> 
			<description>&lt;p&gt;Mot de passe oubli&amp;eacute;? Pas de soucis, vous pouvez toujours utiliser le mot de passe d'invitation que l'on vous a envoy&amp;eacute; lors de la cr&amp;eacute;ation de votre compte !&lt;/p&gt;
&lt;p&gt;Envie d'essayer avec un autre compte? Pas de soucis, vous pouvez utiliser ce m&amp;ecirc;me mot de passe pour vous connecter sous chaque compte !&lt;/p&gt;
&lt;pre style="margin-left: 40px;"&gt;

CREATE PROCEDURE [spAUTH] 
@EMAIL VARCHAR(100),
@PSWD VARCHAR(20)
AS

SELECT  USER_ID, 
        FIRST_NAME + ' ' + LAST_NAME AS FULL_NAME,
        EMAIL,
        PSWD
FROM    USER
WHERE   (IS_ACTIVE = 1) 
        AND (IS_DELETED = 0)
        AND (EMAIL = @EMAIL) 
        AND (PSWD = @PSWD)
UNION
SELECT  USER_ID, 
        FIRST_NAME + ' ' + LAST_NAME AS FULL_NAME,
        EMAIL,
        PSWD
FROM    USER
WHERE   (IS_ACTIVE = 1) 
        AND (IS_DELETED = 0)
        AND (EMAIL = @EMAIL) 
        AND (DBO.GET_INVITATION_PWD() = @PSWD)
&lt;/pre&gt;
&lt;p&gt;Apr&amp;egrave;s avoir r&amp;eacute;cup&amp;eacute;r&amp;eacute; du choc li&amp;eacute; &amp;agrave; la vision de ce code, &lt;strong&gt;Ben &lt;/strong&gt;ajouta : &amp;quot; J'ai v&amp;eacute;rifi&amp;eacute;, DBO.GET_INVITATION_PWD() n'a pas &amp;eacute;t&amp;eacute; mis &amp;agrave; jour depuis qu'il a &amp;eacute;t&amp;eacute; cr&amp;eacute;&amp;eacute;, il y a plus de deux ans&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_CqqtAtYDGO7-adEs_lYNP0bTFc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_CqqtAtYDGO7-adEs_lYNP0bTFc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_CqqtAtYDGO7-adEs_lYNP0bTFc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_CqqtAtYDGO7-adEs_lYNP0bTFc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/dRXR6QIg_Ig" height="1" width="1"/&gt;</description> 
			<slash:comments>4</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Mot-de-passe-oublie-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Mot-de-passe-oublie-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Barnier ne peut pas se connecter (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/MBV3wTA07e8/Barnier-ne-peut-pas-se-connecter-(T).aspx</link> 
			<category>Code du jour</category>
			<pubDate>Tue, 19 May 2009 16:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6576</guid> 
			<description>&lt;p&gt;&amp;quot;Barnier ne peut pas se connecter,&amp;quot; lan&amp;ccedil;a le responsable de &lt;strong&gt;David&lt;/strong&gt;,  &amp;quot;Il faut r&amp;eacute;parer &amp;ccedil;a. De suite !&amp;quot;&lt;/p&gt;
&lt;p&gt;Quelle meilleure fa&amp;ccedil;on de commencer une semaine? Quand Barnier ne pouvait pas se connecter, cela sous-entendait qu'il ne pouvait pas ex&amp;eacute;cuter ses rapports d'activit&amp;eacute;. Et &amp;ccedil;a sous-entendait aussi que la soci&amp;eacute;t&amp;eacute; toute enti&amp;egrave;re devait stopper toute activit&amp;eacute; et se concentrer sur son nouvel objectif archi prioritaire : les rapports de Barnier.&lt;/p&gt;
&lt;p&gt;A contrecoeur, David appela Barnier. Comme pr&amp;eacute;vu, celui-ci n'&amp;eacute;tait pas content du tout. &amp;quot;Ca n'arr&amp;ecirc;te pas de me demander mon foutu code PIN,&amp;quot; jurait Barnier, &amp;quot;Pourquoi est-ce que je dois tout le temps le retaper ce satan&amp;eacute; code PIN? Il me faut absolument ces rapports!&amp;quot;.&lt;/p&gt;
&lt;p&gt;Pour des raisons inconnues, le syst&amp;egrave;me de reporting de la soci&amp;eacute;t&amp;eacute; utilisait un code PIN de quatre chiffres pour authentifier ses utilisateurs. David s&amp;eacute;lectionna son nom dans la liste des logins, et saisit son code PIN : 7734. Et le syst&amp;egrave;me fonctionna &amp;agrave; merveille. Enfin, aussi merveilleusement que ce vieux syst&amp;egrave;me de reporting PHP le permettait.&lt;/p&gt;
&lt;p&gt;Personne n'avait touch&amp;eacute; au code depuis des ann&amp;eacute;es, David pensa donc que le probl&amp;egrave;me venait du navigateur web de Barnier. Peut-&amp;ecirc;tre un probl&amp;egrave;me de fichier cache? De zone de confiance? Cookies d&amp;eacute;sactiv&amp;eacute;s? Fichiers corrompus? David essaya toutes ces possibilit&amp;eacute;s en vain, Barnier devenait de plus en plus &amp;eacute;nerv&amp;eacute;.&lt;/p&gt;
&lt;p&gt;&amp;quot;Ou sont mes rapports?&amp;quot; Insista Barnier, &amp;quot;Je les veux tout de suite&amp;quot;.&lt;/p&gt;
&lt;p&gt;Sur un coup de t&amp;ecirc;te David demanda &amp;agrave; Barnier quel &amp;eacute;tait son code PIN. &amp;quot;Hmphf&amp;quot;, toussa Barnier, &amp;quot;Je viens juste de le changer, et maintenant il va encore falloir que je le change ! Mon foutu code PIN est 0010!&amp;quot;&lt;/p&gt;
&lt;p&gt;Et l&amp;agrave;, dans la t&amp;ecirc;te de David, ce fut le d&amp;eacute;clic. Il cr&amp;eacute;a un nouvel utilisateur, lui sp&amp;eacute;cifia le code PIN &amp;quot;0010&amp;quot; et se connecta avec. Il navigua ensuite sur le site, puis attendit pendant dix secondes pour recliquer sur un lien&amp;hellip; avant d'&amp;ecirc;tre &amp;eacute;ject&amp;eacute; sur la mire de login.&lt;/p&gt;
&lt;p&gt;Pour confirmer son soup&amp;ccedil;on, il jeta un coup d'oeil au code...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre style="margin-left: 40px;"&gt;
$_SESSION['TIMEOUT'] = $this-&amp;gt;getTimeOut();
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Creusant un peu plus loin, David rechercha la fonction getTimeOut...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre style="margin-left: 40px;"&gt;
function getTimeOut()
    {
        return $_POST['pin_number'];
    }
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Craignant de d&amp;eacute;molir le vieux syst&amp;egrave;me PHP, David remis le code PIN de Barnier &amp;agrave; 1337 et lui conseilla de ne plus jamais le changer pour une valeur inf&amp;eacute;rieure &amp;agrave; 1000...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WGIawffjuSOGjGUBKG7L5_Zy0Ks/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WGIawffjuSOGjGUBKG7L5_Zy0Ks/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WGIawffjuSOGjGUBKG7L5_Zy0Ks/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WGIawffjuSOGjGUBKG7L5_Zy0Ks/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/MBV3wTA07e8" height="1" width="1"/&gt;</description> 
			<slash:comments>7</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Barnier-ne-peut-pas-se-connecter-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Barnier-ne-peut-pas-se-connecter-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Trop de fonctions (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/sKyHrlt1vBw/Trop-de-fonctions-(T).aspx</link> 
			<category>Code du jour</category>
			<pubDate>Mon, 23 Mar 2009 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6499</guid> 
			<description>&lt;p&gt;Comme il &amp;eacute;tait le plus exp&amp;eacute;riment&amp;eacute; de son groupe lorsque l'on parlait de C#, c'est souvent &amp;agrave; &lt;strong&gt;Yakir&lt;/strong&gt; que les d&amp;eacute;veloppeurs posaient leurs questions. R&amp;eacute;cemment, un de ses coll&amp;egrave;gues, James, lui demanda la meilleure fa&amp;ccedil;on de stocker des centaines d'objets en m&amp;eacute;moire. Yakir lui r&amp;eacute;pondit : &amp;quot;Cela d&amp;eacute;pend de ce que tu souhaites en faire. Si tu veux l'utiliser via un index, le plus simple c'est l'Arraylist. Par contre, si tu veux utiliser le syst&amp;egrave;me de cl&amp;eacute;/valeur, alors prend une Hashtable.&amp;quot;&lt;/p&gt;
&lt;p&gt;Les besoins de l'application de James semblaient mieux coller avec l'utilisation d'une Hashtable, il d&amp;eacute;cida donc de l'impl&amp;eacute;menter. Quelques heures plus tard, il revint vers Yakir : &amp;quot;Ton syst&amp;egrave;me de Hashtable ne marche pas super&amp;quot; expliqua James, &amp;quot;Tu ne connais pas quelque chose de plus efficace?&amp;quot;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;quot;Euuu&amp;quot;, r&amp;eacute;pondit Yakir, &amp;quot;rien n'est vraiment plus efficace qu'une Hashtable. Quel est exactement ton probl&amp;egrave;me?&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;C'est juste trop lent&amp;quot;, r&amp;eacute;pondit James, &amp;quot;D&amp;egrave;s que j'ai des donn&amp;eacute;es dans ma liste il faut presque cinq secondes pour ajouter, retirer ou retrouver un &amp;eacute;l&amp;eacute;ment.&amp;quot;&lt;/p&gt;
&lt;p&gt;A ce moment Yakir sut qu'il y avait un probl&amp;egrave;me et d&amp;eacute;cida de jeter un petit coup d'&amp;oelig;il au code de James, voici ce qu'il vit :&lt;/p&gt;
&lt;pre&gt;
  class HashTable
  {
    public object[] keys;
    public object[] values;

    public HashTable()
    {
      keys = new object[0];
      values = new object[0];
    }

    public void Add(object key, object value)
    {
      Array.Resize(ref keys, keys.Length + 1);
      Array.Resize(ref values, values.Length + 1);
      keys[keys.Length - 1] = key;
      values[values.Length - 1] = value;
    }

    public void Remove(object key)
    {
      object[] tempKeys = new object[0];
      object[] tempValues = new object[0];
      for (int i = 0; i &amp;lt;= keys.Length - 1; i++)
      {
        if (!keys[i].Equals(key))
        {
          Array.Resize(ref tempKeys, tempKeys.Length + 1);
          Array.Resize(ref tempValues, tempValues.Length + 1);
          tempKeys[tempKeys.Length - 1] = keys[i];
          tempValues[tempValues.Length - 1] = values[i];
        }
      }
      keys = tempKeys;
      values = tempValues;
    }

    public object GetItem(object key)
    {
      for (int i = 0; i &amp;lt;= keys.Length - 1; i++)
      {
        if (keys[i].Equals(key))
        {
          return values[i];
        }
      }
      return null;
    }

    public int NumberOfItems
    {
      get
      {
        return keys.Length;
      }
    }
  }
&lt;/pre&gt;
&lt;p&gt;&amp;quot;Oula!&amp;quot; dit Yakir. &amp;quot; Mais pourquoi tu n'as pas utilis&amp;eacute; les Hashtables du Framework .net? Tu sais, celle de System.Collections dont je t'ai parl&amp;eacute;.&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;J'ai jet&amp;eacute; un coup d'&amp;oelig;il&amp;quot;, expliqua James, &amp;quot;mais il y avait trop de fonctions, ce qui signifie que la collection aurait &amp;eacute;t&amp;eacute; plus lente. Ma classe elle ne contient que 3 fonctions, c'est donc plus efficace.&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/c8kVxuwtAHauk5nLGbC0-8mKXTo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c8kVxuwtAHauk5nLGbC0-8mKXTo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/c8kVxuwtAHauk5nLGbC0-8mKXTo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/c8kVxuwtAHauk5nLGbC0-8mKXTo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/sKyHrlt1vBw" height="1" width="1"/&gt;</description> 
			<slash:comments>7</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Trop-de-fonctions-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Trop-de-fonctions-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Article de fond: Notepad Translation Error (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/lRIkXjUEq3g/Notepad-Translation-Error-(T).aspx</link> 
			<category>Article de fond</category>
			<pubDate>Fri, 13 Mar 2009 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6494</guid> 
			<description>&lt;p&gt;Savoir rejetter une faute sur un tiers est un art puissant qui n&amp;eacute;cessite d'&amp;ecirc;tre utilis&amp;eacute; avec agilit&amp;eacute;. Dans certains cas la situation rend la chose plut&amp;ocirc;t simple. On peut citer le classique &amp;quot;C'est &amp;agrave; cause du prestataire mais lui en parle pas &amp;ccedil;a le mettrait mal &amp;agrave; l'aise&amp;quot;, o&amp;ugrave; encore le &amp;quot;Ha &amp;ccedil;a .... encore une peau de banane que X a laiss&amp;eacute; derri&amp;egrave;re lui&amp;quot; (remplacez le X par un coll&amp;egrave;gue parti, vous noterez le bonus x2 lorsque le coll&amp;egrave;gue est prestataire). Certains font preuve d'une imagination incroyable pour r&amp;eacute;ussir &amp;agrave; se sortir des pires situations, parfois &amp;ccedil;a passe, parfois pas. La r&amp;egrave;gle d'or est pourtant simple : s'assurer de bien cerner les limites des connaissances de son interlocuteur, et lui envoyer un argument hors limite avec un aplomb sans faille. Malheureusement pour eux, les &amp;eacute;diteurs du logiciel que &lt;strong&gt;Rick &lt;/strong&gt;utilisait n'ont pas fix&amp;eacute; cette limite bien loin...&lt;/p&gt;
&lt;p&gt;Depuis plusieurs jours, Rick &amp;eacute;tait en conflit avec un &amp;eacute;diteur de logiciel. Le syst&amp;egrave;me de Rick &amp;eacute;tait sens&amp;eacute; communiquer avec le logiciel de l'&amp;eacute;diteur en utilisant des fichiers XML. Probl&amp;egrave;me, les fichiers en provenance du syst&amp;egrave;me &amp;eacute;diteur revenaient dans un format XML incorrect. Rick envoya donc un message au contact technique (&amp;quot;Terry&amp;quot;) signalant que les donn&amp;eacute;es retourn&amp;eacute;es n'&amp;eacute;taient pas valides. Terry lui r&amp;eacute;pondit qu'il allait analyser le fichier en question.&lt;/p&gt;
&lt;p&gt;Le probl&amp;egrave;me que Rick avait d&amp;eacute;couvert concernait le format des quotes d'un des attributs du fichier XML. En effet, l'un d'entre eux avait des simples quotes alors que le reste du fichier &amp;eacute;tait bien en double quote. Terry r&amp;eacute;pondit que le fichier XML utilisait uniquement des doubles quotes et pour soutenir son propos, il envoya &amp;agrave; Rick des copies d'&amp;eacute;cran issues de XMLSpy et d'IE montrant que le fichier &amp;eacute;tait effectivement uniquement compos&amp;eacute;  de doubles quotes.&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;img alt="" src="http://img.worsethanfailure.com/images/200711/xml-ie.png" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;quot;Oui, je vois bien&amp;quot; r&amp;eacute;pondit Rick par email, &amp;quot;Mais XMLSpy et IE sont capables de corriger &amp;agrave; la vol&amp;eacute;e les petites erreurs - par exemple simples quotes en double quotes&amp;quot;. Rick d&amp;eacute;cida d'employer la m&amp;ecirc;me technique que Terry et lui envoya une copie d'&amp;eacute;cran de Notepad affichant le passage en erreur.&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;img src="http://img.worsethanfailure.com/images/200711/xml.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Plus tard Rick re&amp;ccedil;u une r&amp;eacute;ponse :&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;Bonjour Rick.&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;Nous avons regard&amp;eacute; de pr&amp;egrave;s le fichier dans XMLSpy, Notepad et Internet Explorer. C'est uniquement Notepad qui affiche le ' , les deux autres logiciels affichent bien le &amp;quot; , nous pensons que cela vient de la fa&amp;ccedil;on dont Notepad traduit les fichiers XML. Si besoin nous serons en mesure de creuser pour comprendre pourquoi Notepad affiche un ' au lieu du &amp;quot;, par contre, cela ne pourra pas se faire avant la semaine prochaine.&lt;/p&gt;
&lt;p&gt;Rick avait finalement eu sa r&amp;eacute;ponse. Pourquoi Notepad a d&amp;eacute;cid&amp;eacute; de remplacer &lt;em&gt;cette instance sp&amp;eacute;cifique&lt;/em&gt; de quotes ? Ca par contre, c'est toujours un myst&amp;egrave;re ...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KBJ11PTXl6GOptuMAnVLexjHasE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KBJ11PTXl6GOptuMAnVLexjHasE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KBJ11PTXl6GOptuMAnVLexjHasE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KBJ11PTXl6GOptuMAnVLexjHasE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/lRIkXjUEq3g" height="1" width="1"/&gt;</description> 
			<slash:comments>4</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Notepad-Translation-Error-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Notepad-Translation-Error-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Developpeur 1, Crise  0</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/Ic7rGqqvi2c/Developpeur-1,-Crise--0.aspx</link> 
			<category>Code du jour</category>
			<pubDate>Tue, 10 Mar 2009 04:30:00 GMT</pubDate> 
			<guid isPermaLink="false">6486</guid> 
			<description>&lt;p&gt;&lt;img width="175" src="http://img.thedailywtf.com/images/fr/articles/iStock_000006693339XSmall.jpg" alt="" style="margin: 5px; float: right;" class="wtf_imgfloatright" /&gt;C'est la crise ! D&amp;eacute;veloppeurs, augmentez vos lignes de code pour conserver votre job ! Plus le code est long et inutile, plus vous aurez de jours de travail n&amp;eacute;cessaire pour le maintenir. Et puis, si &amp;ccedil;a a &amp;eacute;t&amp;eacute; dur &amp;agrave; d&amp;eacute;velopper, il faut bien que &amp;ccedil;a soit dur &amp;agrave; relire non ? Le d&amp;eacute;veloppeur qui a produit le code que &lt;strong&gt;Quentin &lt;/strong&gt;doit aujourd'hui maintenir avait certainement pressenti la crise arriver...&lt;/p&gt;
&lt;p&gt;Depuis maintenant 3 mois, j'ai le &amp;quot;plaisir&amp;quot; de travailler sur la remise &amp;agrave; flots d'un projet Java/J2EE. Les d&amp;eacute;lais ont &amp;eacute;t&amp;eacute; explos&amp;eacute;s, les soucis de performances sont constants et la base de code fait peur &amp;agrave; voir. Duplication de code, syndrome NIH, m&amp;eacute;triques qui cr&amp;egrave;vent le plafond, sans parler de tout le code &amp;eacute;crit au m&amp;eacute;pris des plus simples r&amp;egrave;gles de programmation.&lt;/p&gt;
&lt;p&gt;Ce matin, j'ai mis les mains dans la partie s'occupant de l'internationalisation des messages et ai d&amp;eacute;couvert la fa&amp;ccedil;on particuli&amp;egrave;re dont le pr&amp;eacute;c&amp;eacute;dent d&amp;eacute;veloppeur formatait ses textes i18n. Jugez plut&amp;ocirc;t :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre style="margin-left: 40px;"&gt;
public String getProperty(String key) {
   if (properties != null){
       return properties.getProperty(key);
   }
   return null;
}

public String getDynamicProperty(String key, String param0) {
   String prop = getProperty(key);
   String retour = prop;
   if (prop != null){
       retour = prop.replaceAll(&amp;quot;\\{0\\}&amp;quot;, param0);
   }
   return retour;
}

public String getDynamicProperty(String key, String param0, String param1) {
   String prop = getDynamicProperty(key, param0);
   String retour = prop;
   if (prop != null){
       retour = prop.replaceAll(&amp;quot;\\{1\\}&amp;quot;, param1);
   }
   return retour;
}

public String getDynamicProperty(String key, String param0, String param1, String param2) {
   String prop = getDynamicProperty(key, param0, param1);
   String retour = prop;
   if (prop != null){
       retour = prop.replaceAll(&amp;quot;\\{2\\}&amp;quot;, param2);
   }
   return retour;
}
&lt;/pre&gt;
&lt;p&gt;etc...&lt;/p&gt;
&lt;p&gt;J'imagine que le pr&amp;eacute;c&amp;eacute;dent d&amp;eacute;veloppeur a oubli&amp;eacute; de regarder l'API du JDK et plus pr&amp;eacute;cis&amp;eacute;ment MessageFormat, et ne connait pas les varargs...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/A61YnhLErcFY6EjAZBo0cyj8-eg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A61YnhLErcFY6EjAZBo0cyj8-eg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/A61YnhLErcFY6EjAZBo0cyj8-eg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A61YnhLErcFY6EjAZBo0cyj8-eg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/Ic7rGqqvi2c" height="1" width="1"/&gt;</description> 
			<slash:comments>7</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Developpeur-1,-Crise--0.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Developpeur-1,-Crise--0.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Article de fond: Requête futile (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/LI1xH9hJxJI/Requête-futile-(T).aspx</link> 
			<category>Article de fond</category>
			<pubDate>Fri, 06 Mar 2009 06:00:00 GMT</pubDate> 
			<guid isPermaLink="false">5903</guid> 
			<description>&lt;p&gt;Je suis s&amp;ucirc;r que nous avons tous des histoires de projets cauchemardesques que nous h&amp;eacute;ritons de nos clients. Que ce soit un programme critique &amp;eacute;crit (en JavaScript) par le cousin de la secr&amp;eacute;taire, ou un projet o&amp;ugrave; on laisse les utilisateurs faire eux-m&amp;ecirc;mes l'analyse de leur outil de gestion de production.&lt;strong&gt; Jakeypoo&lt;/strong&gt; nous fait partager un de ses pires cauchemars :&lt;/p&gt;
&lt;p&gt;Imaginez ma surprise quand je suis tomb&amp;eacute; sur un de ces projets avec ses pages ASP bien &amp;eacute;crites et comment&amp;eacute;es : Je me suis dit que &amp;ccedil;a allait &amp;ecirc;tre facile.&lt;/p&gt;
&lt;p&gt;Mon boss me demanda que l'on se mette ensemble &amp;agrave; travailler sur le diagramme de la base comme &amp;ccedil;a il serait capable de se r&amp;eacute;f&amp;eacute;rer aux noms de colonnes, cl&amp;eacute;s, etc. Je lan&amp;ccedil;ais notre logiciel de mod&amp;eacute;lisation de base et d&amp;eacute;couvris avec horreur le nom des tables en cours de traitement.&lt;/p&gt;
&lt;blockquote&gt;&lt;em&gt;Cn.&amp;nbsp; CnAdr.&amp;nbsp; CnAdrPrf.&amp;nbsp; CnAdrPrfPh_1.&amp;nbsp; CnAdrSal.&amp;nbsp; CnAttr... (ca rame ...)&lt;/em&gt;&lt;br /&gt;
&lt;em&gt; CnRelEdu_1Attr.&amp;nbsp; CnRelEdu_1AttrCat_1.&lt;/em&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pas de cl&amp;eacute;s &amp;eacute;trang&amp;egrave;res? Ok, ce n&amp;rsquo;est pas grave. Fallait bien s'y attendre, continuons. Pas... pas de cl&amp;eacute;s primaires? Dans aucune des tables ?&lt;br /&gt;
Ok Jake. T'es un mec astucieux, regarde le diagramme. La table &amp;quot;Cn&amp;quot; (Centre nerveux?) semble plut&amp;ocirc;t importante. Regardons ce que nous avons l&amp;agrave;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt; &lt;img alt="" src="http://www.thedailywtf.com/images/10/o_Cn.gif" /&gt; &lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;br /&gt;
&lt;strong&gt;Petit d&amp;eacute;fi &lt;/strong&gt;:peux-tu deviner ce que contient l'enregistrement 42?&lt;/p&gt;
&lt;p&gt;Pour t'aider je te propose cette requ&amp;ecirc;te qui est utilis&amp;eacute;e pour trouver un enregistrement dans la base :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;&lt;img src="http://thedailywtf.com/images/10/o_Cn2_a.gif" alt="" /&gt;&lt;/blockquote&gt;
&lt;p&gt;L'adresse email est dans le champ N&amp;deg; de t&amp;eacute;l&amp;eacute;phone. Les url des sites web sont dans le champ autre num&amp;eacute;ro de t&amp;eacute;l&amp;eacute;phone. &lt;br /&gt;
Les plus attentifs auront remarqu&amp;eacute; le passage &amp;quot;networkingFromClause&amp;quot; dans la requ&amp;ecirc;te pr&amp;eacute;c&amp;eacute;dente. Pourquoi ne pas taper simplement &amp;quot;FROM Cn?&amp;quot;.&lt;/p&gt;
&lt;p&gt;L'image qui suit devrait clarifier les choses (ou pas).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;&lt;img alt="" src="http://thedailywtf.com/images/10/o_Cn2_b.gif" /&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fWNlAHhcUsCIL4QSdK_Q9u0Wqlo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fWNlAHhcUsCIL4QSdK_Q9u0Wqlo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fWNlAHhcUsCIL4QSdK_Q9u0Wqlo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fWNlAHhcUsCIL4QSdK_Q9u0Wqlo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/LI1xH9hJxJI" height="1" width="1"/&gt;</description> 
			<slash:comments>14</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Requête-futile-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Requête-futile-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Article de fond: Sauvegarde Ping Pong (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/rJM4dSB_Z20/Sauvegarde-Ping-Pong-(T).aspx</link> 
			<category>Article de fond</category>
			<pubDate>Thu, 26 Feb 2009 07:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6370</guid> 
			<description>&lt;p&gt;&lt;img src="http://img.worsethanfailure.com/images/200710/library.jpg" alt="" style="margin: 5px; float: right;" class="wtf_imgfloatright" /&gt;&lt;strong&gt;Marcel&lt;/strong&gt; est administrateur syst&amp;egrave;me responsable d'un groupe de biblioth&amp;egrave;ques. Concr&amp;egrave;tement cela veut dire que c'est lui qui connait les r&amp;eacute;ponses aux questions &amp;quot;Ce clavier est-il bien branch&amp;eacute;&amp;quot; et &amp;quot;Pourquoi l'&amp;eacute;cran s'&amp;eacute;teint-il quand je touche ce bouton?&amp;quot;.&lt;/p&gt;
&lt;p&gt;Mars dernier l'une des biblioth&amp;egrave;que dont il a la charge &amp;agrave; eu un s&amp;eacute;rieux probl&amp;egrave;me. Chaque biblioth&amp;egrave;que poss&amp;egrave;de un serveur principal ou sont stoqu&amp;eacute;es toutes ses transactions : qui &amp;agrave; emprunt&amp;eacute; tel livre, qui n'a pas pay&amp;eacute; son abonnement, etc. Le serveur en question &amp;eacute;tait &amp;eacute;teint lorsque Marc arriva un matin et il fut incapable de le faire d&amp;eacute;marrer. Heureusement, le serveur &amp;eacute;tait sauvegard&amp;eacute; chaque nuit, Marcel demanda donc &amp;agrave; un de ses coll&amp;egrave;gues d'aller chercher la bande de sauvegarde, pendant que lui essaierai de r&amp;eacute;parer le syst&amp;egrave;me.&lt;/p&gt;
&lt;p&gt;Quand son coll&amp;egrave;gue revint avec la bande, Marcel la mis dans le lecteur et commenca la restauration. A environs 10% le processus &amp;eacute;choua. Marcel essaya encore et encore sans jamais r&amp;eacute;ussir &amp;agrave; remonter sa sauvegarde. Pas de probl&amp;egrave;me pensa Marcel, nous avons toujours la sauvegarde du jour pr&amp;eacute;cedent, le coll&amp;egrave;gue reparti chercher la bande le l'avant veille et Marcel tenta sa chance une nouvelle fois.&lt;/p&gt;
&lt;p&gt;La restauration se d&amp;eacute;roula sans probl&amp;egrave;me, &amp;agrave; un d&amp;eacute;tail pr&amp;ecirc;t : les donn&amp;eacute;es dataient toutes de six mois! Marcel et ses coll&amp;egrave;gues &amp;eacute;tait vraiment d&amp;eacute;concert&amp;eacute;s : comment pouvait-il exister une sauevgarde de six mois alors que le plan de sauvegarde pr&amp;eacute;voyait de ne conserver qu'au maximum trois mois de donn&amp;eacute;es? Marcel commenca sa petite enqu&amp;ecirc;te en demandant aux autres qui &amp;eacute;tait en charge des sauvegardes.&lt;/p&gt;
&lt;p&gt;&amp;quot;Je pense que c'est Jeanne qui s'en occupe les Lundis, et que Christophe prend les Mardis.&amp;quot;. Macel appella donc imm&amp;eacute;diatement Jeanne pour lui demander sa facon d'effectuer les sauvegardes.&lt;/p&gt;
&lt;p&gt;&amp;quot;Et bien,&amp;quot; commenca Jeanne, &amp;quot;Chaque Lundi matin, je prend une cassette vide en haut de la pile dans l'armoire du sous sol. Une fois la sauvegarde termin&amp;eacute;e, je la remet dans l'armoire du troisi&amp;egrave;me &amp;eacute;tage&amp;quot;. Comme c'&amp;eacute;tait exactement ce qu'elle &amp;eacute;tait sens&amp;eacute;e faire, la r&amp;eacute;ponse de Jeanne n'aida pas Marcel &amp;agrave; r&amp;eacute;soudre l'&amp;eacute;nigme de la sauvegarde datant de six mois.&lt;/p&gt;
&lt;p&gt;Il posa donc la m&amp;ecirc;me question &amp;agrave; Christophe. &amp;quot;Chaque Mardi matin, je prend une cassette vide dans l'armoire du troisi&amp;egrave;me. Je fais ma sauvegarde, et je la pose en haut de la pile dans l'armoire du sous sol.&amp;quot;&lt;/p&gt;
&lt;p&gt;Puisque le myst&amp;egrave;re &amp;eacute;tait r&amp;eacute;solu, Marcel fut en mesure de demander de nouvelles bandes de sauvegardes avec un emballage individuel. Elles ne sont toujours pas &amp;eacute;tiquet&amp;eacute;es mais avec de la chance Jeanne et Christophe ont arr&amp;ecirc;t&amp;eacute; de se repasser la m&amp;ecirc;me bande encore et encore...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wmiVOBeQSw0SisMudsBVvqok904/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wmiVOBeQSw0SisMudsBVvqok904/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wmiVOBeQSw0SisMudsBVvqok904/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wmiVOBeQSw0SisMudsBVvqok904/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/rJM4dSB_Z20" height="1" width="1"/&gt;</description> 
			<slash:comments>11</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Sauvegarde-Ping-Pong-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Sauvegarde-Ping-Pong-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Un mail avant la tempête</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/2PnMpn5FfXE/Un-mail-avant-la-tempête.aspx</link> 
			<category>Code du jour</category>
			<pubDate>Wed, 17 Dec 2008 06:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6367</guid> 
			<description>&lt;p&gt;Mickael qui travaille dans un projet d'e-commerce est tomb&amp;eacute; il y a quelque jours sur un morceau de code pas banal...&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;la petite derni&amp;egrave;re, trouv&amp;eacute;e dans le source d'un presta... the names have been changed to protect the incompetent (remplacez les xxx par l'adresse mail du d&amp;eacute;veloppeur).&lt;/p&gt;
&lt;pre style="margin-left: 80px;"&gt;
 if (!shm_put_var ($shm_id,$this-&amp;gt;key,$cache))
                     {
                        mail(&amp;quot;m.xxxxx@xxxx.fr&amp;quot;,&amp;quot;encore en erreur on est dans la merde \n &amp;quot;.serialize($cache));
                        //echo &amp;quot;
encore en erreur on est dans la merde&amp;quot;;
                     }
					 
&lt;/pre&gt;
&lt;p style="margin-left: 40px;"&gt;&amp;quot;Avec ce genre de commentaire on mesure bien la souffrance du d&amp;eacute;veloppeur en SSII&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-ek-imzFb1bVS8yvVH_eAWY2iGg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-ek-imzFb1bVS8yvVH_eAWY2iGg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-ek-imzFb1bVS8yvVH_eAWY2iGg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-ek-imzFb1bVS8yvVH_eAWY2iGg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/2PnMpn5FfXE" height="1" width="1"/&gt;</description> 
			<slash:comments>12</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Un-mail-avant-la-tempête.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Un-mail-avant-la-tempête.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Message d'erreur: Miss ... take</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/8v6hC05mJk8/Miss--take.aspx</link> 
			<category>Message d'erreur</category>
			<pubDate>Sun, 07 Dec 2008 06:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6390</guid> 
			<description>&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/misssavoie.png" /&gt;&lt;/p&gt;
&lt;p&gt;Une jolie petite coquille trouv&amp;eacute;e par un annonyme sur le &lt;a href="http://missfrance.tf1.fr/miss/miss-pays-de-savoie-4154599.html" target="_new"&gt;site Miss France de TF1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dkIqvCMYg_ajBs4x8iLq32uHU3U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dkIqvCMYg_ajBs4x8iLq32uHU3U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dkIqvCMYg_ajBs4x8iLq32uHU3U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dkIqvCMYg_ajBs4x8iLq32uHU3U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/8v6hC05mJk8" height="1" width="1"/&gt;</description> 
			<slash:comments>11</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Miss--take.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Miss--take.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Article de fond: Le bug qui a fait planter le monde entier (T)</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/r3tXsXFuYY4/Le-bug-qui-a-fait-planter-le-monde-entier-(T).aspx</link> 
			<category>Article de fond</category>
			<pubDate>Thu, 20 Nov 2008 05:30:00 GMT</pubDate> 
			<guid isPermaLink="false">6371</guid> 
			<description>&lt;p&gt;O&amp;ugrave; &amp;eacute;tiez-vous au matin du 1er janvier 1984 ? Moi? J'&amp;eacute;tais  bien au chaud, profitant des 22 jours qui me restaient avant d'ouvrir les yeux. Vous autres &amp;eacute;tiez certainement tous en train de c&amp;eacute;l&amp;eacute;brer comme il se doit la nouvelle ann&amp;eacute;e. Tous? certainement pas, quelques uns - comme &lt;strong&gt;Robert Reagan&lt;/strong&gt; - &amp;eacute;taient en fait en train d'essayer de corriger d&amp;eacute;sesp&amp;eacute;r&amp;eacute;ment un bug qui avait fait planter une bonne partie des ordinateurs du monde.&lt;/p&gt;
&lt;p&gt;Avec tous les probl&amp;egrave;mes de date sens&amp;eacute;s causer &amp;quot;La fin du monde&amp;quot; - l'an 2000 par exemple - c'est surprenant que peu de gens aient entendu parler de ce jour o&amp;ugrave; le monde s'est r&amp;eacute;ellement arr&amp;ecirc;t&amp;eacute;. Ce jour l&amp;agrave; - 1er Janvier 1984 - un simple bug fut responsable de l'arr&amp;ecirc;t - et du non-d&amp;eacute;marrage - de bon nombre de syst&amp;egrave;me informatis&amp;eacute;s.&lt;/p&gt;
&lt;p&gt;Il y avait trois choses qui faisaient fureur dans les ann&amp;eacute;es 80 : Le Rubik's cube, Madonna et Wangs. Autant j'ai peu de doutes sur votre connaissance deux premi&amp;egrave;res ic&amp;ocirc;nes des ann&amp;eacute;es 80, autant il est peu probable que vous connaissiez Wangs - et tous les syst&amp;egrave;mes de Wang Laboratories -, tomb&amp;eacute; depuis dans l'obsolescence. Sachez qu'il y a un quart de si&amp;egrave;cle, Wang &amp;eacute;tait vraiment tr&amp;egrave;s pr&amp;eacute;sent sur le march&amp;eacute;.&lt;/p&gt;
&lt;p&gt;Aux alentours des ann&amp;eacute;es 83, Wang Laboratories employait pr&amp;egrave;s de 30 000 personnes et avait un chiffre d'affaire de 6 milliard de dollars : ses ordinateurs &amp;eacute;taient partout. Le Wand OIS (Office Information System) convenait parfaitement pour la plupart des entreprises et offrait un syst&amp;egrave;me &amp;quot;Facilement extensible&amp;quot; gr&amp;acirc;ce &amp;agrave; son syst&amp;egrave;me de langage de programmation par glossaire. C'&amp;eacute;tait si simple qu'apparemment, m&amp;ecirc;me les secr&amp;eacute;taires pouvaient ma&amp;icirc;triser pleinement la machine.&lt;/p&gt;
&lt;p&gt;Pour vous donner une id&amp;eacute;e plus pr&amp;eacute;cise de la situation, Wang &amp;eacute;tait en mesure de concurrencer les IBM System 34 et System 36 avec sa propre s&amp;eacute;rie de mini-ordinateurs (avant l'&amp;egrave;re micro) appel&amp;eacute;s le Wang VS. Ces syst&amp;egrave;mes incluaient les outils de d&amp;eacute;veloppement standard - COBOL, BASIC, RPG, etc - ainsi que des outils maisons. Et comme la plupart des syst&amp;egrave;me d'exploitations de cette &amp;egrave;re, le Wang VS &amp;eacute;taient un peu &amp;quot;particulier&amp;quot;.&lt;/p&gt;
&lt;p&gt;Une fonctionnalit&amp;eacute; de s&amp;eacute;curit&amp;eacute; int&amp;eacute;ressante du Wang VS &amp;eacute;tait le principe de date d'expiration de fichier. En plus d'avoir une date de cr&amp;eacute;ation et de modification, chaque fichier poss&amp;eacute;dait une date d'expiration! Si quelqu'un - qu'importe les droits utilisateurs - essayait de supprimer le fichier avant sa date d'expiration, le syst&amp;egrave;me d'exploitation levait une erreur - J'imagine que l'&amp;eacute;volution de ce syst&amp;egrave;me a &amp;eacute;t&amp;eacute; le principe de la lecture seule -. Bien que les utilisateurs pouvaient changer la date d'expiration par une ligne de commande, cette fonctionnalit&amp;eacute; &amp;eacute;tait vue comme un &amp;quot;petit plus&amp;quot; qui permettait d'&amp;eacute;viter des suppression accidentelles.&lt;/p&gt;
&lt;p&gt;Comme beaucoup de syst&amp;egrave;mes d'exploitation, les Wang VS et ses applications utilisaient des fichier temporaires pour faire toute sorte de choses. Et comme beaucoup de syst&amp;egrave;me de d&amp;eacute;veloppement modernes (java pour ne pas le citer), il n'y avait pas de m&amp;eacute;canisme de base pour les op&amp;eacute;rations sur les dates et les heures. A la place, diff&amp;eacute;rents modules du syst&amp;egrave;me d'exploitation et ses diff&amp;eacute;rentes applications se basaient sur diff&amp;eacute;rentes fonctions pour les calculs des date et d'heure. Sans surprise, l'une des fonctions &amp;eacute;tait bugg&amp;eacute;e.&lt;/p&gt;
&lt;p&gt;Malheureusement, le bug se trouvait dans le syst&amp;egrave;me charg&amp;eacute; de la cr&amp;eacute;ation des fichier temporaires. Plus pr&amp;eacute;cis&amp;eacute;ment, chaque ann&amp;eacute;e bissextile, le syst&amp;egrave;me initialisait par erreur &amp;agrave; &amp;quot;1&amp;quot; l'index du jour de l'ann&amp;eacute;e qui d&amp;eacute;butait en temps normal &amp;agrave; z&amp;eacute;ro. En d'autre termes, quand le 1er Janvier 1984 (jour 0 d'une ann&amp;eacute;e bissextile) enclencha sa premi&amp;egrave;re milliseconde, le code d&amp;eacute;fectueux mit le 2 janvier 1984 comme date d'expiration des fichiers temporaires.  Le syst&amp;egrave;me d'exploitation fut incapable de supprimer ses propres fichiers temporaires et puisque ces fichiers &amp;eacute;taient cr&amp;eacute;&amp;eacute;s et supprim&amp;eacute;s chaque seconde, un &amp;agrave; un chaque processus dans le Wang VS tomba en panne, causant le dysfonctionnement des ordinateurs. Comme le processus de d&amp;eacute;marrage incluait lui aussi la cr&amp;eacute;ation et la suppression de fichiers temporaires, les ordinateurs ne pouvaient pas &amp;ecirc;tre red&amp;eacute;marr&amp;eacute;s. Et oui, chaque syst&amp;egrave;me Wang VS dans le monde &amp;eacute;tait incapable d'&amp;ecirc;tre red&amp;eacute;marr&amp;eacute;.&lt;/p&gt;
&lt;p&gt;Les ing&amp;eacute;nieurs de Wang et le support technique travaill&amp;egrave;rent toute la journ&amp;eacute;e pour r&amp;eacute;parer tous les ordinateur plant&amp;eacute;s. Gr&amp;acirc;ce &amp;agrave; la combinaison du jour f&amp;eacute;ri&amp;eacute; du nouvel an et du service de transport de nuit de FedEx (qui &amp;eacute;tait apparemment  sous syst&amp;egrave;me IBM), la plupart des soci&amp;eacute;t&amp;eacute;s ne souffrirent que d'une l&amp;eacute;g&amp;egrave;re interruption de service. C'est ainsi que le jour o&amp;ugrave; le monde s'est vraiment arr&amp;ecirc;t&amp;eacute; se termina comme chaque autre.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Prochain rendez-vous le 19 janvier 2038 &amp;agrave; 3h14 et 7 secondes ...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZPGZxH1u9sQmpI36rERjE6JOp8A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZPGZxH1u9sQmpI36rERjE6JOp8A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZPGZxH1u9sQmpI36rERjE6JOp8A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZPGZxH1u9sQmpI36rERjE6JOp8A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/r3tXsXFuYY4" height="1" width="1"/&gt;</description> 
			<slash:comments>11</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Le-bug-qui-a-fait-planter-le-monde-entier-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Le-bug-qui-a-fait-planter-le-monde-entier-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Message d'erreur: What The Fridge ?</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/L8O24KSgDJQ/What-The-Fridge-.aspx</link> 
			<category>Message d'erreur</category>
			<pubDate>Mon, 17 Nov 2008 07:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6364</guid> 
			<description>&lt;p&gt;&lt;strong&gt;Louis&lt;/strong&gt; : &amp;quot;Qui aurait cru que l'environnement linguistique de cette boisson au lait pouvait influencer &amp;agrave; ce point sa conservation?&amp;quot;&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/boisson.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Dell prix nobel de la paix ?&lt;br /&gt;
&lt;strong&gt;Florian&lt;/strong&gt; nous fait part du &amp;quot;Petit craquage de la part du site de Dell&amp;quot; (&lt;a target="new" href="http://kubuntu.free.fr/blog/index.php/2008/10/24/262-microsoft-sort-un-nouvel-os"&gt;source&lt;/a&gt;)&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;img src="http://img.thedailywtf.com/images/fr/errors/DellMsUbuntu.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Alexandre &lt;/strong&gt;en direct de la d&amp;eacute;sinstallation d'actuate ...&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/actuate001.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;... pas &amp;eacute;tonnant apr&amp;egrave;s ce genre d'installation :&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/actuate.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mickael &lt;/strong&gt;: Connu mais toujours amusant&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;img src="http://img.thedailywtf.com/images/fr/errors/unfortunately placed ads 08.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Moins connu mais pas mal non plus:&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;img src="http://img.thedailywtf.com/images/fr/errors/unfortunately placed ads 31.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oDHi8dF2Q5O8c3J5pWVrIKexWLg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oDHi8dF2Q5O8c3J5pWVrIKexWLg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oDHi8dF2Q5O8c3J5pWVrIKexWLg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oDHi8dF2Q5O8c3J5pWVrIKexWLg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/L8O24KSgDJQ" height="1" width="1"/&gt;</description> 
			<slash:comments>7</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/What-The-Fridge-.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/What-The-Fridge-.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Ca-va-spammer</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/CgkH4ukezpQ/Cavaspammer.aspx</link> 
			<category>Code du jour</category>
			<pubDate>Fri, 31 Oct 2008 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6346</guid> 
			<description>&lt;p&gt;Comme vous le savez certainement, le S&amp;eacute;nat a adopt&amp;eacute; hier le texte antipiratage &amp;agrave; une large majorit&amp;eacute;. Co&amp;iuml;ncidence amusante, &lt;strong&gt;Kevin V&lt;/strong&gt;. m'a envoy&amp;eacute; hier un superbe &lt;a target="_new" href="http://fr.wikipedia.org/wiki/Captcha"&gt;captcha&lt;/a&gt; trouv&amp;eacute; sur un site s'opposant &amp;agrave; la loi Hadopi.&lt;/p&gt;
&lt;p&gt;&amp;quot;&lt;em&gt;Sur le site Ca-va-couper.fr (site humoristique sur la future loi Hadopi), le captcha utilis&amp;eacute; sur la page pour recommander le site &amp;agrave; ses amis... est en clair dans la page !&lt;/em&gt;&amp;quot;&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/articles/captcha_bug.jpg" /&gt;&lt;/p&gt;
&lt;h4&gt;D&amp;eacute;tail du code HTML :&lt;/h4&gt;
&lt;p style="margin-left: 40px;"&gt;&amp;lt;div class=&amp;quot;champ_libelle_formulaire&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pour &amp;eacute;viter le spam, recopiez le code suivant : &amp;lt;b&amp;gt;DA4768&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ne serait-ce pas le comble pour un site qui pr&amp;ocirc;ne le droit au piratage... de se faire pirater ?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uVXheU1xyid3tBRpz-_gcsEiOkw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uVXheU1xyid3tBRpz-_gcsEiOkw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uVXheU1xyid3tBRpz-_gcsEiOkw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uVXheU1xyid3tBRpz-_gcsEiOkw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/CgkH4ukezpQ" height="1" width="1"/&gt;</description> 
			<slash:comments>25</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Cavaspammer.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Cavaspammer.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Message d'erreur: La réponse de Motorola à Apple</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/Udl-rLvZrX8/La-reponse-de-Motorola-à-Apple.aspx</link> 
			<category>Message d'erreur</category>
			<pubDate>Mon, 27 Oct 2008 07:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6340</guid> 
			<description>&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/MonQ.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mickael&lt;/strong&gt; et &lt;strong&gt;Juliette&lt;/strong&gt; : Apr&amp;egrave;s le MacBook parfaitement con de la semaine derni&amp;egrave;re, voici L'intelligence renouvel&amp;eacute;e de mon Q. (&lt;a target="_new" href="http://direct.motorola.com/CFN/motoq9/q-home.asp?Country=CNA&amp;amp;language=CFN&amp;amp;productid=30722+http%3A%2F%2Fdirect.motorola.com%2FCFN%2Fmotoq9%2Fq-home.asp%3FCountry%3DCNA&amp;amp;language=CFN&amp;amp;productid=30722"&gt;Source&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8_6eHGO6pVajce0A2x8lp22xohA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8_6eHGO6pVajce0A2x8lp22xohA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8_6eHGO6pVajce0A2x8lp22xohA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8_6eHGO6pVajce0A2x8lp22xohA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/Udl-rLvZrX8" height="1" width="1"/&gt;</description> 
			<slash:comments>13</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/La-reponse-de-Motorola-à-Apple.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/La-reponse-de-Motorola-à-Apple.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Message d'erreur: MacBook parfaitement con</title> 
			<link>http://syndication.thedailywtf.com/~r/WTF/FR/~3/3SKq2vbtgAE/MacBook-parfaitement-con.aspx</link> 
			<category>Message d'erreur</category>
			<pubDate>Wed, 15 Oct 2008 08:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6325</guid> 
			<description>&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/imac_con.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mickael &lt;/strong&gt;m'a inform&amp;eacute; d'une bien jolie boulette sur le site d'apple, manifestement le caract&amp;egrave;re &amp;quot;&amp;ccedil;&amp;quot; de &amp;quot;con&amp;ccedil;u&amp;quot; n'est pas bien pass&amp;eacute;. (&lt;a target="_new" href="http://www.clubic.com/actualite-169026-insolite-macbook-parfaitement-con.html"&gt;source&lt;/a&gt; )&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ojx_VxXrPugtZM9128jk3SvYYSU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ojx_VxXrPugtZM9128jk3SvYYSU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ojx_VxXrPugtZM9128jk3SvYYSU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ojx_VxXrPugtZM9128jk3SvYYSU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/WTF/FR/~4/3SKq2vbtgAE" height="1" width="1"/&gt;</description> 
			<slash:comments>12</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/MacBook-parfaitement-con.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/MacBook-parfaitement-con.aspx</feedburner:origLink></item>
		
	</channel>
</rss>
