<?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>tomrochette.com &#187; tomzx</title>
	<atom:link href="http://www.tomrochette.com/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tomrochette.com</link>
	<description>What&#039;s up with my life</description>
	<lastBuildDate>Mon, 23 Aug 2010 02:49:33 +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>Éthique de l&#8217;ingénieur et drones militaires</title>
		<link>http://www.tomrochette.com/ethique-de-lingenieur-et-drones-militaires/</link>
		<comments>http://www.tomrochette.com/ethique-de-lingenieur-et-drones-militaires/#comments</comments>
		<pubDate>Sun, 02 May 2010 17:17:41 +0000</pubDate>
		<dc:creator>tomzx</dc:creator>
				<category><![CDATA[Général]]></category>

		<guid isPermaLink="false">http://www.tomrochette.com/?p=512</guid>
		<description><![CDATA[Les départements militaires sont souvent les premiers à placer leur argent dans des technologies révolutionnaires qui pourraient leur permettre d’avoir un avantage stratégique sur leurs ennemis. Un exemple connu est celui de la conception de l’ordinateur. Les ordinateurs avaient comme but premier d’effectuer le calcul d’équations complexes décrivant la trajectoire d’un projectile. Ces équations contenaient [...]]]></description>
			<content:encoded><![CDATA[<p>Les départements militaires sont souvent les premiers à placer leur argent dans des  technologies révolutionnaires qui pourraient leur permettre d’avoir un avantage stratégique sur leurs ennemis. Un exemple connu est celui de la conception de l’ordinateur. Les ordinateurs avaient comme but premier d’effectuer le calcul d’équations complexes décrivant la trajectoire d’un projectile. Ces équations contenaient plusieurs paramètres tels que la vitesse du vent, la distance désirée, la gravité ainsi que la vitesse de déplacement du navire qui tirerait le projectile. Avec les ordinateurs, les scientifiques étaient en mesure d’effectuer ces calculs de manière accélérée. Ils pouvaient de plus assurer que les calculs ne contiendraient pas d’erreurs humaines puisqu’il fallait répéter cette même tâche plusieurs centaines de fois. Une seconde invention développée par un département militaire, DARPA (Defense Advanced Research Projects Agency), est Internet, un des systèmes de communication les plus employés à l’heure actuelle. </p>
<p>Avec les avancées technologiques effectuées au fil des années, les départements militaires ont commencé à chercher des moyens d’accroitre leur capacité d’absorption d’information. Il fallait de plus que cela ne nécessite pas l’augmentation du personnel nécessaire pour ce faire. Une augmentation dans le volume de communication aurait pour impact d’augmenter les chances de transmettre des messages subtilement différents entre individus, ce qui pourrait causer de graves problèmes, surtout en situation d’urgence. Afin d’accroitre leur intelligence sur le terrain en temps de guerre, les départements militaires ont acheté des drones aériens provenant de contractants. Un drone aérien est en quelque sorte un robot, semblable à un avion, mais sans pilote dans le cockpit. Le drone est piloté à distance par un pilote, les deux communiquant par système radio ou satellite. Ces drones ont pour objectif de survoler certains points cibles afin d’obtenir de<br />
l’intelligence et d’attaquer des cibles stratégiques à l’aide de l’information obtenue de diverses sources. </p>
<p>Les recherches actuelles tentent de concevoir des drones qui seraient pilotés automatiquement (sans assistance humaine) et capables de communiquer entre eux afin d’augmenter leur efficacité globale. La conception de systèmes étant capables de tuer se basant sur une intelligence artificielle ou des décisions préétablies amène à poser la question suivante :  </p>
<div style="text-align: center;"><strong>Est-il éthiquement défendable pour un ingénieur de concevoir<br />
des drones aériens intelligents employés pour des fins militaires?</strong></div>
<p>Afin d’arriver à une conclusion justifiée sur cette question, une étude de chacune des positions sera présentée. Premièrement, il s’agira de comprendre et analyser les raisons qui appuient la position, c’est-à-dire qu’il est actuellement défendable pour un ingénieur de concevoir de tels systèmes. Deuxièmement, nous aborderons les raisons qui soutiennent qu’il n’est pas défendable de concevoir ces systèmes intelligents. Finalement, une synthèse de cette discussion permettra d’établir la position qui semble la plus appropriée pour l’instant. </p>
<div class="alert">Pour lire l’ensemble du texte: <a href='http://www.tomrochette.com/wp-content/uploads/2010/05/SSH5501-Travail-personnel.pdf'>Télécharger le PDF</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.tomrochette.com/ethique-de-lingenieur-et-drones-militaires/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Marshal un hash avec proc</title>
		<link>http://www.tomrochette.com/marshal-un-hash-avec-proc/</link>
		<comments>http://www.tomrochette.com/marshal-un-hash-avec-proc/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 06:15:15 +0000</pubDate>
		<dc:creator>tomzx</dc:creator>
				<category><![CDATA[Programmation]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.tomrochette.com/?p=503</guid>
		<description><![CDATA[Il arrive souvent que l&#8217;on veut écrire un hash imbriqué, tel que objet[:unevaleur][:unesecondevaleur] accédant à la valeur :unesecondevaleur du hash contenu dans objet[:unevaleur]. Voici une implémentation simpliste de la chose. 1 X = Hash.new &#123;&#124;h, k&#124; h&#91;k&#93; = Hash.new&#40;0&#41;&#125; Avec ce code, à chaque fois qu&#8217;on crée un hash non-existant dans X, on ajoute un [...]]]></description>
			<content:encoded><![CDATA[<p>Il arrive souvent que l&#8217;on veut écrire un hash imbriqué, tel que <strong>objet[:unevaleur][:unesecondevaleur]</strong> accédant à la valeur <strong>:unesecondevaleur</strong> du hash contenu dans <strong>objet[:unevaleur]</strong>. Voici une implémentation simpliste de la chose.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">X = <span style="color:#CC00FF; font-weight:bold;">Hash</span>.<span style="color:#9900CC;">new</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>h, k<span style="color:#006600; font-weight:bold;">|</span> h<span style="color:#006600; font-weight:bold;">&#91;</span>k<span style="color:#006600; font-weight:bold;">&#93;</span> = <span style="color:#CC00FF; font-weight:bold;">Hash</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#125;</span></pre></td></tr></table></div>

<p>Avec ce code, à chaque fois qu&#8217;on crée un hash non-existant dans X, on ajoute un nouveau hash avec 0 comme valeur par défaut. Si maintenant on veut marshaller X, on obtient l&#8217;erreur suivante:</p>
<blockquote><p>Marshal.dump(X)<br />
TypeError: can&#8217;t dump hash with default proc</p></blockquote>
<p>On obtient cette erreur puisque, lorsqu&#8217;on crée X, on a passé un bloc à new ce qui fait que lorsqu&#8217;on veut le marshaller, Ruby n&#8217;est pas mesure de marshaller le proc associé.<br />
Afin d&#8217;être en mesure de marshaller X, il suffit simplement d&#8217;éliminer le proc en effectuant une copie vers un nouveau hash sans proc.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">Y = <span style="color:#CC00FF; font-weight:bold;">Hash</span>.<span style="color:#9900CC;">new</span>
X.<span style="color:#9900CC;">each</span> <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">|</span>h, k<span style="color:#006600; font-weight:bold;">|</span> Y<span style="color:#006600; font-weight:bold;">&#91;</span>h<span style="color:#006600; font-weight:bold;">&#93;</span> = X<span style="color:#006600; font-weight:bold;">&#91;</span>h<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span>
<span style="color:#CC00FF; font-weight:bold;">Marshal</span>.<span style="color:#9900CC;">dump</span><span style="color:#006600; font-weight:bold;">&#40;</span>Y<span style="color:#006600; font-weight:bold;">&#41;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://www.tomrochette.com/marshal-un-hash-avec-proc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software developer</title>
		<link>http://www.tomrochette.com/software-developer/</link>
		<comments>http://www.tomrochette.com/software-developer/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 22:53:36 +0000</pubDate>
		<dc:creator>tomzx</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[Philosophie]]></category>

		<guid isPermaLink="false">http://www.tomrochette.com/software-engineering/</guid>
		<description><![CDATA[A man is flying in a hot air balloon and realizes he is lost. He reduces height and spots a man down below. He lowers the balloon further and shouts: &#8220;Excuse me, can you tell me where I am?&#8221; The man below says: &#8220;Yes you&#8217;re in a hot air balloon, hovering 30 feet above this [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>A man is flying in a hot air balloon and realizes he is lost. He reduces height and spots a man down below. He lowers the balloon further and shouts: &#8220;Excuse me, can you tell me where I am?&#8221;</p>
<p>The man below says: &#8220;Yes you&#8217;re in a hot air balloon, hovering 30 feet above this field.&#8221;</p>
<p>&#8220;You must be a software developer,&#8221; says the balloonist.</p>
<p>&#8220;I am,&#8221; replies the man. &#8220;How did you know?&#8221;</p>
<p>&#8220;Well,&#8221; says the balloonist, &#8220;everything you have told me is technically correct, but it&#8217;s of no use to anyone.&#8221;</p>
<p>The man below says, &#8220;You must work in business as a manager.&#8221; &#8220;I do,&#8221; replies the balloonist, &#8220;but how did you know?&#8221;</p>
<p>&#8220;Well,&#8221; says the man, &#8220;you don&#8217;t know where you are or where you are going, but you expect me to be able to help. You&#8217;re in the same position you were before we met but now it&#8217;s my fault.&#8221; </p></blockquote>
<p><strong>Source:</strong> <a href="http://www.codinghorror.com/blog/archives/000230.html">Coding Horror</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tomrochette.com/software-developer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Développement logiciel sur plateforme Linux et Windows</title>
		<link>http://www.tomrochette.com/developpement-logiciel-sur-plateforme-linux-et-windows/</link>
		<comments>http://www.tomrochette.com/developpement-logiciel-sur-plateforme-linux-et-windows/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 02:13:45 +0000</pubDate>
		<dc:creator>tomzx</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[Logiciels]]></category>
		<category><![CDATA[Programmation]]></category>

		<guid isPermaLink="false">http://www.tomrochette.com/?p=265</guid>
		<description><![CDATA[Le domaine informatique a toujours été dominé par trois géants (du côté consommateur) : Linux, Windows et Macintosh. Les trois systèmes étant très différents, cela a toujours causé des complications aux programmeurs qui voulaient rendre leur code accessible à une plus grande population. Ainsi, ils devaient « porter » leurs codes vers une nouvelle plateforme, [...]]]></description>
			<content:encoded><![CDATA[<p>Le domaine informatique a toujours été dominé par trois géants (du côté consommateur) : Linux, Windows et Macintosh. Les trois systèmes étant très différents, cela a toujours causé des complications aux programmeurs qui voulaient rendre leur code accessible à une plus grande population. Ainsi, ils devaient « porter » leurs codes vers une nouvelle plateforme, soit pour passer de Windows à Macintosh ou encore de Linux vers Windows par exemple. Afin de diminuer cette tâche qui se verrait devenir répétitive, ces développeurs ont eut l’idée de regrouper les ensembles de codes similaires afin d’en former des librairies qu’ils pourraient réutiliser pour accélérer le développement d’applications futures.</p>
<p>Avec l’ensemble des librairies qui ont été codés avec le temps (GTK, FTLK, Qt, wxWidgets, OpenGL, SDL, etc.), la majorité des plateformes informatiques ont commencés à devenir de plus en plus uniformes, permettant ainsi de déployer un même code sur plusieurs machines utilisant des systèmes d’opérations différents. On observe de plus la présence d’environnements de développement intégrés (EDI) multi-plateformes tel que Netbeans, Eclipse et Code::Blocks. Toutefois, il reste à déterminer quelle plateforme est la plus apte à permettre un développement qui sera rapide, efficace et de qualité. Afin de débattre de cette question, il est nécessaire d’évaluer certains aspects essentiels à la création d’un logiciel. Un logiciel peut être très facile à programmer mais être de piètre qualité en termes de performance (facilité de développement). Il peut être très long à programmer mais ne rien coûter (coûts reliées au développement). Les outils que les plateformes nous offrent peuvent être flexibles mais nécessiter une grande connaissance de ceux qui les emploient. Pour le développeur qui souhaite vendre son logiciel, il faut aussi connaître les diverses restrictions qui s’appliquent lorsqu’on emploi une librairie. Bref, il s’agit ici d’un ensemble d’aspects que nous aborderons afin de déterminer quelle plateforme entre Windows et Linux convient le mieux à un programmeur.</p>
<div class="alert">Pour lire l&#8217;ensemble du texte: <a href='http://www.tomrochette.com/wp-content/uploads/2009/04/log2410-tom-rochette.pdf'>Télécharger le PDF</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.tomrochette.com/developpement-logiciel-sur-plateforme-linux-et-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Protected: La motivation</title>
		<link>http://www.tomrochette.com/la-motivation/</link>
		<comments>http://www.tomrochette.com/la-motivation/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 01:18:43 +0000</pubDate>
		<dc:creator>tomzx</dc:creator>
				<category><![CDATA[Philosophie]]></category>

		<guid isPermaLink="false">http://www.tomrochette.com/?p=189</guid>
		<description><![CDATA[There is no excerpt because this is a protected post.]]></description>
			<content:encoded><![CDATA[<form action="http://www.tomrochette.com/wp-pass.php" method="post">
<p>This post is password protected. To view it please enter your password below:</p>
<p><label for="pwbox-189">Password:<br />
<input name="post_password" id="pwbox-189" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="Submit" /></p></form>
]]></content:encoded>
			<wfw:commentRss>http://www.tomrochette.com/la-motivation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting things done</title>
		<link>http://www.tomrochette.com/getting-things-done/</link>
		<comments>http://www.tomrochette.com/getting-things-done/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 01:17:40 +0000</pubDate>
		<dc:creator>tomzx</dc:creator>
				<category><![CDATA[Philosophie]]></category>

		<guid isPermaLink="false">http://www.tomrochette.com/?p=178</guid>
		<description><![CDATA[Objectif J&#8217;écris ce message dans le but d&#8217;aider plusieurs d&#8217;entre mes amis qui semblent avoir des difficultés à se pousser à accomplir certaines tâches. Il s&#8217;agit ici d&#8217;une méthode élaborée par David Allen, l&#8217;auteur du livre Getting Things Done. GTD est une méthode simple qui a pour objectif de regrouper l&#8217;ensemble de ses tâches pour [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Objectif</strong><br />
J&#8217;écris ce message dans le but d&#8217;aider plusieurs d&#8217;entre mes amis qui semblent avoir des difficultés à se pousser à accomplir certaines tâches. Il s&#8217;agit ici d&#8217;une méthode élaborée par David Allen, l&#8217;auteur du livre <a href="http://www.amazon.ca/Getting-Things-Done-Stress-Free-Productivity">Getting Things Done</a>. GTD est une méthode simple qui a pour objectif de regrouper l&#8217;ensemble de ses tâches pour ensuite les sous-diviser en sous-tâches qui seront facilement accomplies. La méthode que je présente ici est tirée de cette méthode, mais plus spécifique aux tâches de nature</p>
<p><strong>À prendre avec un grain de sel</strong><br />
Toutefois, je dois vous avertir. Bien que la méthode ait pour objectif de vous aider à focuser sur votre travail, il peut arriver que de la surutiliser puisse mener à une démotivation. En effet, si vous en venez à décortiquer vos tâches en une centaine de petites tâches, vous vous rendrez alors compte que vous en aurez pour un bon moment avant d&#8217;avoir fini. L&#8217;idée ici est simplement qu&#8217;il vous faudra être persistant et patient. Puisque vous avez un plan, vous serez donc en mesure de vous approcher peu à peu de votre objectif final. Il est sûr que ce n&#8217;est peu être pas aussi excitant que d&#8217;accomplir quelque chose d&#8217;un coup, mais si vous ne faite rien de tout vos petits moments passés à ne rien faire, vous pourriez accomplir pas mal de travail et être possiblement plus satisfait.</p>
<p>Ce que je tente de dire ici, c&#8217;est simplement qu&#8217;un gros projet ne s&#8217;accomplis pas de de lui même. Aussi, même si votre projet s&#8217;étale sur plusieurs jours/semaine/mois/années, et qu&#8217;il se complète, cela est déjà beaucoup mieux que de n&#8217;avoir jamais rien fait de son temps (je parle spécifiquement à ceux qui regardent trop facebook pour perdre leur temps ou encore youtube, mais pas ceux qui ont des objectifs spécifiques envers ceux-ci).</p>
<p><strong>GTD, en gros</strong><br />
Bref, revenons sur le sujet. GTD est composé d&#8217;un ensemble d&#8217;étapes:</p>
<ol>
<li>Rassembler toutes les tâches qui doivent être accomplies</li>
<li>Définir le type de tâches</li>
<li>Former un plan d&#8217;action</li>
<li>Agir (ou déléguer)</li>
</ol>
<p>À la base, GTD s&#8217;applique sur des documents format papier. Il permet de définir ce qu&#8217;on doit faire pour toute &#8220;donnée&#8221;, que ce soit un chèque, une lettre d&#8217;un ami, le besoin d&#8217;acheter une lampe, un livre, des questions que l&#8217;on se pose, etc. Tout ce qui est dans notre tête et qui perturbe notre focus mental devrait être écrit sur une feuille de papier. Il est suggéré que d&#8217;écrire nos pensées sous forme papier libère l&#8217;esprit et je suis de cet avis. De cette manière, vous savez que vous avez un endroit où cette pensée ce trouve et vous serez en mesure de repasser dessus à un moment donné.</p>
<p>Passons donc à chacune des étapes et voyons ce qui doit être accompli.</p>
<p>Voici quelques aides-mémoire qui pourrons rapidement vous remémorer les quelques concepts imports de la méthode.<br />

<a href='http://www.tomrochette.com/getting-things-done/99008746_b94209d01a/' title='99008746_b94209d01a'><img width="150" height="150" src="http://www.tomrochette.com/wp-content/uploads/2009/01/99008746_b94209d01a-150x150.jpg" class="attachment-thumbnail" alt="99008746_b94209d01a" title="99008746_b94209d01a" /></a>
<a href='http://www.tomrochette.com/getting-things-done/gmv-gtdfr-ref/' title='gmv-gtdfr-ref'><img width="150" height="150" src="http://www.tomrochette.com/wp-content/uploads/2009/01/gmv-gtdfr-ref-150x150.gif" class="attachment-thumbnail" alt="gmv-gtdfr-ref" title="gmv-gtdfr-ref" /></a>
<a href='http://www.tomrochette.com/getting-things-done/gtd_2dflowchart/' title='gtd_2dflowchart'><img width="150" height="150" src="http://www.tomrochette.com/wp-content/uploads/2009/01/gtd_2dflowchart-150x150.gif" class="attachment-thumbnail" alt="gtd_2dflowchart" title="gtd_2dflowchart" /></a>
</p>
<p><strong>Rassembler toutes les tâches qui doivent être accomplies</strong><br />
Premièrement, il s&#8217;agit de mettre à un même endroit toutes les tâches qui doivent être résolues. Un endroit commun a pour objectif de permettre à notre esprit d&#8217;être à l&#8217;aise avec le fait que certaines pensées ne seront plus transportées avec nous à longueur de journée.</p>
<p>Commencez donc par faire une liste de toutes les tâches que vous avez à faire pour les prochains jours, puis les prochaines semaines et ainsi de suite. Par la suite, demandez vous quels sont les problèmes que vous avez actuellement et qui perturbent votre focus lorsque vous essayez de travailler. Finalement, regrouper toutes les lettres, textes, messages et autres sur lesquels vous devez poser une action (ou pas). On fait ça pour pouvoir ensuite passer à travers et déterminer ce qu&#8217;on doit faire de chacun des items.</p>
<p><strong>Définir le type des tâches</strong><br />
Pour chacun des items que l&#8217;on a, on doit décider de quel type de tâche il s&#8217;agit. Est-ce un item qu&#8217;on doit éliminer? Garder pour être revue plus tard (on ne peut rien faire pour cette tâche actuellement) ou encore un item qui doit être gardé comme référence?</p>
<p>Si on peut s&#8217;en débarasser, alors on le jete et on ne se pose plus de question.<br />
Si on doit le revoir plus tard, on le transfère dans la pile à être revue. Vous pouvez définir comment vous voulez revoir vos documents (chaque jours/mois/semaines/etc).<br />
Si l&#8217;item est gardé comme référence, il faut s&#8217;assurer de bien le classer. Un document mal classé est l&#8217;équivalent de ne pas avoir de document et aussi bien l&#8217;avoir jeté.</p>
<p><strong>Former un plan d&#8217;action</strong><br />
Pour chacune des tâches qui nécessite une action de votre part, vous pouvez définir un plan d&#8217;action. Il s&#8217;agit ici de lister les grands points de la tâche que vous aurez à accomplir. Dans mon cas, j&#8217;aime bien définir l&#8217;ensemble de la tâche à accomplir et si certains éléments sont à ajouter, je le fait au fur et à mesure. La méthode GTD elle, dit simplement de définir quel doit être la prochaine tâche que vous devez accomplir afin de faire avancer votre tâche.</p>
<p>Je préfère définir la tâche au complet car cela me permet de déceler les problèmes plus tôt et ainsi faire une planification. L&#8217;objectif est de me permettre d&#8217;optimiser ce que j&#8217;accomplis. Si je suis en mesure de définir un ensemble de tâche qui peut être accomplis d&#8217;un coup à un même endroit, alors je viens de me sauver beaucoup de temps. Un exemple grossier serait une personne qui fait une liste d&#8217;épicerie avant d&#8217;y aller. À l&#8217;opposé, ne pas faire une liste, et aller à l&#8217;épicerie, item par item, ne serait aucunement efficace. Bien que l&#8217;exemple soit bête, c&#8217;est un très bon exemple de compactage d&#8217;activités.</p>
<p><strong>Agir (ou déléguer)</strong><br />
Avec votre prochaine action de définie, il ne vous reste plus qu&#8217;à faire celle-ci. Une tâche ne peut tristement pas s&#8217;accomplir par elle-même et il vous faudra donc mettre les efforts requis pour la mener à terme. En ayant suivi ces étapes, vous vous sentirez probablement un peu mieux de savoir que votre projet avance, même si ce n&#8217;est qu&#8217;à petit pas.</p>
<p>Dans mon cas, j&#8217;ai adopté cette mentalité surtout puisque j&#8217;ai remarqué que je perdais beaucoup de mon temps à ne rien &#8220;effectuer&#8221; du tout. Naviguer sur Internet de part et d&#8217;autre sans aucune raison, lire des articles sur l&#8217;informatique sans objectif précis, avoir des discussions sans but sont quelques uns des exemples de ce que je faisais. Et je ne suis pas fier de dire que c&#8217;était du temps bien employé.</p>
<p><strong>Conclusion</strong><br />
Avec un peu de travail, même un 5 minutes par jour, on peut accomplir vraiment beaucoup de travail. Je crois qu&#8217;il vous faut voir à long terme, et arrêter de vouloir tout de suite. Par exemple, 5 minutes par jour pour apprendre une langue, ça représente 30h d&#8217;apprentissage par an. Ce n&#8217;est peut-être pas beaucoup, mais sachant qu&#8217;un enfant commence généralement à apprendre l&#8217;anglais vers la troisième année du primaire et à s&#8217;en servir tous les jours (écouter la télévision ou encore servir des clients anglais) vers le secondaire 5, ça fait presque 8 ans d&#8217;apprentissage, et donc 240h. Vous voyez, avec le temps, les choses peuvent prendre beaucoup d&#8217;envergure, enfin, seulement si on leur en donne.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tomrochette.com/getting-things-done/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gérer facilement la mise à jour de son site</title>
		<link>http://www.tomrochette.com/gerer-facilement-la-mise-a-jour-de-son-site/</link>
		<comments>http://www.tomrochette.com/gerer-facilement-la-mise-a-jour-de-son-site/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 01:29:15 +0000</pubDate>
		<dc:creator>tomzx</dc:creator>
				<category><![CDATA[Sites]]></category>

		<guid isPermaLink="false">http://www.tomrochette.com/?p=150</guid>
		<description><![CDATA[Tout développeur web sait qu&#8217;il peut être long et ennuyant de modifier les fichiers sur son serveur à distance afin de mettre les nouvelles versions de ceux-ci. Par FTP, la tâche peut être longue étant donné que le logiciel va lancer une commande FTP de suppression pour chaque fichier (si vous n&#8217;écrasez pas vos fichiers)&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.tomrochette.com/wp-content/uploads/2008/12/subversion.png" alt="subversion" title="subversion" width="500" height="75" class="alignnone size-full wp-image-173" />Tout développeur web sait qu&#8217;il peut être long et ennuyant de modifier les fichiers sur son serveur à distance afin de mettre les nouvelles versions de ceux-ci. Par FTP, la tâche peut être longue étant donné que le logiciel va lancer une commande FTP de suppression pour chaque fichier (si vous n&#8217;écrasez pas vos fichiers)&#8230; un peu long.</p>
<p>Voici ce que je vous propose. Premièrement, j&#8217;espère qu&#8217;en tant que développeur, vous avez appris à vous servir de SVN (Subversion). Il s&#8217;agit d&#8217;un simple outil qui vous permet de garder un historique de votre travail, et vous permet de revenir à des versions précédentes si nécessaire.</p>
<p>Bref, l&#8217;idée ici est simple. À l&#8217;aide de la commande <strong>svn export</strong>, nous pouvons mettre à jour de façon rapide notre version en production. Bien sûr, pour pouvoir faire cela, il faut avoir un accès SSH à son serveur, ce que tout utilisateur d&#8217;un service d&#8217;hébergement partagé (shared) n&#8217;aura probablement pas. Si toutefois, vous travaillez sur un serveur dédié, alors voici ce que vous pouvez faire:</p>
<p>1. En local, établissez une copie de travail de votre dépôt SVN (celui-ci peut être situé n&#8217;importe où). L&#8217;idée est que votre ordinateur local soit en mesure de faire fonctionner vos scripts (PHP dans mon cas). Je travail actuellement avec une VM avec Fedora d&#8217;installé, et pour modifier les fichiers, je peux soit travailler directement de la VM, ou encore via FTP directement. Dans mon cas, je préfère travailler par FTP sur mon Macintosh avec TextMate, mais chacun ses préférences.</p>
<p>2. Avec une copie locale, vous êtes en mesure de faire vos modifications. Lorsque vous êtes satisfait, vous faites un <strong>svn commit</strong> de vos fichiers pour qu&#8217;ils soient enregistrés dans votre dépôt SVN.</p>
<p>3. À présent, vous pouvez mettre votre copie de production à jour en une seule commande, soit <strong>svn export</strong>.</p>
<p>Afin de me simplifier la tâche, je me suis fait un petit script qui fait svn export avec l&#8217;url nécessaire et il ne me reste donc plus qu&#8217;à simplement appeler le script pour que la mise à jour soit effectuée. Ainsi, plus besoin de jouer avec son FTP pour tout changer, quelques commandes de console et le tour est joué. Dans mon cas, une mise à jour prend environ 10-15 secondes, pour 10 Mo, ce qui est excellent (le dépôt SVN se trouve sur le serveur de production).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tomrochette.com/gerer-facilement-la-mise-a-jour-de-son-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajouter une image à partir d&#8217;une URL distante</title>
		<link>http://www.tomrochette.com/ajouter-une-image-a-partir-dune-url-distante/</link>
		<comments>http://www.tomrochette.com/ajouter-une-image-a-partir-dune-url-distante/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 01:37:17 +0000</pubDate>
		<dc:creator>tomzx</dc:creator>
				<category><![CDATA[Général]]></category>

		<guid isPermaLink="false">http://www.tomrochette.com/?p=103</guid>
		<description><![CDATA[J&#8217;ai toujours détesté le processus de devoir télécharger une image pour ensuite l&#8217;uploader sur mon blog. Deux étapes, c&#8217;est toujours beaucoup trop comparativement à une seul. Enfin, j&#8217;ai découvert qu&#8217;il est possible de télécharger directement les images distantes en insérant l&#8217;url lorsque WordPress nous demande l&#8217;endroit du fichier &#8220;local&#8221;.]]></description>
			<content:encoded><![CDATA[<p>J&#8217;ai toujours détesté le processus de devoir télécharger une image pour ensuite l&#8217;uploader sur mon blog. Deux étapes, c&#8217;est toujours beaucoup trop comparativement à une seul. Enfin, j&#8217;ai découvert qu&#8217;il est possible de télécharger directement les images distantes en insérant l&#8217;url lorsque WordPress nous demande l&#8217;endroit du fichier &#8220;local&#8221;.</p>
<p><a href="http://www.tomrochette.com/wp-content/uploads/2008/08/exemple-upload.png" rel="lightbox"><img src="http://www.tomrochette.com/wp-content/uploads/2008/08/exemple-upload-255x300.png" ></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tomrochette.com/ajouter-une-image-a-partir-dune-url-distante/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Programmer en objet PHP</title>
		<link>http://www.tomrochette.com/programmer-en-objet-php/</link>
		<comments>http://www.tomrochette.com/programmer-en-objet-php/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 00:06:26 +0000</pubDate>
		<dc:creator>tomzx</dc:creator>
				<category><![CDATA[Programmation]]></category>

		<guid isPermaLink="false">http://www.tomrochette.com/?p=95</guid>
		<description><![CDATA[Suite à mon article La programmation orientée objet, je vais vous introduire à la POO (programmation orientée objet) version PHP, ce qui me permettra par la suite de vous en apprendre plus sur la programmation à grande échelle. Commençons donc par les bases. L&#8217;objet en PHP est semblable à celui dans les autres langages: il [...]]]></description>
			<content:encoded><![CDATA[<p>Suite à mon article <a href="http://www.tomrochette.com/la-programmation-orientee-objet/">La programmation orientée objet</a>, je vais vous introduire à la POO (programmation orientée objet) version PHP, ce qui me permettra par la suite de vous en apprendre plus sur la programmation à grande échelle.</p>
<p>Commençons donc par les bases. L&#8217;objet en PHP est semblable à celui dans les autres langages: il contient des attributs (variables) ainsi qu&#8217;un ensemble de méthodes nous permettant de le manipuler.</p>
<p>Afin de rendre ce texte aussi utile qu&#8217;agréable, voici donc un petit objet, qui est en fait une page html:</p>
<pre class="brush: php">
class Page {
	private $title = &#039;&#039;;
	private $content = &#039;&#039;;

	public function __construct($title = &#039;Titre par défaut&#039;, $content = &#039;Je suis du contenu&#039;)
	{
		$this-&gt;title = $title;
		$this-&gt;content = $content;
	}

	public function setTitle($title)
	{
		$this-&gt;title = $title;
	}

	public function setContent($content)
	{
		$this-&gt;content = $content;
	}

	public function render()
	{
		echo &#039;&lt;html&gt;&#039;;
		echo &#039;&lt;head&gt;&#039;;
		echo &#039;&lt;title&#039; . $this-&gt;title . &#039;&lt;/title&gt;&#039;;
		echo &#039;&lt;/head&gt;&#039;;
		echo &#039;&lt;body&gt;&#039;;
		echo $this-&gt;content;
		echo &#039;&lt;/body&gt;&#039;;
		echo &#039;&lt;/html&gt;&#039;;
	}
}
</pre>
<p>(oui, cette méthode render() est plutôt malpropre, mais pour les bien de la cause, on va souffrir un peu!)<br />
Ainsi, avec cet objet, il m&#8217;est possible d&#8217;afficher une page HTML dont je peux modifier dynamiquement le contenu ainsi que le titre. Par exemple</p>
<pre class="brush: php">
$page = new Page();
$page-&gt;setTitle(&#039;Accueil&#039;);
$page-&gt;setContent(&#039;Ceci est un contenu vraiment intéressant!&#039;);
$page-&gt;render();
</pre>
<p>Me permet en 4 lignes d&#8217;afficher une page HTML complète (bien sûr il manque quelques tags pour la rendre valide w3c!)</p>
<p>Bon, maintenant voyons ce qui se passe vraiment. Premièrement, on a écrit la définition de notre objet, notre page doit avoir un titre et un contenu. Ce sont nos deux variables privées ($title et $content) car par défaut, un objet veut garder ses attributs (variables) à lui seul. Il en est le seul propriétaire et veut donc être le seul qui peut avoir le plaisir de les modifier. Bien sûr, il est possible de permettre aux autres de modifier ces variables en les rendant publiques, mais pourquoi gâcher le plaisir de notre objet???</p>
<p>Par la suite, on déclare deux méthodes qui permettent de modifier les variables par leur intermédiaire: setTitle($title) et setContent($content). La méthode __construct (débutant en PHP5) est l&#8217;équivalent du constructeur en C++. Lorsqu&#8217;on fait new Page(), il appelle le constructeur en lui donnant aucun attribut, il se contentera donc d&#8217;utiliser ceux par défaut. Finalement, la méthode render() permet l&#8217;affichage dans le navigateur du contenu précédemment affecté par les deux méthodes setTitle et setContent.</p>
<p>Pour ceux qui ne comprennent absolument rien de ce qui vient d&#8217;être dit, passons en mode ralenti <img src='http://www.tomrochette.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre class="brush: php">
$page = new Page();
</pre>
<p>Ceci déclare un nouvel objet Page. Pour que PHP puisse utiliser un objet, il faut que celui-ci existe. Donc, en faisant new Page(), on dit à PHP &#8220;SVP mon Dieu, crée une Page sans attributs&#8221;. PHP, notre Dieu, fait. $page = permet d&#8217;attribuer ce nouvel objet à une variable pour le manipuler par la suite.</p>
<pre class="brush: php">
$page-&gt;setTitle(&#039;Accueil&#039;);
</pre>
<p>Ici, on dit à notre objet, par l&#8217;intermédiaire de la flèche qui signifie que l&#8217;on descend dans la branche d&#8217;héritage, que l&#8217;on veut qu&#8217;il exécute sa méthode setTitle avec comme paramètre le texte Accueil. Cela aura pour effet de modifier la variable interne $title de notre objet pour &#8216;Accueil&#8217;.</p>
<pre class="brush: php">
$page-&gt;setContent(&#039;Ceci est un contenu vraiment intéressant!&#039;);
</pre>
<p>Comme précédemment, on demande à notre objet d&#8217;exécuter sa méthode setContent pour modifier sa variable $content cette fois-ci. On lui attribut le texte &#8216;Ceci est un contenu vraiment intéressant!&#8217;.</p>
<pre class="brush: php">
$page-&gt;render();
</pre>
<p>Finalement, on demande à notre magnifique objet d&#8217;exécuter sa méthode render(), sans argument, qui retourne ses deux attributs formatés pour afficher une page HTML.</p>
<p>On voit donc que la POO en PHP est très similaire à celle en C++ ou autre langage OO. C&#8217;est compréhensible &#8230; on emploi les mêmes termes pour désigner les mêmes choses, non?</p>
<p>En conclusion, avec ce bref introduction à l&#8217;OO, je serais en mesure de vous montrer des scripts qui pourront vous permettre de gagner soit du temps, ou encore d&#8217;avoir bien du plaisir à voir la puissance que vous avez entre les mains. Enfin, il suffit seulement de savoir ce que l&#8217;on veut faire et comment on va s&#8217;y prendre pour y arriver.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tomrochette.com/programmer-en-objet-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pas de son sur Debian Etch</title>
		<link>http://www.tomrochette.com/pas-de-son-sur-debian-etch/</link>
		<comments>http://www.tomrochette.com/pas-de-son-sur-debian-etch/#comments</comments>
		<pubDate>Fri, 23 May 2008 23:30:26 +0000</pubDate>
		<dc:creator>tomzx</dc:creator>
				<category><![CDATA[Informatique]]></category>

		<guid isPermaLink="false">http://www.tomrochette.com/?p=92</guid>
		<description><![CDATA[Modif: Si vous êtes aventurier, vous pouvez installer Debian Lenny (la version suivante de Debian) à partir des repositories actuels et ne pas avoir à vous soucier de ce problème qui devrait être généralement réglé par les drivers intégrés au nouveau noyau (2.6 dans le cas de Lenny alors que Etch utilise encore 2.4). Bon, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Modif:</strong> Si vous êtes aventurier, vous pouvez installer Debian Lenny (la version suivante de Debian) à partir des repositories actuels et ne pas avoir à vous soucier de ce problème qui devrait être généralement réglé par les drivers intégrés au nouveau noyau (2.6 dans le cas de Lenny alors que Etch utilise encore 2.4).</p>
<p>Bon, j&#8217;ai récemment eu quelques problèmes à installer mes drivers audio sur Debian Etch (4.0_r3). J&#8217;ai finalement trouvé la solution après quelques temps de recherche. La voici <img src='http://www.tomrochette.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (Merci a farrell2k du forum debian.net)</p>
<p><strong>Source:</strong> <a href="http://forums.debian.net/viewtopic.php?t=26835">http://forums.debian.net/viewtopic.php?t=26835</a></p>
<blockquote><p>1. download the latest alsa drivers from the alsa project site</p>
<p>2. su and become root, then do a uname -r to find your kernel version.</p>
<p>3. then apt-get the appropriate linux-headers. Mine was linux-headers-2.16.18-4-486.</p>
<p>4. cd to the extracted alsa source and run ./configure &#8211;with-kernel=/usr/src/linux-headers-2.16.18-4-486 (or whatever yours is).</p>
<p>5. run make&#8230;wait, then make install and wait.</p>
<p>6. run alsaconf and pick your card.</p>
<p>7. reboot and adjust volume with whatever mixer.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.tomrochette.com/pas-de-son-sur-debian-etch/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
