﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
  <channel>
    <title>http://michael.carbenay.info</title>
    <description />
    <link>http://michael.carbenay.info/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.6.0.0</generator>
    <language>fr-FR</language>
    <blogChannel:blogRoll>http://michael.carbenay.info/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>Michael</dc:creator>
    <dc:title>http://michael.carbenay.info</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <item>
      <title>WF4 – Afficher / Cacher des informations dans le designer</title>
      <description>&lt;p&gt;Je consulte depuis quelques jours pas mal de blogs concernant Workflow Foundation dont &lt;a href="http://blogs.codes-sources.com/jeremyjeanson/"&gt;celui de Jérémy Jeanson&lt;/a&gt; qui contient des tonnes d’informations super utiles. En voyant son billet intitulé &lt;a href="http://blogs.codes-sources.com/jeremyjeanson/archive/2010/03/16/wf4-activity-avec-vue-d-tail-masqu-e-par-d-faut-vive-wpf.aspx"&gt;[WF4] Activity avec vue détail masquée par défaut, vive WPF!&lt;/a&gt;, je me suis demandé si il n’existait pas une solution me permettant, à moi en tant que développeur, de faire la même chose sans trop empiéter sur le boulot du designer.&lt;/p&gt;  &lt;p&gt;Donc, le but du jeu, c’est de permettre, dans le concepteur de workflow, de gérer le mode collapse/expand des activités, donc de passer de ca :&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://files.blog-engine.net/1/26909.png" width="240" height="204" /&gt; &lt;/p&gt;  &lt;p&gt;à ça (enfin, avec des informations utiles, pas simplement avec du texte…): &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="image" border="0" alt="image" src="http://files.blog-engine.net/1/9134.png" width="245" height="221" /&gt; &lt;/p&gt;  &lt;p&gt;Comme il ne s’agit de modifier l’apparence du contrôle mais bien d’implémenter une fonctionnalité, je ne suis pas fan d’une approche basée sur des ControlTemplates. Je sais bien qu’il ne s’agit que d’un concepteur pour une activité et donc qu’il y a peu de chance qu’un designer passe par là, mais bon, c’est un reflexe :)&lt;/p&gt;  &lt;p&gt;Pour faire la même chose, écrivons d’abord un convertisseur qui permet de prendre transformer un booleen en Visibility. En plus, ça pourrait resservir dans plein d’autres cas :&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 726px; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 618px; font-size: 8pt; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows.Data;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Windows;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; WorkflowConsoleApplication3&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; VisibleIfTrue : IValueConverter&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;         &lt;span style="color: #cc6633"&gt;#region&lt;/span&gt; IValueConverter Members&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; Convert(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;, Type targetType, &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; parameter, System.Globalization.CultureInfo culture)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;value&lt;/span&gt; &lt;span style="color: #0000ff"&gt;is&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;)&lt;span style="color: #0000ff"&gt;value&lt;/span&gt; ? &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Visibility.Visible : Visibility.Collapsed;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;value&lt;/span&gt; &lt;span style="color: #0000ff"&gt;is&lt;/span&gt; &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;?)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; ((&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;?)&lt;span style="color: #0000ff"&gt;value&lt;/span&gt;).GetValueOrDefault() ?&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;           Visibility.Visible : Visibility.Collapsed;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Visibility.Collapsed;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; ConvertBack(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;, Type targetType, &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; parameter, System.Globalization.CultureInfo culture)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt;         {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;throw&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; NotImplementedException();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum29"&gt;  29:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum30"&gt;  30:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum31"&gt;  31:&lt;/span&gt;         &lt;span style="color: #cc6633"&gt;#endregion&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum32"&gt;  32:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum33"&gt;  33:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum34"&gt;  34:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum35"&gt;  35:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;L’implémentation est un peu basique, mais on s’en contentera pour les besoins de la démonstration.&lt;/p&gt;

&lt;p&gt;Une fois ce convertisseur réalisé, on va pouvoir s’en servir pour afficher ou cacher le contenu du concepteur :&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 726px; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; height: 478px; font-size: 8pt; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;sap:ActivityDesigner&lt;/span&gt; &lt;span style="color: #ff0000"&gt;&lt;br /&gt;            x:Class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;WorkflowConsoleApplication3.ExempleDesigner&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color: #ff0000"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color: #ff0000"&gt;xmlns:x&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color: #ff0000"&gt;x:Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;This&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color: #ff0000"&gt;xmlns:local&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;clr-namespace:WorkflowConsoleApplication3&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color: #ff0000"&gt;xmlns:sap&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;clr-namespace:System.Activities.Presentation;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; assembly=System.Activities.Presentation&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color: #ff0000"&gt;xmlns:sapv&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;clr-namespace:System.Activities.Presentation.View;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; assembly=System.Activities.Presentation&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;sap:ActivityDesigner.Resources&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;local:VisibleIfTrue&lt;/span&gt; &lt;span style="color: #ff0000"&gt;x:Key&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;VisibleIfTrue&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;sap:ActivityDesigner.Resources&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;TextBlock&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;La version minimale du designer&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;&lt;br /&gt;         TextWrapping&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Wrap&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;         &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Visibility&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{Binding ElementName=This, &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Path=ShowExpanded, Converter={StaticResource VisibleIfTrue}}&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Label&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Content&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;des informations supplémentaires&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Grid&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;StackPanel&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;sap:ActivityDesigner&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Voila ! évidemment, si vous voulez intervertir les deux blocs au lieu de cacher seulement le second, il vous faudra faire le même travail (mais avec un VisibleIfFalse) sur la première grid.&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/WF4-e28093-Afficher-Cacher-des-informations-dans-le-designer.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/WF4-e28093-Afficher-Cacher-des-informations-dans-le-designer.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=ce7d6dad-3aca-4695-89ed-92d6f75ee688</guid>
      <pubDate>Thu, 18 Mar 2010 22:00:00 +0200</pubDate>
      <category>C#</category>
      <category>Boulot</category>
      <category>WPF</category>
      <category>Workflow Foundation</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=ce7d6dad-3aca-4695-89ed-92d6f75ee688</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=ce7d6dad-3aca-4695-89ed-92d6f75ee688</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/WF4-e28093-Afficher-Cacher-des-informations-dans-le-designer.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=ce7d6dad-3aca-4695-89ed-92d6f75ee688</wfw:commentRss>
    </item>
    <item>
      <title>Pas déçu des premières heures du Mix’10</title>
      <description>&lt;p&gt;Et je n&amp;rsquo;y suis m&amp;ecirc;me pas !! 1h30 de keynotes + quelques vid&amp;eacute;os &amp;ldquo;live&amp;rdquo; suppl&amp;eacute;mentaires sur &lt;a title="http://live.visitmix.com/" href="http://live.visitmix.com/"&gt;http://live.visitmix.com/&lt;/a&gt;, et me voila content pour toute la semaine ! Cela faisait quelques mois que je regardais avec un certain d&amp;eacute;sespoir la fin de la plateforme Windows Mobile 6.x.&lt;/p&gt;
&lt;p&gt;Non pas que cette fin ne soit pas m&amp;eacute;rit&amp;eacute;e : WinMo n&amp;rsquo;a pas beaucoup &amp;eacute;volu&amp;eacute; depuis mon premier PocketPC, en 2000 : malgr&amp;eacute; un certain nombre de nouvelles fonctionnalit&amp;eacute;s pas de mise &amp;agrave; jour, ou presque, de l&amp;rsquo;interface. Joe Belfiore (vice pr&amp;eacute;sident pour la section Windows Phone) vient de bien le r&amp;eacute;sumer : &amp;ldquo;il y a 10 ans [&amp;hellip;] on se concentrait surtout sur Office et ce genre de chose, aujourd&amp;rsquo;hui le march&amp;eacute; a evolu&amp;eacute;&amp;rdquo;, et franchement, si le cot&amp;eacute; d&amp;eacute;veloppeur &amp;eacute;tait encore in&amp;eacute;gal&amp;eacute; jusqu&amp;rsquo;&amp;agrave; l&amp;rsquo;apparition d&amp;rsquo;Android (et ne me parlez pas de l&amp;rsquo;iPhone, Objective-C/xCode/InterfaceBuilder ils sont tr&amp;egrave;s loin de jouer dans la m&amp;ecirc;me cat&amp;eacute;gorie), le reste de la plateforme accuse clairement son &amp;acirc;ge.&lt;/p&gt;
&lt;p&gt;Il appara&amp;icirc;t que Microsoft a repens&amp;eacute; toute l&amp;rsquo;interface et - qui l&amp;rsquo;aurait cru ? &amp;ndash; elle est quasi&amp;nbsp;int&amp;eacute;gralement typographique. En plus elle est particuli&amp;egrave;rement r&amp;eacute;ussie : simple, voir &amp;eacute;pur&amp;eacute;e (mis &amp;agrave; part peut-&amp;ecirc;tre un peu trop d&amp;rsquo;animations&amp;hellip;) et semble tr&amp;egrave;s adapt&amp;eacute;e au format.. Le fait que cela ressemble (un peu) &amp;agrave; ce que je faisais dans mes applications &amp;ldquo;Line Of Business&amp;rdquo; sur WinMo&amp;nbsp;n&amp;rsquo;est peut-&amp;ecirc;tre pas &amp;eacute;tranger au fait que je trouve cela super joli :)&lt;/p&gt;
&lt;p&gt;Quoiqu&amp;rsquo;il en soit, Windows Phone 7, alors que nous n&amp;rsquo;avons pas encore de devices, semble vraiment formidable. Quelques exemples pour vous donner l&amp;rsquo;eau &amp;agrave; la bouche :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L&amp;rsquo;application de l&amp;rsquo;associated press, la video ci-dessous n&amp;rsquo;est pas exceptionnelle, mais en attendant la vid&amp;eacute;o officielle du keynote, c&amp;rsquo;est mieux que rien&amp;hellip; &lt;/li&gt;
&lt;/ul&gt;
&lt;div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:897ca7be-2516-4611-a4b2-0a142ed4fdd8" class="wlWriterEditableSmartContent" style="margin: 0px auto; width: 425px; display: block; float: none; padding: 0px;"&gt;
&lt;div id="4a60d0b2-69cb-44b9-a7a9-3d840a39c851" style="margin: 0px; padding: 0px; display: inline;"&gt;
&lt;div&gt;&lt;embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/P27w0-Vvkpw&amp;amp;rel=0&amp;amp;border=1&amp;amp;color1=0xe8e8e8&amp;amp;color2=0xe8e8e8&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;fs=1&amp;amp;hl=en"&gt;&lt;/embed&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les outils de d&amp;eacute;veloppement sont d&amp;eacute;j&amp;agrave; disponibles en CTP, gratuitement et la mise &amp;agrave; jour vers Blend 4 pour les &amp;ldquo;interface designers&amp;rdquo; sera gratuite&amp;hellip; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tout le d&amp;eacute;veloppement se fait soit par XNA (on va dire DirectX pour .net pour simplifier) pour les jeux et Silverlight pour le reste. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bon, pas de tout &amp;ccedil;a, j&amp;rsquo;ai install&amp;eacute; le SDK, je vais faire joujou avec&amp;hellip;&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Pas-decu-des-premieres-heures-du-Mixe2809910.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Pas-decu-des-premieres-heures-du-Mixe2809910.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=4d6d4036-2f02-4f00-b789-190af278d5b6</guid>
      <pubDate>Mon, 15 Mar 2010 22:33:00 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=4d6d4036-2f02-4f00-b789-190af278d5b6</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=4d6d4036-2f02-4f00-b789-190af278d5b6</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Pas-decu-des-premieres-heures-du-Mixe2809910.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=4d6d4036-2f02-4f00-b789-190af278d5b6</wfw:commentRss>
    </item>
    <item>
      <title>mix’10, les infos sur Windows phone 7 series ?</title>
      <description>&lt;p&gt;Demain, 15 mars, c’est le début de MIX’10, la grand messe Microsoft pour les développeurs Web. Cette année, le sujet qui est sur toutes les lèvres, c’est forcément Windows Phone Series 7 ! Après 10 ans de plus ou moins bons et loyaux services, l’interface de Windows Mobile va – enfin !!! – changer, et tout ce que l’on a vu jusqu’à maintenant semble très prometteurs, aux quelques bugs de jeunesse près.&lt;/p&gt;  &lt;p&gt;MIX’10 ce sera l’occasion, pour les développeurs de comprendre un peu comment la bête fonctionnera et surtout – chose bien plus importante – de savoir comment on pourra faire des applications :) Après quelques informations dévoilée au GDC sur la partie “jeux”, on attends de pieds fermes Charlie Kindel (&lt;a href="http://twitter.com/ckindel" target="_blank"&gt;@ckindel&lt;/a&gt;) et les autres :)&lt;/p&gt;  &lt;p&gt;N’étant pas sur place, j’apprécie particulièrement que toutes les sessions soient enregistrées et disponibles après seulement quelques heures et j’ai déjà prévu les popcorns pour les deux Keynotes :)&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/mixe2809910-les-infos-sur-Windows-phone-7-series-.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/mixe2809910-les-infos-sur-Windows-phone-7-series-.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=1bc318c3-e83c-4c8a-b14d-ddf80053a71d</guid>
      <pubDate>Sun, 14 Mar 2010 15:58:39 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=1bc318c3-e83c-4c8a-b14d-ddf80053a71d</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=1bc318c3-e83c-4c8a-b14d-ddf80053a71d</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/mixe2809910-les-infos-sur-Windows-phone-7-series-.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=1bc318c3-e83c-4c8a-b14d-ddf80053a71d</wfw:commentRss>
    </item>
    <item>
      <title>si, si, je suis encore en vie</title>
      <description>&lt;p&gt;Ah oui, j’avais oublié… Bonne année 2010, et désolé pour ce silence depuis pas loin d’un an… Je suis sûr que j’ai dû beaucoup manquer à ma vingtaine d’abonnés RSS :)&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/si-si-je-suis-encore-en-vie.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/si-si-je-suis-encore-en-vie.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=b4d4de93-a0ec-41eb-a936-3d0ad0d5aa59</guid>
      <pubDate>Fri, 08 Jan 2010 05:10:00 +0200</pubDate>
      <category>posts inutiles</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=b4d4de93-a0ec-41eb-a936-3d0ad0d5aa59</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=b4d4de93-a0ec-41eb-a936-3d0ad0d5aa59</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/si-si-je-suis-encore-en-vie.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=b4d4de93-a0ec-41eb-a936-3d0ad0d5aa59</wfw:commentRss>
    </item>
    <item>
      <title>2010 : l’année du retour de la vengeance du format slate ?</title>
      <description>&lt;p&gt;Nouvelle rumeur de tablettes chez Apple, nouveau PC &lt;a href="http://www.cnetfrance.fr/news/tablette-microsoft-hp-ces-39712012.htm"&gt;slate chez HP&lt;/a&gt;, &lt;a href="http://www.clubic.com/actualite-318544-lenovo-ideapad-u1-hybride-ordinateur-portable.html"&gt;Lenovo&lt;/a&gt;, &lt;a href="http://www.cnetfrance.fr/news/dell-slate-tablette-tactile-5-pouces-39712046.htm"&gt;Dell&lt;/a&gt;, etc, le format “slate” semble très à la mode en ce moment ! Entre les stars du C.E.S. – oui, je sais ca ne veux rien dire : cela fait plusieurs années que les UMPC/MID sont à l’honneur là bas sans qu’il y ait aucun signe de leur adoption par le grand public – et les rumeurs persistantes, il semblerait que le format “écran tactile seul” soit à la mode.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image001[1]" border="0" alt="image001[1]" src="http://files.blog-engine.net/1/13562.jpg" width="400" height="350" /&gt; &lt;/p&gt;  &lt;p&gt;C’est pour moi l’occasion de ressortir mon vieux Tablet PC (un Acer Travelmate je-sais-plus-combien), mon compaq TC1000 (acheté d’occase il y a pas si longtemps que ça) et mon Samsung Q1… Bah oui, ca fait pas loin de 10 ans (j’exagère, ca n’en fait que 8 en fait…) que Microsoft et surtout ses partenaires s’essayent à ce genre de choses, sans trop de succès jusqu’à présent. Apparues bien trop tôt, les TabletPC sont de vraies petites merveilles de technologie, mais … comment dire … souffraient de problèmes rédhibitoires : principalement leur coûts astronomiques et le peu d’application grand public qui leur étaient destinées.&amp;#160; Si le TravelMate (pb hardware) et le TC1000 (manque de puissance) ne me servent plus, le Q1 est encore utilisé plusieurs fois par semaines comme “télécommande domotique géante” avec pas mal de succès, sans compter quelques – trop rares – démonstrations en clientèle plutôt bluffantes pour l’auditoire.&lt;/p&gt;  &lt;p&gt;Oyé oyé, donc, voici revenu le temps &lt;strike&gt;des rires et des chants, dans l’île aux enfants&lt;/strike&gt; des modèles “slate”, et cela est très prometteur : le marché est suffisamment mature (merci l’iPhone) pour voir apparaître des applications passionnantes : je suis assez impatient de voir ce que ces 3 prochaines années nous réservent sur ce front.&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/2010-le28099annee-du-retour-de-la-vengeance-du-format-slate-.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/2010-le28099annee-du-retour-de-la-vengeance-du-format-slate-.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=6a7b0c5c-9224-41ce-a44e-105f72157d77</guid>
      <pubDate>Fri, 08 Jan 2010 04:08:00 +0200</pubDate>
      <category>Interface utilisateur</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=6a7b0c5c-9224-41ce-a44e-105f72157d77</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=6a7b0c5c-9224-41ce-a44e-105f72157d77</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/2010-le28099annee-du-retour-de-la-vengeance-du-format-slate-.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=6a7b0c5c-9224-41ce-a44e-105f72157d77</wfw:commentRss>
    </item>
    <item>
      <title>Erreur “Required project systems are not installed” dans un projet de test</title>
      <description>&lt;p&gt;Si vous utilisez une version internationale de Visual Studio 2008 (je n’ai pas encore eu le problème avec la beta de 2010, alors c’est peut-être corrigé), vous avez peut-être déjà eu quelques soucis de fonctionnalités non disponibles. Pour moi, cet après-midi, c’est tout le système de tests unitaires qui était en rade, suite à une réinstallation. Plus moyen de charger les projets de tests, ni d’en créer de nouveau : rien !&lt;/p&gt;  &lt;p&gt;Quelques conseils si vous rencontrez ce problème :&lt;/p&gt;  &lt;p&gt;Commencez un bon vieux &lt;strong&gt;devenv.exe /resetSkipPkgs&lt;/strong&gt;, à lancer depuis une ligne de commande&lt;/p&gt;  &lt;p&gt;Si ce n’est pas mieux, essayez de faire &lt;strong&gt;Tests&lt;/strong&gt; &amp;gt; &lt;strong&gt;Nouveau Test&lt;/strong&gt;. Si dans cet écran vous voyez un joli “Required project systems are not installed” à la place où vous vous attendiez à voir “Nouveau projet de test en c#”, eh bien vous avez gagné et avez le même problème que moi ! Pas de panique, ca se corrige assez facilement : Dans le menu &lt;strong&gt;Outils / Options&lt;/strong&gt;, cherchez les “&lt;strong&gt;paramètres internationaux&lt;/strong&gt;” et changez la langue utilisée pour correspondre à celle de votre installation de Visual Studio.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://files.blog-engine.net/1/37707.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://files.blog-engine.net/1/17859.png" width="544" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Erreur-e2809cRequired-project-systems-are-not-installede2809d-dans-un-projet-de-test.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Erreur-e2809cRequired-project-systems-are-not-installede2809d-dans-un-projet-de-test.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=e1a9fae2-04d1-4469-8522-cf0b4d042f25</guid>
      <pubDate>Thu, 07 Jan 2010 15:48:43 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=e1a9fae2-04d1-4469-8522-cf0b4d042f25</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=e1a9fae2-04d1-4469-8522-cf0b4d042f25</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Erreur-e2809cRequired-project-systems-are-not-installede2809d-dans-un-projet-de-test.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=e1a9fae2-04d1-4469-8522-cf0b4d042f25</wfw:commentRss>
    </item>
    <item>
      <title>les joies de l’assistance chez un FAI</title>
      <description>&lt;p&gt;Depuis quelques jours, et pour la seconde fois consécutive en moins d’un mois, une personne de ma famille rencontre des soucis de connexion chez son FAI. Ce matin, pour la troisième fois, j’ai pris contact avec l’assistance de celui-ci (bah, oui, être “l’informaticien” de la famille fait que tous ces problèmes me retombe dessus… je pense que vous savez ce que c’est :p). Le discours a parfois été un peu surréaliste, tenant du dialogue de sourd, en voici quelques morceaux choisis ! (je retire volontairement le nom du FAI et de sa box, mais il est facile à deviner).&lt;/p&gt;  &lt;p&gt;[10-04-2009 11h31] [Début Session Tchat] [Service choisi: Technique]&lt;/p&gt;  &lt;p&gt;[11h46] Assistance: Mme/M. ……, bienvenue sur le Tchat de …, vous êtes actuellement connecté(e) sur le salon Technique.&lt;/p&gt;  &lt;p&gt;Votre adresse email de contact: ……    &lt;br /&gt;Votre numéro de téléphone mobile de contact: …&lt;/p&gt;  &lt;p&gt;Notez que vous pouvez à tout moment modifier vos éléments de contact (mail + mobile) depuis votre interface de gestion, à la rubrique &amp;quot;Mon Abonnement&amp;quot;.&lt;/p&gt;  &lt;p&gt;11h46] Moi: bonjour&lt;/p&gt;  &lt;p&gt;[11h48] Assistance: Bonjour&lt;/p&gt;  &lt;p&gt;[11h48] Assistance: Quel est l'objet de votre demande …?&lt;/p&gt;  &lt;p&gt;[11h48] Moi: je suis toujours sans connexion, ce qui commence à être un peu pénible&lt;/p&gt;  &lt;p&gt;[11h49] Moi: …box n°…., qui reste sur le rectangle clignotant de connexion, tests en tout genre réalisés (hard reboot, test croisé, etc), sans succès&lt;/p&gt;  &lt;p&gt;&lt;em&gt;…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;[11h54] Assistance: Est ce que le dysfonctionnement est dû à un orage, coupure de courant..... ?&lt;/p&gt;  &lt;p&gt;&lt;em&gt;…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;[11h55] Moi: non&lt;/p&gt;  &lt;p&gt;[11h56] Assistance: Quels sont les tests et les vérifications que vous avez effectués ?&lt;/p&gt;  &lt;p&gt;[11h56] Moi: alors : hard reboot, vérification de la non présence de condensateurs, tests avec [une autre …box] &lt;em&gt;(edité pour retirer le nom)&lt;/em&gt;, changement de filtre&lt;/p&gt;  &lt;p&gt;[11h56] Moi: tout sans aucun résultat&lt;/p&gt;  &lt;p&gt;&lt;em&gt;…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;[12h01] Assistance: Sur quelle entrée de la …box (derrière ) est branchée le câble RJ11 venant de la prise téléphonique murale ?&lt;/p&gt;  &lt;p&gt;&lt;em&gt;… la j’ai failli craquer… je lui dit en entrée de jeu que j’ai fait plein de tests et sa première vraie question est : “est-ce que tu as tout bien branché, banane ?”…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;[12h01] Moi: le bon... &lt;em&gt;[du blah blah disant que j’ai passé le stade des compétences minimums]&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;[12h03] Moi: nous avons testé avec d'autres cables téléphoniques et un autre filtre pour s'assurer que cela ne venait pas non plus de la&lt;/p&gt;  &lt;p&gt;&lt;em&gt;…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;[12h08] Assistance: Avez vous vérifié toutes les prises téléphoniques si présence de condensateur ?&lt;/p&gt;  &lt;p&gt;&lt;em&gt;… la pareil, un peu dur à supporter, j’ai déjà dit cela y a pas 10 messages…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;[12h09] Assistance: Est ce que la …box est reliée à un rallonge téléphonique ?&lt;/p&gt;  &lt;p&gt;[12h10] Moi: non&lt;/p&gt;  &lt;p&gt;[12h10] Assistance: Avez vous une alarme, un interphone reliées à la ligne téléphonique France Télécom ?&lt;/p&gt;  &lt;p&gt;[12h10] Moi: non&lt;/p&gt;  &lt;p&gt;[12h11] Moi: avant que vous posiez la question : oui elle est branchée directement sur une prise, non il n'y a pas de sources d'ondes (micro ondes, enceintes, ordinateurs) à moins de quelques mètres&lt;/p&gt;  &lt;p&gt;&lt;em&gt;… vous devinez quelle sera sa prochaine question ? gagné ! …&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;[12h12] Assistance: Avez vous un halogène, néon, enceinte, ampli, démodulateur, domotique, micro onde...ou toute appareil rémanent autour de la …box ?&lt;/p&gt;  &lt;p&gt;&lt;em&gt;…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;[12h13] Assistance: Avez vous testé avec d'autres connectivité : câble RJ11, filtre et une alimentation ?&lt;/p&gt;  &lt;p&gt;&lt;em&gt;… bon, après tout j’ai juste dit que j’avais essayé avec une autre …box, j’ai pas pensé à préciser “et tous ses cables”, ma faute, pour le filtre, c’est juste que j’aime me répéter, c’est pour ça que j’aime quand on me pose des questions auquelles j’ai déjà répondu…&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;[12h14] Moi: oui, comme dit précédemment, avec d'autres cables rjs, d'autres filtres et avec une autre …box entièrement, qui fonctionne parfaitement, c'est à dire avec tous ses cables, alimentations, carte wifi etc (ah oui, à noter que j'ai aussi essayé en retirant la carte wifi de ma …box)&lt;/p&gt;  &lt;p&gt;Enfin, il a fallu une heure complète de dialogue de sourd de ce genre pour qu’il transmette enfin le dossier au service technique pour une vérification de la ligne. Si ca c’est pas du temps perdu, je ne sais pas ce que c’est !&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/les-joies-de-le28099assistance-chez-un-FAI.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/les-joies-de-le28099assistance-chez-un-FAI.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=facbcfcf-a756-4506-ab81-069a63b9d554</guid>
      <pubDate>Fri, 10 Apr 2009 11:09:45 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=facbcfcf-a756-4506-ab81-069a63b9d554</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=facbcfcf-a756-4506-ab81-069a63b9d554</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/les-joies-de-le28099assistance-chez-un-FAI.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=facbcfcf-a756-4506-ab81-069a63b9d554</wfw:commentRss>
    </item>
    <item>
      <title>Intégrer ClickOnce à une compilation TeamBuild</title>
      <description>&lt;p&gt;Eh bien, pour une journée de réunions, on peut dire que le résultat est plus productif que d’habitude ! Entre deux réunions de gestion de projet, j’ai en effet pu mettre en place une chose qui manquait depuis plusieurs mois à l’un de mes partenaires : une automatisation complète de son processus de Build, allant jusqu’à l’élaboration de la release ClickOnce.&lt;/p&gt;  &lt;p&gt;Voici donc un petit guide, basé sur les “découvertes” de cette journées pour obtenir un déploiement ClickOnce au cours d’un Build automatisé. Ces informations sont plus qu’inspirées par &lt;a href="http://geekswithblogs.net/thibbard/archive/2007/06/01/Publishing-a-ClickOnce-app-with-TeamBuild.aspx"&gt;Tim Hibbard&lt;/a&gt;, en fait on pourrait presque dire qu’il s’agit d’une version traduite et mise à jour de ses instructions.&lt;/p&gt;  &lt;p&gt;Premier point important, récupérez le &lt;a href="http://msbuildextensionpack.codeplex.com/"&gt;MSBuild Extension pack à partir de Codeplex&lt;/a&gt; et installez les sur chacun des serveurs/postes que vous utiliserez pour compiler vos projets.&lt;/p&gt;  &lt;p&gt;Une fois ce composant indispensable récupéré, il va falloir modifier le fichier tfsbuild.proj correspondant à votre build :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;pour ajouter des références aux extensions. Ici deux solutions : soit se conformer aux instructions de Tim Hibbard, et créer un PropertyGroup spécifique à ClickOnce, soit – et c’est cette solution qui sera détaillé ci-après – utiliser la tâche AssemblyInfo et ses dérivés pour gérer à la fois ClickOnce et les versions des assemblies. Il vous faudra donc ajouter deux lignes, dans la partie “imports” &lt;/li&gt; &lt;/ul&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 540px; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; font-size: 8pt; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Import&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;$(MSBuildExtensionsPath)\ExtensionPack\MSBuild.&lt;br /&gt;        ExtensionPack.tasks&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Import&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;$(MSBuildExtensionsPath)\ExtensionPack\MSBuild.&lt;br /&gt;        ExtensionPack.VersionNumber.targets&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Puis définir le property group nécessaire à mettre à jours les versions des assemblies (et de click once)&lt;/li&gt;
&lt;/ul&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 540px; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; font-size: 8pt; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!-- Properties for controlling the Assembly Version --&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyMajorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;9&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyMajorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyMinorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyMinorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyBuildNumber&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyBuildNumber&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyRevision&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyRevision&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;!-- Properties for controlling the Assembly File Version --&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyFileMajorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;9&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyFileMajorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyFileMinorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyFileMinorVersion&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyFileBuildNumber&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyFileBuildNumber&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyFileRevision&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;AssemblyFileRevision&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;Nous allons ensuite un peu ruser pour mettre à jour le FileRevision, en effet, le partenaire en question utilise un schéma de numéros du type “année”.”release”.”itération interne”.”version de compilation” depuis un certain temps (par exemple 9.0.3.228 signifie “version 2009, release 1, itération N°3 du 28/02). Il a donc fallu contourner les limitations de la tâche AssemblyInfo :&lt;/li&gt;
&lt;/ul&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 540px; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; font-size: 8pt; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;VersionPublish&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;MSBuild.ExtensionPack.Framework.DateAndTime&lt;/span&gt; TaskAction=&amp;quot;Get&amp;quot; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;                                                Format=&amp;quot;MMdd&amp;quot;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Output&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TaskParameter&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Result&amp;quot;&lt;/span&gt; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;           &lt;span style="color: #ff0000"&gt;PropertyName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;AssemblyFileRevision&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;MSBuild.ExtensionPack.Framework.DateAndTime&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;BeforeCompile&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;DependsOnTargets&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;VersionPublish&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Message&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;FileVersion générée par le VersionNumber.Targets &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;            $(AssemblyFileMajorVersion).$(AssemblyFileMinorVersion).&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;            $(AssemblyFileBuildNumber).$(AssemblyFileRevision)&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Comme vous devez vous en douter, le deuxième noeud ne sert qu’à tracer dans le fichier de génération le numéro généré… c’est assez pratique pour débugger, donc autant le mettre :)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;reste ensuite à dire à TeamBuild de publier une version de l’application :&lt;/li&gt;
&lt;/ul&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 540px; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; font-size: 8pt; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;AfterCompile&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;   &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;MSBuild&lt;/span&gt; &lt;span style="color: #ff0000"&gt;Projects&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;$(SolutionRoot)\project.csproj&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;   &lt;span style="color: #ff0000"&gt;Properties&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;PublishDir=$(OutDir)publish\;InstallFrom=Web;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     UpdateRequired=true;InstallUrl=...;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     MinimumRequiredVersion=$(AssemblyFileMajorVersion)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     .$(AssemblyFileMinorVersion)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     .$(AssemblyFileBuildNumber).$(AssemblyFileRevision);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     ApplicationVersion=$(AssemblyFileMajorVersion)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;     .$(AssemblyFileMinorVersion).&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;     $(AssemblyFileBuildNumber).$(AssemblyFileRevision)&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;   &lt;span style="color: #ff0000"&gt;Targets&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;Publish&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Target&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Si vous avez besoin de modifier des options de publication, le plus simple est probablement d’ouvrir votre fichier .csproj dans un notepad et de regarder le nom des différents paramètres, en tout cas, c’est comme cela que j’ai trouvé les “MinimumRequiredVersion” ou autre “InstallUrl”.&lt;/p&gt;

&lt;p&gt;Voila, avec ces quelques lignes en plus, vous aurez un très joli dossier &lt;strong&gt;publish/&lt;/strong&gt; dans le dossier de sortie de votre définition de build. Il existe peut-être une solution plus pratique que le “&amp;lt;MSBuild… Targets=’publish’ /&amp;gt;”, mais c’est ce que j’ai trouvé de plus pratique et de plus facile à mettre en place pour le moment… &lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Integrer-ClickOnce-a-une-compilation-TeamBuild.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Integrer-ClickOnce-a-une-compilation-TeamBuild.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=6119fe64-6fe5-48b4-9986-d12dca894a7a</guid>
      <pubDate>Tue, 24 Mar 2009 22:02:00 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=6119fe64-6fe5-48b4-9986-d12dca894a7a</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=6119fe64-6fe5-48b4-9986-d12dca894a7a</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Integrer-ClickOnce-a-une-compilation-TeamBuild.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=6119fe64-6fe5-48b4-9986-d12dca894a7a</wfw:commentRss>
    </item>
    <item>
      <title>snifff, IE 8 ne permet plus un bug que j’aimais bien…</title>
      <description>&lt;p&gt;Si vous venez sur ce site avec un navigateur comme Chrome, Firefox ou autre, vous ne saurez pas de quoi je parle, mais une des diff&amp;eacute;rences d&amp;rsquo;affichage entre IE7 et le reste du monde &amp;eacute;tait sa &amp;ldquo;capacit&amp;eacute;&amp;rdquo; &amp;agrave; tronquer un texte en exploitant un bug CSS&amp;hellip; IE8 semble avoir corrig&amp;eacute; ce bug, il ne me reste donc plus qu&amp;rsquo;a chercher si on peut faire la m&amp;ecirc;me chose en CSS valide&amp;hellip;&lt;/p&gt;
&lt;p&gt;Le rendu sous IE7 :&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;a href="http://files.blog-engine.net/1/26831.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="sousie7" src="http://files.blog-engine.net/1/34847.jpg" border="0" alt="sousie7" width="221" height="56" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sous IE8 :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://files.blog-engine.net/1/13420.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="sousie8" src="http://files.blog-engine.net/1/7856.jpg" border="0" alt="sousie8" width="172" height="55" /&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/snifff-IE-8-ne-permet-plus-un-bug-que-je28099aimais-biene280a6.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/snifff-IE-8-ne-permet-plus-un-bug-que-je28099aimais-biene280a6.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=73302385-edcc-42b4-83e9-a4f987f99ba7</guid>
      <pubDate>Tue, 24 Mar 2009 14:11:00 +0200</pubDate>
      <category>posts inutiles</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=73302385-edcc-42b4-83e9-a4f987f99ba7</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=73302385-edcc-42b4-83e9-a4f987f99ba7</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/snifff-IE-8-ne-permet-plus-un-bug-que-je28099aimais-biene280a6.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=73302385-edcc-42b4-83e9-a4f987f99ba7</wfw:commentRss>
    </item>
    <item>
      <title>Microsoft Expression Web SuperPreview for Internet Explorer</title>
      <description>&lt;p&gt;Ehhhh bah, si ca c’est pas du nom made in Microsoft, je ne vois pas ce que c’est ! il manque un petit “R2 with service pack 1” pour compléter le titre du nom d’application le plus long de l’histoire !&lt;/p&gt;  &lt;p&gt;Microsoft Expression Web SuperPreview for Internet Explorer R2 with Service Pack 2 Release Candidate 1, ca en jetterai un max !! d’autant plus que ca donne une super abréviation : MEWSPIER2SP2RC1 !&lt;/p&gt;  &lt;p&gt;Tout ça pour dire que vous &lt;a href="http://www.istartedsomething.com/20090318/expression-web-superpreview-cross-browser-testing/"&gt;devriez lire le post de Long Zheng&lt;/a&gt;, sur le futur ajout à Expression Web (à ce propos, il trouve ce nom particulièrement bon aussi !).&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Microsoft-Expression-Web-SuperPreview-for-Internet-Explorer.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Microsoft-Expression-Web-SuperPreview-for-Internet-Explorer.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=fc9d66f0-4f2f-48b7-a335-47a6358b3261</guid>
      <pubDate>Wed, 18 Mar 2009 15:00:28 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=fc9d66f0-4f2f-48b7-a335-47a6358b3261</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=fc9d66f0-4f2f-48b7-a335-47a6358b3261</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Microsoft-Expression-Web-SuperPreview-for-Internet-Explorer.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=fc9d66f0-4f2f-48b7-a335-47a6358b3261</wfw:commentRss>
    </item>
    <item>
      <title>Jeudi… on doit être jeudi…</title>
      <description>&lt;p&gt;D’aucuns abhorrent le lundi, mais moi c’est surtout le jeudi que j’ai du mal à supporter… Et encore une fois, aujourd'hui, ce jour maudit m’a donné des raisons de le haïr :)&lt;/p&gt;  &lt;p&gt;Un petit résumé de la situation, histoire de vous faire rire un peu… Nous possédons 3 serveurs que l’on pourraient qualifier de serveurs d’infrastructure : black, blue et orange. Le premier (black) est notre serveur ActiveDirectory principal, serveur DHCP et DNS; il s’agit d’une&amp;#160; machine assez ancienne, qui ne fait donc pas grand chose… Blue, en plus de son rôle de serveur “secondaire” AD fait aussi office de serveur de fichiers. Enfin, orange est notre serveur Exchange. Imaginez maintenant que, suite à une coupure électrique et à un problème d’onduleur, black fasse un drôle de bruit et blue n’en fasse absolument plus (alimentation grillée)…. Vous avez compris, nous sommes bel et bien jeudi ! :)&lt;/p&gt;  &lt;p&gt;Tout cela pour dire que, si vous avez besoin un jour de transférer en urgence la responsabilité d’ActiveDirectory à partir d’un serveur qui n’est plus en ligne, vous aurez besoin des articles de base de connaissance suivants :    &lt;br /&gt;- &lt;a href="http://support.microsoft.com/kb/216498/fr"&gt;216498&lt;/a&gt; : Comment faire pour supprimer des données dans Active Directory après l'échec d'une rétrogradation de contrôleur de domaine     &lt;br /&gt;- &lt;a href="http://support.microsoft.com/kb/255504/fr"&gt;255504&lt;/a&gt; : Utilisation de Ntdsutil.exe pour prendre ou transférer des rôles FSMO vers un contrôleur de domaine     &lt;br /&gt;- &lt;a href="http://support.microsoft.com/kb/324801/fr"&gt;324801&lt;/a&gt; : Comment faire pour afficher et transférer des rôles FSMO dans Windows Server 2003&lt;/p&gt;  &lt;p&gt;Vous aurez certainement aussi besoin de l’outil DCDIAG.exe et peut être de nltest.exe…&lt;/p&gt;  &lt;p&gt;Bonne chance :)&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Jeudie280a6-on-doit-etre-jeudie280a6.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Jeudie280a6-on-doit-etre-jeudie280a6.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=30555806-bb43-436c-95ee-256c1753d490</guid>
      <pubDate>Thu, 05 Mar 2009 21:54:00 +0200</pubDate>
      <category>ActiveDirectory</category>
      <category>Windows</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=30555806-bb43-436c-95ee-256c1753d490</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=30555806-bb43-436c-95ee-256c1753d490</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Jeudie280a6-on-doit-etre-jeudie280a6.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=30555806-bb43-436c-95ee-256c1753d490</wfw:commentRss>
    </item>
    <item>
      <title>Pourquoi continuer à conserver l’edit and continue dans Visual Studio ?</title>
      <description>&lt;p&gt;Je me demande vraiment si quelqu’un arrive encore à se servir de l’edit&amp;amp;continue dans VS, et si cela vaut donc encore la peine de le conserver… Voici quelques exemples de cas où il est impossible de s’en servir :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;le code est compilé en 64bits (en anyCPU si vous êtes sur une machine 64bits) &lt;/li&gt;    &lt;li&gt;le code est “optimisé” (elle me fait toujours rire celle-la…) &lt;/li&gt;    &lt;li&gt;vous avez changé une classe d’un projet dépendant depuis une autre instance de VS ou notepad ou autre &lt;/li&gt;    &lt;li&gt;la solution contient un projet Silverlight &lt;/li&gt;    &lt;li&gt;vous venez de modifier une méthode intégrant une expression lambda ou une méthode anonyme (de plus en plus fréquent, surtout si vous faites du WPF et avez donc beaucoup de traitements asynchrones) &lt;/li&gt;    &lt;li&gt;&lt;strike&gt;la Lune est en conjonction avec Saturne&lt;/strike&gt; (ouais, non, pas celle là en fait…) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Grosso modo, neuf fois sur dix, quand on veux modifier une méthode ça coince, la question est donc posée : à quoi cela sert-il ?&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Pourquoi-continuer-a-conserver-le28099edit-and-continue-dans-Visual-Studio-.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Pourquoi-continuer-a-conserver-le28099edit-and-continue-dans-Visual-Studio-.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=1ec5594a-e68b-427a-81e8-cfce053ad44f</guid>
      <pubDate>Tue, 03 Mar 2009 16:04:36 +0200</pubDate>
      <category>Visual Studio</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=1ec5594a-e68b-427a-81e8-cfce053ad44f</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=1ec5594a-e68b-427a-81e8-cfce053ad44f</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Pourquoi-continuer-a-conserver-le28099edit-and-continue-dans-Visual-Studio-.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=1ec5594a-e68b-427a-81e8-cfce053ad44f</wfw:commentRss>
    </item>
    <item>
      <title>Souviens toi, souviens toi de ce 5 de Novembre…</title>
      <description>&lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:c5fb8953-66d0-49e0-898a-1c5ab8898e21" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;div id="e1f17439-c778-4fa8-a516-c7ccdc0f3653" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=c6Q0dfrbr10" target="_new"&gt;&lt;img src="http://files.blog-engine.net/1/42279.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('e1f17439-c778-4fa8-a516-c7ccdc0f3653'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/c6Q0dfrbr10&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/c6Q0dfrbr10&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
      <link>http://michael.carbenay.info/post/Souviens-toi-souviens-toi-de-ce-5-de-Novembree280a6.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Souviens-toi-souviens-toi-de-ce-5-de-Novembree280a6.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=38536088-d746-4a41-b513-d6d7c33c2faf</guid>
      <pubDate>Tue, 17 Feb 2009 09:24:59 +0200</pubDate>
      <category>posts inutiles</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=38536088-d746-4a41-b513-d6d7c33c2faf</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=38536088-d746-4a41-b513-d6d7c33c2faf</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Souviens-toi-souviens-toi-de-ce-5-de-Novembree280a6.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=38536088-d746-4a41-b513-d6d7c33c2faf</wfw:commentRss>
    </item>
    <item>
      <title>WPF : Vos popups / comboboxes n’apparaissent pas sous Windows XP ?</title>
      <description>&lt;p&gt;Un bug très très étrange, avec un symptôme déjà rencontré mais pour une raison totalement différente, nous embêtais depuis quelques semaines chez l’un de nos clients : les popups (menu, combobox, etc.) n’apparaissaient pas sur l’un des postes… &lt;/p&gt;  &lt;p&gt;Après pas mal de recherche, il est apparu que les popups s’affichaient bien, mais en dessous de la fenêtre principale ! Pas très évident à expliquer et encore moins à corriger :)&lt;/p&gt;  &lt;p&gt;Eh bien, si, en fait, il s’agit d’un bug connu : &lt;a title="http://support.microsoft.com/kb/943326/en-us" href="http://support.microsoft.com/kb/943326/en-us"&gt;http://support.microsoft.com/kb/943326/en-us&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Je vais de ce pas installer le correctif !&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/WPF-Vos-popups-comboboxes-ne28099apparaissent-pas-sous-Windows-XP-.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/WPF-Vos-popups-comboboxes-ne28099apparaissent-pas-sous-Windows-XP-.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=9f324247-a00a-4ca1-b994-5ebc4e624bac</guid>
      <pubDate>Mon, 16 Feb 2009 17:09:18 +0200</pubDate>
      <category>WPF</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=9f324247-a00a-4ca1-b994-5ebc4e624bac</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=9f324247-a00a-4ca1-b994-5ebc4e624bac</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/WPF-Vos-popups-comboboxes-ne28099apparaissent-pas-sous-Windows-XP-.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=9f324247-a00a-4ca1-b994-5ebc4e624bac</wfw:commentRss>
    </item>
    <item>
      <title>WPF et les palettes de couleurs deuxième prise !</title>
      <description>&lt;p&gt;Bon… en regardant un peu sur le web si d’autres personnes parlaient de COLOURlovers et WPF, je suis tombé sur ce &lt;a href="http://www.technode.info/2008/12/kuler-sincruste-dans-blend-et-design.html"&gt;post chez technode parlant du plug-in Colorful pour Blend &amp;amp; Design&lt;/a&gt;. Du coup, forcément, il ne me reste plus qu’à essayer… Pour résumer, il s’agit d’un add-in qui ajoute (dans Expression Blend &amp;amp; Design donc), l’accès aux ressources de palettes proposées sur &lt;a href="http://kuler.adobe.com/"&gt;Adobe Kuler&lt;/a&gt;.&lt;/p&gt;  &lt;p style="text-align: center"&gt;&lt;a href="http://files.blog-engine.net/1/35271.jpg"&gt;&lt;img title="ColorfulExpressionDesign" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="584" alt="ColorfulExpressionDesign" src="http://files.blog-engine.net/1/11936.jpg" width="500" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Pour trouver le &lt;a href="http://www.codeplex.com/colorful"&gt;plug-in et essayer par vous même, ça se passe sur codeplex&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Ah… oui, et si vous ne connaissiez pas &lt;a href="http://www.technode.info/"&gt;Technode&lt;/a&gt;, faites comme moi et mettez le dans votre aggrégateur rss :)&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/WPF-et-les-palettes-de-couleurs-deuxieme-prise-!.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/WPF-et-les-palettes-de-couleurs-deuxieme-prise-!.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=c4622fc4-afa2-49a9-b3d9-490cc1860be8</guid>
      <pubDate>Fri, 06 Feb 2009 21:55:49 +0200</pubDate>
      <category>WPF</category>
      <category>Interface utilisateur</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=c4622fc4-afa2-49a9-b3d9-490cc1860be8</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=c4622fc4-afa2-49a9-b3d9-490cc1860be8</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/WPF-et-les-palettes-de-couleurs-deuxieme-prise-!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=c4622fc4-afa2-49a9-b3d9-490cc1860be8</wfw:commentRss>
    </item>
    <item>
      <title>COLOURlovers et WPF : des palettes sympa pour vos applications</title>
      <description>&lt;p&gt;J’ai découvert &lt;a href="http://www.colourlovers.com/"&gt;COLOURlovers&lt;/a&gt; il y a déjà quelque temps, et il s’agit d’un site quasi indispensable lorsque l’on a besoin de définir les couleurs d’une application. Entre les palettes de la communauté et COPASO, leur outil intégré de création, on peut trouver à peu près tout ce que l’on cherche.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.colourlovers.com/"&gt;&lt;img title="colourloverslogo" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="65" alt="colourloverslogo" src="http://files.blog-engine.net/1/28160.png" width="272" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Je ne sais pas si je l’avais raté où s’il s’agit d’une plus ou moins nouveauté (on ne peut pas dire que l’on visite ce genre de site tous les jours quand on est développeur, alors ca date peut-être…) mais il y a maintenant la possibilité d’exporter en WPF/XAML les différentes palettes !&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/15674.jpg"&gt;&lt;img title="colourlovers1" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="302" alt="colourlovers1" src="http://files.blog-engine.net/1/44082.jpg" width="504" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Voici le résultat (en export XAML/Silverlight) : &lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SolidColorBrush&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Brush1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FFEAEDDB&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SolidColorBrush&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Brush2&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FFD6D4C4&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SolidColorBrush&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Brush3&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FF5C514E&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SolidColorBrush&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Brush4&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FF784F56&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SolidColorBrush&lt;/span&gt; &lt;span class="attr"&gt;x:Key&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Brush5&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Color&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FFB1103C&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;</description>
      <link>http://michael.carbenay.info/post/COLOURlovers-et-WPF-des-palettes-sympa-pour-vos-applications.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/COLOURlovers-et-WPF-des-palettes-sympa-pour-vos-applications.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=d3f1773d-6973-4f5f-86af-ecb88b1e9844</guid>
      <pubDate>Fri, 06 Feb 2009 20:53:13 +0200</pubDate>
      <category>WPF</category>
      <category>Interface utilisateur</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=d3f1773d-6973-4f5f-86af-ecb88b1e9844</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=d3f1773d-6973-4f5f-86af-ecb88b1e9844</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/COLOURlovers-et-WPF-des-palettes-sympa-pour-vos-applications.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=d3f1773d-6973-4f5f-86af-ecb88b1e9844</wfw:commentRss>
    </item>
    <item>
      <title>Tooltip avancés en WPF</title>
      <description>&lt;p&gt;L’un de mes grands moments, lorsque j’ai commencé à faire du WPF, a été la découverte que de nombreux contrôles que je croyais “tout bêtes”, ne l’était pas tant que ça. Par exemple, cette semaine, j’ai commencé à intégrer certaines modifications sur le système d’aide de l’un des logiciels sur lequel je travaille. Et au milieu de ces modifications se trouvait la réponse à une demande simple : fournir des tooltips “avancés”, similaires à ceux trouvés dans Office 2007.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/37928.jpg"&gt;&lt;img title="extendedtooltip" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="78" alt="extendedtooltip" src="http://files.blog-engine.net/1/27296.jpg" width="500" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Dans WPF, les tooltips ont deux caractéristiques très intéressantes :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Ils sont skinnables : vous pouvez donc en faire (presque) ce que vous voulez en terme de design &lt;/li&gt;    &lt;li&gt;Ce sont des “ContentControl” : aucun problème donc pour y mettre un Panel quelconque et y ajouter autant de contrôles que nécessaire &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;L’exemple ci-dessus – même si il est, sur le plan graphique, loin d’être formidable – se fait facilement avec le code suivant :&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Du coté des ressources&lt;/em&gt;&lt;/p&gt;  &lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt; &lt;span class="attr"&gt;TargetType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{x:Type ToolTip}&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Background&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#7F000000&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;BorderBrush&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#7Fdcdcdc&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Setter&lt;/span&gt; &lt;span class="attr"&gt;Property&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Foreground&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;White&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Style&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;






&lt;p&gt;du coté du contrôle&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;facile non ?&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;&lt;/style&gt;

&lt;p&gt;&lt;em&gt;Du coté du contrôle&lt;/em&gt;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt; ...&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Button.ToolTip&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DockPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; 
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Image&lt;/span&gt; &lt;span class="attr"&gt;DockPanel&lt;/span&gt;.&lt;span class="attr"&gt;Dock&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; 
                &lt;span class="rem"&gt;&amp;lt;!-- ... --&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Image&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;DockPanel&lt;/span&gt;.&lt;span class="attr"&gt;Dock&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Top&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;FontWeight&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Bold&amp;quot;&lt;/span&gt; 
                &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Menu principal&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Cliquez ici ....&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DockPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Button.ToolTip&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Facile non ?&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Tooltip-avances-en-WPF.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Tooltip-avances-en-WPF.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=fcc28316-04a3-4ff4-8833-32b851483553</guid>
      <pubDate>Tue, 03 Feb 2009 00:22:06 +0200</pubDate>
      <category>WPF</category>
      <category>Interface utilisateur</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=fcc28316-04a3-4ff4-8833-32b851483553</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=fcc28316-04a3-4ff4-8833-32b851483553</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Tooltip-avances-en-WPF.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=fcc28316-04a3-4ff4-8833-32b851483553</wfw:commentRss>
    </item>
    <item>
      <title>Où est charlie ?</title>
      <description>&lt;p&gt;Je me demande si j’arriverai à retrouver &lt;a href="http://fr.wikipedia.org/wiki/O%C3%B9_est_Charlie_%3F"&gt;Charlie&lt;/a&gt; dans cette photo &lt;/p&gt;  &lt;p&gt;&lt;a title="http://gigapan.org/viewGigapan.php?id=15374&amp;amp;window_height=931&amp;amp;window_width=1659" href="http://gigapan.org/viewGigapan.php?id=15374&amp;amp;window_height=931&amp;amp;window_width=1659"&gt;http://gigapan.org/viewGigapan.php?id=15374&amp;amp;window_height=931&amp;amp;window_width=1659&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Si vous avez du temps vous pouvez aussi voir si vous trouvez &lt;a href="http://www.lemonde.fr/international/article/2009/01/20/segolene-royal-j-ai-inspire-obama-et-ses-equipes-nous-ont-copies_1143977_3210.html"&gt;celle à qui Obama doit tout&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;:)&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Ou-est-charlie-.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Ou-est-charlie-.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=c75b9042-ad55-4131-8c40-30f369a92b76</guid>
      <pubDate>Sun, 01 Feb 2009 16:44:51 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=c75b9042-ad55-4131-8c40-30f369a92b76</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=c75b9042-ad55-4131-8c40-30f369a92b76</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Ou-est-charlie-.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=c75b9042-ad55-4131-8c40-30f369a92b76</wfw:commentRss>
    </item>
    <item>
      <title>*chirp, le client twitter qui a de la classe</title>
      <description>&lt;p&gt;&lt;a href="http://files.blog-engine.net/1/7212.jpg"&gt;&lt;img title="star-chirp" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="240" alt="star-chirp" src="http://files.blog-engine.net/1/43797.jpg" width="165" align="left" border="0" /&gt;&lt;/a&gt; Allez, zou, encore un peu de “pub” pour Thirteen23, qui s’installent de plus en plus comme LA référence dans les applis WPF. (bon, par contre coté jeux de mots, c’est toujours assez spécial : star-chirp, il fallait l’oser quand même…)&lt;/p&gt;  &lt;p&gt;L’appli est très sympa coté interface, et même si il reste quelques petits défauts d’affichage de temps à autres, on est vraiment dans le plus pur produit WPF : des animations un peu partout, de la transparence à gogo etc.&lt;/p&gt;  &lt;p&gt;Après, il leur reste quelques petits soucis d’ergonomie : on aimerai bien par exemple avoir un raccourci pour créer un nouveau twit, et ce genre de choses, F5 ne serait pas de trop pour rafraîchir, de même que la gestion d’un bouton back pour revenir en arrière&lt;/p&gt;  &lt;p&gt;En tout cas, ca &lt;a href="http://www.thirteen23.com/experiences/desktop/chirp/"&gt;se télécharge par ici&lt;/a&gt;.&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/chirp-le-client-twitter-qui-a-de-la-classe.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/chirp-le-client-twitter-qui-a-de-la-classe.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=ac96401f-c190-4a27-b116-25e37cd11055</guid>
      <pubDate>Wed, 28 Jan 2009 16:47:36 +0200</pubDate>
      <category>WPF</category>
      <category>Interface utilisateur</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=ac96401f-c190-4a27-b116-25e37cd11055</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=ac96401f-c190-4a27-b116-25e37cd11055</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/chirp-le-client-twitter-qui-a-de-la-classe.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=ac96401f-c190-4a27-b116-25e37cd11055</wfw:commentRss>
    </item>
    <item>
      <title>de.collage par Thirteen23</title>
      <description>&lt;p&gt;C’est assez ancien, mais puisque &lt;a href="http://www.imazine.fr/2009-01/softs/polar-clock/"&gt;Benoît&lt;/a&gt; fait dans le screen saver, moi aussi ! :)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.thirteen23.com/labs/winfx/de.collage/"&gt;&lt;img title="13-23-decollage" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="379" alt="13-23-decollage" src="http://files.blog-engine.net/1/11441.jpg" width="504" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ce que vous voyez ci-dessus est la version “application” de decollage, mais cela s’installe très facilement en économiseur d’écran.&lt;/p&gt;  &lt;p&gt;Pour la petite histoire, il s’agit de l’une des premières applications WPF que j’ai pu voir, elle n’est peut être pas bluffante, mais quand on sait que WPF n’est pas plus compliqué à programmer que WinForms (enfin… presque…), cela m’avait impressionné.&lt;/p&gt;  &lt;p&gt;Ca se &lt;a href="http://www.thirteen23.com/labs/winfx/de.collage/"&gt;télécharge par ici&lt;/a&gt;, mais c’est surtout &lt;a href="http://experience.thirteen23.com/"&gt;leur blog qui est intéressant&lt;/a&gt;.&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/decollage-par-Thirteen23.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/decollage-par-Thirteen23.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=2a7af3d3-f1c4-478f-b887-07f5d92aa0cd</guid>
      <pubDate>Tue, 20 Jan 2009 13:27:26 +0200</pubDate>
      <category>.net 3.0</category>
      <category>WPF</category>
      <category>Interface utilisateur</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=2a7af3d3-f1c4-478f-b887-07f5d92aa0cd</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=2a7af3d3-f1c4-478f-b887-07f5d92aa0cd</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/decollage-par-Thirteen23.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=2a7af3d3-f1c4-478f-b887-07f5d92aa0cd</wfw:commentRss>
    </item>
    <item>
      <title>Une vidéo de présentation de MVVM</title>
      <description>&lt;p&gt;MVVM est probablement le modèle de programmation le plus intéressant en ce moment. Je ne suis probablement pas très objectif en disant cela, puisqu’il se rapproche très fortement de ce que je fais depuis un certain nombre d’années maintenant, mais bon…&lt;/p&gt;  &lt;p&gt;Ca se passe par ici : &lt;a title="http://channel9.msdn.com/shows/Continuum/MVVM/" href="http://channel9.msdn.com/shows/Continuum/MVVM/"&gt;http://channel9.msdn.com/shows/Continuum/MVVM/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;via : &lt;a href="http://channel9.msdn.com"&gt;Channel9&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Une-video-de-presentation-de-MVVM.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Une-video-de-presentation-de-MVVM.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=a5884e13-2d42-46c9-b2eb-5b32ccd02a0d</guid>
      <pubDate>Tue, 20 Jan 2009 08:27:55 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=a5884e13-2d42-46c9-b2eb-5b32ccd02a0d</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=a5884e13-2d42-46c9-b2eb-5b32ccd02a0d</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Une-video-de-presentation-de-MVVM.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=a5884e13-2d42-46c9-b2eb-5b32ccd02a0d</wfw:commentRss>
    </item>
    <item>
      <title>The infamous case of IQueryable.First()</title>
      <description>&lt;p&gt;Préambule : Ceci n’est absolument pas un billet destiné à râler sur un bug ou sur un défaut de conception honteux dans LINQ / C# 3.0 : le comportement décrit ci-dessous est une erreur de programmation de notre coté (voir Préambule N°2) et non quelque chose d’induit par LINQ/IQueryable. Cela nous apprendra à ne pas lire la documentation d’une méthode et à ne pas faire attention à la méthode juste en dessous dans la boite de dialogue Intellisense.&lt;/p&gt;  &lt;p&gt;Préambule N°2: Nous connaissons IQueryable.FirstOrDefault() qui constitue la réponse aux &lt;strike&gt;mots&lt;/strike&gt; maux (raaaah des fois c’est bien de se relire, ca évite de passer pour un c…ne sachant même pas faire la différence entre “mots” et “maux”) décrits ci dessous.&lt;/p&gt;  &lt;p&gt;Cette fin de matinée, un samedi qui plus est, a été source de grande joie pour moi : je viens de passer un peu plus de deux heures sur un bug d’une incroyable stupidité… &lt;/p&gt;  &lt;p&gt;L’un des nos clients, en ces derniers jours de préparation de colis pour Noël, a eu besoin de l’écriture en urgence d’un outil destiné à remplacer des terminaux défectueux. Aussi tôt dit, presque (il fallait quand arriver à trouver le temps de programmer…) aussitôt fait : nous avons réalisé une mini-application à partir de WinForms et LINQ. Celle-ci, bien qu’elle n’est pas près de figurer dans la catégorie des applications les mieux conçues, remplissait son métier… enfin… pendant quelques heures : ce matin, catastrophe, il y a beaucoup de messages d’erreurs et cela ralenti considérablement une logistique déjà sous pression.&lt;/p&gt;  &lt;p&gt;Les symptômes sont assez curieux : lors du traitement, les gens obtiennent souvent une erreur correspondant à des règles de gestion internes alors qu’ils sont sûr que celles-ci sont bien respectées. Chose encore plus étrange, parfois un simple nouvel essai permet de corriger le problème, d’autre fois il suffit d’attendre un peu et de re-essayer et cela fonctionne. Après examen du code, nous réduisons le code “fautif” à ces quelques lignes :&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;var produits = from ... &lt;span class="kwrd"&gt;in&lt;/span&gt; linqContext. ...&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="kwrd"&gt;where&lt;/span&gt; .....&lt;/pre&gt;

  &lt;pre class="alt"&gt;     select ....;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;   var produit = produits.First();&lt;/pre&gt;

  &lt;pre&gt;   &lt;span class="kwrd"&gt;if&lt;/span&gt;(produit == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre class="alt"&gt;   {&lt;/pre&gt;

  &lt;pre&gt;       &lt;span class="rem"&gt;//... affiche l'erreur ...&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;   }&lt;/pre&gt;

  &lt;pre&gt;   &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;   {&lt;/pre&gt;

  &lt;pre&gt;      &lt;span class="rem"&gt;// ...fait le traitement nécessaire...&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;   }&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;catch &lt;/span&gt;&lt;span class="rem"&gt;// plusieurs blocs catch pour traiter les différents cas&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="rem"&gt;//... affiche l'erreur ...&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;



.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Code qui me semble parfaitement valide, j’entreprends donc de monter Visual studio sur l’environnement de production et de commencer à tester en production. Après quelques ratés, nous trouvons des cas où, effectivement, l’erreur apparaît sans raison. Celle ci est affichée par une InvalidOperationException lors de l’appel à IQueryable.First() et dont le message est “le résultat ne contient aucune ligne” (ou quelque chose du genre, je n’ai plus le message en tête). Et la, donc, drame : IQueryable.First() renvoie sous forme d’erreur quelque chose qui n’est, pour moi, pas de l’ordre de l’exception mais bien d’un traitement “normal”.&lt;/p&gt;

&lt;p&gt;Hormis le fait que la documentation MSDN ne liste pas cette exception dans celles possibles pour cette méthode (pour la première fois de ma vie, l’obligation de déclaration des exceptions propre à java m’a semblé utile… comparé aux milliers de fois où il m’a énervé lorsque j’en faisait ^^), le retour sous forme d’exception m’a quelque peu choqué. Combien de fois, en effet, avez vous écrit en (T-) SQL : select top 1 … from …. ? Dans ce genre de cas, car c’est bien cela que semble exprimer IQueryable.First(), on peux raisonnablement s’attendre à ce que le résultat “il n’y a pas de première ligne”, ne soit pas de type “exceptionnel”.&lt;/p&gt;

&lt;p&gt;Tout cela pour dire que, si vous mettez à disposition d’une équipe de développeurs un composant, il est primordial de bien comprendre et de bien définir le contrat que votre composant propose, et en particulier d’évaluer le plus possible ce qui tient des postulats “implicites” de vos fonctions (dans le cas présent, le postulat étant qu’un IQueryable ne peut pas contenir 0 éléments) et de les documenter au fur et à mesure que ceux-ci apparaissent (certain n’apparaîtront en effet que longtemps après l’implémentation, lorsqu’un développeur aura la mauvaise idée de ne pas le(s) respecter).&lt;/p&gt;

&lt;p&gt;Comme je le disais en préambule, l’équipe chargée de cette partie de LINQ/C# 3.0 a parfaitement géré le problème : il existe deux méthodes : First() et FirstOrDefault() (conservant même la notion de …OrDefault propre aux objets “nullables”) qui permettent de choisir le type de comportement que l’on souhaite. &lt;/p&gt;

&lt;p&gt;Pour la petite histoire, l’erreur ne provenait absolument pas de cette erreur. Nous n’affichions pas le message d’erreur exact, peut-être, mais le message d’erreur était proche de ce qu’il devait être. Le fautif a fini par être trouvé : les outils de saisie, parfois, transmettaient des informations incohérentes (quand je vous disais que le bug était d’un incroyable stupidité…).&lt;/p&gt;

&lt;p&gt;Post-Scriptum : Ce billet ne doit son existence qu’à “de saines lectures”, en l’occurrence &lt;a href="http://blogs.msdn.com/ericlippert/default.aspx"&gt;Eric Lippert&lt;/a&gt;. L’&lt;a href="http://blogs.msdn.com/ericlippert/archive/2008/09/08/high-maintenance.aspx"&gt;un de ses billets&lt;/a&gt;, lu par hasard il y a quelques jours, a très fortement résonné dans mon esprit ce matin pendant cette phase de “debug en production” et, sans celui-ci, j’aurais probablement haussé les épaules et continué. Bien que le sujet ne soit pas exactement le même, il y parle du même type de problématique : l’implémentation d’une méthode, ainsi que les postulats implicites de l’équipe développant un composant, font partie intégrante du contrat. &lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/The-infamous-case-of-IQueryableFirst().aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/The-infamous-case-of-IQueryableFirst().aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=03082ad3-f81c-44c6-9fee-5ee23ee971bd</guid>
      <pubDate>Sat, 20 Dec 2008 13:54:48 +0200</pubDate>
      <category>C#</category>
      <category>.net 3.0</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=03082ad3-f81c-44c6-9fee-5ee23ee971bd</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=03082ad3-f81c-44c6-9fee-5ee23ee971bd</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/The-infamous-case-of-IQueryableFirst().aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=03082ad3-f81c-44c6-9fee-5ee23ee971bd</wfw:commentRss>
    </item>
    <item>
      <title>TaskSwitcher, bis</title>
      <description>&lt;p&gt;Il y a quelques mois – avant une grande pause “blogilistique” (enfin… si c’est comme ca que l’on dit) – j’étais à la recherche d’un TaskSwitcher. Cet après-midi, alors que je désesperait, une nouvelle fois, de trouver la bonne fenêtre, je me suis amusé à prendre une copie d’écran de mon bureau.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://files.blog-engine.net/1/39076.jpg"&gt;&lt;img title="Capture_cet_aprem" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="416" alt="Capture_cet_aprem" src="http://files.blog-engine.net/1/9794.jpg" width="500" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Franchement, il va falloir que j’arrête le multi-task : &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;4 Visual Studio &lt;/li&gt;    &lt;li&gt;3 Excel &lt;/li&gt;    &lt;li&gt;2 Word, &lt;/li&gt;    &lt;li&gt;7 IE &lt;/li&gt;    &lt;li&gt;5 fenêtre MSN &lt;/li&gt;    &lt;li&gt;Outlook, &lt;/li&gt;    &lt;li&gt;SQL Management Studio 2008, &lt;/li&gt;    &lt;li&gt;L’aide de Visual studio &lt;/li&gt;    &lt;li&gt;3 notepads &lt;/li&gt;    &lt;li&gt;OneNote, &lt;/li&gt;    &lt;li&gt;Google Chrome &lt;/li&gt;    &lt;li&gt;etc. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;ca commence à faire un peu trop… &lt;/p&gt;  &lt;p&gt;PS : Bon, tout cela pour dire “non je ne suis pas mort, pas la peine d’appeler pour s’en assurer” à certaines personnes :)&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/TaskSwitcher-bis.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/TaskSwitcher-bis.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=7510e2bd-96a1-49fe-89e2-a3b656ffad9c</guid>
      <pubDate>Thu, 27 Nov 2008 14:30:35 +0200</pubDate>
      <category>posts inutiles</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=7510e2bd-96a1-49fe-89e2-a3b656ffad9c</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=7510e2bd-96a1-49fe-89e2-a3b656ffad9c</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/TaskSwitcher-bis.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=7510e2bd-96a1-49fe-89e2-a3b656ffad9c</wfw:commentRss>
    </item>
    <item>
      <title>Conseils pour développeurs (asp.net) du dimanche</title>
      <description>&lt;p&gt;Cela fait quelques semaines que j'interviens de façon ponctuelle sur la maintenance d'un extranet pour un client, et que je m'énerve régulièrement sur l'incapacité de la plupart des développeurs à comprendre qu'un code doit être un minimum propre... L'application, écrite en asp.net, est un ensemble de morceaux de code réalisés, probablement, à la va-vite par des CDD si j'en juge par la "qualité" très médiocre.&lt;/p&gt; &lt;p&gt;Voici donc quelque conseils à retenir si vous faites du développement ASP.net et que vous souhaitez voir votre code être maintenu...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;N'accèdez jamais&lt;/strong&gt;, directement dans votre page,&lt;strong&gt; à des variables de sessions ou d'application&lt;/strong&gt; : c'est probablement le B-A-BA du développement avec des langages typés... Il n'est pas normal de voir dans une page ASP.net (sauf cas exceptionnels) des accès du type :&lt;/p&gt; &lt;blockquote&gt;&lt;pre class="csharpcode"&gt;(&lt;span class="kwrd"&gt;int&lt;/span&gt;) Session[&lt;span class="str"&gt;"MEMBRE_ID"&lt;/span&gt;] &lt;span class="rem"&gt;// non !!!!!&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Pourquoi cela n'est-il pas bien ? eh bien tout simplement parce que si une autre page accède (ou encore plus catastrophique met à jour) votre valeur, il y a 1 chance sur 2 pour que celle-ci ne manipule pas le même type de données (dans l'exemple de l'application extranet, l'une des pages traitait l'identifiant client comme un decimal et l'autre comme un int...). Pour réaliser un code maintenable, il vous reste à faire une class "Helper" qui se charge de masquer l'accès à la variable de session et le typage :&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; SessionHelper
{
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; MembreId
    {
        get
        {
            &lt;span class="kwrd"&gt;object&lt;/span&gt; o = Session[&lt;span class="str"&gt;"MEMBRE_ID"&lt;/span&gt;];
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (o == &lt;span class="kwrd"&gt;null&lt;/span&gt; || !(o &lt;span class="kwrd"&gt;is&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;))
                &lt;span class="kwrd"&gt;return&lt;/span&gt; 0;
            &lt;span class="kwrd"&gt;return&lt;/span&gt; (&lt;span class="kwrd"&gt;int&lt;/span&gt;)o;
        }
        set
        {
            Session[&lt;span class="str"&gt;"MEMBRE_ID"&lt;/span&gt;] = &lt;span class="kwrd"&gt;value&lt;/span&gt;;
        }
    }
}&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec ça, plus jamais de "InvalidCastException" - enfin, si je ne me suis pas trompé dans l'écriture de la classe :) - et vous risquez moins de problème qu'à tout stocker en string (je pense principalement à des soucis d'injection sql...). Sans parler du fait que vous ne chercherez plus si vous avez appelé votre variable "MEMBRE_ID", "IdMembre", "MEMBREID", ou tout autre variation...&lt;/p&gt;
&lt;p&gt;Dans le même ordre d'idée, &lt;strong&gt;ne réalisez jamais les updates sans typer vos variables&lt;/strong&gt; : à moins de réaliser une application poubelle et donc d'utiliser le RAD à 100%, vous avez probablement écrit des méthodes (si ce n'est des objets) pour l'implémentation de vos règles métiers et de vos accès aux données. Bien ! mais pitié, &lt;strong&gt;n'utilisez pas des signatures du type&lt;/strong&gt; :&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Membre GetMembre(&lt;span class="kwrd"&gt;string&lt;/span&gt; membreId)
{
     &lt;span class="rem"&gt;// non !!!!!&lt;/span&gt;
}
&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/blockquote&gt;
&lt;p&gt;lorsque &lt;strong&gt;vous savez que membreId est un int&lt;/strong&gt;, cela fait désordre. Lorsque je vois ce genre de signature, cela m'effraie toujours un peu : si le développeur n'a même pas été capable de typer ses variables, il y a peu de chance qu'il ai fait des requêtes paramétrées, et c'est donc une porte ouverte à l'injection SQL...&lt;/p&gt;
&lt;p&gt;Si &lt;strong&gt;vous avez des cas complexes&lt;/strong&gt; dans vos règles de gestion, &lt;strong&gt;découpez le problème en différentes méthodes&lt;/strong&gt; axées chacune sur la résolution d'un problème simple. Ce conseil la, je pensais vraiment que tout le monde l'avait en tête, mais je me trompais lourdement... Toujours sur le même exemple (oui, cela pourrait être un cas d'école cet extranet, pour le cours "programmez comme des pieds, c'est mieux !"), l'application présente une menu général dont les fonctionnalités changent en fonction de critères multiples (droits accordé à un client, type de structure dont il fait partie, etc.), voici (extrêmement simplifiée) la façon dont cela est traité :&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; matricePossibilite = &lt;span class="str"&gt;""&lt;/span&gt;;
matricePossiblite += Session[&lt;span class="str"&gt;"MEMBRE_TYPE"&lt;/span&gt;].ToString();
matricePossibilite += Session[&lt;span class="str"&gt;"..."&lt;/span&gt;].ToString();
&lt;span class="rem"&gt;// il y a encore 3 autres criteres comme ceci...&lt;/span&gt;

&lt;span class="kwrd"&gt;switch&lt;/span&gt; (matricePossibilite)
{
    &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"11012"&lt;/span&gt;:
        &lt;span class="rem"&gt;// une bonne cinquentaine de lignes de code&lt;/span&gt;
        &lt;span class="kwrd"&gt;break&lt;/span&gt;;

    &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"21012"&lt;/span&gt;:
        &lt;span class="rem"&gt;// d'autres lignes...&lt;/span&gt;
        &lt;span class="kwrd"&gt;break&lt;/span&gt;;
}&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Non, non, vous ne rêvez pas, c'est bel est bien écrit comme cela, avec un minimum de commentaires, pour la plupart inutiles d'ailleurs, histoire de simplifier l'affaire... Hormis le fait que tout le code se trouve dans la même méthode, c'est aussi typiquement le cas ou un switch est une très mauvaise idée : cela rends plus difficile à lire. Admettons que l'on garde le switch pour une premiere ré-écriture, il est déjà plus qu'obligatoire de virer toutes ces lignes de codes :&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; matricePossibilite = &lt;span class="str"&gt;""&lt;/span&gt;;
matricePossibilite += Session[&lt;span class="str"&gt;"MEMBRE_TYPE"&lt;/span&gt;].ToString();
matricePossibilite += Session[&lt;span class="str"&gt;"..."&lt;/span&gt;].ToString();
&lt;span class="rem"&gt;// il y a encore 3 autres critères comme ceci...&lt;/span&gt;

&lt;span class="kwrd"&gt;switch&lt;/span&gt; (matricePossibilite)
{
    &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"11012"&lt;/span&gt;:
        NomDuCasNumero1();
        &lt;span class="kwrd"&gt;break&lt;/span&gt;;

    &lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"21012"&lt;/span&gt;:
        NomDuCasNumero2();
        &lt;span class="kwrd"&gt;break&lt;/span&gt;;
}
&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/blockquote&gt;
&lt;p&gt;C'est déjà un poil plus lisible... Il reste ensuite, soit à bien documenter ce que signifie chacun des cas :&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;case&lt;/span&gt; &lt;span class="str"&gt;"11012"&lt;/span&gt;:
&lt;span class="rem"&gt;// l'utilisateur est de type ...&lt;/span&gt;
&lt;span class="rem"&gt;// dans une structure ....&lt;/span&gt;
&lt;span class="rem"&gt;// etc&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ou même encore mieux : ne pas utiliser de variable bizarre pour déterminer les droits mais des &lt;strong&gt;variables avec des noms compréhensibles&lt;/strong&gt; :&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;bool&lt;/span&gt; estAdmin = SessionHelper.MembreType == MembreType.Admin;
TypeStruct type = SessionHelper.TypeStructure;
&lt;span class="rem"&gt;// les autres critères selon le même principe&lt;/span&gt;

&lt;span class="kwrd"&gt;if&lt;/span&gt;(estAdmin)
{
    &lt;span class="kwrd"&gt;if&lt;/span&gt;(...) &lt;span class="rem"&gt;// un autre critère&lt;/span&gt;
        NomDuCasNumero1();
    &lt;span class="kwrd"&gt;else&lt;/span&gt;
        NomDuCasNumero2();
}
&lt;span class="kwrd"&gt;else&lt;/span&gt; &lt;span class="kwrd"&gt;if&lt;/span&gt;(!estAdmin &amp;amp;&amp;amp; type==TypeStruct.Type1)
{
    NomDuCasNumero3();
}
&lt;span class="rem"&gt;// etc.&lt;/span&gt;
&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/blockquote&gt;
&lt;p&gt;C'est un peu plus verbeux, et &lt;strong&gt;cela demandera&lt;/strong&gt; certainement &lt;strong&gt;un peu de réflexion pour ne pas tomber dans une liste de if/else if ou une cascade de if imbriqués&lt;/strong&gt; - pensez de nouveau à découper en plusieurs méthodes si vous avez trop de if... - mais qu'est-ce que c'est plus simple à comprendre !&lt;/p&gt;
&lt;p&gt;Si &lt;strong&gt;vous êtes adepte des procédure stockées&lt;/strong&gt; (ce n'est pas mon cas, mais bon, tous les goûts sont dans la nature...), &lt;strong&gt;n'hésitez pas à les nommer proprement&lt;/strong&gt; : mbr_s c'est bien comme nom mais MembreSuppr c'est carrément plus lisible... et tant qu'à faire, pensez à définir des méthodes-metier dont les noms sont en relation avec celui de la proc-stock.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Voila, ce sont les quelques conseils/remarques qui me sont venus à l'esprit au cours des heures passées à me battre avec cette application. Pour résumer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la plupart des langages actuels sont fortement typés (cela n'a pas que des avantages, mais évite certains dérapages...), assurez vous donc que votre code en soit conscient et compense automatiquement les cas où le typage est plus léger (pour asp.net, il faut comprendre par là : tout ce qui à été conservé compatible avec asp...) 
&lt;li&gt;votre code doit pouvoir être compris dans son ensemble par un autre développeur sans avoir à lire 2000 pages de document Word ou sans avoir besoin de lire dans vos pensées, un peu de commentaires et surtout un code lisible qui peut se comprendre facilement est très souvent préférable à un code plus optimisé - ou du moins qui vous paraît plus optimisé. 
&lt;li&gt;ah...oui... pour avoir eu aussi un problème de code source livré différents de l'application en production : utilisez un système de gestion de source : il est rageant de devoir décompiler la version de production pour retrouver des bouts de code...&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Et pour thierry, si il passe sur ce billet : essayez de trouver un prestataire qui ne soit pas en carton pour la prochaine fois :)&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Conseils-pour-developpeurs-(aspnet)-du-dimanche.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Conseils-pour-developpeurs-(aspnet)-du-dimanche.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=c1cadb5c-bcb0-454a-a811-7695a910a5b5</guid>
      <pubDate>Fri, 22 Aug 2008 09:22:28 +0200</pubDate>
      <category>C#</category>
      <category>Boulot</category>
      <category>asp.net</category>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=c1cadb5c-bcb0-454a-a811-7695a910a5b5</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=c1cadb5c-bcb0-454a-a811-7695a910a5b5</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Conseils-pour-developpeurs-(aspnet)-du-dimanche.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=c1cadb5c-bcb0-454a-a811-7695a910a5b5</wfw:commentRss>
    </item>
    <item>
      <title>Une médaille d'or pour Silverlight 2 ?</title>
      <description>&lt;p&gt;Après le "proof of concept" qu'étais Silverlight premier du nom, il semblerait que la v2 (qui, soit dit en passant, est une petite merveille pour les développeurs) soit en train de marquer des points pour sa première utilisation grandeur nature ! Vous ne le savez peut-être pas, mais NBC a confié la rediffusion des J.O. de Pékin au travers de leur site Internet à une application Silverlight, et jusque là, tout se passe bien. Avec 250TB de données streamée sur une seule journée, on peut se dire que l'architecture mise en place par MS pour la distribution vidéo à l'air de bien tenir ! N'oublions pas, en effet, que le streaming multimédia est la partie la plus mise en avant pour Silverlight et ses services hébergés. &lt;/p&gt; &lt;p&gt;Rappelons aussi que Silverlight 2 n'est pas encore terminé, et qu'on l'attends pour dans quelques semaines, mais, si les chiffres sont exacts et se maintiennent, le taux de problèmes rencontrés est très faible et c'est extrêmement encourageant pour tous ceux qui souhaitent faire des applications RIA et qui en ont un peu marre d'Action Script !&lt;/p&gt; &lt;p&gt;via &lt;a href="http://arstechnica.com/journals/microsoft.ars"&gt;Ars Technica&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Une-medaille-dor-pour-Silverlight-2-.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Une-medaille-dor-pour-Silverlight-2-.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=e605cff7-a55c-4a01-a756-39880bf9b0e6</guid>
      <pubDate>Mon, 18 Aug 2008 22:48:37 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=e605cff7-a55c-4a01-a756-39880bf9b0e6</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=e605cff7-a55c-4a01-a756-39880bf9b0e6</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Une-medaille-dor-pour-Silverlight-2-.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=e605cff7-a55c-4a01-a756-39880bf9b0e6</wfw:commentRss>
    </item>
    <item>
      <title>A la recherche d'un task switcher</title>
      <description>&lt;p&gt;A la recherche d'un bon task switcher - pour power user - j'ai fini cet après midi par installer un clone de Exposé, en me demandant franchement si - pour mon type d'utilisation - cela n'allait pas tourner au cauchemard. Pour le peu que j'utilise la plateforme MacOS, exposé ne me sert quasiment jamais : je conserve rarement plus de deux ou trois fenêtres ouvertes, c'est plus rapide de déplacer les fenêtres pour retrouver celle qui m'initeresse. Mais ne boudons pas notre plaisir, les quelques fois où je m'en sert c'est pratique et très joli.&lt;/p&gt; &lt;p&gt;Donc, installation d'un clone de exposé, disais-je... Je ne le citerai pas - vu que je ne vais pas en dire que du bien - mais bon, il n'y en a pas de masses et si je vous dit qu'il est payant vous devriez facilement le retrouver :). L'installation se fait sans trop de soucis, et je suis même impressionné par le fait qu'il s'installe par défaut en mode "user" et n'accède donc pas à Program Files. Quel dommage par contre qu'il s'installe dans le profil itinérant, même si il est assez léger, ce n'est quand même pas la place pour installer un logiciel... Le premier démarrage est un peu laborieux : pour pouvoir afficher le contenu des fenêtres - et bien que je sois sous vista (évidemment) qui propose tout ce qu'il faut pour éviter cela - le logiciel se sent obligé de me les ré-ouvrir toutes... Après un petit passage par les options, il est enfin prêt à m'afficher mes fenêtres en mode exposé-like. Voila le résultat :&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/15705.jpg"&gt;&lt;img height="312" alt="sous-exposelike" src="http://files.blog-engine.net/1/16740.jpg" width="500" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Hormis l'affichage des fenêtres qui est d'une qualité douteuse et un placement un peu moins bon que celui de son modèle, je me rends ici compte d'une très grosse erreur de ma part : comme je suis allergique aux "virtual desktop" (parce que je passe mon temps à chercher entre les différents bureaux...), le nombre de fenêtres - et franchement, il y en a moins que d'habitude - est bien trop grand pour ce type de présentation.. Par comparaison, même Flip 3D semble moins inquiétant et pourrait même être plus pratique - quoique beaucoup plus long puisqu'il faut passer sur chaque fenêtre une à une - :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/16684.jpg"&gt;&lt;img height="312" alt="sous-flip3D" src="http://files.blog-engine.net/1/20336.jpg" width="500" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Enfin, tout ça pour dire que si vous connaissez un bon taskswitcher qui soit intuitif même lorsque l'on utilise de nombreuses fenêtres, n'hésitez pas à laisser un commentaire.&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/A-la-recherche-dun-task-switcher.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/A-la-recherche-dun-task-switcher.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=5cbf629f-ca49-4b0a-b837-09e628256ba6</guid>
      <pubDate>Wed, 13 Aug 2008 15:28:46 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=5cbf629f-ca49-4b0a-b837-09e628256ba6</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=5cbf629f-ca49-4b0a-b837-09e628256ba6</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/A-la-recherche-dun-task-switcher.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=5cbf629f-ca49-4b0a-b837-09e628256ba6</wfw:commentRss>
    </item>
    <item>
      <title>Une image en background sur un moteur de recherche ? on aura tout vu !</title>
      <description>&lt;p&gt;Depuis quelques jours, la version US de live.com a quelque peu changé : elle affiche maintenant une (jolie) image en fond, avec quelques hotspots contextuels... c'est p'tet pas hyper utile, mais c'est assez joli, ça change du fond blanc rébarbatif de google.&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/7990.png"&gt;&lt;img height="309" alt="image" src="http://files.blog-engine.net/1/34760.png" width="500" border="0"&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Une-image-en-background-sur-un-moteur-de-recherche-on-aura-tout-vu-!.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Une-image-en-background-sur-un-moteur-de-recherche-on-aura-tout-vu-!.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=1292cf8a-01f5-4943-81dd-4f5d5f19c6e6</guid>
      <pubDate>Wed, 06 Aug 2008 14:04:21 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=1292cf8a-01f5-4943-81dd-4f5d5f19c6e6</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=1292cf8a-01f5-4943-81dd-4f5d5f19c6e6</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Une-image-en-background-sur-un-moteur-de-recherche-on-aura-tout-vu-!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=1292cf8a-01f5-4943-81dd-4f5d5f19c6e6</wfw:commentRss>
    </item>
    <item>
      <title>décidément... web 2 - ergo 0</title>
      <description>&lt;p&gt;Après la banque il y a quelques jours, c'est l'hébergement web qui est à l'honneur ce soir... enfin à l'honneur, c'est beaucoup dire !&lt;/p&gt; &lt;p&gt;OVH héberge la plupart de mes noms de domaines, et alors que, pour mes clients/partenaires, j'utilise mon propre serveur DNS, ce soir, après avoir acheté un domaine à titre personnel, j'ai voulu configurer mes hosts &amp;amp; alias. Beeeeenn... c'est pas gagné !&lt;/p&gt; &lt;p&gt;Premier point désagréable : mon hébergeur (je suis pourtant plutôt satisfait de leurs services, mais leur ergonomie est à revoir) a créé automatiquement une tonne de CNAME dans mon domaine, qui vont de imp.ledomainekivabien.com à jabber.ledomainekivabien.com... je ne sais pas - enfin si je sais, plus ou moins, mais je n'ai jamais utilisé - ce que sont imp et jabber, mais franchement, que voulez-vous que j'en fasse ? Alors zou, premiere phase, on les vire... un par un... avec un bazillon d'écran de validation (plus que pour installer un soft sous Vista, c'est dire...). Commençons par virer les éléments les plus simples :&lt;/p&gt; &lt;p&gt;D'abord un clic sur l'îcone supprimer dans la liste :&lt;/p&gt;&lt;a href="http://files.blog-engine.net/1/8902.jpg"&gt;&lt;/a&gt; &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/9776.jpg"&gt;&lt;img height="88" alt="pas-ergo-1" src="http://files.blog-engine.net/1/32950.jpg" width="511" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;puis forcément, la page de validation :&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/46365.jpg"&gt;&lt;img height="242" alt="pas-ergo-2" src="http://files.blog-engine.net/1/1599.jpg" width="532" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;puis une boite de validation...&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/30172.jpg"&gt;&lt;img height="221" alt="pas-ergo-3" src="http://files.blog-engine.net/1/40805.jpg" width="430" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Multipliez ça, par les 8 ou 9 alias DNS qui sont définis et savourez :)&lt;/p&gt; &lt;p&gt;Ca ne vous a pas énervé, juste en imaginant ? Aors on continue avec le plus grandiose de tous : la suppression de l'enregistrement MX ! C'est l'extase, cela commence (après le clic sur l'îcone supprimer) par un dialog d'avertissement :&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/1438.jpg"&gt;&lt;img height="186" alt="pas-ergo-5" src="http://files.blog-engine.net/1/12070.jpg" width="515" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Puis la fenêtre de validation : &lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/32462.jpg"&gt;&lt;img height="235" alt="pas-ergo-6" src="http://files.blog-engine.net/1/34914.jpg" width="538" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;On continue avec confirmation puis un bon gros message d'erreur :&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/9127.jpg"&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://files.blog-engine.net/1/1820.jpg"&gt;&lt;img height="212" alt="pas-ergo-7" src="http://files.blog-engine.net/1/30393.jpg" width="415" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/48003.jpg"&gt;&lt;img height="279" alt="pas-ergo-8" src="http://files.blog-engine.net/1/4276.jpg" width="500" border="0"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt; &lt;p&gt;Il ne reste plus qu'a cocher la case "Forcer l'opération" et à recommencer avec la boite de dialogue de confirmation :&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/29028.jpg"&gt;&lt;img height="212" alt="pas-ergo-7" src="http://files.blog-engine.net/1/47842.jpg" width="415" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;là, si vous n'avez pas encore tué femme et enfants, vous avez enfin réussi à supprimer l'enregistrement MX...&lt;/p&gt; &lt;p&gt;Formidable, non ?&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/decidement-web-2-ergo-0.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/decidement-web-2-ergo-0.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=09bd2d26-9666-4403-ae16-d381f511d7a6</guid>
      <pubDate>Tue, 08 Jul 2008 20:01:55 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=09bd2d26-9666-4403-ae16-d381f511d7a6</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=09bd2d26-9666-4403-ae16-d381f511d7a6</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/decidement-web-2-ergo-0.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=09bd2d26-9666-4403-ae16-d381f511d7a6</wfw:commentRss>
    </item>
    <item>
      <title>Quand je vous disais que je n'étais pas un cas désespéré...</title>
      <description>&lt;p&gt;J'ai fait que 62% au "&lt;a href="http://www.oneplusyou.com/bb/geek"&gt;geekotest&lt;/a&gt;"...&lt;/p&gt; &lt;p align="center"&gt;&lt;a style="display: block; background: url(http://www.oneplusyou.com/bb/css/img/quiz/geek_badge.jpg) no-repeat; width: 268px; height: 82px; text-decoration: none" href="http://www.oneplusyou.com/bb/geek"&gt;&lt;span style="display: block; padding-left: 125px; font-size: 22px; color: #000; padding-top: 28px; font-family: arial"&gt;62% Geek&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Quand-je-vous-disais-que-je-netais-pas-un-cas-desespere.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Quand-je-vous-disais-que-je-netais-pas-un-cas-desespere.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=7cf74211-17ed-4c34-9d43-fc4cca2b0bd2</guid>
      <pubDate>Sat, 05 Jul 2008 15:38:23 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=7cf74211-17ed-4c34-9d43-fc4cca2b0bd2</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=7cf74211-17ed-4c34-9d43-fc4cca2b0bd2</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Quand-je-vous-disais-que-je-netais-pas-un-cas-desespere.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=7cf74211-17ed-4c34-9d43-fc4cca2b0bd2</wfw:commentRss>
    </item>
    <item>
      <title>Super ergonomie !</title>
      <description>&lt;p&gt;J'ai de plus en plus de mal à supporter les interfaces bâclées de la plupart des sites webs... Preuve encore ce matin, avec le site de ma banque - que je ne citerai pas - et leur module de gestion des virements.&lt;/p&gt; &lt;p&gt;Réaliser un virement se fait en deux étapes (enfin, pour les destinataires connus, parce que pour ajouter un nouveau compte, direction votre agence, c'est quand même plus pratique de devoir faire 10 bornes..., mais passons) :&lt;/p&gt; &lt;ol&gt; &lt;li&gt;D'abord la saisie d'un mot de passe pour sécuriser cette partie, c'est plutôt une bonne idée, pour - par exemple - une société cela permet de séparer le droit de visualisation de celui de réaliser des opérations&lt;/li&gt; &lt;li&gt;Puis viens l'écran de définition du virement en lui même&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Tout va bien, me direz vous ? oui... mais non...&lt;/p&gt; &lt;p&gt;La page de saisie du mot de passe ressemble à ça :&lt;/p&gt; &lt;p&gt;&lt;a href="http://files.blog-engine.net/1/10066.jpg"&gt;&lt;img height="149" alt="bpn-pas-ergonomique-1" src="http://files.blog-engine.net/1/46651.jpg" width="430" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Quant à celle de saisie des informations, elle se termine comme ceci :&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://files.blog-engine.net/1/33236.jpg"&gt;&lt;img height="138" alt="bpn-pas-ergonomique-2" src="http://files.blog-engine.net/1/35250.jpg" width="354" border="0"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Les boutons accepter/annuler sont inversés entre les deux écrans. J'ai du m'y reprendre a 3 fois pour valider... grrrr. et je ne parle pas de la différence d'aspect des boutons, parce qu'il y a plus grave :p&lt;/p&gt; &lt;p&gt;Tout cela pour dire : l'ergonomie ce n'est pas fait pour les chiens, et dans le cas qui nous occupe, il faut au moins décider une fois pour toute si vous mettez les boutons "confirmer" à gauche ou à droite (à gauche c'est mieux, c'est comme cela que l'on est pour la plupart habitués, puisque c'est le sens habituels des boutons sous Windows) des boutons "annuler".&lt;/p&gt;</description>
      <link>http://michael.carbenay.info/post/Super-ergonomie-!.aspx</link>
      <author>Michael</author>
      <comments>http://michael.carbenay.info/post/Super-ergonomie-!.aspx#comment</comments>
      <guid>http://michael.carbenay.info/post.aspx?id=37cd2de4-5de3-463a-85a9-209070a61d77</guid>
      <pubDate>Tue, 01 Jul 2008 09:12:32 +0200</pubDate>
      <dc:publisher>Michael</dc:publisher>
      <pingback:server>http://michael.carbenay.info/pingback.axd</pingback:server>
      <pingback:target>http://michael.carbenay.info/post.aspx?id=37cd2de4-5de3-463a-85a9-209070a61d77</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://michael.carbenay.info/trackback.axd?id=37cd2de4-5de3-463a-85a9-209070a61d77</trackback:ping>
      <wfw:comment>http://michael.carbenay.info/post/Super-ergonomie-!.aspx#comment</wfw:comment>
      <wfw:commentRss>http://michael.carbenay.info/syndication.axd?post=37cd2de4-5de3-463a-85a9-209070a61d77</wfw:commentRss>
    </item>
  </channel>
</rss>