<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>/home/florian</title>
	<atom:link href="http://fcargoet.evolix.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://fcargoet.evolix.net</link>
	<description>le blog de florian cargoet : du linux, du web et du logiciel libre</description>
	<lastBuildDate>Sat, 19 Jun 2010 09:24:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Shell : pipe foireux ?</title>
		<link>http://fcargoet.evolix.net/2010/06/shell-pipe-foireux/</link>
		<comments>http://fcargoet.evolix.net/2010/06/shell-pipe-foireux/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 07:57:24 +0000</pubDate>
		<dc:creator>Florian Cargoet</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Notes]]></category>

		<guid isPermaLink="false">http://fcargoet.evolix.net/?p=586</guid>
		<description><![CDATA[C&#8217;est peut-être quelque chose de très connu mais je viens seulement de comprendre pourquoi mon shell me dit parfois ça :

?View Code BASH% svn diff &#124; grep toto
zsh: command not found:  grep

WTF ? Il ne trouve pas grep ?
En fait, c&#8217;est très bête comme problème : sur un clavier français, on fait Alt.Gr.+6 pour obtenir le [...]]]></description>
			<content:encoded><![CDATA[<p>C&#8217;est peut-être quelque chose de très connu mais je viens seulement de comprendre pourquoi mon shell me dit parfois ça :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p586code2'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p5862"><td class="code" id="p586code2"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">%</span> <span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #c20cb9; font-weight: bold;">diff</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> toto
<span style="color: #c20cb9; font-weight: bold;">zsh</span>: <span style="color: #7a0874; font-weight: bold;">command</span> not found:  <span style="color: #c20cb9; font-weight: bold;">grep</span></pre></td></tr></table></div>

<p>WTF ? Il ne trouve pas <em>grep</em> ?</p>
<p>En fait, c&#8217;est très bête comme problème : sur un clavier français, on fait <em>Alt.Gr.+6</em> pour obtenir le pipe, et si on tape un peu vite, il arrive qu&#8217;on tape l&#8217;espace qui suit avant d&#8217;avoir relâché la touche <em>Alt.Gr.</em> ce qui donne une espace insécable au lieu d&#8217;une espace normale (<a href="http://forums.gentoo.org/viewtopic-p-6262504.html#6262504">apparemment</a>, c&#8217;est le cas pour le layout <em>fr-latin9</em>).</p>
<p>Or, par défaut, le séparateur de mots est l&#8217;espace normale donc le shell ne voit pas <em>&#8220;grep&#8221;</em> mais <em>&#8221; grep&#8221;</em> avec une espace insécable. D&#8217;où le<em> &#8220;command not found&#8221;</em>&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://fcargoet.evolix.net/2010/06/shell-pipe-foireux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ExtJS EditorGridPanel, validation et accès au record dans le validator</title>
		<link>http://fcargoet.evolix.net/2010/03/extjs-editorgridpanel-validation-et-acces-au-record-dans-le-validator/</link>
		<comments>http://fcargoet.evolix.net/2010/03/extjs-editorgridpanel-validation-et-acces-au-record-dans-le-validator/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 18:57:20 +0000</pubDate>
		<dc:creator>Florian Cargoet</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Webdev]]></category>

		<guid isPermaLink="false">http://fcargoet.evolix.net/?p=561</guid>
		<description><![CDATA[Si vous n&#8217;avez jamais utilisé l&#8217;EditorGridPanel d&#8217;ExtJS, le titre peut paraitre un peu obscur donc je vais commencer par rappeler ce qu&#8217;est l&#8217;EditorGridPanel ainsi que les possibilités de validation offertes par ExtJS. Enfin, l&#8217;objet principal de cet article, nous verrons comment pousser un peu plus loin les possibilités du validator en lui donnant accès aux [...]]]></description>
			<content:encoded><![CDATA[<p>Si vous n&#8217;avez jamais utilisé l&#8217;<em>EditorGridPanel</em> d&#8217;<em>ExtJS</em>, le titre peut paraitre un peu obscur donc je vais commencer par rappeler ce qu&#8217;est l&#8217;<em>EditorGridPanel</em> ainsi que les possibilités de validation offertes par <em>ExtJS</em>. Enfin, l&#8217;objet principal de cet article, nous verrons comment pousser un peu plus loin les possibilités du <em>validator</em> en lui donnant accès aux autres colonnes de l&#8217;<em>EditorGridPanel</em>.</p>
<p>Cet article mélange donc une introduction à l&#8217;<em>EditorGridPanel</em>, une présentation de quelques techniques de validation et une technique avancée pour aller plus loin. Il y en a donc pour tous les niveaux, faites le tri.<span id="more-561"></span></p>
<h3>Un <em>GridPanel</em> éditable</h3>
<p>Si vous ne connaissez pas le <a href="http://www.extjs.com/deploy/dev/examples/grid/array-grid.html"><em>GridPanel</em></a>, cet article ne vous sera que de peu d&#8217;intérêt (je vous invite à jeter un oeil sur les <a href="http://www.extjs.com/deploy/dev/examples/">exemples</a> d&#8217;ExtJS) donc je passe directement à l&#8217;<a href="http://www.extjs.com/deploy/dev/examples/grid/edit-grid.html"><em>EditorGridPanel</em></a>.</p>
<p>Le principe est très simple : vous avez un tableau présentant des données dans votre application et vous voulez pouvoir les modifier directement depuis le tableau. La mise en œuvre est tout aussi simple : remplacer votre <em>GridPanel</em> par un <em>EditorGridPanel</em> et spécifier un <em>Editor</em> pour chaque colonne éditable. <em>ExtJS</em> se chargera d&#8217;afficher l&#8217;éditeur (en général un champ de saisie de texte, mais cela peut être le widget de sélection de date par exemple), de contrôler que les données saisies sont valides et de mettre à jour le <em>Store</em> sous-jacent. Bien évidemment, le type de l&#8217;éditeur et les conditions de validation sont paramétrables.</p>
<p>Tous les exemples présentés dans cet article sont rassemblés dans <a href="http://fcargoet.evolix.net/demos/extjs/ExtJS-EditorGrid/">une démo</a> que vous pouvez regarder avant de plonger dans les explications. Pour tous les exemples présentés, les données utilisés sont les suivantes :<br />
<script src="http://gist.github.com/332143.js?file=globals.js"></script><noscript>Javascript est nécessaire pour afficher le <a href="http://gist.github.com/332143">code source</a>.</noscript></p>
<p>Pour commencer, essayons de mettre en place un petit exemple d&#8217;<em>EditorGridPanel</em> avant de nous pencher sur la validation.<br />
<script src="http://gist.github.com/332143.js?file=grid1.js"></script><noscript>Javascript est nécessaire pour afficher le <a href="http://gist.github.com/332143">code source</a>.</noscript></p>
<h3>Validation des valeurs saisies</h3>
<p>Maintenant que l&#8217;on sait éditer les données d&#8217;un <em>EditorGridPanel</em>, occupons nous d&#8217;empêcher l&#8217;utilisateur de saisir des valeurs erronées.</p>
<p><em>Note : la validation des données coté client n&#8217;est pas suffisante car on peut toujours soumettre des données à votre serveur sans passer par votre application et y injecter des valeurs erronées voire des valeurs dangereuses (injections SQL, XSS&#8230;). Bref, faites de la validation coté serveur, la validation coté client est là pour le confort de l&#8217;utilisateur.</em></p>
<p>Il existe plusieurs mécanismes dans <em>ExtJS</em> pour valider les valeurs saisies :</p>
<ul>
<li>le contrôle a priori, en empêchant la saisie de certains caractères. Par exemple, pour un champ numérique, vous pouvez n&#8217;autoriser que la saisie des nombres, du séparateur décimal et éventuellement les signes + et -.</li>
<li>le contrôle en continu (à chaque touche), qui indique que la donnée n&#8217;est pas valide et affiche un message d&#8217;erreur permettant de le corriger. Par exemple, pour la saisie d&#8217;une adresse email, vous pouvez afficher un message d&#8217;erreur tant que le champ n&#8217;est pas au format <em>login@serveur.tld</em>.</li>
<li>le contrôle a posteriori qui invalide la saisie et réinitialise la cellule.</li>
</ul>
<p>Pour le contrôle a priori, vous pouvez utiliser l&#8217;option <em>maskRe</em> sur un éditeur <em>TextField</em> ou <em>vtype</em> (les vtypes sont des types fournis par ExtJS qui font aussi de la validation en continu comme nous le verrons plus loin) :<br />
<script src="http://gist.github.com/332143.js?file=grid2.js"></script> <noscript>Javascript est nécessaire pour afficher le <a href="http://gist.github.com/332143">code source</a>.</noscript></p>
<p>Pour le contrôle continu vous pouvez utiliser <em>maxLength</em>, <em>minLength</em> pour limiter la taille, <em>regex</em> pour contrôler la correspondance avec une expression régulière, <em>validator</em> pour spécifier une fonction qui se charge de la validation ou encore <em>vtype</em> pour valider certains formats courants et déjà implémentés dans <em>ExtJS</em> (alpha, alphanum, email, url). Les <em>vtypes</em> permettent également de faire du filtrage sur les caractères saisis (comme <em>maskRe</em>). Un exemple utilisant tout ça :<br />
<script src="http://gist.github.com/332143.js?file=grid3.js"></script><noscript>Javascript est nécessaire pour afficher le <a href="http://gist.github.com/332143">code source</a>.</noscript></p>
<p>Pour le contrôle a posteriori, vous pouvez exploiter les évènements <em>beforecomplete</em> (lancé par l&#8217;<em>Editor</em>) ou <em>validateedit</em> (lancé par l&#8217;<em>EditorGridPanel</em>) :</p>
<p><script src="http://gist.github.com/332143.js?file=grid4.js"></script><noscript>Javascript est nécessaire pour afficher le <a href="http://gist.github.com/332143">code source</a>.</noscript></p>
<h3>Valider les valeurs en fonction des autres colonnes</h3>
<p>Nous savons maintenant éditer des cellules et contrôler les valeurs saisies par l&#8217;utilisateur. Tentons maintenant d&#8217;effectuer la validation d&#8217;une valeur en fonction de la valeur des autres colonnes. Un éditeur étant attaché à une seule cellule, il n&#8217;a pas accès aux autres colonnes. Nous allons donc ruser et lui donner accès au <em>Record</em> dont provient le champ en cours d&#8217;édition (c&#8217;est-à-dire lui donner accès aux données des autres colonnes sur la même ligne) !  Pour parvenir à cela, nous allons combiner l&#8217;utilisation de la fonction <em>validator</em> et de l&#8217;évènement <em>beforeedit</em> (lancé par l&#8217;<em>EditorGridPanel</em>). La fonction <em>validator</em> a accès à la valeur à valider (passée en paramètre) mais a aussi accès à l&#8217;instance de <em>Field</em> qui sert d&#8217;éditeur via le mot-clé <strong>this</strong>. Nous allons donc nous débrouiller pour passer au <em>Field</em> le Record en cours d&#8217;édition. Le <em>validator</em> y aura ainsi accès et pourra faire un traitement de la valeur en fonction de toutes les valeurs contenues dans le Record. Pour passer ce Record au <em>Field</em>, nous allons profiter de l&#8217;évènement <em>beforeedit</em> pour insérer une propriété <em>currentRecord</em> dans le <em>Field</em> qui sert d&#8217;éditeur.  Je récapitule :</p>
<ol>
<li>On capture l&#8217;évènement <em>beforeedit</em></li>
<li>On place une référence vers le Record en cours d&#8217;édition dans le <em>Field</em> qui sert d&#8217;éditeur</li>
<li>Le <em>validator</em> y accède via <strong>this</strong>.<em>currentRecord</em></li>
</ol>
<p>En pratique, ça donne :  <script src="http://gist.github.com/332143.js?file=grid5.js"></script><noscript>Javascript est nécessaire pour afficher le <a href="http://gist.github.com/332143">code source</a>.</noscript></p>
<h3>Conclusion</h3>
<p>J&#8217;espère que tout est clair, si ce n&#8217;est pas le cas, n&#8217;hésitez pas à demander des éclaircissements dans les commentaires. Sachez que tout ce qui concerne la validation des données est valables également pour les formulaires puisque les mécanismes de validation sont implémentés dans les <em>Fields</em> qui sont également utilisés par les formulaires. Enfin, tout <a href="http://gist.github.com/332143">le code</a> est récupérable sur GitHub.</p>
]]></content:encoded>
			<wfw:commentRss>http://fcargoet.evolix.net/2010/03/extjs-editorgridpanel-validation-et-acces-au-record-dans-le-validator/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Plugin Wordpress : Categories as Widgets</title>
		<link>http://fcargoet.evolix.net/2010/02/plugin-wordpress-categories-as-widgets/</link>
		<comments>http://fcargoet.evolix.net/2010/02/plugin-wordpress-categories-as-widgets/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 19:40:48 +0000</pubDate>
		<dc:creator>Florian Cargoet</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[categorie]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://fcargoet.evolix.net/?p=533</guid>
		<description><![CDATA[Voici un tout petit plugin Wordpress qui ne fait pas grand chose mais qui m&#8217;est utile. C&#8217;est un simple widget pour sidebar qui permet de lister les catégories. A la différence du widget Catégories fourni de base qui liste les catégories et éventuellement les sous catégories, celui-ci simule plusieurs widgets. Il génère une liste par [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un tout petit plugin Wordpress qui ne fait pas grand chose mais qui m&#8217;est utile. C&#8217;est un simple widget pour <em>sidebar</em> qui permet de lister les catégories. A la différence du widget <em>Catégories</em> fourni de base qui liste les catégories et éventuellement les sous catégories, celui-ci simule plusieurs widgets. Il génère une liste par catégorie racine (les catégories au sommet de la hiérarchie) et les éléments des listes sont les sous catégories.</p>
<p>Voyez vous même la différence :<br />

<a href='http://fcargoet.evolix.net/2010/02/plugin-wordpress-categories-as-widgets/categories/' title='categories'><img width="150" height="150" src="http://fcargoet.evolix.net/wp-content/uploads/2010/02/categories-150x150.png" class="attachment-thumbnail" alt="" title="categories" /></a>
<a href='http://fcargoet.evolix.net/2010/02/plugin-wordpress-categories-as-widgets/categories_as_widgets/' title='categories_as_widgets'><img width="150" height="150" src="http://fcargoet.evolix.net/wp-content/uploads/2010/02/categories_as_widgets-150x150.png" class="attachment-thumbnail" alt="" title="categories_as_widgets" /></a>
<br />
<span id="more-533"></span></p>
<h3>Le code</h3>
<p>Comme d&#8217;habitude, sur <a href="http://github.com/floriancargoet/Wordpress-Categories-as-Widgets/blob/master/CategoriesAsWidgets.php">GitHub</a> ou directement ici vu que c&#8217;est plutôt léger :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p533code4'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p5334"><td class="code" id="p533code4"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">/*
Plugin Name: Categories as Widgets
Plugin URI: http://fcargoet.evolix.net/
Description: Display each top-level category as a widget with its sub categories
Author: Florian Cargoët
Version: 0.1
Author URI: http://fcargoet.evolix.net/
*/</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> cat_as_widget<span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <a href="http://www.php.net/extract"><span style="color: #990000;">extract</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$before_widget</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$before_title</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$category</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$after_title</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000088;">$cat_args</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'child_of'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$category</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cat_ID</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'hierarchical'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'title_li'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">''</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;ul&gt;'</span><span style="color: #339933;">;</span>
    wp_list_categories<span style="color: #009900;">&#40;</span>apply_filters<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'widget_categories_args'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cat_args</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;/ul&gt;'</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$after_widget</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> widget_CategoriesAsWidgets<span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000088;">$categories</span> <span style="color: #339933;">=</span> get_categories<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$categories</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$category</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$category</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parent</span><span style="color: #339933;">==</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">//only toplevel cats</span>
            <span style="color: #000088;">$args</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'category'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">=</span><span style="color: #000088;">$category</span><span style="color: #339933;">;</span>
            cat_as_widget<span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> categoriesAsWidgets_init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    register_sidebar_widget<span style="color: #009900;">&#40;</span>__<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Categories As Widgets'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'widget_CategoriesAsWidgets'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
add_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;plugins_loaded&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;categoriesAsWidgets_init&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://fcargoet.evolix.net/2010/02/plugin-wordpress-categories-as-widgets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ExtJS : Afficher un titre sur les régions &#8220;collapsed&#8221;</title>
		<link>http://fcargoet.evolix.net/2009/12/extjs-afficher-un-titre-sur-les-regions-collapsed/</link>
		<comments>http://fcargoet.evolix.net/2009/12/extjs-afficher-un-titre-sur-les-regions-collapsed/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 23:50:06 +0000</pubDate>
		<dc:creator>Florian Cargoet</dc:creator>
				<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[Notes]]></category>

		<guid isPermaLink="false">http://fcargoet.evolix.net/?p=408</guid>
		<description><![CDATA[Le border layout d&#8217;ExtJS est excellent mais souffre quand même d&#8217;un défaut important : les régions réduites  (collapsed) n&#8217;affichent plus aucune information ce qui empêche, par exemple, de les identifier. Il serait judicieux d&#8217;afficher au moins le titre du panel réduit afin de savoir à quoi correspond cette région &#8220;masquée&#8221;.
Pour visualiser un peu le problème, [...]]]></description>
			<content:encoded><![CDATA[<p>Le <em>border layout</em> d&#8217;ExtJS est excellent mais souffre quand même d&#8217;un défaut important : les régions réduites  (<em>collapsed</em>) n&#8217;affichent plus aucune information ce qui empêche, par exemple, de les identifier. Il serait judicieux d&#8217;afficher au moins le titre du panel réduit afin de savoir à quoi correspond cette région &#8220;masquée&#8221;.</p>
<p>Pour visualiser un peu le problème, vous pouvez jeter un oeil à la <a href="http://www.extjs.com/deploy/dev/examples/layout/complex.html">démo du layout</a> sur le site d&#8217;ExtJS et cliquer sur le bouton permettant de réduire la zone &#8220;South&#8221;.  Une fois réduit, le rectangle qui représente le panel réduit n&#8217;apporte pas beaucoup d&#8217;informations&#8230;</p>
<p>Pour accéder à ce rectangle et y insérer ce que vous voulez :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p408code6'); return false;">View Code</a> JAVASCRIPT</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p4086"><td class="code" id="p408code6"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> component <span style="color: #339933;">=</span> Ext.<span style="color: #660066;">getCmp</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">15</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003366; font-weight: bold;">var</span> el <span style="color: #339933;">=</span> component.<span style="color: #660066;">layout</span>.<span style="color: #660066;">south</span>.<span style="color: #660066;">collapsedEl</span><span style="color: #339933;">;</span>
el.<span style="color: #660066;">insertHtml</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'afterBegin'</span><span style="color: #339933;">,</span><span style="color: #3366CC;">'&amp;lt;span style=&quot;position: relative; top: 4px; left: 5px; color: #15428b; font-family: tahoma,arial,verdana,sans-serif; font-size: 11px; font-weight: bold;&quot;&amp;gt;Et voilà un titre&amp;lt;/span&amp;gt;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><span style="text-decoration: underline;">Attention</span> : l&#8217;élément <em>collapsedEl</em> n&#8217;existe qu&#8217;après la première réduction du panel donc il faut jouer avec l&#8217;évènement <em>collapse</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://fcargoet.evolix.net/2009/12/extjs-afficher-un-titre-sur-les-regions-collapsed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retirer une clé du fichier known_hosts</title>
		<link>http://fcargoet.evolix.net/2009/12/retirer-une-cle-du-fichier-known_hosts/</link>
		<comments>http://fcargoet.evolix.net/2009/12/retirer-une-cle-du-fichier-known_hosts/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 20:45:37 +0000</pubDate>
		<dc:creator>Florian Cargoet</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Notes]]></category>

		<guid isPermaLink="false">http://fcargoet.evolix.net/?p=522</guid>
		<description><![CDATA[ssh stocke les clés des serveurs auxquels vous vous connecter pour pouvoir reconnaitre le serveur à la prochaine connexion et vous prévenir s&#8217;il y a un problème. Si on sait que le changement est normal, et que l&#8217;on veut se connecter au serveur malgré tout, il faut supprimer la clé fautive du fichier ~/.ssh/known_hosts. A [...]]]></description>
			<content:encoded><![CDATA[<p><em>ssh</em> stocke les clés des serveurs auxquels vous vous connecter pour pouvoir reconnaitre le serveur à la prochaine connexion et vous prévenir s&#8217;il y a un problème. Si on sait que le changement est normal, et que l&#8217;on veut se connecter au serveur malgré tout, il faut supprimer la clé fautive du fichier <em>~/.ssh/known_hosts</em>. A l&#8217;oeil, ce n&#8217;est pas évident car rien ne permet d&#8217;identifier les clés dans le fichier. Pour supprimer simplement cette clé sans passer par la suppression complète du fichier :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p522code8'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p5228"><td class="code" id="p522code8"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh-keygen</span> <span style="color: #660033;">-R</span> <span style="color: #c20cb9; font-weight: bold;">hostname</span></pre></td></tr></table></div>

<p>Alternativement mais moins sympa, <em>ssh</em> donne la ligne de la clé erronée dans son avertissement ce qui permet de savoir laquelle supprimer.</p>
]]></content:encoded>
			<wfw:commentRss>http://fcargoet.evolix.net/2009/12/retirer-une-cle-du-fichier-known_hosts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calculer l’empreinte d’une clé rsa/dsa</title>
		<link>http://fcargoet.evolix.net/2009/12/calculer-l%e2%80%99empreinte-d%e2%80%99une-cle-rsadsa/</link>
		<comments>http://fcargoet.evolix.net/2009/12/calculer-l%e2%80%99empreinte-d%e2%80%99une-cle-rsadsa/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 20:28:26 +0000</pubDate>
		<dc:creator>Florian Cargoet</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://fcargoet.evolix.net/?p=520</guid>
		<description><![CDATA[En vous connectant à un serveur ssh pour la première fois, ssh vous signalera qu&#8217;il ne le connait pas :
The authenticity of host &#8216;hostname (adr.es.se.ip)&#8217; can&#8217;t be established.
DSA key fingerprint is 9c:27:82:3c:ea:2a:c1:bc:19:9a:37:8e:e4:93:bb:77.
Avant de faire aveuglément confiance à ce serveur, vous pouvez vérifier l&#8217;empreinte de sa clé publique si vous l&#8217;avez :

?View Code BASHssh-keygen -l -f [...]]]></description>
			<content:encoded><![CDATA[<p>En vous connectant à un serveur ssh pour la première fois, ssh vous signalera qu&#8217;il ne le connait pas :<br />
The authenticity of host &#8216;hostname (adr.es.se.ip)&#8217; can&#8217;t be established.<br />
DSA key fingerprint is 9c:27:82:3c:ea:2a:c1:bc:19:9a:37:8e:e4:93:bb:77.</p>
<p>Avant de faire aveuglément confiance à ce serveur, vous pouvez vérifier l&#8217;empreinte de sa clé publique si vous l&#8217;avez :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p520code10'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p52010"><td class="code" id="p520code10"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh-keygen</span> <span style="color: #660033;">-l</span> <span style="color: #660033;">-f</span> ssh_host_dsa_key.pub</pre></td></tr></table></div>

<p>Ce fichier se trouve dans /etc/ssh sur le serveur.</p>
]]></content:encoded>
			<wfw:commentRss>http://fcargoet.evolix.net/2009/12/calculer-l%e2%80%99empreinte-d%e2%80%99une-cle-rsadsa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chercher/Remplacer en SQL</title>
		<link>http://fcargoet.evolix.net/2009/12/chercher-remplacer-en-sql/</link>
		<comments>http://fcargoet.evolix.net/2009/12/chercher-remplacer-en-sql/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 20:18:48 +0000</pubDate>
		<dc:creator>Florian Cargoet</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://fcargoet.evolix.net/?p=518</guid>
		<description><![CDATA[
?View Code SQLUPDATE tablename SET column_name = REPLACE &#40;
    `column_name`,
    `search`,
    `replace`
&#41;;

Quelqu&#8217;un sait si on peut utiliser des expressions régulières ?
]]></description>
			<content:encoded><![CDATA[
<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p518code12'); return false;">View Code</a> SQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p51812"><td class="code" id="p518code12"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">UPDATE</span> tablename <span style="color: #993333; font-weight: bold;">SET</span> column_name <span style="color: #66cc66;">=</span> <span style="color: #993333; font-weight: bold;">REPLACE</span> <span style="color: #66cc66;">&#40;</span>
    <span style="color: #ff0000;">`column_name`</span><span style="color: #66cc66;">,</span>
    <span style="color: #ff0000;">`search`</span><span style="color: #66cc66;">,</span>
    <span style="color: #ff0000;">`replace`</span>
<span style="color: #66cc66;">&#41;</span>;</pre></td></tr></table></div>

<p>Quelqu&#8217;un sait si on peut utiliser des expressions régulières ?</p>
]]></content:encoded>
			<wfw:commentRss>http://fcargoet.evolix.net/2009/12/chercher-remplacer-en-sql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lister les partitions de vos disques</title>
		<link>http://fcargoet.evolix.net/2009/12/lister-les-partitions-de-vos-disques/</link>
		<comments>http://fcargoet.evolix.net/2009/12/lister-les-partitions-de-vos-disques/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 20:14:22 +0000</pubDate>
		<dc:creator>Florian Cargoet</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[fdisk]]></category>
		<category><![CDATA[partition]]></category>

		<guid isPermaLink="false">http://fcargoet.evolix.net/?p=512</guid>
		<description><![CDATA[
?View Code BASHfdisk -l

ou plus précis :

?View Code BASHfdisk -l /dev/disque

]]></description>
			<content:encoded><![CDATA[
<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p512code15'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p51215"><td class="code" id="p512code15"><pre class="bash" style="font-family:monospace;">fdisk <span style="color: #660033;">-l</span></pre></td></tr></table></div>

<p>ou plus précis :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p512code16'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p51216"><td class="code" id="p512code16"><pre class="bash" style="font-family:monospace;">fdisk <span style="color: #660033;">-l</span> <span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>disque</pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://fcargoet.evolix.net/2009/12/lister-les-partitions-de-vos-disques/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lister les paquets (Debian) par ordre décroissant de taille</title>
		<link>http://fcargoet.evolix.net/2009/12/lister-les-paquets-debian-par-ordre-decroissant-de-taille/</link>
		<comments>http://fcargoet.evolix.net/2009/12/lister-les-paquets-debian-par-ordre-decroissant-de-taille/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 20:11:46 +0000</pubDate>
		<dc:creator>Florian Cargoet</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[dpkg]]></category>
		<category><![CDATA[dpkg-query]]></category>
		<category><![CDATA[paquet]]></category>

		<guid isPermaLink="false">http://fcargoet.evolix.net/?p=509</guid>
		<description><![CDATA[On demande à dpkg-query de tout afficher selon un format qui donne la taille en premier, puis on fait trier tout ça par sort et enfin less permet de pas en prendre plein la tête.

?View Code BASHdpkg-query -W --showformat='${Installed-Size} ${Package}\n'&#124; sort -rn &#124; less

L&#8217;intérêt ? Faire un peu de nettoyage quand on manque de place&#8230;
]]></description>
			<content:encoded><![CDATA[<p>On demande à <em>dpkg-query</em> de tout afficher selon un format qui donne la taille en premier, puis on fait trier tout ça par <em>sort</em> et enfin <em>less</em> permet de pas en prendre plein la tête.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p509code18'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p50918"><td class="code" id="p509code18"><pre class="bash" style="font-family:monospace;">dpkg-query <span style="color: #660033;">-W</span> <span style="color: #660033;">--showformat</span>=<span style="color: #ff0000;">'${Installed-Size} ${Package}\n'</span><span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sort</span> <span style="color: #660033;">-rn</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">less</span></pre></td></tr></table></div>

<p>L&#8217;intérêt ? Faire un peu de nettoyage quand on manque de place&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://fcargoet.evolix.net/2009/12/lister-les-paquets-debian-par-ordre-decroissant-de-taille/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Changer le moteur de recherche de la barre d’url de Firefox</title>
		<link>http://fcargoet.evolix.net/2009/12/changer-le-moteur-de-recherche-de-la-barre-d%e2%80%99url-de-firefox/</link>
		<comments>http://fcargoet.evolix.net/2009/12/changer-le-moteur-de-recherche-de-la-barre-d%e2%80%99url-de-firefox/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 20:06:02 +0000</pubDate>
		<dc:creator>Florian Cargoet</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[recherche]]></category>

		<guid isPermaLink="false">http://fcargoet.evolix.net/?p=507</guid>
		<description><![CDATA[Non, je ne parle pas de la barre de recherche où l&#8217;on peut choisir Google, Wikipedia ou n&#8217;importe quel moteur de recherche mais bien de la barre d&#8217;url. En effet, quand vous tapez quelque chose qui n&#8217;est pas une url, Firefox vous renvoie sur une recherche Google.
Pour changer cela, changer la clé keyword.URL dans l’about:config [...]]]></description>
			<content:encoded><![CDATA[<p>Non, je ne parle pas de la barre de recherche où l&#8217;on peut choisir Google, Wikipedia ou n&#8217;importe quel moteur de recherche mais bien de la barre d&#8217;url. En effet, quand vous tapez quelque chose qui n&#8217;est pas une url, Firefox vous renvoie sur une recherche Google.</p>
<p>Pour changer cela, changer la clé keyword.URL dans l’about:config et c&#8217;est gagné !</p>
<p>Voir l’<a href="/2008/09/escalineorg-vos-mots-cles-firefox-partout/">article sur escaline.org</a> pour un cas concret d&#8217;utilisation.</p>
]]></content:encoded>
			<wfw:commentRss>http://fcargoet.evolix.net/2009/12/changer-le-moteur-de-recherche-de-la-barre-d%e2%80%99url-de-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
