<?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>Carl Pelletier blog &#187; programmation</title>
	<atom:link href="http://carlpelletier.ca/category/programmation/feed/" rel="self" type="application/rss+xml" />
	<link>http://carlpelletier.ca</link>
	<description>Une immertion dans mon esprit, un peu de tout et moins que rien...</description>
	<lastBuildDate>Fri, 20 Nov 2009 19:55:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>squelette de script ruby pour command line</title>
		<link>http://carlpelletier.ca/2009/11/20/squelette-de-script-ruby-pour-command-line/</link>
		<comments>http://carlpelletier.ca/2009/11/20/squelette-de-script-ruby-pour-command-line/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 19:49:51 +0000</pubDate>
		<dc:creator>carlpelletier</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[rdoc]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[skeleton]]></category>
		<category><![CDATA[snippet]]></category>
		<category><![CDATA[squelette]]></category>

		<guid isPermaLink="false">http://carlpelletier.ca/?p=199</guid>
		<description><![CDATA[Depuis que je fais de la programmation Ruby, je n&#8217;arrête pas d&#8217;apprendre plein de petits trucs vraiment intéressants. Propulsé par un désir de partager, voici un &#171;&#160;squelette&#160;&#187; de script que je réutilise à chaque fois que l&#8217;occasion se présente. Je n&#8217;oserais jamais prendre le mérite d&#8217;avoir bâti ce script. J&#8217;ai pris le du code sur [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-184" title="ruby_logo" src="http://carlpelletier.ca/wp-content/uploads/2009/11/ruby_logo-300x107.gif" alt="ruby_logo" width="300" height="107" />Depuis que je fais de la programmation Ruby, je n&#8217;arrête pas d&#8217;apprendre plein de petits trucs vraiment intéressants. Propulsé par un désir de partager, voici un &laquo;&nbsp;squelette&nbsp;&raquo; de script que je réutilise à chaque fois que l&#8217;occasion se présente. Je n&#8217;oserais jamais prendre le mérite d&#8217;avoir bâti ce script. J&#8217;ai pris le du code sur le site <a href="http://blog.infinitered.com/entries/show/5">suivant</a>. J&#8217;ai changé quelques parties, mais j&#8217;ai surtout fait la version française. Si vous avez du crédit à donner en utilisant le script, donnez-le au développeur original.</p>

<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br /></div></td><td><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#008000; font-style:italic;">#!/usr/bin/env ruby </span><br />
<br />
<span style="color:#008000; font-style:italic;"># == Synopsis </span><br />
<span style="color:#008000; font-style:italic;"># TODO: Entrer la description de l'application ou du script.</span><br />
<span style="color:#008000; font-style:italic;">#</span><br />
<span style="color:#008000; font-style:italic;"># == Examples</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; TODO: Cette commande fait...</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; &nbsp; ruby_cl_skeleton foo.txt</span><br />
<span style="color:#008000; font-style:italic;">#</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; Autres exemples:</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; &nbsp; ruby_cl_skeleton -q bar.doc</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; &nbsp; ruby_cl_skeleton --verbose foo.html</span><br />
<span style="color:#008000; font-style:italic;">#</span><br />
<span style="color:#008000; font-style:italic;"># == Usage </span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; ruby_cl_skeleton [options] source_file</span><br />
<span style="color:#008000; font-style:italic;">#</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; For help use: ruby_cl_skeleton -h</span><br />
<span style="color:#008000; font-style:italic;">#</span><br />
<span style="color:#008000; font-style:italic;"># == Options</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; -h, --help &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Affiche l'aide</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; -v, --version &nbsp; &nbsp; &nbsp; Affiche la version courante</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; -q, --quiet &nbsp; &nbsp; &nbsp; &nbsp; Affiche le minimum possible, surpasse verbose</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; -V, --verbose &nbsp; &nbsp; &nbsp; Affiche détaillé</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; TODO: Ajouter les options que vous avez besoin</span><br />
<span style="color:#008000; font-style:italic;">#</span><br />
<span style="color:#008000; font-style:italic;"># == Author</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; Votre_nom</span><br />
<span style="color:#008000; font-style:italic;">#</span><br />
<span style="color:#008000; font-style:italic;"># == Copyright</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; Copyright (c) 2007 YourName. Licensed under the MIT License:</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; http://www.opensource.org/licenses/mit-license.php</span><br />
<span style="color:#008000; font-style:italic;"># TODO: remplacer toute les mentions ruby_cl_skeleton avec le nom de votre applicatoin</span><br />
<span style="color:#008000; font-style:italic;"># TODO: Remplacer Votre_nom avec votre vrai nom</span><br />
<span style="color:#008000; font-style:italic;"># TODO: Mettre à jour le &nbsp;Synopsis, Examples, etc</span><br />
<span style="color:#008000; font-style:italic;"># TODO: Changer la license si nécessaire</span><br />
<br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'optparse'</span> <br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rdoc/usage'</span><br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'ostruct'</span><br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'date'</span><br />
<br />
<br />
<span style="color:#9966CC; font-weight:bold;">class</span> App<br />
&nbsp; VERSION= <span style="color:#996600;">'0.0.1'</span><br />
<br />
&nbsp; attr_reader <span style="color:#ff3333; font-weight:bold;">:options</span><br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> initialize<span style="color:#006600; font-weight:bold;">&#40;</span>arguments, stdin<span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; <span style="color:#0066ff; font-weight:bold;">@arguments</span> = arguments<br />
&nbsp; &nbsp; <span style="color:#0066ff; font-weight:bold;">@stdin</span> = stdin<br />
<br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># On affecte les valeurs par défaut</span><br />
&nbsp; &nbsp; <span style="color:#0066ff; font-weight:bold;">@options</span> = OpenStruct.<span style="color:#9900CC;">new</span><br />
&nbsp; &nbsp; <span style="color:#0066ff; font-weight:bold;">@options</span>.<span style="color:#9900CC;">verbose</span> = <span style="color:#0000FF; font-weight:bold;">false</span><br />
&nbsp; &nbsp; <span style="color:#0066ff; font-weight:bold;">@options</span>.<span style="color:#9900CC;">quiet</span> = <span style="color:#0000FF; font-weight:bold;">false</span><br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;">#TODO: - Si vous avez d'autre option(s) vous devez les initialiser içi</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#008000; font-style:italic;"># Parse options, check arguments, then process the command</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> run<br />
<br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">if</span> parsed_options? <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> arguments_valid? <br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Start at #{DateTime.now}<span style="color:#000099;">\n</span><span style="color:#000099;">\n</span>&quot;</span> <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@options</span>.<span style="color:#9900CC;">verbose</span><br />
<br />
&nbsp; &nbsp; &nbsp; output_options <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@options</span>.<span style="color:#9900CC;">verbose</span> <span style="color:#008000; font-style:italic;"># [Optional]</span><br />
<br />
&nbsp; &nbsp; &nbsp; process_arguments &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; process_command<br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;<span style="color:#000099;">\n</span>Finished at #{DateTime.now}&quot;</span> <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@options</span>.<span style="color:#9900CC;">verbose</span><br />
<br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">else</span><br />
&nbsp; &nbsp; &nbsp; output_usage<br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; protected<br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> parsed_options?<br />
<br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># Specify options</span><br />
&nbsp; &nbsp; opts = OptionParser.<span style="color:#9900CC;">new</span> <br />
&nbsp; &nbsp; opts.<span style="color:#9900CC;">on</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'-v'</span>, <span style="color:#996600;">'--version'</span><span style="color:#006600; font-weight:bold;">&#41;</span> &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#123;</span> output_version ; <span style="color:#CC0066; font-weight:bold;">exit</span> <span style="color:#006666;">0</span> <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; opts.<span style="color:#9900CC;">on</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'-h'</span>, <span style="color:#996600;">'--help'</span><span style="color:#006600; font-weight:bold;">&#41;</span> &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span> output_help <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; opts.<span style="color:#9900CC;">on</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'-V'</span>, <span style="color:#996600;">'--verbose'</span><span style="color:#006600; font-weight:bold;">&#41;</span> &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#0066ff; font-weight:bold;">@options</span>.<span style="color:#9900CC;">verbose</span> = <span style="color:#0000FF; font-weight:bold;">true</span> <span style="color:#006600; font-weight:bold;">&#125;</span> &nbsp;<br />
&nbsp; &nbsp; opts.<span style="color:#9900CC;">on</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'-q'</span>, <span style="color:#996600;">'--quiet'</span><span style="color:#006600; font-weight:bold;">&#41;</span> &nbsp; &nbsp; &nbsp;<span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#0066ff; font-weight:bold;">@options</span>.<span style="color:#9900CC;">quiet</span> = <span style="color:#0000FF; font-weight:bold;">true</span> <span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># TO DO - add additional options</span><br />
<br />
&nbsp; &nbsp; opts.<span style="color:#9900CC;">parse</span>!<span style="color:#006600; font-weight:bold;">&#40;</span>@arguments<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#0000FF; font-weight:bold;">false</span><br />
<br />
&nbsp; &nbsp; process_options<br />
&nbsp; &nbsp; <span style="color:#0000FF; font-weight:bold;">true</span> &nbsp; &nbsp; &nbsp;<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#008000; font-style:italic;"># Performs post-parse processing on options</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> process_options<br />
&nbsp; &nbsp; <span style="color:#0066ff; font-weight:bold;">@options</span>.<span style="color:#9900CC;">verbose</span> = <span style="color:#0000FF; font-weight:bold;">false</span> <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@options</span>.<span style="color:#9900CC;">quiet</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> output_options<br />
&nbsp; &nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Options:<span style="color:#000099;">\n</span>&quot;</span><br />
<br />
&nbsp; &nbsp; <span style="color:#0066ff; font-weight:bold;">@options</span>.<span style="color:#9900CC;">marshal_dump</span>.<span style="color:#9900CC;">each</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>name, val<span style="color:#006600; font-weight:bold;">|</span> &nbsp; &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; &nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot; &nbsp;#{name} = #{val}&quot;</span><br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#008000; font-style:italic;"># True if required arguments were provided</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> arguments_valid?<br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># TO DO - implement your real logic here</span><br />
&nbsp; &nbsp; <span style="color:#0000FF; font-weight:bold;">true</span> <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#0066ff; font-weight:bold;">@arguments</span>.<span style="color:#9900CC;">length</span> == <span style="color:#006666;">1</span> <br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#008000; font-style:italic;"># Setup the arguments</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> process_arguments<br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># TO DO - place in local vars, etc</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> output_help<br />
&nbsp; &nbsp; output_version<br />
&nbsp; &nbsp; RDoc::usage<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;">#exits app</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> output_usage<br />
&nbsp; &nbsp; RDoc::usage<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'usage'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;"># gets usage from comments above</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> output_version<br />
&nbsp; &nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{File.basename(__FILE__)} version #{VERSION}&quot;</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> process_command<br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># TO DO - do whatever this app does</span><br />
<br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;">#process_standard_input # [Optional]</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">def</span> process_standard_input<br />
&nbsp; &nbsp; input = <span style="color:#0066ff; font-weight:bold;">@stdin</span>.<span style="color:#9900CC;">read</span> &nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># TO DO - process input</span><br />
<br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># [Optional]</span><br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># @stdin.each do |line| </span><br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># &nbsp;# TO DO - process each line</span><br />
&nbsp; &nbsp; <span style="color:#008000; font-style:italic;">#end</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
<br />
<span style="color:#008000; font-style:italic;"># Lance le script </span><br />
app = App.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>ARGV, STDIN<span style="color:#006600; font-weight:bold;">&#41;</span><br />
app.<span style="color:#9900CC;">run</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://carlpelletier.ca/2009/11/20/squelette-de-script-ruby-pour-command-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajouter ruby et rails doc dans spotlight et dictionary</title>
		<link>http://carlpelletier.ca/2009/02/09/ajouter-ruby-et-rails-doc-dans-spotlight-et-dictionary/</link>
		<comments>http://carlpelletier.ca/2009/02/09/ajouter-ruby-et-rails-doc-dans-spotlight-et-dictionary/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 18:03:56 +0000</pubDate>
		<dc:creator>carlpelletier</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://carlpelletier.wordpress.com/?p=66</guid>
		<description><![CDATA[Vous avez besoin de la documentation de ruby ou rails accessible directement de OSX? Rien de plus simple, il suffit de les intégrer à Dictionary.app sur OSX. Il seront par la suite disponible directement dans spotlight! C&#8217;est vraiment trop pratique et très rapide! Comment faire? Télécharger les deux fichiers suivants: ruby dictionary et rails dictionary [...]]]></description>
			<content:encoded><![CDATA[<p>Vous avez besoin de la documentation de ruby ou rails accessible directement de OSX?</p>

<p>Rien de plus simple, il suffit de les intégrer à Dictionary.app sur OSX. Il seront par la suite disponible directement dans spotlight!</p>

<p>C&#8217;est vraiment trop pratique et très rapide!</p>

<p>Comment faire?</p>

<ol>
    <li>Télécharger les deux fichiers suivants: <a href="http://www.priithaamer.com/files/Ruby.dictionary.zip">ruby dictionary</a> et <a href="http://www.priithaamer.com/files/Ruby%20on%20Rails.dictionary.zip" target="_blank">rails dictionary</a></li>
    <li>extraire les fichiers zip dans le folder ~/Library/Dictionaries. (si le folder n&#8217;existe pas, créer le.)</li>
    <li>Assurez-vous que les dictionnaires sont dans le top de liste de Dictionary.app, sinon vous ne verez pas le resultat dans spotlight.</li>
</ol>

<p>Et voila!</p>

<p>Pour plus de détails, svp aller sur ce <a href="http://www.priithaamer.com/blog/ruby-on-rails-dictionary-for-macosx">site</a>. C&#8217;est la que j&#8217;ai pris toute l&#8217;informations!</p>

<p>Happy hacking!</p>
]]></content:encoded>
			<wfw:commentRss>http://carlpelletier.ca/2009/02/09/ajouter-ruby-et-rails-doc-dans-spotlight-et-dictionary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Connaitre qui à ouvert un process..</title>
		<link>http://carlpelletier.ca/2009/01/19/connaitre-qui-a-ouvert-un-process/</link>
		<comments>http://carlpelletier.ca/2009/01/19/connaitre-qui-a-ouvert-un-process/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 17:40:32 +0000</pubDate>
		<dc:creator>carlpelletier</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[technologie]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[pid]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://carlpelletier.wordpress.com/?p=61</guid>
		<description><![CDATA[Récemment j&#8217;ai travailler à corriger un bug que j&#8217;avais avec Ferret Ce petit utilitaire sur unix est trop puissant: lsof. Lsof nous permet de savoir quel application à ouvert un fichier (pid). Voici l&#8217;exemple que j&#8217;utilise J&#8217;ai eu un connection timeout dans mon postgres. Je veux savoir la liste des process psql database_name; gm_core=# SELECT * [...]]]></description>
			<content:encoded><![CDATA[<p>Récemment j&#8217;ai travailler à corriger un bug que j&#8217;avais avec <a href="http://www.davebalmain.com/">Ferret</a></p>

<p>Ce petit utilitaire sur unix est trop puissant: lsof. Lsof nous permet de savoir quel application à ouvert un fichier (pid). Voici l&#8217;exemple que j&#8217;utilise</p>

<p>J&#8217;ai eu un connection timeout dans mon postgres. Je veux savoir la liste des process</p>

<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">psql database_name;</div></div>

<div class="codecolorer-container sql default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="sql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gm_core<span style="color: #66cc66;">=</span># <span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span> pg_stat_activity;<br />
<span style="color: #66cc66;">-</span><span style="color: #66cc66;">&#91;</span> RECORD <span style="color: #cc66cc;">1</span> <span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">-+</span><span style="color: #808080; font-style: italic;">--------------------------------</span><br />
datid &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">79357</span><br />
datname &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">|</span> gm_core<br />
procpid &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">23621</span><br />
usesysid &nbsp; &nbsp; &nbsp;<span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">19710</span><br />
usename &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">|</span> carlpelletier<br />
current_query <span style="color: #66cc66;">|</span><br />
waiting &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">|</span> f<br />
xact_start &nbsp; &nbsp;<span style="color: #66cc66;">|</span><br />
query_start &nbsp; <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">2009</span><span style="color: #66cc66;">-</span>07<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">20</span> <span style="color: #cc66cc;">15</span>:<span style="color: #cc66cc;">19</span>:<span style="color: #cc66cc;">57.845857</span><span style="color: #66cc66;">-</span>04<br />
backend_start <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">2009</span><span style="color: #66cc66;">-</span>07<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">20</span> <span style="color: #cc66cc;">15</span>:<span style="color: #cc66cc;">19</span>:<span style="color: #cc66cc;">46.448931</span><span style="color: #66cc66;">-</span>04<br />
client_addr &nbsp; <span style="color: #66cc66;">|</span><br />
client_port &nbsp; <span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">50838</span></div></div>

<p>On prend le client_port et on fait</p>

<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">lsof <span style="color: #660033;">-n</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #000000;">50838</span><br />
ruby &nbsp; &nbsp; &nbsp;<span style="color: #000000;">31377</span> &nbsp; &nbsp;usrgm &nbsp; 11u &nbsp; &nbsp; IPv4 &nbsp; <span style="color: #000000;">53993738</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TCP 127.0.0.1:<span style="color: #000000;">50838</span>-<span style="color: #000000; font-weight: bold;">&amp;</span>gt;127.0.0.1:postgres <span style="color: #7a0874; font-weight: bold;">&#40;</span>ESTABLISHED<span style="color: #7a0874; font-weight: bold;">&#41;</span><br />
postmaste <span style="color: #000000;">31380</span> postgres &nbsp; &nbsp;8u &nbsp; &nbsp; IPv4 &nbsp; <span style="color: #000000;">53993743</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TCP 127.0.0.1:postgres-<span style="color: #000000; font-weight: bold;">&amp;</span>gt;127.0.0.1:<span style="color: #000000;">50838</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span>ESTABLISHED<span style="color: #7a0874; font-weight: bold;">&#41;</span></div></div>

<p>Maintenant que nous avons le id du process, on peut voir le détails en faisant</p>

<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">ps</span> <span style="color: #660033;">-auxwww</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #000000;">31377</span><br />
usrgm &nbsp; &nbsp;<span style="color: #000000;">31377</span> &nbsp;<span style="color: #000000;">1.0</span> &nbsp;<span style="color: #000000;">1.6</span> <span style="color: #000000;">148068</span> <span style="color: #000000;">139456</span> ? &nbsp; &nbsp; Ss &nbsp; Jun09 <span style="color: #000000;">633</span>:<span style="color: #000000;">43</span> ruby script<span style="color: #000000; font-weight: bold;">/</span>ferret_server <span style="color: #660033;">-e</span> production start<br />
carl &nbsp; &nbsp; <span style="color: #000000;">30731</span> &nbsp;<span style="color: #000000;">0.0</span> &nbsp;<span style="color: #000000;">0.0</span> &nbsp;<span style="color: #000000;">4080</span> &nbsp;<span style="color: #000000;">740</span> pts<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span> &nbsp; &nbsp;S+ &nbsp; <span style="color: #000000;">13</span>:<span style="color: #000000;">55</span> &nbsp; <span style="color: #000000;">0</span>:00 <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">--exclude</span>=<span style="color: #000000; font-weight: bold;">*</span>.svn<span style="color: #000000; font-weight: bold;">*</span> <span style="color: #660033;">--color</span>=auto <span style="color: #000000;">31377</span></div></div>

<p>Dans le cas précédent, on peut voir que le problème de connection timeout est survenu à cause de Ferret_server. Il semble ne pas fermer les connections correctement. Est-ce vraiment Ferret ou ActiveRecord? La est la question!</p>

<p>Mon but est de démontré l&#8217;avantage de <em>lsof</em>. Je suis en train d&#8217;investiger sur le problèmes de ferret, mais je commence à trouver que c&#8217;est coder tout croche ce produit la. J&#8217;ai eu tellement de difficulté avec. Je pense aller vers Sphynx.</p>

<p>Merci à Mina Naguib pour sont aide et sont explication de la commande lsof.</p>
]]></content:encoded>
			<wfw:commentRss>http://carlpelletier.ca/2009/01/19/connaitre-qui-a-ouvert-un-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

