<?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>Docs Jmini &#187; programmation</title>
	<atom:link href="http://docs.jmini.fr/mot-cle/programmation/feed" rel="self" type="application/rss+xml" />
	<link>http://docs.jmini.fr</link>
	<description>docs.jmini.fr</description>
	<lastBuildDate>Thu, 18 Feb 2010 09:47:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Coloration syntaxique &#8211; Méthodes</title>
		<link>http://docs.jmini.fr/notes/coloration-syntaxique</link>
		<comments>http://docs.jmini.fr/notes/coloration-syntaxique#comments</comments>
		<pubDate>Thu, 09 Oct 2008 21:55:36 +0000</pubDate>
		<dc:creator>Jérémie Bresson</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[FSHL]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmation]]></category>

		<guid isPermaLink="false">http://docs.jmini.fr/?p=39</guid>
		<description><![CDATA[Lire du code source n&#8217;est jamais très facile. Lorsque l&#8217;on souhaite en publier sur son site web, il est important de le mettre joliment en forme, pour faciliter sa lecture. L&#8217;utilisation de la balise &#60;pre&#62; (pour respecter les esapces, tabulations et sauts de ligne), le changement de police et la coloration du texte sont des [...]]]></description>
			<content:encoded><![CDATA[<p>Lire du code source n&#8217;est jamais très facile. Lorsque l&#8217;on souhaite en publier sur son site web, il est important de le mettre joliment en forme, pour faciliter sa lecture. L&#8217;utilisation de la balise &lt;pre&gt; (pour respecter les esapces, tabulations et sauts de ligne), le changement de police et la coloration du texte sont des incontournables.<br />
Retrouver les fichiers de test utilisés en pièce-jointe de cet article.<br />
Il existe plusieurs solutions pour colorer du code source. Chacune à ses avantages et ses inconvénients. Cet article recense différente méthodes :</p>
<h2>Avec un éditeur de texte :</h2>
<h3>TextMate :</h3>
<p>De nombreux éditeurs de texte réalisent la coloration du code en cours de saisie. Certain d&#8217;entre eux (dont le mien TextMate) propose d&#8217;exporter le texte saisi au format HTML pour le réafficher dans un navigateur web comme il apparaît dans l&#8217;éditeur.</p>
<p>Dans TextMate il faut sélectionner le menu action dans la barre sous la fenêtre de l&#8217;éditeur, puis choisir TextMate et l&#8217;option &laquo;&nbsp;Create HTML From Document&nbsp;&raquo; (ou &laquo;&nbsp;Create HTML From Selection&nbsp;&raquo;). L&#8217;option &laquo;&nbsp;Create CSS from Current Theme&nbsp;&raquo; permet de récupérer la feuille de style associé.</p>
<div id="attachment_40" class="wp-caption aligncenter" style="width: 160px"><a href="http://docs.jmini.fr/notes/coloration-syntaxique/attachment/textmate" rel="attachment wp-att-40"><img src="http://docs.jmini.fr/wp-content/uploads/2008/10/textmate-150x150.png" alt="Coloration syntaxique du PHP dans TextMate" title="TextMate" width="150" height="150" class="size-medium wp-image-40" /></a><p class="wp-caption-text">avec TextMate</p></div>
<h2>Avec des scripts en PHP :</h2>
<p><em>(exécution côté serveur)</em></p>
<h3>fshl :</h3>
<p>Script qui colore rapidement et correctement les une dizaine de langage courants. Gère très bien le mélange de langages (CSS, JS, PHP) dans l&#8217;HTML.<br />
<a href="http://code.google.com/p/fshl/" title="fshl - Google Code">Page du projet</a>.<br />
<a href="http://hvge.sk/scripts/fshl/online/index.php" title="FastSHL Example - universal syntax highlighter">Test en ligne</a><br />
<a href="http://docs.jmini.fr/code/utiliser-fshl" title="Comment utiliser FSHL ?">Comment utiliser FSHL ?</a> sur ce site.</p>
<div id="attachment_41" class="wp-caption aligncenter" style="width: 160px"><a href="http://docs.jmini.fr/?attachment_id=41"><img src="http://docs.jmini.fr/wp-content/uploads/2008/10/fshl-150x150.png" alt="Coloration dans FSHL" title="FSHL" width="150" height="150" class="size-medium wp-image-41" /></a><p class="wp-caption-text">avec FSHL</p></div>
<h3>GeSHi &#8211; Generic Syntax Highlighter :</h3>
<p>Projet assez ancien qui supporte de très nombreux langages de programmation (une centaine). Il a la réputation d&#8217;être une usine à gaz.<br />
<a href="http://qbnz.com/highlighter/" title="GeSHi - Generic Syntax Highlighter :: Home">Page du projet</a><br />
<a href="http://qbnz.com/highlighter/demo.php" title="GeSHi - Generic Syntax Highlighter :: Demo">Test en ligne</a><br />
Implémentation dans un plugin wordpress : <a href="http://wordpress.org/extend/plugins/wp-syntax/" title="WordPress &#8250; WP-Syntax &laquo; WordPress Plugins">WP-Syntax</a></p>
<div id="attachment_42" class="wp-caption aligncenter" style="width: 160px"><a href="http://docs.jmini.fr/notes/coloration-syntaxique/attachment/geshi" rel="attachment wp-att-42"><img src="http://docs.jmini.fr/wp-content/uploads/2008/10/geshi-150x150.png" alt="Coloration dans GeSHi" title="GeSHi" width="150" height="150" class="size-medium wp-image-42" /></a><p class="wp-caption-text">avec GeSHi</p></div>
<h3>PHPaintCode par derfum :</h3>
<p><em>(anciennement Coloration Syntaxique)</em><br />
Limité à la coloration du PHP. Support en Français.<br />
<a href="http://www.phpcs.com/codes/PHPAINTCODE_23984.aspx" title="PHPAINTCODE , Source N&#176;23984">Page du projet</a></p>
<div id="attachment_43" class="wp-caption aligncenter" style="width: 160px"><a href="http://docs.jmini.fr/wp-content/uploads/2008/10/phpaintcode.png"><img src="http://docs.jmini.fr/wp-content/uploads/2008/10/phpaintcode-150x150.png" alt="Coloration dans PHPaintCode" title="PHPaintCode" width="150" height="150" class="size-medium wp-image-43" /></a><p class="wp-caption-text">avec PHPaintCode</p></div>
<h3>Fonction PHP :</h3>
<p>Il existe une fonction PHP qui colorie le code PHP d&#8217;un document. Il n&#8217;y a pas de feuille de style, on ne peux donc pas choisir les couleurs.</p>
<div id="attachment_44" class="wp-caption aligncenter" style="width: 160px"><a href="http://docs.jmini.fr/notes/coloration-syntaxique/attachment/highlight-file" rel="attachment wp-att-44"><img src="http://docs.jmini.fr/wp-content/uploads/2008/10/highlight-file-150x150.png" alt="avec la fonction highlight-file()" title="highlight-file" width="150" height="150" class="size-thumbnail wp-image-44" /></a><p class="wp-caption-text">avec highlight-file()</p></div>
<h2>Par des scripts en javascript :</h2>
<p><em>(exécution côté client)</em></p>
<h3>syntaxhighlighter</h3>
<p><a href="http://code.google.com/p/syntaxhighlighter/" title="syntaxhighlighter - Google Code">Page du projet</a><br />
Implémentation dans un plugin wordpress : <a href="http://wordpress.org/extend/plugins/google-syntax-highlighter/" title="WordPress &#8250; Google Syntax Highlighter for WordPress &laquo; WordPress Plugins">Google Syntax Highlighter for WordPress</a></p>
<div id="attachment_45" class="wp-caption aligncenter" style="width: 160px"><a href="http://docs.jmini.fr/notes/coloration-syntaxique/attachment/syntaxhighlighter" rel="attachment wp-att-45"><img src="http://docs.jmini.fr/wp-content/uploads/2008/10/syntaxhighlighter-150x150.png" alt="Coloration avec syntaxhighlighter" title="syntaxhighlighter" width="150" height="150" class="size-thumbnail wp-image-45" /></a><p class="wp-caption-text">avec syntaxhighlighter</p></div>
<h2>A lire sur le web :</h2>
<ul>
<li><a href="http://www.ivation.net/34-fshl-un-bon-colorateur-syntaxique-en-php.html" title="Fshl : un bon colorateur syntaxique en PHP - Ivation">Fshl : un bon colorateur syntaxique en PHP</a></li>
<li><a href="http://blogtoolbox.fr/ecrire-et-publier-du-code-sur-wordpress/" title="Écrire et publier du code sur WordPress">Écrire et publier du code sur WordPress</a></li>
<li><a href="http://www.code-web.org/post/2008/03/28/Plugin-de-coloration-syntaxique" title="Plugin de coloration syntaxique">Plugin de coloration syntaxique (Dotclear 2)</a></li>
<li><a href="http://fr.wikipedia.org/wiki/Coloration_syntaxique" title="Coloration syntaxique - Wikipédia">Coloration syntaxique &#8211; Wikipédia</a></li>
<li><a href="http://wordpress.org/extend/plugins/tags/syntax" title="WordPress &#8250; syntax &laquo; Tags &laquo; WordPress Plugins">Wordpress Plugin Directory [Tag: syntax]</a> : Catalogue des plugins wordpress pour faire de la coloration syntaxique (en anglais)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://docs.jmini.fr/notes/coloration-syntaxique/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Palette de couleurs Java</title>
		<link>http://docs.jmini.fr/notes/palette-couleurs-java</link>
		<comments>http://docs.jmini.fr/notes/palette-couleurs-java#comments</comments>
		<pubDate>Tue, 19 Aug 2008 09:04:20 +0000</pubDate>
		<dc:creator>Jérémie Bresson</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[couleurs]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programmation]]></category>

		<guid isPermaLink="false">http://docs.jmini.fr/?p=20</guid>
		<description><![CDATA[Java permet de manipuler les couleurs (pour faire du dessin notamment) à l&#8217;aide de la classe java.awt.Color. Cette classe permet de stoquer une couleur et de la manipuler.
Par défaut, un certain nombre de couleurs sont préenregistrées dans des constantes pour faciliter l&#8217;utilisation des couleurs de bases (plus la peine de connaître leur code RGB par [...]]]></description>
			<content:encoded><![CDATA[<p>Java permet de manipuler les couleurs (pour faire du dessin notamment) à l&#8217;aide de la classe <a title="Color (Java Platform SE 6)" href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html">java.awt.Color</a>. Cette classe permet de stoquer une couleur et de la manipuler.</p>
<p>Par défaut, un certain nombre de couleurs sont préenregistrées dans des constantes pour faciliter l&#8217;utilisation des couleurs de bases (plus la peine de connaître leur code RGB par exemple).</p>
<p>Le tableau ci dessous donne la composition RGB des différentes couleurs, ainsi qu&#8217;un aperçu :</p>
<div class="markNote"><blockquote><em>Remarque : j&#8217;ai retenu le nom écrit en majuscule introduit avec la version 1.4 de Java. Cette version est plus cohérente car il s&#8217;agit de constantes. Néanmoins, l&#8217;écriture avec l&#8217;autre convention existe aussi (lettres minuscules et première lettre des mots attachés suivants en majuscules ex : darkGray)</em></blockquote></div>
<table border="0">
<tbody>
<tr>
<th>Nom</th>
<th>Rouge</th>
<th>Vert</th>
<th>Bleu</th>
<th>Aperçu</th>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#BLACK">BLACK</a></td>
<td>0</td>
<td>0</td>
<td>0</td>
<td style="background-color:#000000;"> </td>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#BLUE">BLUE</a></td>
<td>0</td>
<td>0</td>
<td>255</td>
<td style="background-color:#0000FF;"> </td>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#CYAN">CYAN</a></td>
<td>0</td>
<td>255</td>
<td>255</td>
<td style="background-color:#00FFFF;"> </td>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#DARK_GRAY">DARK_GRAY</a></td>
<td>64</td>
<td>64</td>
<td>64</td>
<td style="background-color:#404040;"> </td>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#GRAY">GRAY</a></td>
<td>128</td>
<td>128</td>
<td>128</td>
<td style="background-color:#808080;"> </td>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#GREEN">GREEN</a></td>
<td>0</td>
<td>255</td>
<td>0</td>
<td style="background-color:#00FF00;"> </td>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#LIGHT_GRAY">LIGHT_GRAY</a></td>
<td>192</td>
<td>192</td>
<td>192</td>
<td style="background-color:#C0C0C0;"> </td>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#MAGENTA">MAGENTA</a></td>
<td>255</td>
<td>0</td>
<td>255</td>
<td style="background-color:#FF00FF;"> </td>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#ORANGE">ORANGE</a></td>
<td>255</td>
<td>200</td>
<td>0</td>
<td style="background-color:#FFC800;"> </td>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#PINK">PINK</a></td>
<td>255</td>
<td>175</td>
<td>175</td>
<td style="background-color:#FFAFAF;"> </td>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#RED">RED</a></td>
<td>255</td>
<td>0</td>
<td>0</td>
<td style="background-color:#FF0000;"> </td>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#WHITE">WHITE</a></td>
<td>255</td>
<td>255</td>
<td>255</td>
<td style="background-color:#FFFFFF;"> </td>
</tr>
<tr>
<td><strong>Color</strong>.<a href="http://java.sun.com/javase/6/docs/api/java/awt/Color.html#YELLOW">YELLOW</a></td>
<td>255</td>
<td>255</td>
<td>0</td>
<td style="background-color:#FFFF00;"> </td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://docs.jmini.fr/notes/palette-couleurs-java/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Un script pour convertir un fichier CSV en requêtes SQL</title>
		<link>http://docs.jmini.fr/code/script-convertir-csv-en-sql</link>
		<comments>http://docs.jmini.fr/code/script-convertir-csv-en-sql#comments</comments>
		<pubDate>Mon, 06 Aug 2007 05:58:00 +0000</pubDate>
		<dc:creator>Jérémie Bresson</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://docs.jmini.fr/?p=14</guid>
		<description><![CDATA[Voici un petit script AWK pour convertir un fichier csv (provenant d&#8217;Excel ou de n&#8217;importe quel autre programme) en une requête SQL (pour remplir une base de données MySQL avec phpMyAdmin par exemple).
Il fonctionne grâce à AWK, donc sur pratiquement n&#8217;importe quel système UNIX, et Mac OS X en particulier.
Pour en savoir plus sur l&#8217;utilisation [...]]]></description>
			<content:encoded><![CDATA[<p>Voici un petit script AWK pour convertir un fichier csv (provenant d&#8217;Excel ou de n&#8217;importe quel autre programme) en une requête SQL (pour remplir une base de données MySQL avec phpMyAdmin par exemple).</p>
<p>Il fonctionne grâce à AWK, donc sur pratiquement n&#8217;importe quel système UNIX, et Mac OS X en particulier.</p>
<p>Pour en savoir plus sur l&#8217;utilisation de AWK dans Mac OS X, je vous invite à consulter l&#8217;article <a href="http://docs.jmini.fr/pas-a-pas/se-servir-de-awk-dans-mac-os-x" title="Se servir de AWK dans Mac OS X">Se servir de AWK dans Mac OS X</a></p>
<p>Le script :</p>
<div class="markCode"><div class="boxCode"><code>
<pre class="Clr_Code"><span class="Clr_Comment">#!/usr/bin/awk -f
# Script de conversion d'un fichier .csv Excel en un script d'insertion SQL.
# version 1
# http://jmini.fr/

# STRUCTURE DU FICHIER :
# separateur : ;
# premiere ligne : nom de la table
# deuxieme ligne : nom des champs
# lignes suivantes : enregistrements</span>

<span class="Clr_Anchor">BEGIN</span> <span class="Clr_Operator">{</span>
	<span class="Clr_Var">FS</span>=<span class="Clr_String">"<span class="Clr_Operator">;</span>"</span><span class="Clr_Operator">;</span>
	<span class="Clr_Var">RS</span>=<span class="Clr_String">"\n"</span><span class="Clr_Operator">;</span>
	<span class="Clr_Var">OFS</span>=<span class="Clr_String">""</span><span class="Clr_Operator">;</span>
	<span class="Clr_Func">printf</span> <span class="Clr_String">"-- csvToSql : debut du script sql\n"</span><span class="Clr_Operator">;</span>
<span class="Clr_Operator">}</span>

<span class="Clr_Operator">{</span>
	<span class="Clr_Func">gsub</span>(<span class="Clr_String">/'/</span><span class="Clr_Operator">,</span><span class="Clr_String">"\\'"</span><span class="Clr_Operator">,</span> <span class="Clr_Var">$0</span>)<span class="Clr_Operator">;</span>
<span class="Clr_Operator">}</span>

<span class="Clr_Var">NR</span>==<span class="Clr_Int">1</span> <span class="Clr_Operator">{</span>
	li=<span class="Clr_String">"INSERT INTO  `"</span> <span class="Clr_Var">$1</span> <span class="Clr_String">"` (  `"</span><span class="Clr_Operator">;</span>
<span class="Clr_Operator">}</span>
<span class="Clr_Var">NR</span>==<span class="Clr_Int">2</span> <span class="Clr_Operator">{</span>
	<span class="Clr_Var">nb_champ</span>=<span class="Clr_Var">NF</span><span class="Clr_Operator">;</span>
	<span class="Clr_KeyWord">for</span>(<span class="Clr_Var">i</span>=<span class="Clr_Int">1</span><span class="Clr_Operator">;</span> <span class="Clr_Var">i</span>&lt;<span class="Clr_Var">NF</span><span class="Clr_Operator">;</span> <span class="Clr_Var">i</span><span class="Clr_Operator">++</span>)
		<span class="Clr_Var">li</span>=<span class="Clr_Var">li</span> <span class="Clr_Var">$i</span> <span class="Clr_String">"` ,  `"</span><span class="Clr_Operator">;</span>
	<span class="Clr_Var">li</span>=<span class="Clr_Var">li</span> <span class="Clr_Var">$i</span> <span class="Clr_String">"` ) "</span><span class="Clr_Operator">;</span>
	<span class="Clr_Func">print</span> <span class="Clr_Var">li</span><span class="Clr_Operator">;</span>
	<span class="Clr_Var">li</span>=<span class="Clr_String">"VALUES "</span><span class="Clr_Operator">;</span>
<span class="Clr_Operator">}</span>

<span class="Clr_Var">NR</span>&gt;<span class="Clr_Int">2</span> <span class="Clr_Operator">{</span>
	<span class="Clr_Var">li</span>=<span class="Clr_Var">li</span> <span class="Clr_String">"('"</span>
	<span class="Clr_KeyWord">for</span>(<span class="Clr_Var">i</span>=<span class="Clr_Int">1</span><span class="Clr_Operator">;</span> <span class="Clr_Var">i</span>&lt;<span class="Clr_Var">nb_champ</span><span class="Clr_Operator">;</span> <span class="Clr_Var">i</span><span class="Clr_Operator">++</span>)
		<span class="Clr_Var">li</span>=<span class="Clr_Var">li</span> <span class="Clr_Var">$i</span> <span class="Clr_String">"',  '"</span><span class="Clr_Operator">;</span>

	<span class="Clr_Var">li</span>=<span class="Clr_Var">li</span> <span class="Clr_Var">$i</span> <span class="Clr_String">"')"</span><span class="Clr_Operator">;</span>

	<span class="Clr_Func">print</span> <span class="Clr_Var">li</span><span class="Clr_Operator">;</span>
	<span class="Clr_Var">li=<span class="Clr_String">", "</span><span class="Clr_Operator">;</span>
<span class="Clr_Operator">}</span>

<span class="Clr_Anchor">END</span> <span class="Clr_Operator">{</span>
	<span class="Clr_Func">print</span> <span class="Clr_String">";"</span><span class="Clr_Operator">;</span>
	<span class="Clr_Func">print</span> <span class="Clr_String">"-- csvToSql : fin du script sql \n"</span><span class="Clr_Operator">;</span>
<span class="Clr_Operator">}</span>
</span></pre>
<p></code></div></div>
<p>Retrouvez tous les fichiers de démonstration dans une archive zip : <a href="http://docs.jmini.fr/wp-content/uploads/2008/11/csvsql.zip" title="csvsql" class="attachment_file">csvsql.zip</a></p>
<h2>Utilisation du script :</h2>
<h3>1) Préparer le fichier CSV</h3>
<p>Peu importe la manière dont vous obtenez votre fichier CSV (copier-coller, export Excel&#8230;) vous devez vous assurer qu&#8217;il respecte bien le format prévu par le script. Si ce n&#8217;est pas le cas, un éditeur texte et une série de rechercher-remplacer devrait faire l&#8217;affaire. Pour les utilisateurs avertis, il est aussi possible de changer le script AWK&#8230;</p>
<p>Dans la configuration du script actuelle, il faut que fichier soit construit de la manière suivante :</p>
<ul>
<li>Le séparateur de champs doit être un point-virgule &laquo;&nbsp;;&nbsp;&raquo;</li>
<li>La première ligne ne doit contenir qu&#8217;un champ : le nom de la table</li>
<li>La deuxième ligne doit contenir les noms des champs de la table SQL</li>
<li>Les lignes suivantes doivent contenir les enregistrements (et donc le même nombre de champs que la deuxième ligne, s’il y en a plus, ils seront ignorés)</li>
</ul>
<p>Exemple : fichier panier.csv :</p>
<div class="markCode"><div class="boxCode"><code>panier<br />
id;fruit;nombre;etat<br />
1;pomme;23;bon<br />
2;poire;4;mauvais<br />
3;banane;7;parfait</code></div></div>
<p>Ce fichier s&#8217;obtient très facilement avec Excel en remplissant correctement une feuille du classeur :</p>
<div id="attachment_21" class="wp-caption alignnone" style="width: 310px"><img class="size-medium wp-image-21" title="capture_excel" src="http://docs.jmini.fr/wp-content/uploads/2008/08/img46b194dcb445e-300x121.png" alt="Visualisation du fichier CSV dans Excel" width="300" height="121" /><p class="wp-caption-text">Visualisation du fichier CSV dans Excel</p></div>
<p>Pour générer le fichier CSV, il suffit de faire : <strong>Menu &gt; Fichier &gt; Enregistrer sous&#8230;</strong> puis de choisir dans le format de fichier « CSV (séparateur : point-virgule) »</p>
<div class="markNote"><blockquote><strong>Attention :</strong> parfois, le fichier généré par Excel ne fonctionne pas avec AWK. Il suffit d&#8217;ouvrir le fichier CSV dans un éditeur de texte, de tout sélectionner, de copier la sélection et de coller le texte dans un nouveau fichier que l&#8217;on réenregistre.</blockquote></div>
<p>Enregistrer le fichier dans le répertoire de travail (ici un dossier csvsql sur le bureau).</p>
<h3>2) Préparation du script</h3>
<p>Copier le script ci-dessus dans un fichier texte nommé csvToSql.awk et rendez-le exécutable (méthode décrite dans l&#8217;<a href="http://docs.jmini.fr/pas-a-pas/se-servir-de-awk-dans-mac-os-x" title="Se servir de AWK dans Mac OS X">article sur l&#8217;utilisation d&#8217;AWK</a>)</p>
<p>ou utilisez le script de l&#8217;archive Zip de démonstration</p>
<p>Le plus simple est d&#8217;avoir ce fichier de script dans le répertoire de travail (dans notre cas, toujours le dossier csvsql sur le bureau).</p>
<h3>3) Préparer le terminal</h3>
<p>Ouvrer le terminal et placer vous dans le répertoire de travail contenant le script AWK (csvToSql.awk) et le fichier source (dans notre exemple panier.csv) <div class="markCode"><div class="boxCode"><code>$ cd ~/Desktop/csvsql/</code></div></div></p>
<h3>4) Lancer le script :</h3>
<p>Il suffit de taper dans le terminal la commande : <div class="markCode"><div class="boxCode"><code>$ ./csvToSql.awk panier.csv</code></div></div></p>
<p>On obtient dans terminal la requête SQL que l&#8217;on peut réutiliser à l&#8217;endroit adéquat (notamment dans PhpMyAdmin)</p>
<div class="markCode"><div class="boxCode"><code>
<pre class="Clr_Code"><span class="Clr_Comment">-- csvToSql : debut du script sql</span>
<span class="Clr_KeyWord">INSERT INTO</span>  <span class="Clr_String">`panier`</span> <span class="Clr_Operator">(</span>  <span class="Clr_String">`id`</span> <span class="Clr_Operator">,</span>  <span class="Clr_String">`fruit`</span> <span class="Clr_Operator">,</span>  <span class="Clr_String">`nombre`</span> <span class="Clr_Operator">,</span>  <span class="Clr_String">`etat`</span> <span class="Clr_Operator">)</span>
<span class="Clr_KeyWord">VALUES</span> <span class="Clr_Operator">(</span><span class="Clr_String">'1'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'pomme'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'23'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'bon'</span><span class="Clr_Operator">)</span><span class="Clr_Operator">,</span> <span class="Clr_Operator">(</span><span class="Clr_String">'2'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'poire'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'4'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'mauvais'</span><span class="Clr_Operator">)</span><span class="Clr_Operator">,</span> <span class="Clr_Operator">(</span><span class="Clr_String">'3'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'banane'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'7'</span><span class="Clr_Operator">,</span>  <span class="Clr_String">'parfait'</span><span class="Clr_Operator">)</span><span class="Clr_Operator">;</span>
<span class="Clr_Comment">-- csvToSql : fin du script sql</span></pre>
<p></code></div></div>
<hr />
En annexe voici une requête permettant de créer la structure de la table correspondant à notre exemple.</p>
<div class="markCode"><div class="boxCode"><code>
<pre class="Clr_Code"><span class="Clr_Comment">-- Creation de la table</span>
<span class="Clr_KeyWord">CREATE TABLE</span>  <span class="Clr_String">`panier`</span> <span class="Clr_Operator">(</span>
<span class="Clr_String">`id`</span> <span class="Clr_KeyWord">INT</span><span class="Clr_Operator">(</span> <span class="Clr_Int">4</span> <span class="Clr_Operator">)</span> <span class="Clr_KeyWord">NOT NULL</span> AUTO_INCREMENT <span class="Clr_Operator">,</span>
<span class="Clr_String">`fruit`</span> <span class="Clr_KeyWord">VARCHAR</span><span class="Clr_Operator">(</span> <span class="Clr_Int">20</span> <span class="Clr_Operator">)</span> <span class="Clr_Operator">,</span>
<span class="Clr_String">`nombre`</span> <span class="Clr_KeyWord">INT</span><span class="Clr_Operator">(</span> <span class="Clr_Int">8</span> <span class="Clr_Operator">)</span> DEFAULT  <span class="Clr_String">'0'</span> <span class="Clr_KeyWord">NOT NULL</span> <span class="Clr_Operator">,</span>
<span class="Clr_String">`etat`</span> <span class="Clr_KeyWord">VARCHAR</span><span class="Clr_Operator">(</span> <span class="Clr_Int">20</span> <span class="Clr_Operator">)</span> <span class="Clr_Operator">,</span>
<span class="Clr_KeyWord">PRIMARY KEY</span> <span class="Clr_Operator">(</span>  <span class="Clr_String">`id`</span> <span class="Clr_Operator">)</span>
<span class="Clr_Operator">)</span> TYPE <span class="Clr_Operator">=</span> MYISAM COMMENT <span class="Clr_Operator">=</span>  <span class="Clr_String">'Panier de fruits'</span><span class="Clr_Operator">;</span></pre>
<p></code></div></div>
]]></content:encoded>
			<wfw:commentRss>http://docs.jmini.fr/code/script-convertir-csv-en-sql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les Framworks pour le dévellopement web</title>
		<link>http://docs.jmini.fr/listes-de-liens/framworks-devellopement-web</link>
		<comments>http://docs.jmini.fr/listes-de-liens/framworks-devellopement-web#comments</comments>
		<pubDate>Sat, 28 Jul 2007 19:11:19 +0000</pubDate>
		<dc:creator>Jérémie Bresson</dc:creator>
				<category><![CDATA[Listes de liens]]></category>
		<category><![CDATA[création de site]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programmation]]></category>

		<guid isPermaLink="false">http://docs.jmini.fr/?p=7</guid>
		<description><![CDATA[Depuis quelque temps on en trouve beaucoup pour le développement web. Le plus connu d&#8217;entre eux est certainement Ruby On Rail (ou RoR pour les intimes) développé en Ruby, mais il a été suivit par de très nombreux autres : PhpCake, Php on Trax, Symfony, django en Python&#8230;
Cette note recense des liens pour les retrouver [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis quelque temps on en trouve beaucoup pour le développement web. Le plus connu d&#8217;entre eux est certainement <strong>Ruby On Rail</strong> (ou RoR pour les intimes) développé en Ruby, mais il a été suivit par de très nombreux autres : <strong>PhpCake</strong>, <strong>Php on Trax</strong>, <strong>Symfony</strong>, <strong>django</strong> en Python&#8230;</p>
<p>Cette note recense des liens pour les retrouver rapidement et faire son choix.</p>
<h3>Introduction :</h3>
<p>D&#8217;après wikipedia [<a href="http://fr.wikipedia.org/wiki/Framework" target="_blank">lien</a>] :<br />
<div class="markCit"><blockquote>Un framework est un ensemble de bibliothèques permettant le développement rapide d&#8217;applications. Il fournit suffisamment de briques logicielles pour pouvoir produire une application aboutie. Ils sont en principe spécialisés pour un type d&#8217;application.</blockquote></div></p>
<h3>Comparatifs :</h3>
<p>- <a href="http://developpeur.journaldunet.com/tutoriel/php/060313-php-panorama-frameworks.shtml" target="_blank"> Dix frameworks PHP</a> JDN|développeurs (13/03/2006)<br />
- <a href="http://www.breek.fr/extras" target="_blank">Benchmark fonctionnel Rails, Django &amp; CakePHP</a> breek (20/10/2006)<br />
- <a href="http://www.smile.fr/content/smile/livreblanc/frameworks_php.htm" target="_blank">Smile.fr &#8211; Livre Blanc des Frameworks PHP</a> : Le point sur les différents Framworks PHP en 77 pages avec présentations, explications, exemples de code&#8230;</p>
<hr />
<h3>Liens :</h3>
<p><strong>CakePHP :</strong><br />
- Site officiel : <a href="http://www.cakephp.org/" target="_blank">http://www.cakephp.org/</a><br />
- (fr) <a href="http://www.cakepourtous.org/" target="_blank">http://www.cakepourtous.org/</a><br />
- (fr) <a href="http://www.cakephp-fr.org/" target="_blank">http://www.cakephp-fr.org/</a><br />
- <a href="http://www.lephp.com/apprendre-php/experience-cakephp,64.htm" target="_blank">Expérience CakePhp</a> lephp.com (17/10/06)</p>
<p><strong>eZ Components :</strong><br />
- Site officiel : <a href="http://ez.no/ezcomponents" target="_blank">http://ez.no/ezcomponents</a></p>
<p><strong>Mojavi :</strong><br />
- Site officiel : <a href="http://www.mojavi.org/" target="_blank">http://www.mojavi.org/</a></p>
<p><strong>Prado :</strong><br />
- Site officiel : <a href="http://www.xisc.com/" target="_blank">http://www.xisc.com/</a></p>
<p><strong>Phocoa :</strong><br />
- Site officiel : <a href="http://phocoa.com/" target="_blank">http://phocoa.com/</a></p>
<p><strong>phpMVC :</strong><br />
- Site officiel : <a href="http://www.phpmvc.net/" target="_blank">http://www.phpmvc.net/</a></p>
<p><strong>PHP on Trax :</strong><br />
- Site officiel : <a href="http://www.phpontrax.com/" target="_blank">http://www.phpontrax.com/</a></p>
<p><strong>Seagull :</strong><br />
- Site officiel : <a href="http://seagull.phpkitchen.com/" target="_blank">http://seagull.phpkitchen.com/</a></p>
<p><strong>Symfony :</strong><br />
- Site officiel : <a href="http://www.symfony-project.com/" target="_blank">http://www.symfony-project.com/</a></p>
<p><strong>WACT :</strong><br />
- Site officiel : <a href="http://www.phpwact.org/" target="_blank">http://www.phpwact.org/</a></p>
<p><strong>Zend Framework :</strong><br />
- Site officiel : <a href="http://framework.zend.com/" target="_blank">http://framework.zend.com/</a></p>
<p><strong>Django (Python) :</strong><br />
- Site officiel : <a href="http://www.djangoproject.com/" target="_blank">http://www.djangoproject.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://docs.jmini.fr/listes-de-liens/framworks-devellopement-web/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Se servir de AWK dans Mac OS X</title>
		<link>http://docs.jmini.fr/pas-a-pas/se-servir-de-awk-dans-mac-os-x</link>
		<comments>http://docs.jmini.fr/pas-a-pas/se-servir-de-awk-dans-mac-os-x#comments</comments>
		<pubDate>Fri, 20 Jul 2007 20:41:02 +0000</pubDate>
		<dc:creator>Jérémie Bresson</dc:creator>
				<category><![CDATA[Pas à pas]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[terminal]]></category>

		<guid isPermaLink="false">http://docs.jmini.fr/?p=13</guid>
		<description><![CDATA[Durant un de mes cours, j&#8217;ai été amené à utiliser le langage de script AWK. N&#8217;étant pas un spécialiste du terminal, j&#8217;ai éprouvé quelques difficultés pour reproduire avec MAC OS X ce que j&#8217;avais vu en cours. Cet article est donc un genre de &#171;&#160;AWK sur MAC OS X pour les nuls&#171;&#160;.
AWK :
AWK est un [...]]]></description>
			<content:encoded><![CDATA[<p>Durant un de mes cours, j&#8217;ai été amené à utiliser le langage de script AWK. N&#8217;étant pas un spécialiste du terminal, j&#8217;ai éprouvé quelques difficultés pour reproduire avec MAC OS X ce que j&#8217;avais vu en cours. Cet article est donc un genre de &laquo;&nbsp;<em>AWK sur MAC OS X pour les nuls</em>&laquo;&nbsp;.</p>
<h2>AWK :</h2>
<p>AWK est un langage de script essentiellement fait pour manipuler les lignes d&#8217;un fichier texte. Il est particulièrement utile pour exécuter toute sorte d&#8217;opérations sur les fichiers CSV (pour Comma-separated values &#8211; texte tabuler).</p>
<p>Le nom AWK est l&#8217;assemblage des initiales des noms des créateurs du langage :  Alfred <strong>A</strong>ho, Peter <strong>W</strong>einberger et Brian <strong>K</strong>ernighan.</p>
<p>On trouve ce langage sur pratiquement tous les systèmes UNIX sous le nom d&#8217;awk ou gawk (pour GNU awk). C&#8217;est évidemment le cas sur Mac OS X.</p>
<h2>Création d&#8217;un programme :</h2>
<p>Encore une fois, cet article est vraiment écrit &laquo;&nbsp;<em>pour les nuls</em>&nbsp;&raquo; et je conseille aux spécialistes d&#8217;UNIX de passer leur chemin. Voici pas à pas les étapes à suivre pour créer un script simple qui affiche les lignes impaires d&#8217;un fichier.</p>
<h3>0) Vérifier le chemin d&#8217;awk :</h3>
<p>Pour savoir où se situe la commande <strong>awk</strong> (à priori dans le répertoire bin), il suffit de lancer dans le terminal la commande <strong>wich</strong> : <div class="markCode"><div class="boxCode"><code></p>
<pre>which awk</pre>
<p></code></div></div></p>
<p>Normalement le shell répond <em>/usr/bin/awk</em></p>
<h3>1) Ecrire le fichier de script :</h3>
<p>Bien que l&#8217;on puisse utiliser directement la commande <strong>awk</strong> dans le terminal, très vite on souhaite avoir un script un petit peu sophistiqué. Il est donc plus simple de le taper dans un fichier texte : <em>ligneImpaire.awk</em>.</p>
<p>A l&#8217;aide de n&#8217;importe quel éditeur de texte (personnellement j&#8217;utilise <a href="http://macromates.com/" target="_blank">TextMate</a>, mais les plus Geek pourront utiliser la commande <em>nano</em> ou <em>vi</em> dans le terminal) il faut créer le fichier. Mettons qu&#8217;on l&#8217;enregistre dans un dossier awk sur le bureau.</p>
<h3>2) Première ligne du fichier :</h3>
<p>La première ligne du fichier doit impérativement être : <div class="markCode"><div class="boxCode"><code></p>
<pre>#!/usr/bin/awk -f</pre>
<p></code></div></div></p>
<p>(avec le chemin trouvé à l&#8217;étape 0)</p>
<p>C&#8217;est primordial, cette ligne indique en effet au terminal qu&#8217;il s&#8217;agit d&#8217;un script AWK.</p>
<p>Ensuite il est bon d&#8217;écrire sur quelques lignes de commentaires à quoi sert le script que l&#8217;on est en train de taper (pour s&#8217;en souvenir plus tard).</p>
<p>Notre fichier contient donc :<br />
<div class="markCode"><div class="boxCode"><code></p>
<pre>#!/usr/bin/awk -f

# ligneImpaire.awk : affiche les lignes impaires d'un fichier
# http://jmini.fr/

(NR % 2 == 1) {
	print $0
}</pre>
<p></code></div></div></p>
<p>Pour le script en lui même je vous envoie vers d&#8217;excellents tutoriaux listé à la fin de cet article.</p>
<h3>3) Rendre le fichier exécutable :</h3>
<p>Dans le terminal on se place dans le dossier du script avec la commande <strong>cd</strong> : <div class="markCode"><div class="boxCode"><code></p>
<pre>cd ~/Desktop/awk/</pre>
<p></code></div></div></p>
<p>Ensuite on utilise la commande <strong>chmod</strong> pour rendre le fichier exécutable : <div class="markCode"><div class="boxCode"><code></p>
<pre>chmod +x ligneImpaire.awk</pre>
<p></code></div></div></p>
<h3>4) Lancer le fichier :</h3>
<p>Pour lancer le script il suffit de faire avec la commande <strong>./ligneImpaire.awk</strong> suivit des fichiers à traiter : <div class="markCode"><div class="boxCode"><code></p>
<pre>./ligneImpaire.awk texte.txt</pre>
<p></code></div></div></p>
<p>Et c&#8217;est tout !!!</p>
<p>J&#8217;ai écris un autre article sur <a href="http://docs.jmini.fr/notes/rendre-executable-terminal" title="Rendre un fichier exécutable dans le terminal">le fait de rendre un fichier exécutable dans le terminal</a></p>
<p>En pièce jointe de cet article, retrouvez l&#8217;archive contenant tous les fichiers : <a href="http://docs.jmini.fr/wp-content/uploads/2008/11/awk.zip" title="awk" class="attachment_file">awk.zip</a></p>
<h2>En savoir plus :</h2>
<ul>
<li><a href="http://fr.wikipedia.org/wiki/Awk">AWK</a> sur Wikipédia.</li>
<li><a href="http://nyal.developpez.com/tutoriel/gawk/index.php">Tutoriel awk</a> : simple, concis et efficace sur <a href="http://www.developpez.com/">devellopez.com</a>.</li>
<li><a href="http://ploug.eu.org/doc/principe-awk-lacroix.pdf">LE LANGAGE AWK</a> par Frédéric LACROIX et Dan BOG, tout sur AWK en 105 pages avec explications détaillées et exemples.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://docs.jmini.fr/pas-a-pas/se-servir-de-awk-dans-mac-os-x/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
