<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://20-100.ch/blog/index.php/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>20-100.ch // Prog, news et autres trucs de geek...</title>
  <link>http://20-100.ch/blog/index.php/</link>
  <description>Prog, news et autres trucs de geek...</description>
  <language>fr</language>
  <pubDate>Mon, 23 Aug 2010 08:21:54 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Désactiver le layout et/ou la vue pour une action donnée dans le Framework Zend</title>
    <link>http://20-100.ch/blog/index.php/post/2010/03/14/Desactiver-le-layout-et/ou-la-vue-pour-une-action-donnee-dans-le-Framework-Zend</link>
    <guid isPermaLink="false">urn:md5:37103a1969cd18c18eb2362d30ef6516</guid>
    <pubDate>Sun, 14 Mar 2010 21:37:00 +0100</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>Action</category><category>Layout</category><category>PHP</category><category>View</category><category>Zend</category>    
    <description>    &lt;p&gt;Le Framework Zend est un framework MVC en PHP que j'affectionne particulièrement. Dans certains cas, il arrive que l'on veuille avec une action dans un contrôleur donné qui n'affiche rien, ou alors simplement du texte brut (des données JSON par exemple). Dans ce cas, plutôt que de créer un fichier vide pour la vue, il est plus simple de désactiver la vue (et le layout le cas échéant) pour cette action donnée, à l'aide du code suivante&amp;nbsp;:&lt;/p&gt;

&lt;code class=&quot;php&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$this&lt;/span&gt;-&amp;gt;_helper-&amp;gt;&lt;span style=&quot;color: #006600;&quot;&gt;layout&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;-&amp;gt;&lt;span style=&quot;color: #006600;&quot;&gt;disableLayout&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span style=&quot;color: #0000ff;&quot;&gt;$this&lt;/span&gt;-&amp;gt;_helper-&amp;gt;&lt;span style=&quot;color: #006600;&quot;&gt;viewRenderer&lt;/span&gt;-&amp;gt;&lt;span style=&quot;color: #006600;&quot;&gt;setNoRender&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/code&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2010/03/14/Desactiver-le-layout-et/ou-la-vue-pour-une-action-donnee-dans-le-Framework-Zend#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2010/03/14/Desactiver-le-layout-et/ou-la-vue-pour-une-action-donnee-dans-le-Framework-Zend#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/35</wfw:commentRss>
      </item>
    
  <item>
    <title>Activer Intellisense pour CUDA dans Visual Studio</title>
    <link>http://20-100.ch/blog/index.php/post/2009/12/29/Activer-Intellisense-pour-CUDA-dans-Visual-Studio</link>
    <guid isPermaLink="false">urn:md5:cf674911f49cbf0919dfbea39090c173</guid>
    <pubDate>Tue, 29 Dec 2009 21:20:00 +0100</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>c</category><category>cuda</category><category>intellisense</category><category>visual studio</category>    
    <description>    &lt;p&gt;Petite parenthèse dans mes articles sur la configuration d'un serveur pour vous parler de CUDA. Je suis actuellement en train de développer avec cette API de nVidia pour faire tourner du code sur les processeurs graphiques, et j'utilise pour ça Visual Studio 2008. La première étape fût d'activer la coloration syntaxique pour le code CUDA (qui est une extension du C, et dont les fichiers finissent en .cu/.cuh).&lt;/p&gt;


&lt;p&gt;Pour cela, il suffit d'aller dans Tools / Options / Text Editor / File Extension, et d'ajouter une règle pour les fichiers cu et cuh, afin qu'ils soient édités avec Microsoft Visual C++.&lt;/p&gt;


&lt;p&gt;Mais cela ne va pas activer Intellisense, l'auto-complétion, et surtout les aides à la navigation dans le code (les petits menus déroulants en haut de l'éditeur qui permettent d'aller directement à une fonction). Pour activer tout ça, il faut aller dans l'éditeur de registre, dans le dossier:&lt;/p&gt;

&lt;pre&gt;
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Languages\Language Services\C/C++
&lt;/pre&gt;


&lt;p&gt;Là, modifiez la clé &lt;code&gt;NCB Default C/C++ Extensions&lt;/code&gt; et ajoutez-y les extensions .cu et .cuh, et le tour est joué&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Trouvé sur &lt;a href=&quot;http://www.wizardsofeast.com/?p=378&quot; hreflang=&quot;en&quot;&gt;Home of easter wizards&lt;/a&gt; via &lt;a href=&quot;http://forums.nvidia.com/index.php?showtopic=35669&amp;amp;hl=intellisense&quot; hreflang=&quot;en&quot;&gt;les forums nVidia&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2009/12/29/Activer-Intellisense-pour-CUDA-dans-Visual-Studio#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2009/12/29/Activer-Intellisense-pour-CUDA-dans-Visual-Studio#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/34</wfw:commentRss>
      </item>
    
  <item>
    <title>Installer Subversion et websvn avec Apache 2 sur Debian</title>
    <link>http://20-100.ch/blog/index.php/post/2009/12/09/Installer-Subversion-et-websvn-avec-Apache-2-sur-Debian</link>
    <guid isPermaLink="false">urn:md5:3643c898cf7e00507710729dce2fc5a0</guid>
    <pubDate>Thu, 10 Dec 2009 00:41:00 +0100</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Serveur</category>
        <category>apache</category><category>debian</category><category>serveur</category><category>subversion</category><category>vps</category>    
    <description>    &lt;p&gt;Après un long moment d'inactivité sur ce blog, je profite de la récente acquisition d'un serveur VPS pour poster quelques articles sur la mise en place d'un tel serveur, déjà pour que je me souvienne de ce que j'avais fait, mais aussi en espérant que ce soit utile à d'autres&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Donc pour ce premier article, je vais détailler la mise en place d'un serveur &lt;a href=&quot;http://subversion.tigris.org/&quot; hreflang=&quot;en&quot;&gt;subversion&lt;/a&gt; (SVN), avec accès via Apache. Je partirai du principe que vous avez déjà un serveur Apache 2 fonctionnel.&lt;/p&gt;


&lt;p&gt;Alors, pour commencer, il faut installer subversion lui-même, ainsi que le module pour apache&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
sudo aptitude install subversion libapache2-svn
&lt;/pre&gt;


&lt;p&gt;Ca va installer les différents programmes nécessaires à l'utilisation de subversion, ainsi que le module pour apache. Vous avez ensuite plusieurs choix&amp;nbsp;: vous pouvez configurer une authentification uniquement via apache, ou permettre aussi de de connecter via SSH. Dans mon cas, je ne veux pas devoir créer un utilisateur sur mon serveur pour chaque accès SVN que je veux donner, je vais donc me limiter à l'authentification via apache.&lt;/p&gt;


&lt;p&gt;Il va falloir ensuite créer un répertoire pour stocker les différents repositories subversion. J'ai choisi de le faire dans /home, car je crée en même temps un utilisateur pour subversion (et ainsi les repositories seront sauvegardés en même temps que tous les répertoires home)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
sudo useradd subversion
sudo mkdir /home/subversion
&lt;/pre&gt;


&lt;p&gt;Profitons-en pour vite créer un repository de test&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
sudo svnadmin create /home/subversion/test
&lt;/pre&gt;


&lt;p&gt;Vu que le répertoire sera servi par apache, il faut que celui-ci puisse écrire dans le répertoire que nous venons de créer. Dans mon cas, j'utilise mpm-itk, un module d'apache qui permet d'exécuter les différents virtual hosts avec leur propre utilisateur. Ainsi, le répertoire doit simplement appartenir à l'utilisateur subversion&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
sudo chown subversion:subversion /home/subversion
&lt;/pre&gt;


&lt;p&gt;Cependant, pour la plupart des gens, il faudra nommer l'utilisateur d'apache comme propriétaire&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
sudo chown www-data:www-data /home/subversion
&lt;/pre&gt;


&lt;p&gt;Pour authentifier nos utilisateurs, apache va utiliser un fichier htpasswd, qu'il nous faut créer. La commande suivante crée ce fichier et y ajoute l'utilisateur test&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
sudo htpasswd -c /etc/apache2/svn.passwd test
&lt;/pre&gt;


&lt;p&gt;Le mot de passe pour cet utilisateur nous est alors demandé. Pour ajouter d'autres utilisateurs, répétez la commande, mais sans l'option -c (qui sert à créer le fichier)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
sudo htpasswd /etc/apache2/svn.passwd foo
sudo htpasswd /etc/apache2/svn.passwd bar
&lt;/pre&gt;


&lt;p&gt;Nous allons maintenant configurer apache 2. Vérifions tout d'abord que le module &lt;code&gt;dav_svn&lt;/code&gt; installé précédemment est bien activé&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
sudo a2enmod dav_svn
&lt;/pre&gt;


&lt;p&gt;Ensuite, créons le fichier pour le virtual host (&lt;code&gt;/etc/apache2/sites-available/svn.domain.com&lt;/code&gt;)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;VirtualHost *:80&amp;gt;
        ServerAdmin admin@localhost
        ServerName svn.domain.com

        &amp;lt;Location /&amp;gt;
                DAV svn
                SVNParentPath /home/subversion
                AuthType Basic
                AuthName &amp;quot;Private Subversion Repository&amp;quot;
                AuthUserFile /etc/apache2/svn.passwd
                Require valid-user
        &amp;lt;/Location&amp;gt;

        ErrorLog /home/subversion/logs/error.log
        CustomLog /home/subversion/logs/access.log combined

        &amp;lt;IfModule mpm_itk_module&amp;gt;
                AssignUserId subversion subversion
        &amp;lt;/IfModule&amp;gt;
&amp;lt;/VirtualHost&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Les directives intéressantes se trouvent dans la balise &lt;code&gt;Location&lt;/code&gt;.&lt;/p&gt;

&lt;pre&gt;
DAV svn
&lt;/pre&gt;


&lt;p&gt;demande d'utiliser le module dav_svn installé à la place du module normal.&lt;/p&gt;

&lt;pre&gt;
SVNParentPath /home/subversion
&lt;/pre&gt;


&lt;p&gt;définit le répertoire dans lequel sont stockés les repositories. Finalement,&lt;/p&gt;

&lt;pre&gt;
AuthUserFile /etc/apache2/svn.passwd
&lt;/pre&gt;


&lt;p&gt;indique quel fichier utiliser pour l'authentification des utilisateurs. Voilà, c'est tout&amp;nbsp;! Il vous reste à activer ce virtual host&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
sudo a2ensite svn.domain.com
&lt;/pre&gt;


&lt;p&gt;et à redémarrer apache&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
sudo apache2ctl graceful
&lt;/pre&gt;


&lt;p&gt;Normalement, tout devrait fonctionner&amp;nbsp;! Pour vérifier, rendez-vous sur l'adresse de votre repository&amp;nbsp;: http://svn.domain.com/test&lt;/p&gt;


&lt;p&gt;Vous devriez avoir une invite vous demandant un nom d'utilisateur et un mot de passe, et une fois ceux-ci entrés, vous devriez voir l'index de votre repository&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Dans les prochains articles, je tenterai de vous expliquer comment définir des droits plus fins sur vos différents repositories, comment utiliser SSL pour accéder à vos repositories de manière sécurisée, et comment mettre en place &lt;a href=&quot;http://websvn.tigris.org/&quot; hreflang=&quot;en&quot;&gt;websvn&lt;/a&gt; pour pouvoir parcourir votre code plus facilement et plus joliment qu'avec l'interface web rudimentaire que nous avons pour l'instant&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Sources&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.reviewingit.com/index.php/content/view/62/2/&quot; hreflang=&quot;en&quot;&gt;http://www.reviewingit.com/index.php/content/view/62/2/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.odonnell.nu/posts/running-subversion-debian-sarge-or-etch-and-apache/&quot; hreflang=&quot;en&quot;&gt;http://blog.odonnell.nu/posts/running-subversion-debian-sarge-or-etch-and-apache/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2009/12/09/Installer-Subversion-et-websvn-avec-Apache-2-sur-Debian#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2009/12/09/Installer-Subversion-et-websvn-avec-Apache-2-sur-Debian#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/32</wfw:commentRss>
      </item>
    
  <item>
    <title>Attribut DataFormatString pas pris en compte dans un BoundField</title>
    <link>http://20-100.ch/blog/index.php/post/2008/07/23/Attribut-DataFormatString-pas-pris-en-compte-dans-un-BoundField</link>
    <guid isPermaLink="false">urn:md5:a7cb33ab29cfcfdb7895901c2aff6ca2</guid>
    <pubDate>Wed, 23 Jul 2008 10:32:00 +0200</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>ASP.Net</category><category>BoundField</category><category>GridView</category>    
    <description>    &lt;p&gt;Dans un &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/GridView&quot;&gt;GridView&lt;/a&gt;, on a la possibilité de formater le contenu d'un &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/BoundField&quot;&gt;BoundField&lt;/a&gt; avec un &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/26etazsy(VS.80).aspx&quot; hreflang=&quot;en&quot;&gt;pattern&lt;/a&gt; équivalent à ceux utilisés par &lt;code&gt;String.Format()&lt;/code&gt;. C'est donc ce que j'ai voulu faire, en formatant une de mes colonnes contenant un prix pour qu'elle s'affiche joliment, avec un séparateur des milliers et la monnaie&amp;nbsp;:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;aspnet&quot;&gt;&amp;lt;asp:BoundField DataField=&amp;quot;Price&amp;quot; DataFormatString=&amp;quot;CHF {0:0,0}&amp;quot; SortExpression=&amp;quot;Price&amp;quot; /&amp;gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Mais le problème, c'est que ça ne fonctionne pas&amp;nbsp;: le &quot;CHF&quot; est bien affiché, mais aucun séparateur des milliers&amp;nbsp;! Cela vient du fait que pour éviter l'injection de code, &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/ASP.Net&quot;&gt;ASP.Net&lt;/a&gt; encode en HTML tous les champs avant de les afficher, et &lt;strong&gt;avant de les formatter&lt;/strong&gt;&amp;nbsp;! Je ne sais pas pourquoi, mais cela semble le rendre incapable de séparer les milliers. Pour résoudre le problème, il suffit donc de désactiver l'encodage HTML de ce champ, si vous êtes sûr de ne rien risquer (dans mon cas, c'est un &lt;code&gt;int&lt;/code&gt; qui vient directement de ma base de données, peu de risques d'injection donc ;-)...), en ajoutant l'attribut &lt;code&gt;HtmlEncode=&quot;false&quot;&lt;/code&gt;&amp;nbsp;:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;aspnet&quot;&gt;&amp;lt;asp:BoundField DataField=&amp;quot;Price&amp;quot; DataFormatString=&amp;quot;CHF {0:0,0}&amp;quot; HtmlEncode=&amp;quot;false&amp;quot; SortExpression=&amp;quot;Price&amp;quot; /&amp;gt;&lt;/code&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2008/07/23/Attribut-DataFormatString-pas-pris-en-compte-dans-un-BoundField#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2008/07/23/Attribut-DataFormatString-pas-pris-en-compte-dans-un-BoundField#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/31</wfw:commentRss>
      </item>
    
  <item>
    <title>Method error 12030 avec une CascadingDropDown</title>
    <link>http://20-100.ch/blog/index.php/post/2008/07/22/Method-error-12030-avec-une-CascadingDropDown</link>
    <guid isPermaLink="false">urn:md5:d318dce8a27e4646fa19fad1df4fe5a9</guid>
    <pubDate>Tue, 22 Jul 2008 14:18:00 +0200</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
            
    <description>    &lt;p&gt;Le composant CascadingDropDown de l'&lt;a href=&quot;http://www.asp.net/ajax&quot; hreflang=&quot;en&quot;&gt;AjaxToolkit ASP.Net&lt;/a&gt; permet de créer des liste déroulantes inter-dépendantes, c'est-à-dire que ce n'est que lorsqu'on a sélectionné une valeur de la première que le contenu de la seconde est chargé. Ce genre de comportement est par exemple utile pour les voitures&amp;nbsp;: on sélectionne la marque, et ensuite seulement la liste des modèles correspondants est chargée.&lt;/p&gt;


&lt;p&gt;Ce composant fonctionne avec des services web, qu'il appelle lorsqu'une valeur est sélectionnée pour charger les données de la liste suivante. J'ai voulu l'implémenter, et ai obtenu l'erreur suivante lors du chargement des données de la première liste&amp;nbsp;: &quot;Method error 12030&quot;.&lt;/p&gt;


&lt;p&gt;Comme son nom l'indique ;-), cette erreur veut dire qu'il y a un problème avec le service web appelé. Dans mon cas, il manquait la mention&lt;/p&gt;

&lt;code class=&quot;csharp&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#91;&lt;/span&gt;ScriptService&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/code&gt;


&lt;p&gt;en dessus de la classe définissant mon service web, et&lt;/p&gt;

&lt;code class=&quot;csharp&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#91;&lt;/span&gt;ScriptMethod&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;/code&gt;


&lt;p&gt;en dessus de la méthode correspondante. Il suffit d'ajouter ça, et ça fonctionne&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2008/07/22/Method-error-12030-avec-une-CascadingDropDown#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2008/07/22/Method-error-12030-avec-une-CascadingDropDown#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/30</wfw:commentRss>
      </item>
    
  <item>
    <title>Outil pour calculer des dérivées en ligne</title>
    <link>http://20-100.ch/blog/index.php/post/2008/06/25/Outil-pour-calculer-des-derivees-en-ligne</link>
    <guid isPermaLink="false">urn:md5:ba1bce6a9e6634f2d8a3577476745baf</guid>
    <pubDate>Wed, 25 Jun 2008 16:23:00 +0200</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Geek</category>
        <category>dérivées</category><category>maths</category><category>online</category>    
    <description>    &lt;p&gt;Si vous avez besoin de rapidement calculer une dérivée, soit parce que vous ne savez pas la résoudre, soit pour vérifier votre calcul, et que vous n'avez pas Mahtematica sous la main, allez faire un tour sur &lt;a href=&quot;http://www.numberempire.com/derivatives.php&quot; hreflang=&quot;en&quot;&gt;http://www.numberempire.com/derivatives.php&lt;/a&gt;&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Ce site vous permet de dériver toutes sortes de fonctions, de manière simple et efficace&amp;nbsp;! Vous trouverez de nombreux autres outils similaires sur ce site&amp;nbsp;: éditeur d'équations latex, calculateur de limites, etc...&lt;/p&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2008/06/25/Outil-pour-calculer-des-derivees-en-ligne#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2008/06/25/Outil-pour-calculer-des-derivees-en-ligne#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/29</wfw:commentRss>
      </item>
    
  <item>
    <title>Débugger du JavaScript sous Internet Explorer</title>
    <link>http://20-100.ch/blog/index.php/post/2008/06/04/Debugger-du-JavaScript-sous-Internet-Explorer</link>
    <guid isPermaLink="false">urn:md5:35bdc697af8b3a98ab5d82fe501c5c0f</guid>
    <pubDate>Wed, 04 Jun 2008 12:18:00 +0200</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>Bookmarklet</category><category>Firebug</category><category>Firebug lite</category><category>Firefox</category><category>Internet Explorer</category><category>JavaScript</category>    
    <description>    &lt;p&gt;Tout développeur web qui un jour a dû écrire du JavaScript un peu compliqué s'est heurté au problème du débuggage du code JS, et s'est tourné vers l'outil ultime pour &lt;a href=&quot;http://www.getfirefox.com&quot; hreflang=&quot;en&quot;&gt;Firefox&lt;/a&gt;&amp;nbsp;: &lt;a href=&quot;http://www.getfirebug.com&quot; hreflang=&quot;en&quot;&gt;Firebug&lt;/a&gt;. Celui-ci permet de mettre des breakpoints dans le code JS, de l'exécuter ligne par ligne, de voir le contenu des variables à tout moment, mais a aussi de nombreuses autres fonctionnalités très utiles, comme l'inspection et la manipulation DOM, et la modification en direct du CSS. Il prend aussi en charge les &lt;a href=&quot;http://20-100.ch/blog/index.php/post/2007/08/14/Comment-debugger-plus-facilement-ses-scripts-JavaScript&quot;&gt;diverses fonctions de débuggage de Firefox&lt;/a&gt;&amp;nbsp;: console.log(), console.error(), etc..., et les affiche de manière lisible.&lt;/p&gt;


&lt;p&gt;Mais le problème, c'est qu'il faut des fois débugger sous Internet Explorer&amp;nbsp;! Et le pâle équivalent de Firebug sous ce dernier, la &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displaylang=en&quot; hreflang=&quot;en&quot;&gt;Developer Toolbar&lt;/a&gt;, ne le permet pas. Pire encore, les appels à console.log() si utiles sous Firefox provoquent des erreurs dans IE&amp;nbsp;! Qu'à cela ne tienne, vous avez maintenant la possiblité d'utiliser &lt;a href=&quot;http://www.getfirebug.com/lite.html&quot; hreflang=&quot;en&quot;&gt;Firebug Lite&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Il existe en deux versions, qu'il faut inclure dans vos pages. La première permet, en appuyant sur F12, d'afficher un semblant de console JavaScript , dans laquelle le résultat des console.log(), etc... aparaît. La seconde, quant à elle, permet juste d'empêcher les appels à ces fonctions de causer des erreurs dans Internet Explorer.&lt;/p&gt;


&lt;p&gt;Si vous ne voulez pas l'installer sur toutes vos pages web, mais que vous voulez juste l'utiliser comme outil pour débugger, il existe aussi en &lt;a href=&quot;http://fr.wikipedia.org/wiki/Bookmarklet&quot; hreflang=&quot;fr&quot;&gt;bookmarklet&lt;/a&gt;&amp;nbsp;: &lt;a href=&quot;http://remysharp.com/2007/03/13/firebug-in-ie-for-any-web-site/&quot; hreflang=&quot;en&quot;&gt;Firebug Lite Bookmarklet&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2008/06/04/Debugger-du-JavaScript-sous-Internet-Explorer#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2008/06/04/Debugger-du-JavaScript-sous-Internet-Explorer#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/28</wfw:commentRss>
      </item>
    
  <item>
    <title>Centrer uniquement une cellule dans un tableau en LaTeX</title>
    <link>http://20-100.ch/blog/index.php/post/2008/03/12/Centrer-uniquement-une-cellule-dans-un-tableau-en-LaTeX</link>
    <guid isPermaLink="false">urn:md5:47bdb59894fb15a3cd5ad339b9894f8b</guid>
    <pubDate>Wed, 12 Mar 2008 10:00:00 +0100</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>LaTeX</category><category>multicolumn</category><category>tabular</category>    
    <description>    &lt;p&gt;Lorsqu'on travaille avec les tableau en &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/LaTeX&quot;&gt;LaTeX&lt;/a&gt;, il est facile de spécifier l'alignement de chaque colonne&amp;nbsp;: c'est l'argument de la commande \begin{tabular}. Par exemple, pour avoir 3 colonnes, séparées par une bordure et respectivement alignée à droite, centrée et alignée à gauche, il suffit de faire&amp;nbsp;:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;pre&gt;\begin{tabular}{r|c|l}
cellule alignée à droite &amp;amp; cellule centrée &amp;amp; cellule alignée à gauche \\
\end{tabular}
&lt;/pre&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Cependant, comment faire si l'on veut modifier uniquement l'alignement d'une cellule&amp;nbsp;? L'astuce est d'utiliser la commande \multicolumn, qui permet de fusionner plusieurs cellules et de définir l'alignement du texte dans les cellules fusionnées, et lui demander de fusionner... une seule cellule&amp;nbsp;! Ainsi, on pourra choisir l'alignement à sa guise. Cependant, cette technique a un désavantage, c'est qu'il faut redéfinir à nouveau les bordure de la nouvelle cellule&amp;nbsp;:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;pre&gt;\begin{tabular}{|l|l|l}
\multicolumn{1}{|c}{Titre 1} &amp;amp; \multicolumn{1}{|c}{Titre 2} &amp;amp; \multicolumn{1}{|c}{Titre 3} \\
cellule 1 &amp;amp; cellule 2&amp;amp; cellule 3 \\
\end{tabular}
&lt;/pre&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2008/03/12/Centrer-uniquement-une-cellule-dans-un-tableau-en-LaTeX#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2008/03/12/Centrer-uniquement-une-cellule-dans-un-tableau-en-LaTeX#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/27</wfw:commentRss>
      </item>
    
  <item>
    <title>Définir quel bouton sera activé lors de l'appui sur la Enter en ASP.Net</title>
    <link>http://20-100.ch/blog/index.php/post/2008/03/07/Definir-quel-bouton-sera-active-lors-de-lappui-sur-la-Enter-en-ASPNet</link>
    <guid isPermaLink="false">urn:md5:cfe62e87880a326625904151587d540b</guid>
    <pubDate>Fri, 07 Mar 2008 16:57:00 +0100</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>ASP.NET</category><category>DefaultButton</category><category>Login</category>    
    <description>    &lt;p&gt;Si, dans une page &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/ASP.NET&quot;&gt;ASP.NET&lt;/a&gt;, vous avez plusieurs formulaire qui cohabitent, vous avez peut-être remarqué que le fait d'appuyer sur &lt;code&gt;Enter&lt;/code&gt; envoie toujours le même, à savoir le premier présent dans la page. Ca peut être assez dérangeant, si par exemple vous avez un formulaire de connexion à votre site situé en-dessous d'un champ de recherche&amp;nbsp;: dans ce cas, lorsque l'utilisateur aura saison son mot de passe et appuyé sur &lt;code&gt;Enter&lt;/code&gt; (sur son clavier, donc), ce sera le formulaire de recherche qui sera transmis&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Pour contrôler ce genre de scénarii, &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; met à disposition l'attribut &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/DefaultButton&quot;&gt;DefaultButton&lt;/a&gt; sur les balises &lt;code&gt;&amp;lt;asp:Form&amp;gt;&lt;/code&gt; et &lt;code&gt;&amp;lt;asp:Panel&amp;gt;&lt;/code&gt;. Elle permet d'indiquer, pour respectivement le formulaire ou le panel concerné, quelle bouton sera activé lors de l'appui sur la touche &lt;code&gt;Enter&lt;/code&gt;. Par exemple&amp;nbsp;:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;aspnet&quot;&gt;&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;form id=&amp;quot;Form2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;asp:Panel ID=&amp;quot;Panel1&amp;quot; DefaultButton=&amp;quot;Button1&amp;quot; RunAt=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;asp:Button ID=&amp;quot;Button1&amp;quot; RunAt=&amp;quot;server&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/asp:Panel&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;asp:Panel ID=&amp;quot;Panel2&amp;quot; DefaultButton=&amp;quot;Button2&amp;quot; RunAt=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;asp:Button ID=&amp;quot;Button2&amp;quot; RunAt=&amp;quot;server&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/asp:Panel&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Et si vous n'avez pas de bouton, mais une balise &lt;code&gt;&amp;lt;asp:&lt;a href=&quot;http://20-100.ch/blog/index.php/tag/Login&quot;&gt;Login&lt;/a&gt;&amp;gt;&lt;/code&gt; que vous voulez activer lors de l'appui sur la touche &lt;code&gt;Enter&lt;/code&gt;&amp;nbsp;? Rien de plus simple, il suffit de donner &lt;code&gt;IdDuForm$LoginButton&lt;/code&gt; comme &lt;code&gt;DefaultButton&lt;/code&gt;&amp;nbsp;:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;aspnet&quot;&gt;&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;form id=&amp;quot;Form2&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;asp:Panel ID=&amp;quot;Panel1&amp;quot; DefaultButton=&amp;quot;Login$LoginButton&amp;quot; RunAt=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;asp:Login ID=&amp;quot;Login1&amp;quot; RunAt=&amp;quot;server&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/asp:Panel&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2008/03/07/Definir-quel-bouton-sera-active-lors-de-lappui-sur-la-Enter-en-ASPNet#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2008/03/07/Definir-quel-bouton-sera-active-lors-de-lappui-sur-la-Enter-en-ASPNet#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/26</wfw:commentRss>
      </item>
    
  <item>
    <title>Encoder les headers personnalisé en JavaScript et les décoder en PHP</title>
    <link>http://20-100.ch/blog/index.php/post/2008/03/02/Encoder-les-headers-personnalise-en-JavaScript-et-les-decoder-en-PHP</link>
    <guid isPermaLink="false">urn:md5:c8b6fecd4da635d59e0ccf7a64a4e392</guid>
    <pubDate>Sun, 02 Mar 2008 17:48:00 +0100</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>AJAX</category><category>headers</category><category>HTTP</category><category>JavaScript</category><category>PHP</category>    
    <description>    &lt;p&gt;Dans la suite de mon post précédent, expliquant &lt;a href=&quot;http://20-100.ch/blog/index.php/post/2008/03/02/Comment-recuperer-des-headers-HTTP-personnalises-en-PHP&quot; hreflang=&quot;fr&quot;&gt;comment accéder à des headers HTTP personnalisés en PHP&lt;/a&gt;, j'ai rencontré le problème suivant&amp;nbsp;: les headers sont bien transmis pour des données &quot;simples&quot;, mais cela ne fonctionnait pas pour des caractères spéciaux ou accentués&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Vu que mes &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/headers&quot;&gt;headers&lt;/a&gt; sont créés lors d'une requête &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/AJAX&quot;&gt;AJAX&lt;/a&gt;, via le framework &lt;a href=&quot;http://code.google.com/apis/opensocial/&quot; hreflang=&quot;en&quot;&gt;Opensocial&lt;/a&gt;, il faut d'abord pourvoir les &quot;encoder&quot;, ou du moins &quot;escaper&quot; les caractères spéciaux, en JavaScript, et pouvoir les &quot;décoder&quot; du côté serveur, dans mon cas en &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/PHP&quot;&gt;PHP&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Pour ce faire, j'utilise la fonction &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/JavaScript&quot;&gt;JavaScript&lt;/a&gt; &lt;a href=&quot;http://developer.mozilla.org/fr/docs/R%C3%A9f%C3%A9rence_de_JavaScript_1.5_Core:Fonctions_globales:encodeURIComponent&quot; hreflang=&quot;fr&quot;&gt;encodeURIComponent()&lt;/a&gt; du côté client&amp;nbsp;:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;javascript&quot;&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; customHeaders = &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt; &lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;x-question-name&amp;quot;&lt;/span&gt; : nameValue, &lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;x-question-text&amp;quot;&lt;/span&gt; : textValue &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; params = &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;;&lt;br /&gt;
params&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;opensocial.&lt;span style=&quot;color: #006600;&quot;&gt;ContentRequestParameters&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;HEADERS&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt; = customHeaders;&lt;br /&gt;
&lt;br /&gt;
opensocial.&lt;span style=&quot;color: #006600;&quot;&gt;makeRequest&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;url, createQuestionCB, params&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;et la fonction &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/PHP&quot;&gt;PHP&lt;/a&gt; &lt;a href=&quot;http://ch2.php.net/rawurldecode&quot; hreflang=&quot;fr&quot;&gt;rawurldecode()&lt;/a&gt; du côté serveur&amp;nbsp;!
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;php&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$name&lt;/span&gt; = &lt;a href=&quot;http://www.php.net/rawurldecode&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;rawurldecode&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;HTTP_X_QUESTION_NAME&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span style=&quot;color: #0000ff;&quot;&gt;$text&lt;/span&gt; = &lt;a href=&quot;http://www.php.net/rawurldecode&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;rawurldecode&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$_SERVER&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;HTTP_X_QUESTION_TEXT&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/code&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2008/03/02/Encoder-les-headers-personnalise-en-JavaScript-et-les-decoder-en-PHP#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2008/03/02/Encoder-les-headers-personnalise-en-JavaScript-et-les-decoder-en-PHP#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/25</wfw:commentRss>
      </item>
    
  <item>
    <title>Comment récupérer des headers HTTP personnalisés en PHP</title>
    <link>http://20-100.ch/blog/index.php/post/2008/03/02/Comment-recuperer-des-headers-HTTP-personnalises-en-PHP</link>
    <guid isPermaLink="false">urn:md5:50f8fe87d1fa3464e3d323b1473aa062</guid>
    <pubDate>Sun, 02 Mar 2008 15:28:00 +0100</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>AJAX</category><category>headers</category><category>HTTP</category><category>PHP</category>    
    <description>    &lt;p&gt;Lorsqu'on travaille avec des requêtes &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/AJAX&quot;&gt;AJAX&lt;/a&gt;, une manière de passer des paramètres au serveur est via des headers &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/HTTP&quot;&gt;HTTP&lt;/a&gt; personnalisés. De cette manière, on n'est pas limités par la taille maximale de 255 caractères pour une URL. Cependant, comment récupérer ces headers personnalisés du côté du serveur en &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/PHP&quot;&gt;PHP&lt;/a&gt;&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;Comme on s'y attend, ils sont bien dans l'objet &lt;code&gt;$_SERVER&lt;/code&gt;, mais pas sous le nom escompté&amp;nbsp;: il faut ajouter &lt;code&gt;HTTP_&lt;/code&gt; au nom de son header personnalisé, passer tous les caractères en majuscule et remplacer les &lt;code&gt;-&lt;/code&gt; par des &lt;code&gt;_&lt;/code&gt; pour obtenir le nom sous lequel on trouvera ce header dans le tableau &lt;code&gt;$_SERVER&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Ainsi, le header &lt;code&gt;My-Header&lt;/code&gt; sera répertorié sous la clé &lt;code&gt;HTTP_MY_HEADER&lt;/code&gt; dans le tableau &lt;code&gt;$_SERVER&lt;/code&gt;&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2008/03/02/Comment-recuperer-des-headers-HTTP-personnalises-en-PHP#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2008/03/02/Comment-recuperer-des-headers-HTTP-personnalises-en-PHP#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/24</wfw:commentRss>
      </item>
    
  <item>
    <title>Commenter du code ASP.NET pour éviter qu'il ne soit interprété</title>
    <link>http://20-100.ch/blog/index.php/post/2008/02/13/Commenter-du-code-ASPNET-pour-eviter-quil-ne-soit-interprete</link>
    <guid isPermaLink="false">urn:md5:01c06391449ebf548046a375afd9bbe9</guid>
    <pubDate>Wed, 13 Feb 2008 10:46:00 +0100</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>ASP.NET</category><category>commentaires</category><category>HTML</category>    
    <description>    &lt;p&gt;L'ASP.NET étant un language de balise similaire au (X)HTML, mon premier réflexe lorsque j'ai voulu commenter mon code (soit pour expliquer une partie peu claire, soit pour &quot;désactiver&quot; temporairement une partie de la page pour débugger) a été d'utiliser les commentaires HTML&amp;nbsp;:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;html&quot;&gt;&amp;lt;!-- Commentaire explicatif --&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;test.gif&amp;quot; alt=&amp;quot;test&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;asp:HyperLink ID=&amp;quot;lien&amp;quot; runat=&amp;quot;server&amp;quot; NavigateUrl=&amp;quot;http://20-100.ch/blog/&amp;quot; Text=&amp;quot;Lien désactivé&amp;quot; /&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Cependant, cela n'empêche pas le serveur d'interpréter les balises ASP.NET&amp;nbsp;! Ainsi, le lien ci-dessus sera bien visible dans la source de la page, même si rien ne sera affiché dans le navigateur.&lt;/p&gt;


&lt;p&gt;Il existe en fait des balises de commentaires spécifiques à l'ASP.NET qui font ce que l'on veut&amp;nbsp;:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;asp&quot;&gt;&amp;lt;%-- Commentaire explicatif --&lt;span style=&quot;color: #0000ff; font-weight: bold;&quot;&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;lt;img src=&lt;span style=&quot;color: #cc0000;&quot;&gt;&amp;quot;test.gif&amp;quot;&lt;/span&gt; alt=&lt;span style=&quot;color: #cc0000;&quot;&gt;&amp;quot;test&amp;quot;&lt;/span&gt; /&amp;gt;&lt;br /&gt;
&amp;lt;%--&lt;br /&gt;
&amp;lt;asp:HyperLink ID=&lt;span style=&quot;color: #cc0000;&quot;&gt;&amp;quot;lien&amp;quot;&lt;/span&gt; runat=&lt;span style=&quot;color: #cc0000;&quot;&gt;&amp;quot;server&amp;quot;&lt;/span&gt; NavigateUrl=&lt;span style=&quot;color: #cc0000;&quot;&gt;&amp;quot;http://20-100.ch/blog/&amp;quot;&lt;/span&gt; Text=&lt;span style=&quot;color: #cc0000;&quot;&gt;&amp;quot;Lien désactivé&amp;quot;&lt;/span&gt; /&amp;gt;&lt;br /&gt;
--&lt;span style=&quot;color: #0000ff; font-weight: bold;&quot;&gt;%&amp;gt;&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Pratique&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2008/02/13/Commenter-du-code-ASPNET-pour-eviter-quil-ne-soit-interprete#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2008/02/13/Commenter-du-code-ASPNET-pour-eviter-quil-ne-soit-interprete#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/23</wfw:commentRss>
      </item>
    
  <item>
    <title>Comment déclarer une chaîne de caractères sur plusieurs lignes en JavaScript</title>
    <link>http://20-100.ch/blog/index.php/post/2007/08/15/Comment-declarer-une-chaine-de-caracteres-sur-plusieurs-lignes-en-JavaScript</link>
    <guid isPermaLink="false">urn:md5:88d53fe91e8093de9bb422d948d92957</guid>
    <pubDate>Sun, 10 Feb 2008 13:57:00 +0100</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>JavaScript</category>    
    <description>    &lt;p&gt;Deux techniques à choix pour déclarer une chaîne sur plusieurs lignes en &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/JavaScript&quot;&gt;JavaScript&lt;/a&gt;&amp;nbsp;:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;javascript&quot;&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; s = &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&amp;lt;r&amp;gt;&amp;lt;!&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;CDATA&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
ligne &lt;span style=&quot;color: #CC0000;&quot;&gt;3&lt;/span&gt;&lt;br /&gt;
ligne &lt;span style=&quot;color: #CC0000;&quot;&gt;4&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#93;&lt;/span&gt;&amp;gt;&amp;lt;/r&amp;gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color: #006600;&quot;&gt;toString&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;ou alors&amp;nbsp;:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;javascript&quot;&gt;&lt;span style=&quot;color: #003366; font-weight: bold;&quot;&gt;var&lt;/span&gt; s = &lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\&lt;/span&gt;&lt;br /&gt;
ligne 1&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\&lt;/span&gt;&lt;br /&gt;
ligne 2&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\n&lt;/span&gt;&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\&lt;/span&gt;&lt;br /&gt;
&amp;quot;&lt;/span&gt;;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;A vous de choisir celle que vous voulez utiliser (ma préférence va à la seconde, la première faisant un peu trop &quot;hack&quot; à mon goût, en plus d'être sensiblement plus longue à écrire et  moins claire à relire). En connaissez-vous d'autres&amp;nbsp;?&lt;/p&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2007/08/15/Comment-declarer-une-chaine-de-caracteres-sur-plusieurs-lignes-en-JavaScript#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2007/08/15/Comment-declarer-une-chaine-de-caracteres-sur-plusieurs-lignes-en-JavaScript#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/17</wfw:commentRss>
      </item>
    
  <item>
    <title>Impossible de charger le type 'Microsoft.Web.Services.ScriptHandlerFactory'</title>
    <link>http://20-100.ch/blog/index.php/post/2008/02/07/Impossible-de-charger-le-type-MicrosoftWebServicesScriptHandlerFactory</link>
    <guid isPermaLink="false">urn:md5:8944787cc20a75c5adf88268b2fa29a6</guid>
    <pubDate>Thu, 07 Feb 2008 12:07:00 +0100</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>AJAX</category><category>ASP.NET</category><category>services web</category><category>web.config</category>    
    <description>    &lt;p&gt;En voulant utiliser des &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/services%20web&quot;&gt;services web&lt;/a&gt; en &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/ASP.Net&quot;&gt;ASP.Net&lt;/a&gt; en même temps que la librairie ASP.Net &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/AJAX&quot;&gt;AJAX&lt;/a&gt; (anciennement Atlas Library), je suis tombé sur l'erreur suivante&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;code&gt;Impossible de charger le type 'Microsoft.Web.Services.ScriptHandlerFactory'.&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;Cette erreur fait référence à la ligne suivante du fichier &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/web.config&quot;&gt;web.config&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;

&lt;code class=&quot;xml&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;httpHandlers&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;add&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;verb&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;path&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;*.asmx&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;type&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;Microsoft.Web.Services.ScriptHandlerFactory&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;validate&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;/httpHandlers&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;


&lt;p&gt;Pourtant, dans mon cas, cette ligne a été générée automatiquement, et ne devrait donc pas être fausse. J'ai essayé d'inclure moult références à mon projet web, pensant qu'il m'en manquait une mais en vain. Il suffit en fait de changer le type, qui doit être &lt;code&gt;System.Web.Script.Services.ScriptHandlerFactory&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Le fichier &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/web.config&quot;&gt;web.config&lt;/a&gt; dont donc contenir la ligne suivante&amp;nbsp;:&lt;/p&gt;

&lt;code class=&quot;xml&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&lt;span style=&quot;font-weight: bold; color: black;&quot;&gt;&amp;lt;add&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;verb&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;*&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;path&lt;/span&gt;=&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;*.asmx&amp;quot;&lt;/span&gt; &lt;span style=&quot;color: #000066;&quot;&gt;type&lt;/span&gt;=System.Web.Script.Services.ScriptHandlerFactory&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot; validate=&amp;quot;&lt;/span&gt;false&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2008/02/07/Impossible-de-charger-le-type-MicrosoftWebServicesScriptHandlerFactory#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2008/02/07/Impossible-de-charger-le-type-MicrosoftWebServicesScriptHandlerFactory#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/22</wfw:commentRss>
      </item>
    
  <item>
    <title>Permettre l'upload de fichier dans un UpdatePanel</title>
    <link>http://20-100.ch/blog/index.php/post/2007/11/08/Permettre-lupload-de-fichier-dans-un-UpdatePanel</link>
    <guid isPermaLink="false">urn:md5:2a551c4117862abf20044fcde354da89</guid>
    <pubDate>Thu, 08 Nov 2007 14:37:00 +0100</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>ASP.NET</category><category>Csharp</category><category>FileUpload</category><category>UpdatePanel</category>    
    <description>    &lt;p&gt;Il arrive souvent en &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/ASP.Net&quot;&gt;ASP.Net&lt;/a&gt; d'inclure toute sa page dans un &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/UpdatePanel&quot;&gt;UpdatePanel&lt;/a&gt;, ce qui a pour effet de rendre asynchrone le fonctionnement de celle-ci. Cependant, si vous mettez un champ &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/FileUpload&quot;&gt;FileUpload&lt;/a&gt; (l'équivalent en ASP.Net du &lt;code&gt;&amp;lt;input type=&quot;file&quot;&amp;gt;&lt;/code&gt;) dans un UpdatePanel, vous vous retrouverez avec une taille de 0 byte lors du traitement du postback.&lt;/p&gt;


&lt;p&gt;La raison est que l'UpdatePanel fait les requêtes directement en asynchrone et de manière transparent, sans passer par un POST normal, et n'upload pas les fichiers. Pour que votre FileUpload fonctionne dans un UpdatePanel, il suffit d'ajouter un trigger à ce dernier, lui indiquant d'effectuer un POST normal lorsque le formulaire contenant votre fichier est soumis.&lt;/p&gt;


&lt;p&gt;Par exemple, si votre UpdatePanel est dans la Master Page et que votre FileUpload se trouve dans un FormView, voici comment ajouter le trigger en &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/Csharp&quot;&gt;C#&lt;/a&gt;&amp;nbsp;:&lt;/p&gt;

&lt;code class=&quot;csharp&quot;&gt;UpdatePanel panel = &lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;UpdatePanel&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;Page.&lt;span style=&quot;color: #0000FF;&quot;&gt;Master&lt;/span&gt;.&lt;span style=&quot;color: #0000FF;&quot;&gt;FindControl&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;quot;__myUpdatePanel&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
PostBackTrigger trigger = &lt;a href=&quot;http://www.google.com/search?q=new+msdn.microsoft.com&quot;&gt;&lt;span style=&quot;color: #008000;&quot;&gt;new&lt;/span&gt;&lt;/a&gt; PostBackTrigger&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
trigger.&lt;span style=&quot;color: #0000FF;&quot;&gt;ControlID&lt;/span&gt; = &lt;span style=&quot;color: #0600FF;&quot;&gt;this&lt;/span&gt;.__myFormView.&lt;span style=&quot;color: #0000FF;&quot;&gt;UniqueID&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
panel.&lt;span style=&quot;color: #0000FF;&quot;&gt;Triggers&lt;/span&gt;.&lt;span style=&quot;color: #0000FF;&quot;&gt;Add&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;trigger&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/code&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2007/11/08/Permettre-lupload-de-fichier-dans-un-UpdatePanel#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2007/11/08/Permettre-lupload-de-fichier-dans-un-UpdatePanel#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/21</wfw:commentRss>
      </item>
    
  <item>
    <title>Jeu de société pour Geeks !</title>
    <link>http://20-100.ch/blog/index.php/post/2007/09/06/Jeu-de-societe-pour-Geeks</link>
    <guid isPermaLink="false">urn:md5:10a6d561eea4b0fd333785a559bb7c6b</guid>
    <pubDate>Thu, 06 Sep 2007 09:49:00 +0200</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Geek</category>
        <category>geek</category><category>jeu de société</category><category>programmation</category>    
    <description>    &lt;p&gt;Le mauvais temps arrive, bientôt l'hiver sera là, et votre UPS ne tient que 12 minutes en cas de coupure de courant&amp;nbsp;? Que pourrez-vous bien faire lorsque la neige aura abattu les lignes électriques et que vous ne pourrez plus utiliser votre cher ordinateur&amp;nbsp;?&lt;/p&gt;


&lt;p&gt;J'ai la solution&amp;nbsp;: &lt;a href=&quot;http://c-jump.com/&quot; hreflang=&quot;en&quot;&gt;C-jump&lt;/a&gt;&amp;nbsp;! Un &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/jeu%20de%20soci%C3%A9t%C3%A9&quot;&gt;jeu de société&lt;/a&gt; permettant de s'amuser en famille tout en répétant vos bases de la &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/programmation&quot;&gt;programmation&lt;/a&gt; et en les inculquant à votre petit dernier ;)&amp;nbsp;! Parfait pour en faire un vrai &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/geek&quot;&gt;geek&lt;/a&gt;...&lt;/p&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2007/09/06/Jeu-de-societe-pour-Geeks#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2007/09/06/Jeu-de-societe-pour-Geeks#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/20</wfw:commentRss>
      </item>
    
  <item>
    <title>Une ligne de code CSS/HTML pour faire planter IE6</title>
    <link>http://20-100.ch/blog/index.php/post/2007/08/31/Une-ligne-de-code-CSS/HTML-pour-faire-planter-IE6</link>
    <guid isPermaLink="false">urn:md5:23e36f4301096a4780721cb07f308fbc</guid>
    <pubDate>Fri, 31 Aug 2007 14:34:00 +0200</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>bug</category><category>CSS</category><category>HTML</category><category>Internet Explorer</category>    
    <description>    &lt;p&gt;Un &lt;a href=&quot;http://d.hatena.ne.jp/Hamachiya2/20070804/browser_crasher&quot; hreflang=&quot;jp&quot;&gt;blogeur japonais&lt;/a&gt; a découvert un &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/bug&quot;&gt;bug&lt;/a&gt; d'&lt;a href=&quot;http://20-100.ch/blog/index.php/tag/Internet%20Explorer&quot;&gt;Internet Explorer&lt;/a&gt; 6 qui permet de faire planter l'explorateur, voire la machine complète, à l'aide d'une seule ligne de code &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/HTML&quot;&gt;HTML&lt;/a&gt;/&lt;a href=&quot;http://20-100.ch/blog/index.php/tag/CSS&quot;&gt;CSS&lt;/a&gt;&amp;nbsp;:
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;HTML&quot;&gt;&amp;lt;style&amp;gt;*{position:relative}&amp;lt;/style&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;table&amp;gt;&amp;lt;input&amp;gt;&amp;lt;/table&amp;gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;A vous de jouer ;)...&lt;/p&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2007/08/31/Une-ligne-de-code-CSS/HTML-pour-faire-planter-IE6#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2007/08/31/Une-ligne-de-code-CSS/HTML-pour-faire-planter-IE6#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/19</wfw:commentRss>
      </item>
    
  <item>
    <title>Ne plus afficher l'écran de bienvenue quand il n'y a qu'un seul utilisateur</title>
    <link>http://20-100.ch/blog/index.php/post/2007/08/21/Ne-plus-afficher-lecran-de-bienvenue-quand-il-ny-a-quun-seul-utilisateur</link>
    <guid isPermaLink="false">urn:md5:4daf65f1087cd9ac4f7335ccd9a9a90d</guid>
    <pubDate>Tue, 21 Aug 2007 20:13:00 +0200</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Software</category>
        <category>.Net</category><category>Windows XP</category>    
    <description>    &lt;p&gt;Vu que je suis le seul utilisateur de mon PC, je n'ai qu'un compte utilisateur. Après avoir installé &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/Windows%20XP&quot;&gt;Windows XP&lt;/a&gt; SP2, il se connecte automatiquement à mon compte au démarrage, sans afficher l'écran de bienvenue avec la liste des comptes. C'est somme tout logique, vu que s'il s'affiche, je n'ai qu'un seul choix ;)&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Cependant, après avoir fait les mises à jour de Windows, j'ai remarqué que ce n'était plus le cas&amp;nbsp;: l'écran de bienvenue s'affiche à chaque démarrage&amp;nbsp;! C'est un détail, mais moi, ce genre de détails, ça me dérange&amp;nbsp;! J'ai donc cherché, et il s'avère que c'est un bug du Framework &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/.Net&quot;&gt;.Net&lt;/a&gt; 1.1. Quel rapport, me direz-vous&amp;nbsp;? Hé bien, je n'en sais pas plus que vous. Toujours est-il qu'il y a un &lt;a href=&quot;http://support.microsoft.com/default.aspx?scid=kb;en-us;827072&quot; hreflang=&quot;en&quot;&gt;article de la Knowledge Base&lt;/a&gt; rapportant ce fait, et expliquant que ce bug est résolu par le SP1 du Framework .Net 1.1. C'est bien joli, mais ce service pack, je l'ai déjà installé, moi&amp;nbsp;! Et ça ne fonctionne toujours pas&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Heureusement, il y a un moyen ;)&amp;nbsp;! Il suffit de taper la ligne suivante, dans l'invite de commande (accessible via &lt;code&gt;Démarrer -&amp;gt; Exécuter -&amp;gt; cmd -&amp;gt; Ok&lt;/code&gt;)&amp;nbsp;:
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;bash&quot;&gt;reg add &lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;HKLM&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\S&lt;/span&gt;OFTWARE&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\M&lt;/span&gt;icrosoft&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\W&lt;/span&gt;indows NT&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\C&lt;/span&gt;urrentVersion&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\W&lt;/span&gt;inlogon&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\S&lt;/span&gt;pecialAccounts&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\U&lt;/span&gt;serList&amp;quot;&lt;/span&gt; /v ASPNET /t REG_DWORD /d &lt;span style=&quot;color: #000000;&quot;&gt;0&lt;/span&gt; /f&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Et voilà&amp;nbsp;! Merci à &lt;a href=&quot;http://blogs.msdn.com/astebner/archive/2006/10/06/How-to-prevent-the-Windows-XP-welcome-screen-from-appearing-after-installing-the-.NET-Framework-1.1.aspx&quot; hreflang=&quot;en&quot;&gt;Aaron Stebnet&lt;/a&gt; pour cette astuce&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2007/08/21/Ne-plus-afficher-lecran-de-bienvenue-quand-il-ny-a-quun-seul-utilisateur#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2007/08/21/Ne-plus-afficher-lecran-de-bienvenue-quand-il-ny-a-quun-seul-utilisateur#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/18</wfw:commentRss>
      </item>
    
  <item>
    <title>Comment débugger plus facilement ses scripts JavaScript</title>
    <link>http://20-100.ch/blog/index.php/post/2007/08/14/Comment-debugger-plus-facilement-ses-scripts-JavaScript</link>
    <guid isPermaLink="false">urn:md5:7632a7f0838026d62467b73ad27550bb</guid>
    <pubDate>Tue, 14 Aug 2007 16:24:00 +0200</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Code</category>
        <category>console</category><category>debug</category><category>JavaScript</category>    
    <description>    &lt;p&gt;Lorsqu'on développe, on a souvent besoin de consulter des valeurs lors de l'exécution, pour débugger son code et vérifier que tout se déroule comme prévu. Alors que la plupart des &quot;vrais&quot; langages de programmation (Java, .Net, etc...) bénéficient d'un débugger pour faciliter cette tâche, JavaScript est un peu le parent pauvre. Les développeurs sont souvent réduits à devoir afficher les valeurs dans des &lt;code&gt;alert()&lt;/code&gt;, ou en plein milieu de leur belle page web&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Hé bien, ce temps est fini&amp;nbsp;! Il est en effet possible, en JavaScript, d'afficher des valeurs dans la console à l'aide de l'instruction suivante&amp;nbsp;:
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;javascript&quot;&gt;console.&lt;span style=&quot;color: #006600;&quot;&gt;debug&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;Hello World !&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Le texte sera affiché directement dans la console JavaScript, disponible via &lt;code&gt;Outils -&amp;gt; Console d'erreurs&lt;/code&gt; sour &lt;a href=&quot;http://www.getfirefox.com&quot; hreflang=&quot;fr&quot;&gt;Firefox&lt;/a&gt;. A noter que deux autres méthodes sont disponibles, respectivement pour tracer le déroulement du script et pour rapporter des erreurs&amp;nbsp;:
&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;

&lt;code class=&quot;javascript&quot;&gt;console.&lt;span style=&quot;color: #006600;&quot;&gt;log&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;Opération effectuée.&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
console.&lt;span style=&quot;color: #006600;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #3366CC;&quot;&gt;&amp;quot;Problème !&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Merci à Trefex pour cette astuce ;)&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2007/08/14/Comment-debugger-plus-facilement-ses-scripts-JavaScript#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2007/08/14/Comment-debugger-plus-facilement-ses-scripts-JavaScript#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/16</wfw:commentRss>
      </item>
    
  <item>
    <title>Comment configurer Subversion et ToirtoiseSVN en SVN+SSH (partie 2)</title>
    <link>http://20-100.ch/blog/index.php/post/2007/07/24/Comment-configurer-Subversion-et-ToirtoiseSVN-en-SVNSSH-partie-2</link>
    <guid isPermaLink="false">urn:md5:0a2868f11303e87c505db8d8a2c950a5</guid>
    <pubDate>Tue, 31 Jul 2007 09:27:00 +0200</pubDate>
    <dc:creator>Wookai</dc:creator>
        <category>Software</category>
        <category>PuTTY</category><category>SSH</category><category>subversion</category><category>TortoiseSVN</category><category>windows</category>    
    <description>&lt;p&gt;Pour les développeurs, subversion est un outil vraiment pratique. Il permet non seulement de garder un historique de toutes les modifications sur un projet, mais facilite aussi le travail à plusieurs. Sous &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/Windows&quot;&gt;Windows&lt;/a&gt;, il existe un soft parfait pour intégrer Subversion à l'explorateur de fichiers&amp;nbsp;: &lt;a href=&quot;http://tortoisesvn.tigris.org/&quot; hreflang=&quot;en&quot;&gt;TortoiseSVN&lt;/a&gt;. Ce petit programme ramène à un clic droit toutes les opérations courantes lorsqu'on travaille avec Subversion&amp;nbsp;: commit, update, mais aussi résolution de conflits et comparaison de versions.&lt;/p&gt;


&lt;p&gt;Cet article est la seconde partie d'un guide détaillant la configuration de &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/TortoiseSVN&quot;&gt;TortoiseSVN&lt;/a&gt; sur un poste Windows pour utiliser &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/subversion&quot;&gt;subversion&lt;/a&gt; en mode &lt;acronym title=&quot;Subversion&quot;&gt;SVN&lt;/acronym&gt;+&lt;acronym title=&quot;Secure Shell&quot;&gt;SH&lt;/acronym&gt;, à savoir une connexion à un serveur &lt;a href=&quot;http://subversion.tigris.org/&quot; hreflang=&quot;en&quot;&gt;subversion&lt;/a&gt; via &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/SSH&quot;&gt;SSH&lt;/a&gt;. Il détaille l'installation de la clé privée sur le poste client, dans TortoiseSVN.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://20-100.ch/blog/index.php/post/2007/07/05/Subversion-et-ToirtoiseSVN-en-SVNSSH&quot; hreflang=&quot;fr&quot;&gt;Comment configurer Subversion et ToirtoiseSVN en SVN+SSH (partie 1)&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;&lt;br /&gt;&lt;/p&gt;    &lt;p&gt;Nous avons vu dans le &lt;a href=&quot;http://20-100.ch/blog/index.php/post/2007/07/05/Subversion-et-ToirtoiseSVN-en-SVNSSH&quot; hreflang=&quot;fr&quot;&gt;premier article&lt;/a&gt; comment générer une paire de clés privée/publique sur le serveur. Dans cette seconde partie, nous allons voir comment installer la clé privée sur le poste client.&lt;/p&gt;


&lt;h2&gt;Installation de la clé privée sur le client&lt;/h2&gt;


&lt;p&gt;Sous Windows, il existe une &quot;suite&quot; de logiciels gratuits qui regroupent la plupart des fonctionnalités liées à SSH&amp;nbsp;: &lt;a href=&quot;http://www.chiark.greenend.org.uk/~sgtatham/putty/&quot; hreflang=&quot;en&quot;&gt;PuTTY&lt;/a&gt;. Pour cet article, nous allons avoir besoin de &lt;a href=&quot;http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe&quot; hreflang=&quot;en&quot;&gt;PuTTY&lt;/a&gt;, &lt;a href=&quot;http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe&quot; hreflang=&quot;en&quot;&gt;PuTTYgen&lt;/a&gt; et &lt;a href=&quot;http://the.earth.li/~sgtatham/putty/latest/x86/pageant.exe&quot; hreflang=&quot;en&quot;&gt;Pageant&lt;/a&gt;. Il suffit de télécharger ces exécutables, et de double-cliquer dessus pour les lancer&amp;nbsp;: aucune installation n'est nécessaire.&lt;/p&gt;


&lt;h3&gt;Conversion de la clé&lt;/h3&gt;


&lt;p&gt;Tout d'abord, il faut convertir notre clé privée générée sur le serveur en un format compréhensible par &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/PuTTY&quot;&gt;PuTTY&lt;/a&gt;. Nous allons utiliser PuTTYgen pour ceci. Une fois le programme lancé, aller dans le menu &lt;code&gt;Conversions&lt;/code&gt;, et choisir &lt;code&gt;Import Key&lt;/code&gt;. De là, sélectionner la clé &lt;code&gt;mykey&lt;/code&gt;, entrer la phrase clé choisie à la génération de la clé, cliquer sur &lt;code&gt;Save private key&lt;/code&gt; et sauver la nouvelle clé sous &lt;code&gt;mykey.PKK&lt;/code&gt; à l'endroit désiré.&lt;/p&gt;


&lt;h3&gt;Installation de la clé dans PuTTY&lt;/h3&gt;


&lt;p&gt;Nous sommes maintenant prêts à installer notre clé privée dans &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/PuTTY&quot;&gt;PuTTY&lt;/a&gt;. Pour ce faire, il suffit d'ouvrir &lt;a href=&quot;http://20-100.ch/blog/index.php/tag/PuTTY&quot;&gt;PuTTY&lt;/a&gt; et créer une nouvelle session avec les paramètres suivants&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Session -&amp;gt; Host Name&lt;/em&gt;&amp;nbsp;: l'url de votre serveur&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Session -&amp;gt; Protocol&lt;/em&gt;&amp;nbsp;: SSH&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Session -&amp;gt; Save Session&lt;/em&gt;&amp;nbsp;: le nom sous lequel la configuration sera sauvée, par exemple &quot;ServeurSVNSSH&quot;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Connexion -&amp;gt; SSH -&amp;gt; Preferred SSH Protocol Version&lt;/em&gt;&amp;nbsp;: 2&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Connexion -&amp;gt; SSH -&amp;gt; Auth -&amp;gt; Private key file for authentication&lt;/em&gt;&amp;nbsp;: chemin vers le fichier &lt;code&gt;mykey.PKK&lt;/code&gt; précédemment généré.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Retourner ensuite dans l'onglet &lt;code&gt;Session&lt;/code&gt; et cliquer sur &lt;code&gt;Save&lt;/code&gt; pour enregistrer la configuration. Et c'est fini&amp;nbsp;!&lt;/p&gt;


&lt;h3&gt;Test de la connexion&lt;/h3&gt;


&lt;p&gt;Vous pouvez vérifier que les paramètres sont corrects en cliquant sur le bouton &lt;code&gt;Open&lt;/code&gt;. Vous devriez voir une fenêtre terminal s'ouvrir, vous demandant votre nom d'utilisateur, ainsi que la phrase clé de votre clé privée. Entrez-les, et vous êtes connecté&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Dans la prochaine et dernière partie de cet article, nous verrons comment configurer TortoiseSVN pour utiliser ces paramètres, et finalement comment faire pour ne plus avoir à entrer la phrase clé de notre clé privée à chaque connexion.&lt;/p&gt;</description>
    
    
    
          <comments>http://20-100.ch/blog/index.php/post/2007/07/24/Comment-configurer-Subversion-et-ToirtoiseSVN-en-SVNSSH-partie-2#comment-form</comments>
      <wfw:comment>http://20-100.ch/blog/index.php/post/2007/07/24/Comment-configurer-Subversion-et-ToirtoiseSVN-en-SVNSSH-partie-2#comment-form</wfw:comment>
      <wfw:commentRss>http://20-100.ch/blog/index.php/feed/rss2/comments/12</wfw:commentRss>
      </item>
    
</channel>
</rss>