<?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>Miximum &#187; astuce</title>
	<atom:link href="http://www.miximum.fr/tag/astuce/feed" rel="self" type="application/rss+xml" />
	<link>http://www.miximum.fr</link>
	<description>Le blog d&#039;un ingénieur web freelance</description>
	<lastBuildDate>Wed, 16 Nov 2011 16:25:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Activer la coloration avec git</title>
		<link>http://www.miximum.fr/methodes-et-outils/157-activer-la-coloration-avec-git</link>
		<comments>http://www.miximum.fr/methodes-et-outils/157-activer-la-coloration-avec-git#comments</comments>
		<pubDate>Sat, 21 Mar 2009 09:07:46 +0000</pubDate>
		<dc:creator>thibault</dc:creator>
				<category><![CDATA[Méthodes et outils]]></category>
		<category><![CDATA[astuce]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.miximum.fr/inclassable/157-activer-lea-coloration-avec-git</guid>
		<description><![CDATA[git, c&#8217;est bien, mais par d&#233;faut, la coloration syntaxique des r&#233;sultats n&#8217;est pas activ&#233;e, ce qui est fort dommage. Il existe plusieurs options pour activer la coloration syntaxique &#224; diff&#233;rents endroits, mais pour tout activer d&#8217;un coup, une commande&#160;: git config color.ui true C&#8217;est tout pour aujourd&#8217;hui&#8230;]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.miximum.fr/tag/git">git, c&#8217;est bien</a>, mais par d&eacute;faut, la coloration syntaxique des r&eacute;sultats n&#8217;est pas activ&eacute;e, ce qui est fort dommage.</p>
<p>Il <a href="http://www.alexgirard.com/git-book/5_personnaliser_git.html">existe plusieurs options pour activer la coloration syntaxique</a> &agrave; diff&eacute;rents endroits, mais pour tout activer d&#8217;un coup, une commande&nbsp;:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">git config color.ui <span class="kw2">true</span></pre></div></div>

<p>C&#8217;est tout pour aujourd&#8217;hui&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miximum.fr/methodes-et-outils/157-activer-la-coloration-avec-git/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convertir un timestamp en date en ligne de commande</title>
		<link>http://www.miximum.fr/methodes-et-outils/95-convertir-un-timestamp-en-date-en-ligne-de-commande</link>
		<comments>http://www.miximum.fr/methodes-et-outils/95-convertir-un-timestamp-en-date-en-ligne-de-commande#comments</comments>
		<pubDate>Tue, 02 Sep 2008 14:53:40 +0000</pubDate>
		<dc:creator>thibault</dc:creator>
				<category><![CDATA[Méthodes et outils]]></category>
		<category><![CDATA[astuce]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.miximum.fr/methodes-et-outils/95-convertir-un-timestamp-en-date-en-ligne-de-commande</guid>
		<description><![CDATA[Il m&#8217;arrive souvent de devoir convertir un timestamp unix en une date lisible par un &#234;tre humain normal. Dans la plupart des langages de programmation moderne, c&#8217;est quelque chose de facile. Il existe aussi des convertisseurs sur le web. Seulement, c&#8217;est plus rapide de faire &#231;a en shell&#160;: date -d &#34;1970-01-01 GMT+2 + 1220367600 seconds&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>Il m&#8217;arrive souvent de devoir convertir un timestamp unix en une date lisible par un &ecirc;tre humain normal. Dans la plupart des langages de programmation moderne, c&#8217;est quelque chose de facile. Il existe aussi des convertisseurs sur le web. Seulement, c&#8217;est plus rapide de faire &ccedil;a en shell&nbsp;:</p>

<div class="wp_syntax"><div class="code"><pre class="sh" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">date -d &quot;1970-01-01 GMT+2 + 1220367600 seconds&quot;
-&gt;
mardi 2 septembre 2008, 16:58:00 (UTC+0200)</pre></div></div>

<p>C&#8217;est tout. C&#8217;est bien pratique, m&ecirc;me si <a href="http://pwet.fr/blog/super_timor">&ccedil;a ne vaut pas Super Timor</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miximum.fr/methodes-et-outils/95-convertir-un-timestamp-en-date-en-ligne-de-commande/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Trier un tableau de nombres avec Javascript</title>
		<link>http://www.miximum.fr/methodes-et-outils/68-trier-un-tableau-de-nombres-avec-javascript</link>
		<comments>http://www.miximum.fr/methodes-et-outils/68-trier-un-tableau-de-nombres-avec-javascript#comments</comments>
		<pubDate>Tue, 17 Jun 2008 09:04:05 +0000</pubDate>
		<dc:creator>thibault</dc:creator>
				<category><![CDATA[Méthodes et outils]]></category>
		<category><![CDATA[astuce]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[snippet]]></category>

		<guid isPermaLink="false">http://www.miximum.fr/?p=68</guid>
		<description><![CDATA[J&#8217;adore javascript. Je l&#8217;avoue. Malgr&#233; sa syntaxe parfois compl&#232;tement tordue, malgr&#233; son m&#233;pris total pour le principe de moindre suprise, malgr&#233; son niveau &#233;lev&#233; sur l&#8217;&#233;chelle du WTF, ce langage a un petit quelque chose qui me pla&#238;t bien. C&#8217;est comme pour les personnes, on a les atomes crochus, ou on ne les a pas. [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;adore javascript. Je l&#8217;avoue. Malgr&eacute; sa syntaxe parfois compl&egrave;tement tordue, malgr&eacute; son m&eacute;pris total pour <a href="http://fr.wikipedia.org/wiki/Principe_de_moindre_surprise">le principe de moindre suprise</a>, malgr&eacute; son <a href="http://www.flickr.com/photos/smitty/2245445147/">niveau &eacute;lev&eacute; sur l&#8217;&eacute;chelle du WTF</a>, ce langage a un petit quelque chose qui me pla&icirc;t bien. C&#8217;est comme pour les personnes, on a les atomes crochus, ou on ne les a pas.</p>
<p>D&#8217;ailleurs, dans le genre de surprise qu&#8217;on peut avoir en codant, j&#8217;ai &eacute;t&eacute; joliment &eacute;tonn&eacute; en voulant <strong>trier un tableau de nombres</strong>.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw2">var</span> nombres <span class="sy0">=</span> <span class="kw2">new</span> Array<span class="br0">&#40;</span><span class="nu0">1</span><span class="sy0">,</span> <span class="nu0">2</span><span class="sy0">,</span> <span class="nu0">5</span><span class="sy0">,</span> <span class="nu0">8</span><span class="sy0">,</span> <span class="nu0">9</span><span class="sy0">,</span> <span class="nu0">12</span><span class="sy0">,</span> <span class="nu0">16</span><span class="br0">&#41;</span><span class="sy0">;</span>
nombres.<span class="me1">sort</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw3">alert</span><span class="br0">&#40;</span>nombres<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="co1">// Et on obtient :</span>
<span class="co1">// 1, 12, 16, 2, 5, 8, 9</span></pre></div></div>

<p>G&eacute;nial<span class="fine">&nbsp;</span>! La fonction sort de l&#8217;objet Array tri les &eacute;l&eacute;ments par <a href="http://fr.wikipedia.org/wiki/Ordre_lexicographique">ordre lexicographique</a> (&agrave; ne pas confondre avec l&#8217;<a href="http://fr.wikipedia.org/wiki/Ordre_alphab%C3%A9tique">ordre alphab&eacute;tique</a>)<span class="fine">&nbsp;</span>!</p>
<p>Bon, et comment je fais, moi, pour trier mon tableau de nombre par ordre croissant<span class="fine">&nbsp;</span>? Allez, je suis sympa, je vous donne la solution&nbsp;:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw2">function</span> compare<span class="br0">&#40;</span>x<span class="sy0">,</span> y<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> x <span class="sy0">-</span> y<span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw2">var</span> nombres <span class="sy0">=</span> <span class="kw2">new</span> Array<span class="br0">&#40;</span><span class="nu0">1</span><span class="sy0">,</span> <span class="nu0">2</span><span class="sy0">,</span> <span class="nu0">5</span><span class="sy0">,</span> <span class="nu0">8</span><span class="sy0">,</span> <span class="nu0">9</span><span class="sy0">,</span> <span class="nu0">12</span><span class="sy0">,</span> <span class="nu0">16</span><span class="br0">&#41;</span><span class="sy0">;</span>
nombres.<span class="me1">sort</span><span class="br0">&#40;</span>compare<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw3">alert</span><span class="br0">&#40;</span>nombres<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="co1">// Et on obtient bien :</span>
<span class="co1">// 1, 2, 5, 8, 9, 12, 16</span>
&nbsp;
<span class="co1">// Pour trier par ordre décroissant, on definira autrement la fonction compare :</span>
&nbsp;
<span class="kw2">function</span> compare<span class="br0">&#40;</span>x<span class="sy0">,</span> y<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="kw1">return</span> y <span class="sy0">-</span> x<span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>

<p>Tellement simple. Tellement tordu. Tellement inattendu. J&#8217;adore. Je dois &ecirc;tre un peu sado-maso sur les bords.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miximum.fr/methodes-et-outils/68-trier-un-tableau-de-nombres-avec-javascript/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Symfony, formulaires, validation, redirection et messages d&#8217;erreur</title>
		<link>http://www.miximum.fr/methodes-et-outils/65-symfony-formulaires-validation-redirection-et-messages-derreur</link>
		<comments>http://www.miximum.fr/methodes-et-outils/65-symfony-formulaires-validation-redirection-et-messages-derreur#comments</comments>
		<pubDate>Fri, 06 Jun 2008 15:25:02 +0000</pubDate>
		<dc:creator>thibault</dc:creator>
				<category><![CDATA[Méthodes et outils]]></category>
		<category><![CDATA[astuce]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://www.miximum.fr/?p=65</guid>
		<description><![CDATA[Les redirections dans Symfony font s&#8217;arracher les cheveux aux d&#233;veloppeurs Mon probl&#232;me est le suivant&#160;: j&#8217;ai un formulaire classique, et je veux qu&#8217;il affiche les messages qui vont bien en cas d&#8217;erreurs de validation. Jusque l&#224;, rien de tr&#233;s difficile, n&#8217;est-ce pas&#160;? Le probl&#232;me, c&#8217;est qu&#8217;apr&#232;s validation du formulaire, j&#8217;ai une redirection qui me fait [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://prendreuncafe.com/blog/post/2008/01/12/Symfony-une-redirection-302-et-une-exception-sont-dans-un-bateau">Les redirections dans Symfony font s&#8217;arracher les cheveux aux d&eacute;veloppeurs</a> <img src='http://www.miximum.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Mon probl&egrave;me est le suivant&nbsp;: j&#8217;ai un formulaire classique, et je veux qu&#8217;il affiche les messages qui vont bien en cas d&#8217;erreurs de validation. Jusque l&agrave;, rien de tr&eacute;s difficile, n&#8217;est-ce pas<span class="fine">&nbsp;</span>? Le probl&egrave;me, c&#8217;est qu&#8217;apr&egrave;s validation du formulaire, j&#8217;ai une redirection qui me fait perdre les messages d&#8217;erreur.</p>
<p>La <a href="http://www.symfony-project.org/blog/2008/05/07/symfony-1-1-0-rc1-is-out">version 1.1 de Symfony</a>, actuellement en version release candidate, propose un <a href="http://www.aide-de-camp.org/article/3/fr/les-formulaires-symfony-1-1-et-le-pattern-mvc">framework complet de gestion de formulaire</a>. Par cons&eacute;quent, l&#8217;astuce que je vous propose aujourd&#8217;hui ne sera peut-&ecirc;tre pas valable, ni m&ecirc;me utile, pour cette version (c&#8217;est &agrave; v&eacute;rifier). Je suppose donc que vous utilisez la version stable 1.0.x.</p>
<p>Pour mieux comprendre, voici le fonctionnement de mon appli.</p>
<p>Quand j&#8217;affiche ma page, on a ce d&eacute;roulement&nbsp;:</p>
<ol>
<li>Je me connecte sur l&#8217;URL http://example.com/page/show?id=10</li>
<li>Le controleur appele l&#8217;action <strong>executeShow</strong> du module <strong>page</strong></li>
<li>Le template utilis&eacute; pour l&#8217;affichage est <strong>showSuccess.php</strong> du module <strong>page</strong></li>
<li>Mon template utilise l&#8217;instruction include_partial pour inclure le template qui affiche les commentaires sur ma page</li>
<li>Ce template affiche &eacute;galement un formulaire qui permet d&#8217;ajouter un commentaire</li>
</ol>
<p>Quand j&#8217;ajoute un commentaire et valide mon formulaire, on a le d&eacute;roulement suivant&nbsp;:</p>
<ol>
<li>Mon formulaire est valid&eacute;, supposons qu&#8217;il g&eacute;n&egrave;re des erreurs</li>
<li>Le contr&ocirc;leur appelle la fonction <strong>handleErrorAdd</strong> du module <strong>commentaire</strong></li>
<li>Comme on veut r&eacute;afficher le formulaire, on redirige vers la page d&#8217;origine (http://example.com/page/show?id=10)&nbsp;:<br />
        $this->redirect(&#8216;page/show?id=10&#8242;)<span class="fine">&nbsp;</span>;</li>
<li>On red&eacute;roule l&#8217;affichage depuis le d&eacute;but, dans le module <strong>page</strong>. Probl&egrave;me&nbsp;: mon formulaire n&#8217;affiche rien&nbsp;:<br />
        la redirection a perdu les messages d&#8217;erreur.</li>
</ol>
<p>Avec la m&eacute;thode normale, on aurait ceci&nbsp;:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">// app/frontend/modules/pages/template/showSuccess.php
...
// Affiche des trucs
...
&nbsp;
// Affichage du formulaire
<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> form_tag<span class="br0">&#40;</span><span class="st_h">'@action'</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>
&nbsp;
    <span class="kw2">&lt;?php</span> <span class="co1">// Affiche le message d'erreur de validation ?&gt;</span>
    <span class="kw2">&lt;?php</span> <span class="kw1">echo</span> form_error<span class="br0">&#40;</span><span class="st_h">'champ1'</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>
    <span class="sy0">&lt;</span>label <span class="kw1">for</span><span class="sy0">=</span><span class="st0">&quot;champ1&quot;</span><span class="sy0">&gt;</span>Champ <span class="nu0">1</span> <span class="sy0">:&lt;/</span>label<span class="sy0">&gt;</span>
    <span class="kw2">&lt;?php</span> <span class="kw1">echo</span> input_tag<span class="br0">&#40;</span><span class="st_h">'champ1'</span><span class="sy0">,</span> <span class="re0">$sf_params</span><span class="sy0">-&gt;</span><span class="me1">get</span><span class="br0">&#40;</span><span class="st_h">'champ1'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>
&nbsp;
    <span class="kw2">&lt;?php</span> <span class="kw1">echo</span> form_error<span class="br0">&#40;</span><span class="st_h">'champ2'</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>
    <span class="sy0">&lt;</span>label <span class="kw1">for</span><span class="sy0">=</span><span class="st0">&quot;champ2&quot;</span><span class="sy0">&gt;</span>Champ <span class="nu0">2</span> <span class="sy0">:&lt;/</span>label<span class="sy0">&gt;</span>
    <span class="kw2">&lt;?php</span> <span class="kw1">echo</span> input_tag<span class="br0">&#40;</span><span class="st_h">'champ2'</span><span class="sy0">,</span> <span class="re0">$sf_params</span><span class="sy0">-&gt;</span><span class="me1">get</span><span class="br0">&#40;</span><span class="st_h">'champ2'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>
&nbsp;
    <span class="kw2">&lt;?php</span> <span class="kw1">echo</span> submit_tag<span class="br0">&#40;</span><span class="st_h">'Valider'</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>
&nbsp;
&lt;/form&gt;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="co1">// app/frontend/modules/pages/actions/actions.class.php</span>
&nbsp;
<span class="kw2">function</span> executeAdd<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="co1">// Valide le formulaire</span>
    <span class="co1">// ...</span>
    <span class="kw1">return</span> sfView<span class="sy0">::</span><span class="me2">SUCCESS</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw2">public</span> <span class="kw2">function</span> handleErrorAdd<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="co1">// En cas d'erreur, affiche le formulaire avec les messages d'erreurs</span>
    <span class="kw1">return</span> sfView<span class="sy0">::</span><span class="me2">SUCCESS</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>

<p>Pour parvenir &agrave; ce fonctionnement en cas de redirections, nous allons utiliser <a href="http://www.symfony-project.org/book/1_0/06-Inside-the-Controller-Layer#Flash%20Attributes">les attributs flash</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="co1">// app/frontend/modules/page/actions/actions.class.php</span>
<span class="kw2">function</span> executeShow<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="co1">// récupère les erreurs en cas de redirection</span>
    <span class="co1">// Lors d'un affichage normal, on ne récupère rien</span>
    <span class="re0">$errors</span> <span class="sy0">=</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getFlash</span><span class="br0">&#40;</span><span class="st_h">'errors'</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/empty"><span class="kw3">empty</span></a><span class="br0">&#40;</span><span class="re0">$errors</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
        <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getRequest</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">setErrors</span><span class="br0">&#40;</span><span class="re0">$errors</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">xxx</span> <span class="sy0">=</span> <span class="sy0">...</span>
    <span class="co1">// Fonctionnement classique</span>
<span class="br0">&#125;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">// app/frontend/modules/page/templates/showSuccess.php
&nbsp;
// ...
// Affiche la page
&nbsp;
// Affiche les commentaires
<span class="kw2">&lt;?php</span> include_partial<span class="br0">&#40;</span><span class="st_h">'commentaire/list'</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="sy0">...</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">// app/frontend/modules/commentaire/templates/_list.php
&nbsp;
// Affiche les commentaires sur la page
// ...
&nbsp;
// Affichage du formulaire
// Notez la cible du formulaire
<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> form_tag<span class="br0">&#40;</span><span class="st_h">'commentaire/add'</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>
&nbsp;
    // Affiche le message d'erreur de validation
    <span class="kw2">&lt;?php</span> <span class="kw1">echo</span> form_error<span class="br0">&#40;</span><span class="st_h">'champ1'</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>
    &lt;label for=&quot;champ1&quot;&gt;Champ 1 :&lt;/label&gt;
    <span class="kw2">&lt;?php</span> <span class="kw1">echo</span> input_tag<span class="br0">&#40;</span><span class="st_h">'champ1'</span><span class="sy0">,</span> <span class="re0">$sf_params</span><span class="sy0">-&gt;</span><span class="me1">get</span><span class="br0">&#40;</span><span class="st_h">'champ1'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>
&nbsp;
    <span class="kw2">&lt;?php</span> <span class="kw1">echo</span> form_error<span class="br0">&#40;</span><span class="st_h">'champ2'</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>
    &lt;label for=&quot;champ2&quot;&gt;Champ 2 :&lt;/label&gt;
    <span class="kw2">&lt;?php</span> <span class="kw1">echo</span> input_tag<span class="br0">&#40;</span><span class="st_h">'champ2'</span><span class="sy0">,</span> <span class="re0">$sf_params</span><span class="sy0">-&gt;</span><span class="me1">get</span><span class="br0">&#40;</span><span class="st_h">'champ2'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>
&nbsp;
    <span class="kw2">&lt;?php</span> <span class="kw1">echo</span> submit_tag<span class="br0">&#40;</span><span class="st_h">'Valider'</span><span class="br0">&#41;</span> <span class="sy1">?&gt;</span>
&nbsp;
&lt;/form&gt;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="co1">// app/frontend/modules/commentaire/actions/actions.class.php</span>
&nbsp;
<span class="co1">// La validation s'est bien passée</span>
<span class="kw2">public</span> <span class="kw2">function</span> executeAdd<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="co1">// Créé le commentaire</span>
    <span class="co1">// ...</span>
    <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">comment</span><span class="sy0">-&gt;</span><span class="me1">save</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    <span class="co1">// et REDIRIGE vers l'affichage de la page</span>
    <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">redirect</span><span class="br0">&#40;</span><span class="st_h">'/page/show/?id='</span><span class="sy0">.</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getRequestParameter</span><span class="br0">&#40;</span><span class="st_h">'id'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="co1">// Gère les erreur de validation</span>
<span class="kw2">public</span> <span class="kw2">function</span> handleErrorAdd<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
    <span class="co1">// Toute l'astuce est ici :</span>
    <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">setFlash</span><span class="br0">&#40;</span><span class="st_h">'errors'</span><span class="sy0">,</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getRequest</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">getErrors</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">redirect</span><span class="br0">&#40;</span><span class="st_h">'/page/show?id='</span><span class="sy0">.</span><span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getRequestParameter</span><span class="br0">&#40;</span><span class="st_h">'id'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">return</span> sfView<span class="sy0">::</span><span class="me2">SUCCESS</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>

<p>Et voil&agrave;. Maintenant, vous devriez voir les messages d&#8217;erreur de validation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miximum.fr/methodes-et-outils/65-symfony-formulaires-validation-redirection-et-messages-derreur/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>L&#8217;astuce ultime pour vim</title>
		<link>http://www.miximum.fr/methodes-et-outils/56-lastuce-ultime-pour-vim</link>
		<comments>http://www.miximum.fr/methodes-et-outils/56-lastuce-ultime-pour-vim#comments</comments>
		<pubDate>Fri, 30 May 2008 15:12:47 +0000</pubDate>
		<dc:creator>thibault</dc:creator>
				<category><![CDATA[Méthodes et outils]]></category>
		<category><![CDATA[astuce]]></category>
		<category><![CDATA[productivité]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.miximum.fr/methodes-et-outils/56-lastuce-ultime-pour-vim</guid>
		<description><![CDATA[J&#8217;ai cherch&#233; toute la journ&#233;e, et j&#8217;ai trouv&#233;. L&#8217;astuce ultime pour vim. Celle qui va changer ma vie. Les meilleurs d&#8217;entre nous savent d&#233;j&#224; que la navigation basique dans vim s&#8217;effectue au moyen des touches h, j, l et m. Les touches fl&#233;ch&#233;es fonctionnent, bien entendu, mais c&#8217;est une erreur. C&#8217;est une erreur, parce que [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai cherch&eacute; toute la journ&eacute;e, et j&#8217;ai trouv&eacute;. L&#8217;astuce ultime pour vim. Celle qui va changer ma vie.</p>
<p>Les meilleurs d&#8217;entre nous savent d&eacute;j&agrave; que la navigation basique dans vim s&#8217;effectue au moyen des touches h, j, l et m. Les touches fl&eacute;ch&eacute;es fonctionnent, bien entendu, mais c&#8217;est une erreur.</p>
<p>C&#8217;est une erreur, parce que quand on utilise vim, c&#8217;est pour gagner en efficacit&eacute;. Et passer sans arr&ecirc;t de la partie centrale du clavier aux touches fl&eacute;ch&eacute;es, c&#8217;est contre productif. Cela n&eacute;cessite un d&eacute;placement du bras inutile, qui peut m&ecirc;me occasionner des <a href="http://www.palsambleu.fr/les-tracas-de-linformaticien/">troubles musculo-squelettiques</a> pour ceux qui font un usage intensif du clavier.</p>
<p>Alors bien s&ucirc;r, on essaie de ne pas les utiliser. Mais c&#8217;est dur, parce que nos habitudes sont tenaces. Et puis, on a pas le temps, on est dans l&#8217;urgence, on le fera plus tard, il faudrait le faire mais bon, etc.</p>
<p>Alors j&#8217;ai d&eacute;cid&eacute; de sauter le pas. Je me lance. <strong>Je d&eacute;sactive les touches fl&eacute;ch&eacute;es</strong>.</p>
<p>Il suffit d&#8217;ins&eacute;rer ces quelques lignes dans votre .vimrc&nbsp;:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">map &lt;right&gt; &lt;esc&gt;
map &lt;left&gt; &lt;esc&gt;
map &lt;up&gt; &lt;esc&gt;
map &lt;down&gt; &lt;esc&gt;
imap &lt;right&gt; &lt;esc&gt;
imap &lt;left&gt; &lt;esc&gt;
imap &lt;up&gt; &lt;esc&gt;
imap &lt;down&gt; &lt;esc&gt;</pre></div></div>

<p>&Ccedil;a va &ecirc;tre dur, &ccedil;a va m&#8217;&eacute;nerver, je le sens. Mais &ccedil;a va &ecirc;tre bon <img src='http://www.miximum.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>(Note&nbsp;: merci &agrave; <a href="http://forum.ubuntu-fr.org/profile.php?id=25578">clems52</a>, du <a href="http://forum.ubuntu-fr.org/viewtopic.php?pid=1813612">forum ubuntu</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miximum.fr/methodes-et-outils/56-lastuce-ultime-pour-vim/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Éditer un fichier inclus dans un autre, le retour</title>
		<link>http://www.miximum.fr/methodes-et-outils/55-editer-un-fichier-inclus-dans-un-autre-le-retour</link>
		<comments>http://www.miximum.fr/methodes-et-outils/55-editer-un-fichier-inclus-dans-un-autre-le-retour#comments</comments>
		<pubDate>Thu, 29 May 2008 14:12:28 +0000</pubDate>
		<dc:creator>thibault</dc:creator>
				<category><![CDATA[Méthodes et outils]]></category>
		<category><![CDATA[astuce]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.miximum.fr/inclassable/55-55</guid>
		<description><![CDATA[Il y a quelques jours, je vous ai parl&#233; de la commande qui permet d&#8217;ouvrir un fichier inclus dans un autre. Pour m&#233;moire, il suffit de placer le curseur sur le chemin d&#8217;un fichier include_once &#40;&#34;extension/recherche/modules/recherche/result_code_commun.php&#34;&#41;; et de taper gf Mais cette commande ouvre le fichier dans la fen&#234;tre courante. Si vous pr&#233;f&#233;rez ouvrir le [...]]]></description>
			<content:encoded><![CDATA[<p>Il y a quelques jours, je vous ai parl&eacute; de la commande qui permet d&#8217;<a href="http://www.miximum.fr/methodes-et-outils/12-editer-un-fichier-inclus-dans-un-autre">ouvrir un fichier inclus dans un autre</a>.</p>
<p>Pour m&eacute;moire, il suffit de placer le curseur sur le chemin d&#8217;un fichier</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;"><span class="kw1">include_once</span> <span class="br0">&#40;</span><span class="st0">&quot;extension/recherche/modules/recherche/result_code_commun.php&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>

<p>et de taper</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #ccc; font: 12px Consolas, Lucida Console, Monaco, monospace;">gf</pre></div></div>

<p>Mais cette commande ouvre le fichier dans la fen&ecirc;tre courante.</p>
<p>Si vous pr&eacute;f&eacute;rez ouvrir le fichier dans une nouvelle fen&ecirc;tre, utilisez <strong>CTRL-W_CTRL-F</strong>. Pratique. Et une fois sur cette nouvelle fen&ecirc;tre, vous pouvez taper <strong>ctrl-W_T</strong> pour cr&eacute;er un nouvel onglet &agrave; partir du buffer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.miximum.fr/methodes-et-outils/55-editer-un-fichier-inclus-dans-un-autre-le-retour/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

