<?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://feeds.feedburner.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://feeds.feedburner.com/WTF/FR" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
			<author>Jocelyn Demoy</author> 
			<title>Message d'erreur: Il n'y en aura pas pour tout le monde !</title> 
			<link>http://feedproxy.google.com/~r/WTF/FR/~3/yTDd1w6KXjc/Il-ny-en-aura-pas-pour-tout-le-monde-!.aspx</link> 
			<category>Message d'erreur</category>
			<pubDate>Wed, 02 Sep 2009 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6667</guid> 
			<description>&lt;p&gt;En effet, il y en a m&amp;ecirc;me plus du tout (&lt;strong&gt;Will&lt;/strong&gt;)&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://img.thedailywtf.com/images/fr/errors/cdiscount-wtf.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Will&lt;/strong&gt; : Nouveau Theme &amp;quot;So Geek&amp;quot; pour la page personnalisable iGoogle ? Non juste un petit malaise dans le rafraichissement automatique de la page.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://img.thedailywtf.com/images/fr/errors/wtf_igoogle.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Envoy&amp;eacute; par&lt;strong&gt; {Nom} &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://img.thedailywtf.com/images/fr/errors/screenshot1.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Haaaa les joies des publicit&amp;eacute;s contextuelles&lt;/p&gt;
&lt;p&gt;&lt;img width="750" src="http://img.thedailywtf.com/images/fr/errors/wtf-police.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;R&amp;eacute;gis&lt;/strong&gt; : &amp;quot;Auchandirect pense a tout, m&amp;ecirc;me aux lapins&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;img width="750" src="http://img.thedailywtf.com/images/fr/errors/Capturer.PNG" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;La banni&amp;egrave;re vue de l'espace ... &lt;strong&gt;Gr&amp;eacute;goire B.&lt;/strong&gt; &amp;quot;Puisque nous ne sommes sur&amp;nbsp; Terre que 6,5 milliards, j'en conclus que des extraterrestres l'ont vue&amp;quot; (et ce n'est pas une plaisanterie)&lt;/p&gt;
&lt;p&gt;&lt;img src="http://img.thedailywtf.com/images/fr/errors/11-milliards.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_mV_hrHn6UNLNfxe3x2QO5uT_tg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_mV_hrHn6UNLNfxe3x2QO5uT_tg/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/_mV_hrHn6UNLNfxe3x2QO5uT_tg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_mV_hrHn6UNLNfxe3x2QO5uT_tg/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/yTDd1w6KXjc" height="1" width="1"/&gt;</description> 
			<slash:comments>2</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Il-ny-en-aura-pas-pour-tout-le-monde-!.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Il-ny-en-aura-pas-pour-tout-le-monde-!.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Entretiens d'embauche: Le test de la question technique (T)</title> 
			<link>http://feedproxy.google.com/~r/WTF/FR/~3/NaGWpLep1y0/Le-test-de-la-question-technique-(T).aspx</link> 
			<category>Entretiens d'embauche</category>
			<pubDate>Fri, 07 Aug 2009 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6644</guid> 
			<description>&lt;p&gt;&lt;img class="wtf_imgfloatright" style="margin: 5px; float: right;" alt="photo credit: minxlabs @ flickr" src="http://img.thedailywtf.com/images/200903/lightBulb.jpg" /&gt; La soci&amp;eacute;t&amp;eacute; dans laquelle je travaillais avait &amp;eacute;mis une offre d'emploi pour un d&amp;eacute;veloppeur dotnet. La partie technique de l'entretien &amp;eacute;tait r&amp;eacute;serv&amp;eacute;e &amp;agrave; mon coll&amp;egrave;gue et moi m&amp;ecirc;me. Nous voulions &amp;ecirc;tre s&amp;ucirc;rs d'avoir des candidats avec une solide exp&amp;eacute;rience en SQL et en mod&amp;eacute;lisation de base de donn&amp;eacute;es. On avait donc pr&amp;eacute;par&amp;eacute; une question qui permettait au candidat de montrer l'&amp;eacute;tendue de ses connaissances.&lt;/p&gt;
&lt;p&gt;Notre premier postulant &amp;eacute;tait une postulante du nom de &amp;quot;Marie&amp;quot;, environ vingt ans et qui semblait plut&amp;ocirc;t nerveuse. Apr&amp;egrave;s avoir parl&amp;eacute; avec elle pendant quelques minutes pour la d&amp;eacute;tendre, nous lui posons notre question technique.&lt;/p&gt;
&lt;p&gt;&amp;quot;Imaginez que vous deviez cr&amp;eacute;er une application qui g&amp;egrave;re les demandes de cong&amp;eacute;s pour les employ&amp;eacute;s. Les employ&amp;eacute;s soumettraient leurs demandes qui seraient transmises &amp;agrave; leurs sup&amp;eacute;rieurs. Le sup&amp;eacute;rieur pourrait, soit approuver, soit rejeter la demande, mais aussi la renvoyer &amp;agrave; l'employ&amp;eacute; pour modification. La demande traverserait ensuite une chaine hi&amp;eacute;rarchique avant d'&amp;ecirc;tre finalement re&amp;ccedil;ue par le chef du d&amp;eacute;partement qui pourrait l'approuver d&amp;eacute;finitivement et la soumettre aux ressources humaines. La question est : Si vous deviez concevoir un tel syst&amp;egrave;me, comment concevriez vous la structure des donn&amp;eacute;es trait&amp;eacute;es ?&amp;quot;&lt;/p&gt;
&lt;p&gt;Marie r&amp;eacute;fl&amp;eacute;chit pendant une minute, puis une autre&amp;hellip; et encore une. &amp;quot;Eh bien, il fait chaud ici!&amp;quot; remarqua-t-elle. Mon coll&amp;egrave;gue avait un ventilateur &amp;agrave; proximit&amp;eacute; qu'il pointa en sa direction.&lt;/p&gt;
&lt;p&gt;Marie r&amp;eacute;fl&amp;eacute;chit encore une autre minute. &amp;quot;Et bien...&amp;quot; une autre minute passa.&lt;/p&gt;
&lt;p&gt;&amp;quot;Il n'y a pas de r&amp;eacute;ponse toute faite pour cette question&amp;quot; lui dis-je pour tenter de la rassurer. &amp;quot;On veut juste savoir votre d&amp;eacute;marche, montrez nous comment vous pouvez r&amp;eacute;soudre un probl&amp;egrave;me en le prenant sous un angle innovant&amp;quot;&lt;/p&gt;
&lt;p&gt;Plusieurs minutes pass&amp;egrave;rent. &amp;quot;Alors heu...&amp;quot; une autre minute &amp;quot;On aurait besoin, disons, d'une variable ...&amp;quot;&lt;/p&gt;
&lt;p&gt;Mon coll&amp;egrave;gue jeta un coup d'&amp;oelig;il dans ma direction alors que je baissais les yeux vers mon clavier.&lt;/p&gt;
&lt;p&gt;&amp;quot;... et une constante ...&amp;quot;&lt;/p&gt;
&lt;p&gt;J'avais trouv&amp;eacute; un point sur le mur &amp;agrave; cot&amp;eacute; de mon bureau et m'effor&amp;ccedil;ait de le fixer obstin&amp;eacute;ment.&lt;/p&gt;
&lt;p&gt;&amp;quot;... ha et heuuu, comment &amp;ccedil;a s'appelle? Un flag ! Oui, un flag !&amp;quot;&lt;/p&gt;
&lt;p&gt;Mon coll&amp;egrave;gue prit une longue et profonde inspiration. &amp;quot;Donc, vous dites que dans la mod&amp;eacute;lisation de la base de donn&amp;eacute;es, vous incluriez une constante, une variable et un flag?&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;quot;Oui, c'est &amp;ccedil;a!&amp;quot; s'exclama Marie, manifestement contente de sa r&amp;eacute;ponse.&lt;/p&gt;
&lt;p&gt;M&amp;ecirc;me si l'entretien technique continua pendant encore quelques minutes, il s'&amp;eacute;tait officieusement arr&amp;ecirc;t&amp;eacute; pile &amp;agrave; ce moment l&amp;agrave;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Uv_GwKkT0CuKkmQYgSxk_7ffxwk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Uv_GwKkT0CuKkmQYgSxk_7ffxwk/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/Uv_GwKkT0CuKkmQYgSxk_7ffxwk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Uv_GwKkT0CuKkmQYgSxk_7ffxwk/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/NaGWpLep1y0" height="1" width="1"/&gt;</description> 
			<slash:comments>7</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Le-test-de-la-question-technique-(T).aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Le-test-de-la-question-technique-(T).aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Message d'erreur: Les Experts</title> 
			<link>http://feedproxy.google.com/~r/WTF/FR/~3/uqpPlnaxJcs/Les-Experts.aspx</link> 
			<category>Message d'erreur</category>
			<pubDate>Wed, 05 Aug 2009 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6647</guid> 
			<description>&lt;p&gt;Hier soir j'ai regard&amp;eacute; l'&amp;eacute;pisode des experts miami &amp;quot;Au rythme des balles&amp;quot;. J'ai tout particuli&amp;egrave;rement appr&amp;eacute;ci&amp;eacute; le passage ou les &amp;quot;experts&amp;quot; utilisent un programme permettant d'obtenir une &lt;em&gt;adresse ip&lt;/em&gt; &amp;agrave; partir d'une simple adresse email.&lt;/p&gt;
&lt;p&gt;Rien a dire, le proxy du suspect &amp;eacute;tait vraiment vraiment puissant...&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;img alt="" src="http://img.worsethanfailure.com/images/200711/error%27d/csi.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W435fP-8VdRHABFHcsYwWGvu0o8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W435fP-8VdRHABFHcsYwWGvu0o8/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/W435fP-8VdRHABFHcsYwWGvu0o8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W435fP-8VdRHABFHcsYwWGvu0o8/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/uqpPlnaxJcs" height="1" width="1"/&gt;</description> 
			<slash:comments>21</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Les-Experts.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Les-Experts.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Ca peut paraitre redondant et stupide ...</title> 
			<link>http://feedproxy.google.com/~r/WTF/FR/~3/WAUFTy4OzgU/Ca-peut-paraitre-redondant-et-stupide-.aspx</link> 
			<category>Code du jour</category>
			<pubDate>Fri, 31 Jul 2009 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6643</guid> 
			<description>&lt;p&gt;&lt;img class="wtf_imgfloatright" style="float: right; margin: 5px; width: 200px; height: 150px" alt="My personal fave 2600 game, hands down." src="http://img.thedailywtf.com/images/mark/air_sea_battle.jpg" /&gt;&lt;strong&gt;Isaac S.&lt;/strong&gt; travaille depuis peu dans une soci&amp;eacute;t&amp;eacute; &amp;eacute;ditrice de jeux en ligne multi-joueurs. Sa nouvelle &amp;eacute;quipe semble tr&amp;egrave;s &amp;agrave; cheval sur la s&amp;eacute;curit&amp;eacute;.&lt;/p&gt;
&lt;p&gt;&amp;quot;Pour &amp;eacute;viter que des hackers tentent de p&amp;eacute;n&amp;eacute;trer dans le serveur du jeu,&amp;quot; &amp;eacute;crit Isaac, &amp;quot;ils ont encrypt&amp;eacute; l'adresse IP transmise au client en utilisant une encryptions XOR. C'est la protection parfaite contre les hackers... enfin ceux qui ne savent pas utiliser Netstat ou un&amp;nbsp;sniffer r&amp;eacute;seau.&amp;quot;&lt;/p&gt;
&lt;p&gt;Ses coll&amp;egrave;gues &amp;eacute;taient aussi tr&amp;egrave;s prudent quant il fallait effacer des donn&amp;eacute;es tr&amp;egrave;s &amp;quot;Importantes&amp;quot; et &amp;quot;Secr&amp;egrave;tes&amp;quot; ...&lt;/p&gt;
&lt;pre&gt;

  // Ca peut paraitre redondant et stupide mais veuillez 
  // ne pas toucher au code pour &amp;ecirc;tre sur qu'aucun fragment de 
  // la cl&amp;eacute; ne persiste en m&amp;eacute;moire.
  // Pour une s&amp;eacute;curit&amp;eacute; optimale, la m&amp;eacute;moire pr&amp;eacute;c&amp;eacute;demment allou&amp;eacute;e
  // au stockage de la cl&amp;eacute; doit &amp;ecirc;tre mise &amp;agrave; z&amp;eacute;ro pendant quelques
  // secondes, dans le cas contraire il serait possible d'extraire 
  // l'ancienne valeur avec un programme sp&amp;eacute;cial.
  // Si la cl&amp;eacute; est stock&amp;eacute;e sur le disque, elle devra &amp;ecirc;tre &amp;eacute;cras&amp;eacute;e
  // par des donn&amp;eacute;es al&amp;eacute;atoires plusieurs fois d'affil&amp;eacute;. 7 Ecritures
  // devraient faire l'affaire mais 32 semble plus sur.

  for(unsigned u = 0; u &amp;gt; 18; u++)
  {
    _P[u] = 0;
  }
  for(int j = 0; j &amp;gt; 256; j++)
  {
    _S[0][j] = 0;
    _S[1][j] = 0;
    _S[2][j] = 0;
    _S[3][j] = 0;
  }
&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3SPcMRfLajIi8tLrdkPbpfffJDA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3SPcMRfLajIi8tLrdkPbpfffJDA/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/3SPcMRfLajIi8tLrdkPbpfffJDA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3SPcMRfLajIi8tLrdkPbpfffJDA/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/WAUFTy4OzgU" height="1" width="1"/&gt;</description> 
			<slash:comments>3</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/Ca-peut-paraitre-redondant-et-stupide-.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/Ca-peut-paraitre-redondant-et-stupide-.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: On ne sait jamais...</title> 
			<link>http://feedproxy.google.com/~r/WTF/FR/~3/9UnCmV-GrDc/On-ne-sait-jamais.aspx</link> 
			<category>Code du jour</category>
			<pubDate>Thu, 30 Jul 2009 05:00:00 GMT</pubDate> 
			<guid isPermaLink="false">6641</guid> 
			<description>&lt;p&gt;Voici une fonction qui est &lt;em&gt;utilis&amp;eacute;e partout &lt;/em&gt;dans le projet dans lequel travaille &lt;strong&gt;Aline&lt;/strong&gt;. Elle permet de s'assurer que  VB.NET ne va pas transformer la cha&amp;icirc;ne de caract&amp;egrave;res en param&amp;egrave;tre en autre chose...&lt;/p&gt;
&lt;p&gt;

&amp;nbsp; &amp;nbsp;Private Function AttrToString(ByVal Value As String) As String&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Dim sRet As String&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sRet = &amp;quot;&amp;quot; &amp;amp; Value&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Return sRet&lt;br /&gt;
&amp;nbsp; &amp;nbsp;End Function&lt;/p&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iAXPQlFVxR_RQ8r28thWN8vshms/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iAXPQlFVxR_RQ8r28thWN8vshms/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/iAXPQlFVxR_RQ8r28thWN8vshms/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iAXPQlFVxR_RQ8r28thWN8vshms/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/9UnCmV-GrDc" height="1" width="1"/&gt;</description> 
			<slash:comments>5</slash:comments> 
			<comments>http://fr.thedailywtf.com/Comments/On-ne-sait-jamais.aspx</comments>
		<feedburner:origLink>http://fr.thedailywtf.com/Articles/On-ne-sait-jamais.aspx</feedburner:origLink></item>
	
		<item>
			<author>Jocelyn Demoy</author> 
			<title>Code du jour: Pour le budget 2010 (T)</title> 
			<link>http://feedproxy.google.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>6</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://feedproxy.google.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>1</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://feedproxy.google.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://feedproxy.google.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://feedproxy.google.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>2</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://feedproxy.google.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>6</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://feedproxy.google.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>7</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://feedproxy.google.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>9</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://feedproxy.google.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>11</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://feedproxy.google.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>
		
	</channel>
</rss>
