<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8085342449633067864</id><updated>2012-01-28T11:53:23.068-05:00</updated><category term='Le coin du geek'/><category term='Jeu de combat'/><category term='Programmation'/><category term='CSS'/><category term='Livres'/><category term='Intégration'/><category term='SQL Server'/><category term='Musique'/><category term='Zend Framework'/><category term='Perl'/><category term='Sécurité'/><category term='Pancartes et écriteaux'/><category term='Humour'/><category term='Curiosités'/><category term='Easter Eggs'/><category term='PHP'/><category term='Vieilles publicités'/><category term='Virtualisation'/><category term='PostgreSQL'/><category term='SEO'/><category term='Montréal'/><category term='iPod'/><category term='Extensions Firefox'/><category term='Liens'/><category term='Linux'/><category term='Lois et principes'/><category term='Coffre à outils'/><category term='HTML'/><category term='Citations'/><category term='Histoire'/><category term='Club Vidéo'/><category term='Apache'/><category term='Marché des saveurs'/><category term='Saviez-vous que'/><category term='JavaScript'/><category term='Mathématique'/><title type='text'>Code 18</title><subtitle type='html'>Manuel du savoir-faire à l'usage des geeks et des curieux</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://code18.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default?start-index=101&amp;max-results=100'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1071</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5904868799074900844</id><published>2012-01-28T11:53:00.000-05:00</published><updated>2012-01-28T11:53:23.083-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Montréal'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Emblème de Montréal en canvas HTML5</title><content type='html'>Lorsque j'ai écrit mon dernier billet sur mes expérimentations HTML5, j'ai expliqué &lt;a href="http://code18.blogspot.com/2012/01/dessiner-un-coeur-avec-le-canvas-html5.html"&gt;comment dessiner un coeur&lt;/a&gt; sous prétexte que la St-Valentin approchait. Pour être franc, ce n'était pas mon objectif principal. J'ai eu l'idée de dessiner un coeur lorsque j'ai reçu mon compte de taxes de la ville de Montréal et que j'ai aperçu le logo en forme de rosace composée de 4 coeurs. Le premier billet reflète donc le premier but à atteindre (bien que la façon d'y arriver et le résultat sont différents) et celui d'aujourd'hui démontre comment je suis arrivé à faire une reproduction approximative du logo de Montréal en utilisant le canvas HTML5.&lt;br /&gt;&lt;br /&gt;Bien sûr, j'ai triché ici et là alors je laisserai le soin aux designers graphiques soucieux des détails de relever les imprécisions, mon approche de programmeur étant surtout basée sur l'apprentissage du calcul des arcs, cloner le canvas, la translation et rotation d'éléments ainsi que le calcul de courbes quadratiques. Je suis quand même assez satisfait du résultat.&lt;br /&gt;&lt;br /&gt;Pour vous aider à suivre, j'ai préparé un graphique pour illustrer les étapes à suivre.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-xCv4Ifvd2Q0/TyQlDycXzqI/AAAAAAAABYE/uOPHOeHObNU/s1600/html5-logo-montreal-etapes.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 291px;" src="http://1.bp.blogspot.com/-xCv4Ifvd2Q0/TyQlDycXzqI/AAAAAAAABYE/uOPHOeHObNU/s400/html5-logo-montreal-etapes.jpg" alt="" id="BLOGGER_PHOTO_ID_5702723775168499362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;À partir d'un canvas de 500 pixels de côté, je récupère les références, j'applique la couleur rouge aux propriétés du trait et de remplissage et je définis l'épaisseur du tracé avec une valeur qui me semble raisonnable à l'oeil.&lt;br /&gt;&lt;pre name="code" class="js"&gt;var canvas = document.getElementById('myCanvas');&lt;br /&gt;var context = canvas.getContext('2d');&lt;br /&gt;&lt;br /&gt;context.strokeStyle = '#CE2123';&lt;br /&gt;context.fillStyle = '#CE2123';&lt;br /&gt;context.lineWidth = 18;&lt;/pre&gt;Pour faciliter le travail et pour centrer le logo au milieu du canvas, je déplace mon origine au centre calculé.&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.translate(canvas.width/2, canvas.height/2);&lt;/pre&gt;Je crée les deux premiers arcs de cercles qui se trouvent complètement au haut du logo (étape 1).&lt;br /&gt;&lt;pre name="code" class="js"&gt;// arc haut gauche&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(-50, -150, 50, 130*(Math.PI/180), 0*(Math.PI/180));&lt;br /&gt;context.stroke();&lt;br /&gt;context.closePath();&lt;br /&gt;&lt;br /&gt;// arc haut droit&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(50, -150, 50, Math.PI, 50*(Math.PI/180));&lt;br /&gt;context.stroke();&lt;br /&gt;context.closePath();&lt;/pre&gt;À l'extrémité de l'arc gauche, je place un cercle central (étape 2). L'idée est que je clonerai ce gabarit pour le dupliquer pour compléter la rosace avec moins d'efforts.&lt;br /&gt;&lt;pre name="code" class="js"&gt;// cercle interne&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(-70, -98, 25, 0, Math.PI*2, false);&lt;br /&gt;context.fill();&lt;br /&gt;context.closePath();&lt;/pre&gt;Premier clonage et rotation (étape 3).&lt;br /&gt;&lt;pre name="code" class="js"&gt;// copie à gauche avec rotation&lt;br /&gt;context.save();&lt;br /&gt;&lt;br /&gt;var canvas1 = canvas.getContext('2d');&lt;br /&gt;context.rotate(270*Math.PI/180);&lt;br /&gt;canvas1.drawImage(canvas, -221, -222);&lt;/pre&gt;Deuxième clonage (étape 4).&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.restore();&lt;br /&gt;&lt;br /&gt;var canvas2 = canvas.getContext('2d');&lt;br /&gt;context.rotate(180*Math.PI/180);&lt;br /&gt;canvas1.drawImage(canvas, -250, -192);&lt;/pre&gt;Enfin, je trace la croix centrale qui donne l'illusion d'une juxtaposition de quatre coeurs (étape 5).&lt;br /&gt;&lt;pre name="code" class="js"&gt;// lignes&lt;br /&gt;context.beginPath();&lt;br /&gt;context.moveTo(0, -100);&lt;br /&gt;context.lineTo(0, 150);&lt;br /&gt;context.closePath()&lt;br /&gt;context.stroke();&lt;br /&gt;&lt;br /&gt;context.rotate(90*Math.PI/180);&lt;br /&gt;&lt;br /&gt;context.beginPath();&lt;br /&gt;context.moveTo(29, -125);&lt;br /&gt;context.lineTo(29, 125);&lt;br /&gt;context.closePath()&lt;br /&gt;context.stroke();&lt;br /&gt;&lt;br /&gt;context.rotate(270*Math.PI/180);&lt;br /&gt;&lt;br /&gt;context.translate(0, 27); // centre&lt;br /&gt;context.save();&lt;/pre&gt;Ce n'est pas tout. Si on regarde comme il faut le croisement des deux axes qu'on vient de tracer, on voit que chaque angle a une courbure. C'est ici que j'ai utilisé les courbes quadratiques mais j'aurais très bien pu utiliser la composition avec globalCompositeOperation en source-in (étape 6).&lt;br /&gt;&lt;pre name="code" class="js"&gt;// courbes quadratiques pour le centre&lt;br /&gt;context.translate(7, 7);&lt;br /&gt;&lt;br /&gt;// la preuve que j'y suis allé à tâton,&lt;br /&gt;// j'étais tanné de remplacer la valeur dans les appels suivants!&lt;br /&gt;var curve = 35;&lt;br /&gt;&lt;br /&gt;context.beginPath();&lt;br /&gt;context.moveTo(0, curve);&lt;br /&gt;context.quadraticCurveTo(0, 0, curve, 0);&lt;br /&gt;context.lineTo(0,0);&lt;br /&gt;context.fill();&lt;br /&gt;&lt;br /&gt;context.restore();&lt;br /&gt;context.save();&lt;br /&gt;&lt;br /&gt;context.translate(-7, 7);&lt;br /&gt;&lt;br /&gt;context.beginPath();&lt;br /&gt;context.moveTo(-curve, 0);&lt;br /&gt;context.quadraticCurveTo(0, 0, 0, curve);&lt;br /&gt;context.lineTo(0,0);&lt;br /&gt;context.fill();&lt;br /&gt;&lt;br /&gt;context.restore();&lt;br /&gt;context.save();&lt;br /&gt;&lt;br /&gt;context.beginPath();&lt;br /&gt;&lt;br /&gt;context.arc(0, 0, 3, 0, Math.PI*2, false);&lt;br /&gt;context.fill();&lt;br /&gt;context.closePath();&lt;br /&gt;&lt;br /&gt;//canvas.toDataURL()&lt;br /&gt;context.translate(7, -7);&lt;br /&gt;&lt;br /&gt;context.beginPath();&lt;br /&gt;context.moveTo(0, -curve);&lt;br /&gt;context.quadraticCurveTo(0, 0, curve, 0);&lt;br /&gt;context.lineTo(0,0);&lt;br /&gt;context.fill();&lt;br /&gt;&lt;br /&gt;context.restore();&lt;br /&gt;context.save();&lt;br /&gt;&lt;br /&gt;context.translate(-7, -7);&lt;br /&gt;&lt;br /&gt;context.beginPath();&lt;br /&gt;context.moveTo(-curve, 0);&lt;br /&gt;context.quadraticCurveTo(0, 0, 0, -curve);&lt;br /&gt;context.lineTo(0,0);&lt;br /&gt;context.fill();&lt;/pre&gt;Voilà le logo terminé.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-4Tbn-0BQRJk/TyQasTJEnXI/AAAAAAAABX4/hPFL0ynHgBo/s1600/html5-logo-montreal.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 394px; height: 392px;" src="http://4.bp.blogspot.com/-4Tbn-0BQRJk/TyQasTJEnXI/AAAAAAAABX4/hPFL0ynHgBo/s400/html5-logo-montreal.jpg" alt="" id="BLOGGER_PHOTO_ID_5702712376512781682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Selon le site de la ville, l'emblème de Montréal, créé en 1981, s'inspire des armoiries et représente une fleur dont les quatre pétales forment une interprétation graphique des initiales de la Ville de Montréal: V et M. Au centre, un croisement rappelle que Montréal a toujours été au carrefour des grandes voies de communication et de civilisation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Enfin, les quatre coeurs créés par le jeu des lignes représentent l'attachement des Montréalais et des Montréalaises à leur ville. La ligne ondoyante qui encercle l'ensemble stylisé rappelle que Montréal est une île; la forme à la fois végétale et aquatique exprime la richesse de l'environnement naturel et le souci qu'a la population de le préserver (&lt;/span&gt;&lt;a href="http://ville.montreal.qc.ca/portal/page?_pageid=5798,40709563&amp;amp;_dad=portal&amp;amp;_schema=PORTAL"&gt;source&lt;/a&gt;&lt;span&gt;).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5904868799074900844?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5904868799074900844/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5904868799074900844' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5904868799074900844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5904868799074900844'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2012/01/embleme-de-montreal-en-canvas-html5.html' title='Emblème de Montréal en canvas HTML5'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-xCv4Ifvd2Q0/TyQlDycXzqI/AAAAAAAABYE/uOPHOeHObNU/s72-c/html5-logo-montreal-etapes.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-4791795722498985482</id><published>2012-01-25T08:33:00.000-05:00</published><updated>2012-01-25T08:33:13.169-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Dessiner un coeur avec le canvas HTML5 et passer pour un grand sentimental</title><content type='html'>La St-Valentin approche à grands pas et on le sait, il n'y a rien de plus romantique qu'envoyer un coeur en HTML5 à sa bien-aimée. Genre.&lt;br /&gt;&lt;br /&gt;Ce n'est pas comme si j'avais fait ça souvent dans ma vie (surtout que j'ai rencontré ma copine à l'époque où le HTML 4.x était encore à la mode). Alors je me suis tourné vers les explications de la &lt;a href="http://www.geometrie.pour-enfants.fr/cercles/dessiner-coeurs.htm"&gt;géométrie pour enfants&lt;/a&gt; qui illustre une méthode facile en utilisant des arcs de cercles. On peut imaginer le tracé par le schéma suivant :&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-y5wNvlaCas4/Tx92wrbofcI/AAAAAAAABXY/EtI32QEDKhQ/s1600/html5-coeur-trace.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 330px; height: 330px;" src="http://4.bp.blogspot.com/-y5wNvlaCas4/Tx92wrbofcI/AAAAAAAABXY/EtI32QEDKhQ/s400/html5-coeur-trace.jpg" alt="" id="BLOGGER_PHOTO_ID_5701406231938760130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Le code :&lt;br /&gt;&lt;pre name="code" class="js"&gt;var canvas = document.getElementById('myCanvas');&lt;br /&gt;var context = canvas.getContext('2d');&lt;br /&gt;&lt;br /&gt;context.translate(100,100);&lt;br /&gt;&lt;br /&gt;context.strokeStyle = '#FF0000'; // rouge, évidemment&lt;br /&gt;context.lineWidth = 5;&lt;br /&gt;&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(0, 0, 50, 90*(Math.PI/180), 0*(Math.PI/180), false);&lt;br /&gt;context.stroke();&lt;br /&gt;context.closePath();&lt;br /&gt;&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(0, 100, 50, 270*(Math.PI/180), 0*(Math.PI/180), false);&lt;br /&gt;context.stroke();&lt;br /&gt;context.closePath();&lt;br /&gt;&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(100, 0, 50, Math.PI, 90*(Math.PI/180), false);&lt;br /&gt;context.stroke();&lt;br /&gt;context.closePath();&lt;br /&gt;&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(100, 100, 50, 180*(Math.PI/180), 270*(Math.PI/180), false);&lt;br /&gt;context.stroke();&lt;br /&gt;context.closePath();&lt;/pre&gt;Résultat :&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-UYcFJx-2Ji8/Tx92w0MT_hI/AAAAAAAABXg/_XYF9KMJIUc/s1600/html5-coeur.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 330px; height: 280px;" src="http://4.bp.blogspot.com/-UYcFJx-2Ji8/Tx92w0MT_hI/AAAAAAAABXg/_XYF9KMJIUc/s400/html5-coeur.jpg" alt="" id="BLOGGER_PHOTO_ID_5701406234290421266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;"Ah que c'est cute !"&lt;br /&gt;- Une fille qui tombe en amour avec le HTML5&lt;br /&gt;&lt;br /&gt;J'avoue qu'au début, je pensais utiliser une équation pour calculer une &lt;a href="http://fr.wikipedia.org/wiki/Cardio%C3%AFde"&gt;cardioïde&lt;/a&gt; mais la pointe du bas si caractéristique à la représentation qu'on se fait d'un coeur stylisé était absente. Ainsi, elle y est, malgré qu'elle soit un peu trop prononcée.&lt;br /&gt;&lt;br /&gt;Sans blague, célébrez-vous cette fête de l'amour ? Quel est l'intérêt qu'à date fixe, une fois par année, on honore celle qu'on aime avec les moyens les plus prévisibles qui soient alors que notre douce moitié s'attend inévitablement à recevoir au minimum une boîte de chocolats, un bouquet de fleurs et à passer la soirée au restaurant ? Est-ce que ça ne devrait pas plutôt être le contraire et faire les efforts nécessaires également les autres jours de l'année ? Comme si une journée unique était suffisante pour nous donner bonne conscience. On souhaite tous être différents mais on finit toujours par faire comme les autres. N'existe-t-il pas un moyen pour chaque couple de piger une date au hasard dans le calendrier où chacun réserverait une surprise à l'autre ? Il est grand temps de se réapproprier cette fête pour l'éloigner de son côté commercial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-4791795722498985482?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/4791795722498985482/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=4791795722498985482' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4791795722498985482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4791795722498985482'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2012/01/dessiner-un-coeur-avec-le-canvas-html5.html' title='Dessiner un coeur avec le canvas HTML5 et passer pour un grand sentimental'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-y5wNvlaCas4/Tx92wrbofcI/AAAAAAAABXY/EtI32QEDKhQ/s72-c/html5-coeur-trace.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8549713714754092765</id><published>2012-01-22T20:23:00.001-05:00</published><updated>2012-01-22T20:23:36.932-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 144 sur les hommes politiques</title><content type='html'>Les hommes politiques et les couches doivent être changés souvent... pour les mêmes raisons.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Sir George Bernard Shaw&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8549713714754092765?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8549713714754092765/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8549713714754092765' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8549713714754092765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8549713714754092765'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2012/01/citation-no-144-sur-les-hommes.html' title='Citation no. 144 sur les hommes politiques'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-1958101453769616475</id><published>2012-01-21T11:32:00.000-05:00</published><updated>2012-01-21T11:32:30.500-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Dessiner une spirale dans un canvas HTML5</title><content type='html'>Bon matin chers lecteurs. J'espère que tout comme moi, vous vous êtes remis de votre consommation de bière d'hier soir et que vous vous sentez d'attaque pour expérimenter un peu plus le canvas HTML5.&lt;br /&gt;&lt;br /&gt;Le petit exercice que j'ai à proposer aujourd'hui sera de tracer une spirale dans le canvas en utilisant un minimum de JavaScript.&lt;br /&gt;&lt;br /&gt;Pour débuter, on déclare un canvas dans notre document HTML.&lt;br /&gt;&lt;pre name="code" class="html"&gt;&amp;lt;canvas id="myCanvas" width="500" height="500" style="background-color:black;"&amp;gt;&amp;lt;/canvas&amp;gt;&lt;/pre&gt;En CSS, on lui appliquera une couleur de fond, par exemple noir. Ceci permettra de donner de la flexibilité dans le cas où on voudrait modifier dynamiquement la couleur de fond après avoir fait le tracé car les deux éléments sont complètement dissociés.&lt;br /&gt;&lt;pre name="code" class="html"&gt;&amp;lt;button onclick="document.getElementById('myCanvas').style.backgroundColor='green';"&amp;gt;Changer la couleur de fond&amp;lt;/button&amp;gt;&lt;/pre&gt;On récupère une référence au canvas avant de commencer à dessiner :&lt;br /&gt;&lt;pre name="code" class="js"&gt;var canvas = document.getElementById('myCanvas');&lt;br /&gt;&lt;br /&gt;if(canvas &amp;amp;&amp;amp; canvas.getContext){&lt;br /&gt;&lt;br /&gt;   var context = canvas.getContext('2d');&lt;br /&gt;&lt;br /&gt;   // placer ici le code pour tracer la spirale&lt;br /&gt;}&lt;/pre&gt;Une fois une référence obtenue, on se déplace au centre du canvas qui correspondra aussi avec le point central de la spirale.&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.translate(250,250);&lt;br /&gt;context.moveTo(0,0);&lt;/pre&gt;On définit les propriétés de la couleur du tracé ainsi que de l'épaisseur de la ligne.&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.strokeStyle = '#FFCC33'; // orange&lt;br /&gt;context.lineWidth = 2;&lt;/pre&gt;Après avoir déclaré quelques variables dont celles définissant le nombre de circonvolutions (un mot savant pour décrire un tour autour d'un point central) et l'espacement entre chacune, on lance une boucle qui calculera chaque point nécessaire pour tracer la spirale.&lt;br /&gt;&lt;pre name="code" class="js"&gt;var x, y;&lt;br /&gt;var degresEnRadian = 0;&lt;br /&gt;var circonvolutions = 15;&lt;br /&gt;var espacement = 2;&lt;br /&gt;&lt;br /&gt;for(var degres = 0; degres&amp;lt;=(360*circonvolutions); degres++){&lt;br /&gt;   degresEnRadian = degres * (Math.PI/180);&lt;br /&gt;   x = espacement * degresEnRadian * Math.cos(degresEnRadian);&lt;br /&gt;   y = espacement * degresEnRadian * Math.sin(degresEnRadian);&lt;br /&gt;&lt;br /&gt;   context.lineTo(x,y);&lt;br /&gt;}&lt;/pre&gt;Si vous ne voyez rien apparaître, c'est que vous n'avez que défini le trajet qu'empruntera la spirale. Pour la voir apparaître, il suffit d'invoquer la méthode stroke() du canvas, une seule fois, immédiatement après la boucle for.&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.stroke();&lt;/pre&gt;Le résultat devrait avoir l'air de ceci (vous pouvez compter le nombre de spires à partir de la fin du tracé sur l'axe des x jusqu'au centre pour voir que ça égale le nombre de circonvolutions demandé).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-4e1OzeQsWD8/Txrm1h8K-8I/AAAAAAAABXM/M-hJUhoKsXk/s1600/html5-spirale.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 400px;" src="http://1.bp.blogspot.com/-4e1OzeQsWD8/Txrm1h8K-8I/AAAAAAAABXM/M-hJUhoKsXk/s400/html5-spirale.jpg" alt="" id="BLOGGER_PHOTO_ID_5700122085708987330" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-1958101453769616475?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/1958101453769616475/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=1958101453769616475' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1958101453769616475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1958101453769616475'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2012/01/dessiner-une-spirale-dans-un-canvas.html' title='Dessiner une spirale dans un canvas HTML5'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-4e1OzeQsWD8/Txrm1h8K-8I/AAAAAAAABXM/M-hJUhoKsXk/s72-c/html5-spirale.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-6487965843507467841</id><published>2012-01-18T19:54:00.000-05:00</published><updated>2012-01-18T19:54:31.048-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Marché des saveurs'/><title type='text'>L'arnaque des primes MTY dans les restaurants</title><content type='html'>Durant la semaine de travail, chaque fois que je n'ai pas de lunch, je me rends soit au supermarché, soit casser la croûte au restaurant. Je le spécifie juste au cas où certains me suspecteraient de voler les dîners de mes collègues oubliés dans le frigo (ai-je besoin de spécifier que ce sont les repas qui sont oubliés, pas mes collègues ? D'ailleurs, les vieux lunchs avec de la mousse, ce n'est pas mon genre...).&lt;br /&gt;&lt;br /&gt;Question restos, il faut dire qu'aux alentours du bureau, on est bien servi. Comme je ne suis pas  assez important pour avoir droit à un compte de dépenses, j'y vais  modérément, en moyenne une fois par semaine et j'essaie en général de m'en sortir pour 10$ ou moins (sauf exception pour les grandes occasions).&lt;br /&gt;&lt;br /&gt;Certains restos offrent des cartes de fidélité qui donnent droit à des gratuités après quelques visites. D'autres se sont regroupés et proposent une carte de points à accumuler. L'avantage est de pouvoir en obtenir dans des restaurants de différentes bannières tout en conservant un seul plan de récompense. C'est pourquoi je me suis procuré la &lt;a href="http://www.primesmty.com/"&gt;carte de primes MTY&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-IreCc1MemAI/TxdmVYf0CDI/AAAAAAAABW0/kC4qiZ-09f0/s1600/carte-primes-mty-1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/-IreCc1MemAI/TxdmVYf0CDI/AAAAAAAABW0/kC4qiZ-09f0/s400/carte-primes-mty-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5699136370999822386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Plusieurs restaurateurs partagent ce programme de primes, en commençant par Au Vieux Duluth, O'Burger, Sushi Shop, Tiki Ming, Thai Express, La Crèmière ainsi qu'une dizaine d'autres. Pendant plusieurs mois, j'ai multiplié les visites dans ces chaînes et ma dernière facture indiquait que j'avais amassé un peu plus de 500 points. À ce rythme, avec 3,6 points par dollar dépensé, ça signifie qu'au fil des mois, j'ai déboursé 140$, soit environ 14 repas d'une valeur moyenne de 10$.&lt;br /&gt;&lt;br /&gt;Récemment, j'ai voulu savoir ce que valait ma fidélité en échangeant mes points à partir de leur site web. Quelle déception! Le premier échelon de récompense se situe à 1200 points et donne droit à seulement 2,50$ de rabais (j'ai actuellement suffisamment de points pour obtenir une remise équivalente à 1,04$). Même en dépensant plus de 1000$ chez ces commerçants, on n'a pas droit à un repas gratuit (7,50$).&lt;br /&gt;&lt;br /&gt;C'est sans doute le pire système de primes qu'il m'a été donné de voir à ce jour. En comparaison avec le restaurant de sushi indépendant au coin de chez moi (&lt;a href="http://www.ichisushi.ca/"&gt;Ichi Sushi&lt;/a&gt;), dès que ma facture dépasse 25$ (un repas pour deux), on m'offre 5 futomakis gratuits ou un rabais équivalent. Sinon, si la facture dépasse 30$, c'est plutôt 6 morceaux de Dragon's Eye d'une valeur de 8,50$ qu'on obtient sans frais. Une prime plus avantageuse, sans compter qu'ils ont meilleur goût. Alors pourquoi encourager les grandes chaînes comme Sushi Shop quand les indépendants nous offrent mieux ?&lt;br /&gt;&lt;br /&gt;Comme ce n'était pas un gros incitatif d'opter pour ces restaurants affiliés, j'ai choisi de mettre les ciseaux dans cette carte inutile pour ne pas encourager davantage cette arnaque commerciale.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-01aG9g0Mo_k/TxdmVgt5MiI/AAAAAAAABW8/E5RPS8_CFb0/s1600/carte-primes-mty-2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/-01aG9g0Mo_k/TxdmVgt5MiI/AAAAAAAABW8/E5RPS8_CFb0/s400/carte-primes-mty-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5699136373206364706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mon portefeuille est plus mince d'une carte. Tant mieux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-6487965843507467841?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/6487965843507467841/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=6487965843507467841' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6487965843507467841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6487965843507467841'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2012/01/larnaque-des-primes-mty-dans-les.html' title='L&apos;arnaque des primes MTY dans les restaurants'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-IreCc1MemAI/TxdmVYf0CDI/AAAAAAAABW0/kC4qiZ-09f0/s72-c/carte-primes-mty-1.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8309217288757330123</id><published>2012-01-16T08:01:00.001-05:00</published><updated>2012-01-16T08:06:02.361-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Montréal'/><title type='text'>Ahuntsic, d'hier à aujourd'hui</title><content type='html'>L'histoire a toujours suscité de l'intérêt chez moi et vivre dans le moment présent pour préparer le futur est une si grande priorité quotidienne qu'on oublie parfois de jeter un oeil au passé, sachant très bien qu'il demeurera statique. Or, quand vient le temps d'y consacrer un peu de temps, on se rend compte que les documents se font plus rares qu'on l'imaginait, qu'ils ont disparus ou se sont détériorés.&lt;br /&gt;&lt;br /&gt;Depuis mon enfance, je fréquente ce quartier puisque mes grands-parents y ont habité une bonne partie de leur vie. Je garde un bon souvenir de ma grand-mère qui me remettait un billet de 5$ pour aller acheter une boîte complète de paquets de cartes de hockey Pro Set à la pharmacie Jean Coutu sur Fleury... Ensuite, j'ai fait mes études au CEGEP Ahuntsic et lorsque j'ai emménagé dans mon premier appartement avec ma copine (la seule et unique Madame Code 18 !), le quartier était en tête de liste et nous y sommes resté 5 ans. Puis, nous avons acheté une maison à moins de 2 km de là parce qu'on apprécie la qualité de vie.&lt;br /&gt;&lt;br /&gt;Parce que j'y demeure, je m'intéresse grandement à l'histoire de mon quartier. Le paysage urbain se transforme et je suis déjà témoin de quelques changements qui feront que certaines particularités seront vite oubliées. Pour commencer, j'ai débuté mes recherches sur le web et je suis resté des heures à épier les magnifiques &lt;a href="http://www.flickr.com/photos/urbexplo/"&gt;albums photos de Philippe Du Berger sur Flickr&lt;/a&gt; (un must si vous vous intéressez à Montréal).&lt;br /&gt;&lt;br /&gt;Une image de 1907 tirée des archives BANQ illustre une partie du quartier.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-FQYvkL3hRU4/TxMB6q1hmyI/AAAAAAAABVc/BgNujNujEHk/s1600/carte-ahuntsic-1907.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://1.bp.blogspot.com/-FQYvkL3hRU4/TxMB6q1hmyI/AAAAAAAABVc/BgNujNujEHk/s400/carte-ahuntsic-1907.jpg" alt="" id="BLOGGER_PHOTO_ID_5697900060996639522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;À l'époque, le boulevard Gouin s'appelait Back River Road alors que le chemin du Grand Sault changea de nom pour la rue Lajeunesse en 1912 (selon le nom d'une auberge près du Sault-au-Récollet - &lt;a href="http://imtl.org/rue_montreal.php?rue=Lajeunesse"&gt;source&lt;/a&gt;). Sur celle-ci, on y trouvait l'hôtel Péloquin du côté ouest qui faisait face à l'&lt;a href="http://www.flickr.com/photos/urbexplo/5328851503"&gt;hôtel Marcotte&lt;/a&gt; de l'autre côté de la rue (lot 237) .&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-WWSxXdnzx4I/TxMH5ahDUJI/AAAAAAAABVo/GxF52rwIHW0/s1600/montage-lajeunesse-1900-2009.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 389px; height: 400px;" src="http://2.bp.blogspot.com/-WWSxXdnzx4I/TxMH5ahDUJI/AAAAAAAABVo/GxF52rwIHW0/s400/montage-lajeunesse-1900-2009.jpg" alt="" id="BLOGGER_PHOTO_ID_5697906636505698450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;L'hôtel Marcotte fût l'hôte du Montreal Hunting Club, de la Banque Provinciale du Canada et par la suite d'un poste de police (déménagé, maintenant un Carrefour Jeunesse Emploi), jumellé à une caserne de pompier. Le bâtiment actuel a été construit en 1929.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-13M0CUJGh0M/TxMNfNeiPNI/AAAAAAAABV0/R4BaVEmbcmU/s1600/montage-hotel-marcotte.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 288px; height: 400px;" src="http://4.bp.blogspot.com/-13M0CUJGh0M/TxMNfNeiPNI/AAAAAAAABV0/R4BaVEmbcmU/s400/montage-hotel-marcotte.jpg" alt="" id="BLOGGER_PHOTO_ID_5697912783398649042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Un article du &lt;a href="http://www.flickr.com/photos/urbexplo/4403146118/"&gt;journal La Patrie paru en 1911&lt;/a&gt; indique que son concurrent, l'&lt;a href="http://www.flickr.com/photos/urbexplo/4402380105/in/photostream/"&gt;hôtel Péloquin&lt;/a&gt; fût rasé par les flammes. Il semble que la famille Péloquin avait une certaine notoriété puisqu'on retrouve aussi l'avenue Péloquin immédiatement à l'est de St-Hubert. Selon le &lt;a href="http://ville.montreal.qc.ca/portal/page?_pageid=1560,11241558&amp;amp;_dad=portal&amp;amp;_schema=PORTAL"&gt;répertoire historique des toponymes montréalais&lt;/a&gt;, Jean-Baptiste Péloquin cèda cette avenue à la municipalité du village d'Ahuntsic le 28 juin 1900.&lt;br /&gt;&lt;br /&gt;Sur les lots illustrés au haut de la carte, on voit aussi le nom de certains propriétaires, dont la famille Major (est-ce parent avec le &lt;a href="http://maps.google.ca/maps/place?q=major+ahuntsic&amp;amp;hl=en&amp;amp;cid=9702659833474059742"&gt;Rona Major &amp;amp; Major&lt;/a&gt; ?). On voit aussi ce qui allait devenir le boulevard Henri-Bourassa à partir de 1954 (anciennement rue Kelly et boulevard Paradis) qui prenait fin à la rue Lajeunesse avant d'être prolongée à l'ouest suite à une série d'expropriations.&lt;br /&gt;&lt;br /&gt;Au coin de la rue Berri et du boulevard Gouin, une maison fût démolie pour faire place à une clinique médicale (photo de 1976).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-wo8MtKZUYsA/TxMRjnRMswI/AAAAAAAABWA/M_AtKqmf6D0/s1600/montage-coin-gouin-berri.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 400px;" src="http://4.bp.blogspot.com/-wo8MtKZUYsA/TxMRjnRMswI/AAAAAAAABWA/M_AtKqmf6D0/s400/montage-coin-gouin-berri.jpg" alt="" id="BLOGGER_PHOTO_ID_5697917257088021250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sur le site web de BANQ, un &lt;a href="http://collections.banq.qc.ca/ark:/52327/2080369"&gt;document de 1911 annonce la construction d'une nouvelle école&lt;/a&gt; "qui fera l'orgueil de la population" au coût de 20000$ (selon l'évaluation foncière de la ville de Montréal, l'immeuble (terrain et bâtiment) valait 1,5 millions en 2011). Quelle est-elle ? Il s'agit de l'école Saint-Nicolas, dirigée par les clercs de Saint-Viateur qui, lors de sa fermeture, devint le restaurant La Vieille École (voyez la &lt;a href="http://www.youtube.com/watch?v=X8pnocdKqyU"&gt;publicité télé&lt;/a&gt; comme c'est alléchant!). Si  je me fie au numéro de téléphone de l'annonce, la crêperie Bretonne Ty-Breiz a le même numéro (dans le 514) et siégeait à la même adresse (déménagée sur Jean-Talon ?). Lorsque le restaurant mit la clé sous la porte, le bâtiment fût repris par l'église de la Communauté chrétienne Béthel de Montréal, dont son pasteur considéré comme un &lt;a href="http://www.radio-canada.ca/regions/Montreal/2010/07/28/008-lezoka-escroc-diamants.shtml"&gt;escroc à diamants&lt;/a&gt; a fait manchette en 2010 au sujet d'argent détourné appartenant au Parc Safari.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Koa6nRFMhro/TxMeqbRbwfI/AAAAAAAABWk/D7g4TlLFO2Q/s1600/montage-ecole-st-nicolas.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 314px; height: 400px;" src="http://2.bp.blogspot.com/-Koa6nRFMhro/TxMeqbRbwfI/AAAAAAAABWk/D7g4TlLFO2Q/s400/montage-ecole-st-nicolas.jpg" alt="" id="BLOGGER_PHOTO_ID_5697931667778028018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dans le secteur, l'ancien restaurant Harvey's au coin du boulevard Henri-Bourassa et Christophe-Colomb avait pris feu et a été démoli pour y construire des unités de condos. Quelques années auparavant, l'ancien restaurant chinois Hanchow (situé au coin de Fleury et Lajeunesse), abandonné depuis longtemps, eut aussi une nouvelle vocation de condominiums en étant transformé en Square Fleury (par le même &lt;a href="http://www.julesmaltais.com/"&gt;constructeur Jules Maltais&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-YRVmm8iQtUI/TxMVJM0gGfI/AAAAAAAABWM/s1uk_DqWbPo/s1600/montage-resto-chinois-hanchow.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 259px; height: 400px;" src="http://2.bp.blogspot.com/-YRVmm8iQtUI/TxMVJM0gGfI/AAAAAAAABWM/s1uk_DqWbPo/s400/montage-resto-chinois-hanchow.jpg" alt="" id="BLOGGER_PHOTO_ID_5697921201358248434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Merci à &lt;a href="http://www.flickr.com/photos/mtlweblog/149306257/"&gt;Kate McDonnell&lt;/a&gt; (&lt;a href="http://twitter.com/elzadra"&gt;@elzadra&lt;/a&gt;) pour la photo du restaurant.&lt;br /&gt;&lt;br /&gt;Plus récemment, comme si la bannière avait une malédiction, on apprenait que l'ancien Harvey's situé coin Lajeunesse et Louvain, devenu plus tard le restaurant Georgina, fermait ses portes pour être converti en d'autres unités de condos par le &lt;a href="http://www.mondev.ca/condo-montreal-le-lajeunesse-nouveau-a-ahuntsic-montreal-projet-16-condos-.html?ProjetID=111"&gt;promoteur Mondev&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-87y5q-Beybs/TxMWvP7iKKI/AAAAAAAABWY/UFvIfh-2Yg8/s1600/montage-georgina.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 366px; height: 400px;" src="http://4.bp.blogspot.com/-87y5q-Beybs/TxMWvP7iKKI/AAAAAAAABWY/UFvIfh-2Yg8/s400/montage-georgina.jpg" alt="" id="BLOGGER_PHOTO_ID_5697922954539706530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Des condos, encore des condos. Le même sort avait été réservé au restaurant La Fondrie qui, si ma mémoire est bonne, &lt;a href="http://maps.google.ca/maps?q=10400+Rue+Lajeunesse&amp;amp;hl=en&amp;amp;ie=UTF8&amp;amp;ll=45.552664,-73.659323&amp;amp;spn=0.002682,0.006968&amp;amp;client=firefox-a&amp;amp;hnear=10400+Rue+Lajeunesse,+Montr%C3%A9al,+Communaut%C3%A9-Urbaine-de-Montr%C3%A9al,+Qu%C3%A9bec+H3L+2E4&amp;amp;gl=ca&amp;amp;t=m&amp;amp;z=18&amp;amp;vpsrc=6&amp;amp;layer=c&amp;amp;cbll=45.552614,-73.659155&amp;amp;panoid=pC-eVhib8vWLM9BK-N58tg&amp;amp;cbp=12,344.01,,0,-2.22"&gt;était situé ici&lt;/a&gt;. Aux dernières nouvelles, c'est un motel douteux de la rue Lajeunesse qui disparaîtra pour faire place à... d'autres condos! Tant mieux, la rue prend du mieux parce qu'on se doute bien que ce ne sont pas des touristes qui viennent profiter des siestes bon marché...&lt;br /&gt;&lt;br /&gt;Ce ne sont que quelques exemples des changements qui ont eu lieu dans le quartier lors des 100 dernières années. Si vous avez des vieilles photos ou anecdotes, n'hésitez pas à me contacter, je serais heureux que vous les partagiez avec moi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8309217288757330123?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8309217288757330123/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8309217288757330123' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8309217288757330123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8309217288757330123'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2012/01/ahuntsic-dhier-aujourdhui.html' title='Ahuntsic, d&apos;hier à aujourd&apos;hui'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-FQYvkL3hRU4/TxMB6q1hmyI/AAAAAAAABVc/BgNujNujEHk/s72-c/carte-ahuntsic-1907.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-268593249036234145</id><published>2012-01-14T10:20:00.002-05:00</published><updated>2012-01-17T06:54:05.143-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><title type='text'>C'est urgent parce que ça ne l'est pas</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-IJWBKmnaJco/TxGbVZZqptI/AAAAAAAABVQ/im8Rl7_oPUA/s1600/In-Case-Of-Emergency.gif"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 294px;" src="http://3.bp.blogspot.com/-IJWBKmnaJco/TxGbVZZqptI/AAAAAAAABVQ/im8Rl7_oPUA/s320/In-Case-Of-Emergency.gif" alt="" id="BLOGGER_PHOTO_ID_5697505795498485458" border="0" /&gt;&lt;/a&gt;C'est quelque chose qui me trotte dans ma tête depuis quelques mois déjà et ce dans le but de trouver une solution à un problème chronique en entreprise : que les employés de la production se fassent constamment interrompre par les gestionnaires pour des soi-disant urgences.&lt;br /&gt;&lt;br /&gt;Un imprévu cause des retards dans la production,  interrompt la concentration des employés, détourne le focus pour être redirigé vers de nouvelles priorités, repousse  les échéanciers du travail en cours, peut mette en péril la date promise inscrite dans le cahier de livraison, nécessite de travailler sous pression et parfois en temps supplémentaire.&lt;br /&gt;&lt;br /&gt;Les urgences surviennent majoritairement dans deux contextes :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;un oubli ou un changement d'idée de la part du client&lt;br /&gt;&lt;/li&gt;&lt;li&gt;la mauvaise planification du gestionnaire de projet&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Nul besoin de rappeler que l'erreur est humaine et qu'il faut savoir faire face à ces exceptions. Mais quand ça devient abusif, quelqu'un, quelque part, doit mettre ses culottes et freiner l'ardeur des fautifs. Parce que c'est faux de croire que &lt;a href="http://code18.blogspot.com/2010/02/linformatique-comme-la-mecanique.html"&gt;tout est toujours urgent&lt;/a&gt;. Si c'était le cas, ça deviendrait la norme (et honnêtement, personne ne souhaite ça).&lt;br /&gt;&lt;br /&gt;Or, j'ai constaté le fait suivant : certains chargés de projets que j'ai cotoyé présentent toutes leurs requêtes comme étant urgentes. Toutes. Que ce soit par le biais de promesses faites pour plaire au client ou par égoïsme pour prioriser leurs projets au détriment des autres, ils exagèrent volontairement l'urgence des requêtes.&lt;br /&gt;&lt;br /&gt;Comment savoir si ce sont de vraies urgences ou simplement un moyen  détourné d'accentuer la pression sur la production des employés ? Bien que je sois en faveur d'aider dans des situations exceptionnelles, quand un chargé de projet  présente toutes ses requêtes comme urgentes, ce n'est rien de  moins que de l'abus. Il ne faut pas prendre son équipe pour des cons et en créer là où il n'y en a pas. Quoique pour un gestionnaire, c'est inmanquablement le meilleur moyen de se faire détester de ses employés.&lt;br /&gt;&lt;br /&gt;Alors comment résoudre cette plaie qu'est l'invention d'urgences qui n'en sont pas ? Si on était dans une équipe sportive, quand les joueurs n'ont plus  confiance en le coach, le rendement se met à déraper. Souvent, c'est l'entraîneur qui écope puisque c'est plus facile de remplacer le gestionnaire que de transformer plusieurs éléments de l'équipe (après tout, c'est eux qui sont sur le terrain dans le feu de l'action et qui livrent les résultats).&lt;br /&gt;&lt;br /&gt;Comme je suis du genre à laisser une chance aux gens de s'ajuster, le premier réflexe devrait être d'en glisser un mot au principal intéressé. Si la situation persiste, j'aurais tendance à virer la chose au ridicule et à la tourner à l'avantage des employés en instaurant un système permettant de contrôler la fréquence des dérangements et de prise en charge des urgences. Ainsi, à tous les débuts de mois, chaque chargé de projet se verrait remettre un certain nombre de coupons donnant le privilège de déranger un employé pour répondre à une urgence de son choix (comme dans &lt;a href="http://www.imdb.fr/title/tt0097576/combined"&gt;Indiana Jones et la Dernière Croisade&lt;/a&gt;, il devra choisir judicieusement faute de quoi, il devra en subir les conséquences).&lt;br /&gt;&lt;br /&gt;Si un chargé de projet écoule la totalité de ses coupons, il pourra acheter un nouveau carnet en déposant un montant forfaitaire dans une tirelire commune dont le contenu serait à son tour utilisé pour récompenser les employés à la fin de la  semaine ou du mois, par exemple en payant une bière au prochain 5 à 7. Ainsi, ça devient amusant, ça limite les interventions en permettant au gestionaire d'utiliser son jugement pour décider de ce qui est réellement urgent et en cas d'abus, ça reste équitable pour les troupes qui obtiennent en retour un élément de motivation. Au final, ça arrange tout le monde.&lt;br /&gt;&lt;br /&gt;Bien sûr, ce système n'est pas sans faille puisqu'il n'est pas à l'abris de la contrebande de coupons et de la contrefaçon/fabrication de faux. Chaque billet pourrait avoir une date d'expiration optionnelle, une valeur d'échange (comme une devise) pour une petite, moyenne ou grande urgence, certains billets pourraient être assignés à des projets spécifiques (un taux de change pourrait être applicable si on veut transférer un coupon d'un projet à un autre). Parce qu'il faut être bon joueur, si l'employé refusait de prendre en charge une requête urgente, celui-ci pourrait payer une taxe symbolique au gestionnaire qui pourra à son tour avoir le privilège de récupérer un coupon.&lt;br /&gt;&lt;br /&gt;Ce sont quelques idées pour un premier jet et je suis convaincu qu'il y a quelque chose d'intéressant à faire avec ça. Je compte sur vous pour me faire part de vos idées originales et vos suggestions.&lt;br /&gt;&lt;br /&gt;P.s. j'aurais aimé mettre en place ce type de système la semaine dernière dans l'entreprise pour laquelle je travaille mais contre toute attente, j'ai eu plus urgent à faire... Laissez-moi savoir si vous en avez implanté un similaire, je suis curieux de connaître les résultats.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-268593249036234145?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/268593249036234145/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=268593249036234145' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/268593249036234145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/268593249036234145'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2012/01/cest-urgent-parce-que-ca-ne-lest-pas.html' title='C&apos;est urgent parce que ça ne l&apos;est pas'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-IJWBKmnaJco/TxGbVZZqptI/AAAAAAAABVQ/im8Rl7_oPUA/s72-c/In-Case-Of-Emergency.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-324240514696239561</id><published>2012-01-10T19:22:00.001-05:00</published><updated>2012-01-10T19:22:58.012-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><title type='text'>Que contient le CV de Dieu ?</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/-KE17EMUFS-E/TwzDp9deNhI/AAAAAAAABU4/re6-mB_k6dM/s1600/cv-de-dieu-fournier.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 122px; height: 200px;" src="http://4.bp.blogspot.com/-KE17EMUFS-E/TwzDp9deNhI/AAAAAAAABU4/re6-mB_k6dM/s200/cv-de-dieu-fournier.jpg" alt="" id="BLOGGER_PHOTO_ID_5696142754357065234" border="0" /&gt;&lt;/a&gt;Voici un court résumé du dernier livre que j'ai offert en distraction à mon cerveau : &lt;a href="http://www.renaud-bray.com/Livres_Produit.aspx?id=1130814"&gt;Le C.V. de Dieu de Jean-Louis Fournier&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;L'idée initiale est que Dieu a  tout fait et s'ennuie. Alors il rédige son curriculum vitae et se rend dans une grande  société pour un entretien. Sur un ton humoristique, il est question des raisons  qui l'ont poussé à créer les différentes choses, de combien rapportent les droits d'auteur sur ses inventions, le tout entrecoupé d'un aperçu de son test de psychologie, d'un extrait de son dossier  médical (le cardiologue note que son coeur est neuf et n'a jamais  servi), son casier judiciaire, d'une correspondance entre lui et le Pape (qui vire aux insultes) et d'un épisode où il se plaint de son fainéant de fils qu'il qualifie de "bon à rien". Au final, l'auteur dévoilera si sa candidature a été acceptée ou rejetée.&lt;br /&gt;&lt;br /&gt;Le jeu de questions et réponses selon la  perspective de Dieu et son intervieweur est intéressante mais trop peu développée à mon goût. On se serait attendu qu'un Dieu-Tout-Puissant soit plus créatif et ludique dans ses explications. Qui sait si l'auteur ne s'est pas retenu pour éviter de choquer certaines personnes ?&lt;br /&gt;&lt;br /&gt;C'est un livre à prendre à la légère, très court à lire, que j'aurais mieux fait de feuilleter en une heure directement à la bibliothèque. Parce que pour 12$, il existe des récits beaucoup plus riches en contenu, qui ont nécessité plus de recherche et qui procurent un plus grand plaisir littéraire.&lt;br /&gt;&lt;br /&gt;Malgré tout, je suis content de l'avoir lu pour l'idée originale et par divertissement mais je recommanderais davantage &lt;a href="http://code18.blogspot.com/2010/09/nous-sommes-les-debris-de-dieu.html"&gt;God's Debris de Scott Adams&lt;/a&gt; (oui, l'auteur de Dilbert) si le sujet vous intéresse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-324240514696239561?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/324240514696239561/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=324240514696239561' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/324240514696239561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/324240514696239561'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2012/01/que-contient-le-cv-de-dieu.html' title='Que contient le CV de Dieu ?'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-KE17EMUFS-E/TwzDp9deNhI/AAAAAAAABU4/re6-mB_k6dM/s72-c/cv-de-dieu-fournier.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-2774674720855529285</id><published>2012-01-08T11:20:00.000-05:00</published><updated>2012-01-08T11:20:04.074-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Logo de Radio-Canada en canvas HTML5</title><content type='html'>Pour poursuivre l'exploration du canvas HTML5, je me suis dit qu'un petit exercice pour mieux comprendre l'utilisation des cercles serait intéressant. J'ai choisi de reproduire le pattern du logo de la &lt;a href="http://www.radio-canada.ca/"&gt;société Radio-Canada&lt;/a&gt; en HTML5, sans me soucier pour l'instant de l'espacement exact entre les éléments qui le composent.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-ryxIo0eirkc/TwmyRTDKl_I/AAAAAAAABTM/e_FIsu4pKFY/s1600/html5-canvas-radio-canada.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 316px; height: 314px;" src="http://3.bp.blogspot.com/-ryxIo0eirkc/TwmyRTDKl_I/AAAAAAAABTM/e_FIsu4pKFY/s400/html5-canvas-radio-canada.jpg" alt="" id="BLOGGER_PHOTO_ID_5695279214027773938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On construira le logo en commençant par l'extérieur car le plus gros problème sera d'arriver à reproduire les arcs externes qui sont tronquées sans dessiner par-dessus les portions existantes. C'est pourquoi je les créerai en premier et j'effacerai dès le départ la zone superflue du cercle.&lt;br /&gt;&lt;br /&gt;Pour commencer, créer 4 cercles complets (aux extrémités d'un +).&lt;br /&gt;&lt;pre name="code" class="js"&gt;var context = canvas.getContext('2d');&lt;br /&gt;&lt;br /&gt;context.fillStyle = '#FC0814'; // le logo est rouge&lt;br /&gt;&lt;br /&gt;// haut&lt;br /&gt;context.beginPath();&lt;br /&gt;// centre(x, y), rayon, angle de départ, angle final, anticlockwise&lt;br /&gt;context.arc(150, 50, 50, 0, Math.PI*2, false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;br /&gt;&lt;br /&gt;// gauche&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(50, 150, 50, 0, Math.PI*2, false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;br /&gt;&lt;br /&gt;// droite&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(250, 150, 50, 0, Math.PI*2, false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;br /&gt;&lt;br /&gt;// bas&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(150, 250, 50, 0, Math.PI*2, false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-CNZPwyT7cCc/Twm1taeOr4I/AAAAAAAABTk/_5YvnEpR-sA/s1600/logo-rc-etape1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 197px;" src="http://3.bp.blogspot.com/-CNZPwyT7cCc/Twm1taeOr4I/AAAAAAAABTk/_5YvnEpR-sA/s200/logo-rc-etape1.jpg" alt="" id="BLOGGER_PHOTO_ID_5695282995591556994" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On efface un carré à l'intérieur pour ne conserver que l'extrémité des arcs.&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.clearRect(25, 25, 250, 250); // x, y, width, height&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-IkTcL12wQyk/Twm14t2vhBI/AAAAAAAABTw/Hr8cXPZ_dS8/s1600/logo-rc-etape2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 199px;" src="http://1.bp.blogspot.com/-IkTcL12wQyk/Twm14t2vhBI/AAAAAAAABTw/Hr8cXPZ_dS8/s200/logo-rc-etape2.jpg" alt="" id="BLOGGER_PHOTO_ID_5695283189773206546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Une fois le centre libre, on place un cercle de même rayon en plein milieu.&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.beginPath();&lt;br /&gt;context.arc(150, 150, 50, 0, Math.PI*2, false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-OBncloKGgGs/Twm2RvT4-uI/AAAAAAAABT8/MKQuBSIw1ro/s1600/logo-rc-etape3.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://2.bp.blogspot.com/-OBncloKGgGs/Twm2RvT4-uI/AAAAAAAABT8/MKQuBSIw1ro/s200/logo-rc-etape3.jpg" alt="" id="BLOGGER_PHOTO_ID_5695283619660626658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ici, j'aurais pu construire un autre + de cercles à l'intérieur et effacer,  comme on vient de le faire, une zone carrée en plein milieu pour y dessiner ensuite le cercle central. En cours de route, j'ai décidé d'aller de l'avant avec une méthode alternative, question que ce tutoriel soit plus formateur. Nous allons dessiner des demi-cercles en travaillant avec des angles de départ et d'arrivée.&lt;br /&gt;&lt;br /&gt;Les angles sont calculés en radians (vous verrez plus loin comment les  obtenir à partir des degrés). Ce qu'il faut comprendre, c'est que l'angle de départ commence toujours à  l'extrémité droite du cercle sur l'axe des x (considéré 0 et 360 degrés,  0Π ou 2Π ou à 3h sur une horloge). En tournant dans le sens des aiguilles d'une montre, 90  degrés (ou Π/2) sera à 6h (ou au point cardinal sud), 180 degrés  (ou Π) sera à 9h (à l'ouest) et 270 degrés (3Π/2) sera à midi (au nord).&lt;br /&gt;&lt;br /&gt;Si le concept des radians vous répugne, vous pouvez simplement appliquer cette formule mathématique pour convertir des degrés (0 à 360) en radians :&lt;br /&gt;&lt;br /&gt;var degres = 90;&lt;br /&gt;var radians = degres * (Math.PI/180);&lt;br /&gt;&lt;br /&gt;J'utilise les deux façons dans le code qui suit :&lt;br /&gt;&lt;pre name="code" class="js"&gt;// haut&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(150, 85, 50, 0, Math.PI, true);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;br /&gt;&lt;br /&gt;// bas&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(150, 215, 50, 0, Math.PI, false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;br /&gt;&lt;br /&gt;// gauche&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(85, 150, 50, 90*(Math.PI/180), 270*(Math.PI/180), false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;br /&gt;&lt;br /&gt;// droite&lt;br /&gt;context.beginPath();&lt;br /&gt;context.arc(215, 150, 50, 270*(Math.PI/180), 90*(Math.PI/180), false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-n0euuYosTFs/Twm5qHcPybI/AAAAAAAABUI/opihgbR6KrM/s1600/logo-rc-etape4.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://3.bp.blogspot.com/-n0euuYosTFs/Twm5qHcPybI/AAAAAAAABUI/opihgbR6KrM/s200/logo-rc-etape4.jpg" alt="" id="BLOGGER_PHOTO_ID_5695287336989870514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Il ne reste que des quarts de cercles à mettre à chaque coin. Comme nous savons déjà comment dessiner des demi-cercles, on fera de même pour faire les quartiers en ajustant les angles.&lt;br /&gt;&lt;br /&gt;En tentant de faire le premier quart, c'est possible que vous n'arriviez pas du premier coup au résultat attendu :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-S6xW8M_oVHI/Twm7OsWlgbI/AAAAAAAABUU/dRFNm2d-dbs/s1600/logo-rc-etape5-erreur.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://3.bp.blogspot.com/-S6xW8M_oVHI/Twm7OsWlgbI/AAAAAAAABUU/dRFNm2d-dbs/s200/logo-rc-etape5-erreur.jpg" alt="" id="BLOGGER_PHOTO_ID_5695289064885158322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;C'est qu'il ne faut pas oublier de relier le centre en appliquant le point de départ de l'arc avec la méthode lineTo() pour dessiner toute la surface.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-76Ow7zs2b8o/Twm-wFJi02I/AAAAAAAABUg/aUg7bvN5FX4/s1600/logo-rc-etape5.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 200px;" src="http://2.bp.blogspot.com/-76Ow7zs2b8o/Twm-wFJi02I/AAAAAAAABUg/aUg7bvN5FX4/s200/logo-rc-etape5.jpg" alt="" id="BLOGGER_PHOTO_ID_5695292937011909474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;// haut gauche&lt;br /&gt;context.beginPath();&lt;br /&gt;context.lineTo(85, 85); // ligne importante pour créer un quart de cercle&lt;br /&gt;context.arc(85, 85, 50, 180*(Math.PI/180), 270*(Math.PI/180), false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;br /&gt;&lt;br /&gt;// haut droit&lt;br /&gt;context.beginPath();&lt;br /&gt;context.lineTo(215, 85);&lt;br /&gt;context.arc(215, 85, 50, 270*(Math.PI/180), 0, false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;br /&gt;&lt;br /&gt;// bas gauche&lt;br /&gt;context.beginPath();&lt;br /&gt;context.lineTo(85, 215);&lt;br /&gt;context.arc(85, 215, 50, 90*(Math.PI/180), 180*(Math.PI/180), false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;br /&gt;&lt;br /&gt;// bas droite&lt;br /&gt;context.beginPath();&lt;br /&gt;context.lineTo(215, 215);&lt;br /&gt;context.arc(215, 215, 50, 0, 90*(Math.PI/180), false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;/pre&gt;Voilà, le pattern du logo est complété.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-pGu7QWynioo/Twm_CLj67KI/AAAAAAAABUs/Q-6I4RUZ39c/s1600/logo-rc-final.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 199px;" src="http://2.bp.blogspot.com/-pGu7QWynioo/Twm_CLj67KI/AAAAAAAABUs/Q-6I4RUZ39c/s200/logo-rc-final.jpg" alt="" id="BLOGGER_PHOTO_ID_5695293247970798754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mais une minute! Ça veut dire qu'on aurait pu dessiner les arcs de la première étape en omettant d'appeler la méthode lineTo()! Oui, tout à fait, mais vous auriez eu à calculer à tâton les angles exacts. En maintenant vous connaissez deux façons de faire. Le code alternatif pour dessiner l'arc du haut sans effacer de zone ressemblerait à ceci :&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.beginPath();&lt;br /&gt;context.arc(150, 50, 50, 210*(Math.PI/180), 330*(Math.PI/180), false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;/pre&gt;Maintenant que vous êtes à l'aise à manipuler cercles, angles et arcs, libre à vous de reproduire le logo de la SRC dans l'ordre qui vous plait.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-2774674720855529285?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/2774674720855529285/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=2774674720855529285' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/2774674720855529285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/2774674720855529285'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2012/01/logo-de-radio-canada-en-canvas-html5.html' title='Logo de Radio-Canada en canvas HTML5'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-ryxIo0eirkc/TwmyRTDKl_I/AAAAAAAABTM/e_FIsu4pKFY/s72-c/html5-canvas-radio-canada.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-739503414460362099</id><published>2012-01-05T18:38:00.000-05:00</published><updated>2012-01-05T18:38:34.849-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>Canvas 2D HTML5 en 10 étapes faciles</title><content type='html'>Dans ce billet, je vous présenterai les notions élémentaires nécessaires pour débuter avec le canvas HTML5. À la fin de ce tutoriel, vous devriez être en mesure de réaliser des oeuvres graphiques complètement inutiles (la seule limite est votre imagination). Si ce n'est pas le cas, vous trouverez un exemple de mon cru à la fin accompagné de son code source.&lt;br /&gt;&lt;br /&gt;Vous aurez besoin :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;un fureteur qui supporte le HTML5 (si vous insistez pour utiliser une version antérieure à Internet Explorer 9, je vous monterai plus loin comment le rendre compatible)&lt;/li&gt;&lt;li&gt;du JavaScript&lt;/li&gt;&lt;li&gt;jQuery (optionnel mais comme j'en utilise dans mes exemples...)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;1. Créez un document HTML5 puis incluez-y une balise canvas&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre name="code" class="html"&gt;&amp;lt;canvas id="myCanvas" width="800" height="600"&amp;gt;&lt;br /&gt;   Le canvas HTML5 ne fonctionne pas avec ton browser déficient :-(&lt;br /&gt;&amp;lt;/canvas&amp;gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;2. Référence au contexte&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Comme on dessinera en deux dimensions, on invoquera le contexte 2D du canvas (tout en s'assurant que le fureteur le supporte).&lt;br /&gt;&lt;pre name="code" class="js"&gt;var canvas = $('#myCanvas');&lt;br /&gt;&lt;br /&gt;if(canvas &amp;amp;&amp;amp; canvas.get(0).getContext){&lt;br /&gt;   var context = canvas.get(0).getContext('2d');&lt;br /&gt;&lt;br /&gt;   // ...&lt;br /&gt;)&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;3. Tracer une ligne&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On commence par une ligne droite horizontale en déterminant les points de départ et d'arrivée. On ajustera les coordonnées x et y du point d'arrivée si on veut obtenir une ligne verticale ou diagonale (le point 0, 0 représente le coin supérieur gauche de la zone du canvas).&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.beginPath();&lt;br /&gt;context.moveTo(50, 25); // x, y&lt;br /&gt;context.lineTo(250, 25); // x, y&lt;br /&gt;context.closePath()&lt;br /&gt;context.stroke();&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;4. Dessiner un carré&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On utilisera fillRect, parce qu'après tout, un carré est un rectangle avec des côtés égaux.&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.fillRect(50, 75, 50, 50); // x, y, width, height&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;5. Dessiner un rectangle&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.fillRect(50, 175, 100, 50); // x, y, width, height&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;6. Définir seulement le contour&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Attention, le contour est extérieur à la forme donc le rectangle semble légèrement plus grand.&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.strokeRect(200, 175, 100, 50);&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;7. Dessiner un cercle parfaitement rond&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ce qui peut être mêlant ici, c'est que la coordonnée x, y représente le centre du cercle. Il faut l'aligner en conséquence.&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.beginPath();&lt;br /&gt;// centre(x, y), rayon, angle de départ, angle final, anticlockwise context.arc(100, 325, 50, 0, Math.PI*2, false);&lt;br /&gt;context.closePath()&lt;br /&gt;context.fill();&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;8. Changer de couleur&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Vous n'aimez pas la couleur noire par défaut ? Modifiez la propriété du contexte avant de dessiner. La couleur sera retenue pour tous les futurs traits.&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.fillStyle = '#0000FF';&lt;br /&gt;context.fillRect(50, 400, 100, 50); // x, y, width, height&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;9. Ajouter du texte&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Parce qu'on est fier, on signe son oeuvre.&lt;br /&gt;&lt;pre name="code" class="js"&gt;context.font = "18px Arial";&lt;br /&gt;context.fillStyle = '#7E2217';&lt;br /&gt;context.fillText("http://code18.blogspot.com", 200, 450);&lt;/pre&gt;Tadaaaaam ! Voici le résulat :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-UQ-N354YUaM/TwYwJ49SpDI/AAAAAAAABS0/CydXEZeFhUU/s1600/html5-canvas-2d.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 385px; height: 400px;" src="http://2.bp.blogspot.com/-UQ-N354YUaM/TwYwJ49SpDI/AAAAAAAABS0/CydXEZeFhUU/s400/html5-canvas-2d.jpg" alt="" id="BLOGGER_PHOTO_ID_5694291725322986546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Euh, j'avais pas dit 10 étapes faciles ? Voici donc la dixième.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;10. Donner un sursis au condamné&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En cas d'incompatibilité avec une version d'Internet Explorer périmée, on peut inclure en entête le script magique &lt;a href="http://code.google.com/p/explorercanvas/"&gt;ExplorerCanvas de Google Code&lt;/a&gt; et souhaiter que tout se passe pour le mieux (les deux exemples de ce billet sont supportés à 100%).&lt;br /&gt;&lt;pre name="code" class="html"&gt;&amp;lt;!--[if IE]&amp;gt;&amp;lt;script src="ExplorerCanvas/excanvas.js"&amp;gt;&amp;lt;/script&amp;gt;&amp;lt;![endif]--&amp;gt;&lt;/pre&gt;Allez, on peut faire mieux. Comme par exemple reproduire les barres de calibrage d'un écran de télévision (&lt;a href="http://www.dvinfo.net/forum/attachments/view-video-display-hardware-software/20129d1288708729-matrox-does-not-calibrate-monitors-all-colors-1.jpg"&gt;couleurs obtenues à partir de cette image&lt;/a&gt;).&lt;br /&gt;&lt;pre name="code" class="js"&gt;// merci de ne pas me faire remarquer que&lt;br /&gt;// je n'ai pas pris soin d'optimiser le code :-)&lt;br /&gt;&lt;br /&gt;$(document).ready(&lt;br /&gt;  function(){&lt;br /&gt; var canvas = $('#myCanvas');&lt;br /&gt;&lt;br /&gt; if(canvas &amp;amp;&amp;amp; canvas.get(0).getContext){&lt;br /&gt;&lt;br /&gt;     var context = canvas.get(0).getContext('2d');&lt;br /&gt;&lt;br /&gt;     var top = ['F4F4F6', 'FFF461', '7EF3F6', '00FD41', 'FF74FF', 'FF204E', '5260FD'];&lt;br /&gt;     var middle = ['8696FF', '3C281D', 'FF8CFF', '161616', '77F0F5', '131011', 'EDECF1'];&lt;br /&gt;     var bottom = ['5F8CDD', 'FDFDFD', '7237D5', '101214', '0D0E11'];&lt;br /&gt;&lt;br /&gt;     var screenWidth = 800;&lt;br /&gt;     var screenHeight = 600;&lt;br /&gt;&lt;br /&gt;     var h = 0;&lt;br /&gt;     var colWidth = 0;&lt;br /&gt;     var colWidthTop = parseInt(screenWidth/top.length);&lt;br /&gt;     var colWidthMiddle = parseInt(screenWidth/middle.length);&lt;br /&gt;     var colWidthBottom = parseInt(screenWidth/bottom.length);&lt;br /&gt;&lt;br /&gt;     offset = 0;&lt;br /&gt;     colWidth = colWidthTop;&lt;br /&gt;     $(top).each(&lt;br /&gt;  function(){&lt;br /&gt;      context.fillStyle = '#' + this;&lt;br /&gt;      context.fillRect(offset, 0, colWidth, screenHeight); // x, y, width, height&lt;br /&gt;      offset += colWidth;&lt;br /&gt;  }&lt;br /&gt;     );&lt;br /&gt;&lt;br /&gt;     offset = 0;&lt;br /&gt;     colWidth = colWidthMiddle;&lt;br /&gt;     h = screenHeight*0.25;&lt;br /&gt;     $(middle).each(&lt;br /&gt;  function(){&lt;br /&gt;      context.fillStyle = '#' + this;&lt;br /&gt;      context.fillRect(offset, screenHeight - h, colWidth, screenHeight - h); // x, y, width, height&lt;br /&gt;      offset += colWidth;&lt;br /&gt;  }&lt;br /&gt;     );&lt;br /&gt;&lt;br /&gt;     offset = 0;&lt;br /&gt;     colWidth = colWidthBottom;&lt;br /&gt;     h = screenHeight*0.20;&lt;br /&gt;     $(bottom).each(&lt;br /&gt;  function(){&lt;br /&gt;      context.fillStyle = '#' + this;&lt;br /&gt;      context.fillRect(offset, screenHeight - h, colWidth, screenHeight - h); // x, y, width, height&lt;br /&gt;      offset += colWidth;&lt;br /&gt;  }&lt;br /&gt;     );&lt;br /&gt; }&lt;br /&gt;  }&lt;br /&gt;);&lt;/pre&gt;Wow, c'est dont ben beau! Je pense que je devrais en faire un agrandissement pour l'encadrer dans mon salon.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-ttoDMigIf0g/TwYynt6tMOI/AAAAAAAABTA/IZ6J3wxb750/s1600/html5-canvas-2d-barres-calibrage.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/-ttoDMigIf0g/TwYynt6tMOI/AAAAAAAABTA/IZ6J3wxb750/s400/html5-canvas-2d-barres-calibrage.jpg" alt="" id="BLOGGER_PHOTO_ID_5694294436778684642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Je vous l'avais dit, ça ne sert pas à grand chose mais c'est joli.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-739503414460362099?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/739503414460362099/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=739503414460362099' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/739503414460362099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/739503414460362099'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2012/01/canvas-2d-html5-en-10-etapes-faciles.html' title='Canvas 2D HTML5 en 10 étapes faciles'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-UQ-N354YUaM/TwYwJ49SpDI/AAAAAAAABS0/CydXEZeFhUU/s72-c/html5-canvas-2d.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-1759313065205621356</id><published>2012-01-03T10:59:00.001-05:00</published><updated>2012-01-03T10:59:20.017-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>Coup de coeur musical</title><content type='html'>Hier soir, j'étais invité à un dernier party pour célébrer le nouvel an entre amis (oui un lundi soir, jusqu'à 3h du matin - désolé, nous on ne travaille pas aujourd'hui!). Alors que le buffet prenait place dans la cuisine, le salon s'était transformé en salle de jam à multiple instruments. Après une session improvisée à la guitare classique, piano et tam tam qui était assez agréable à l'oreille, je me suis mis à faire connaissance et à discuter avec quelques convives pour finalement nous rendre compte que nous avions une grande compatibilité dans nos goûts musicaux.&lt;br /&gt;&lt;br /&gt;Sans vouloir irriter personne (de toute façon, la fête tirait à sa fin), la musique pop/dance est progressivement disparue pour faire place à un marathon de "connais-tu ça" vraiment intéressant (du moins pour nous). Mon coup de coeur à retenir fût &lt;a href="http://ewandobson.com/"&gt;Ewan Dobson&lt;/a&gt;, un canadien récipiendaire de plusieurs prix et qui joue de la guitare &lt;span style="font-style: italic;"&gt;fingerstyle&lt;/span&gt; en s'accompagnant d'effets sonores et parfois visuels (vous n'avez qu'à voir ses montages dans ses autres performances). Malgré l'apparente simplicité, son exécution est parfaite et l'effet est saisissant.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/eXqPYte8tvc" allowfullscreen="" frameborder="0" height="286" width="504"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Veuillez excuser sa coquetterie dans le port du chapeau de &lt;a href="http://www.mortalkombatonline.com/content/games/mk1/raiden/"&gt;Raiden&lt;/a&gt; (ou de paysan chinois), il paraît qu'il a été diagnostiqué à la fois du trouble du déficit de l'attention, du trouble obsessionnel compulsif et du syndrome de la Tourette. N'empêche qu'il fait de la musique hallucinante qui mérite d'être partagée.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-1759313065205621356?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/1759313065205621356/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=1759313065205621356' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1759313065205621356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1759313065205621356'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2012/01/coup-de-coeur-musical.html' title='Coup de coeur musical'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/eXqPYte8tvc/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-4965183009729585046</id><published>2012-01-01T11:18:00.001-05:00</published><updated>2012-01-01T11:18:45.332-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 143 sur le chien et le chat</title><content type='html'>La  différence entre un chien et un chat :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Le chien pense : ils me  nourrissent, ils me protègent, ils doivent être dieu.&lt;/li&gt;&lt;li&gt;Le chat pense : ils  me nourrissent, ils me protègent, je dois être dieu.&lt;/li&gt;&lt;/ul&gt;&lt;p style="font-style: italic; text-align: right;"&gt;- Ira Lewis&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-4965183009729585046?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/4965183009729585046/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=4965183009729585046' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4965183009729585046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4965183009729585046'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2012/01/citation-no-143-sur-le-chien-et-le-chat.html' title='Citation no. 143 sur le chien et le chat'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-1052540200964874407</id><published>2011-12-31T15:41:00.000-05:00</published><updated>2011-12-31T15:41:42.899-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><title type='text'>Les bonnes parties de PHP, vraiment ?</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-aFCnT77ixSk/Tv9pmZDftkI/AAAAAAAABSo/bc0TO6mMR1c/s1600/php-the-good-parts.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 152px; height: 200px;" src="http://2.bp.blogspot.com/-aFCnT77ixSk/Tv9pmZDftkI/AAAAAAAABSo/bc0TO6mMR1c/s200/php-the-good-parts.jpg" alt="" id="BLOGGER_PHOTO_ID_5692384562301089346" border="0" /&gt;&lt;/a&gt;J'anticipais découvrir de vraies petites perles dans ce mince volume qui traite des bonnes parties du langage de programmation PHP. Chez O'Reilly, c'est à croire que le département marketing s'est caché derrière le succès de son équivalent JavaScript : The Good Parts (par l'excellent auteur Douglas Crockford) pour lancer une série et nommer cet ouvrage qui ne mérite pas son titre :  &lt;a href="http://shop.oreilly.com/product/9780596804381.do"&gt;PHP: The Good Parts&lt;/a&gt;. Sérieusement, ce résumé des bonnes parties semble être le minimum pour faire quelque chose d'à peine fonctionnel et d'inutile! Au moins s'il avait été nommé &lt;span style="font-style: italic;"&gt;Apprendre PHP en 7 jours&lt;/span&gt;, j'aurais abaissé mes attentes pour être moins déçu. Tout ça pour dire que j'ai fini par survoler le reste du bouquin sans grand intérêt.&lt;br /&gt;&lt;br /&gt;C'est un peu ma faute aussi : la mention au dos du livre indiquant "No  previous experience with PHP is necessary" aurait dû me mettre la puce à  l'oreille mais je l'ai remarquée seulement au moment d'écrire ces  lignes. Ça m'apprendra de me procurer un livre sans même l'avoir  feuilleté!&lt;br /&gt;&lt;br /&gt;Bien sûr, j'ai surligné quelques rares passages, surtout par souci de révision ou pour expérimenter une approche différente dans le vaste éventail des fonctions offertes.&lt;br /&gt;&lt;br /&gt;Comme tous les livres de références PHP sortis depuis les 3 dernières  années, vous y trouverez là-aussi le classique survol de certains  nouveaux concepts propres à la version 5.3 (fonctions anonymes  - closures, goto * beurk *, NOWDOC, namespacing, classes DateTime et  DateTimeZone).&lt;br /&gt;&lt;br /&gt;Même s'il se détaille à moins de 20$, de grâce, gardez votre argent. La presque totalité du contenu se retrouve dans la &lt;a href="http://www.php.net/manual/fr/"&gt;documentation officielle de PHP&lt;/a&gt; (en plus d'y avoir noté quelques mauvaises pratiques agaçantes). Si le développeur novice ou amateur souhaite faire le saut à PHP et veut avoir des repères rapides, il y trouvera peut-être son compte mais j'ai vite considéré que ça représentait une perte de temps pour le développeur intermédiaire ou expérimenté. À mon avis, l'auteur est passé à côté de l'objectif car il y présente qu'une simple introduction et non les meilleures parties que le titre nous promettait.&lt;br /&gt;&lt;br /&gt;Si l'auteur a réussi à compresser les "bonnes parties" dans 176 pages, il aura aussi su résumer les mauvaises parties dans une annexe de 4 pages. Selon l'auteur, il n'y en a pas vraiment (LOL),  seulement des zones plus particulières (tricky areas).&lt;br /&gt;&lt;br /&gt;Un incontournable de la littérature PHP ? Loin de là.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-1052540200964874407?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/1052540200964874407/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=1052540200964874407' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1052540200964874407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1052540200964874407'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/les-bonnes-parties-de-php-vraiment.html' title='Les bonnes parties de PHP, vraiment ?'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-aFCnT77ixSk/Tv9pmZDftkI/AAAAAAAABSo/bc0TO6mMR1c/s72-c/php-the-good-parts.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8913618814594606307</id><published>2011-12-30T09:36:00.004-05:00</published><updated>2011-12-30T09:39:12.896-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><category scheme='http://www.blogger.com/atom/ns#' term='Mathématique'/><title type='text'>Combien pèse le cerveau d'un imbécile ?</title><content type='html'>Dans la catégorie &lt;a href="http://www.amazon.ca/ARITHMÉTIQUE-APPLIQUÉE-IMPERTINENTE-JEAN-LOUIS-FOURNIER/dp/2253153281/"&gt;Arithmétique appliquée et impertinente&lt;/a&gt;, calculez en kilogrammes, le poids du cerveau d'un imbécile&lt;br /&gt;&lt;br /&gt;Nous savons qu'il est composé de :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;520 grammes de certitude&lt;/li&gt;&lt;li&gt;200 grammes de vulgarité&lt;/li&gt;&lt;li&gt;430 grammes d'autosatisfaction&lt;/li&gt;&lt;li&gt;et 250 grammes de substances organiques diverses (excipient)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Réponse : le cerveau d'un imbécile pèse 1,4 kilogramme (soit environ 3 lbs).&lt;/p&gt;&lt;p&gt;Sachant que le poids moyen d'un cerveau normal est de 1,4 kilogramme et  que l'intelligence ne se mesure pas au poids de l'encéphale, la majorité des hommes en tireront la même conclusion que notre ami Woody Allen :&lt;/p&gt;&lt;blockquote&gt;Mon cerveau ? C’est mon second organe préféré.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8913618814594606307?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8913618814594606307/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8913618814594606307' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8913618814594606307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8913618814594606307'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/combien-pese-le-cerveau-dun-imbecile.html' title='Combien pèse le cerveau d&apos;un imbécile ?'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-3876243674657556870</id><published>2011-12-29T10:30:00.001-05:00</published><updated>2011-12-30T09:40:28.835-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Club Vidéo'/><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><title type='text'>Les vrais programmeurs ninjas codent avec un verre dans le nez</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/-ZyXMuV3zH78/TvyCIRDQQuI/AAAAAAAABSc/gNApkFaHNCk/s1600/coding-drunk.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 206px; height: 246px;" src="http://4.bp.blogspot.com/-ZyXMuV3zH78/TvyCIRDQQuI/AAAAAAAABSc/gNApkFaHNCk/s320/coding-drunk.png" alt="" id="BLOGGER_PHOTO_ID_5691567107617080034" border="0" /&gt;&lt;/a&gt;En lisant l'article &lt;a href="http://www.developpez.com/actu/40217/Pourquoi-les-developpeurs-travaillent-ils-la-nuit-Parce-qu-etre-fatigues-nous-fait-mieux-coder-repond-un-bloggeur-et-d-apres-vous/"&gt;Pourquoi les développeurs travaillent-ils la nuit&lt;/a&gt; (une traduction du billet original de Swizec Teller intitulé &lt;a href="http://swizec.com/blog/why-programmers-work-at-night/swizec/3198"&gt;Why programmers work at night&lt;/a&gt;), j'ai bien rigolé quand j'ai vu l'image humoristique du livre &lt;a href="http://ftp-developpez.com/gordon-fowler/CodingDrunk.png"&gt;Coding Drunk, Make Programming Fun Again&lt;/a&gt;, inspiré des couvertures de la série &lt;a href="http://oreilly.com/"&gt;O'Reilly&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pourquoi cette approche serait-elle farfelue ? C'est pourtant tout ce dont j'ai retenu la première fois que j'ai regardé le film &lt;a href="http://www.imdb.com/title/tt0080179/"&gt;Drunken Master&lt;/a&gt; de Jackie Chan (celui de 1978) alors qu'il excelle dans ses combats à l'aide des techniques du "karaté soûl" (vous pouvez visionner le film en entier sur YouTube : &lt;a href="http://www.youtube.com/watch?v=A5jI0IbdDxA"&gt;Drunken Master (1978) - Full Movie&lt;/a&gt;). Le savoir-faire, c'est d'abord et avant tout de savoir créer les conditions optimales pour performer. Au final, c'est le résultat qui compte.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-CM4Gy3XIXsg/Tvx6_l8rxuI/AAAAAAAABSE/_mjqNAY-N70/s1600/code18-oreilly-cover.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 206px; height: 244px;" src="http://4.bp.blogspot.com/-CM4Gy3XIXsg/Tvx6_l8rxuI/AAAAAAAABSE/_mjqNAY-N70/s320/code18-oreilly-cover.jpg" alt="" id="BLOGGER_PHOTO_ID_5691559262026450658" border="0" /&gt;&lt;/a&gt; Coding Drunk est un livre fictif dont la couverture a été générée à l'aide d'un outil comme &lt;a href="http://www.oreillymaker.com/"&gt;O'Reilly Maker&lt;/a&gt;. À mon tour, je me suis amusé à configurer ce que serait la couverture de mon livre si je me décidais à &lt;a href="http://blog2print.sharedbook.com/blogworld/printmyblog/index.html"&gt;faire imprimer mon blogue&lt;/a&gt; (aviez-vous remarqué que si on retire le L de livre, ça fait ivre ?).&lt;br /&gt;&lt;br /&gt;Toutes les raisons sont bonnes pour procrastiner ce matin... Vraiment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;* Pour éviter de m'attirer les foudres des critiques, je me dois m'inclure une note moralisatrice : consommez de façon responsable et conduisez prudemment. À moins que ce soit buvez de façon responsable et codez prudemment...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-3876243674657556870?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/3876243674657556870/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=3876243674657556870' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3876243674657556870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3876243674657556870'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/les-vrais-programmeurs-ninjas-codent.html' title='Les vrais programmeurs ninjas codent avec un verre dans le nez'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-ZyXMuV3zH78/TvyCIRDQQuI/AAAAAAAABSc/gNApkFaHNCk/s72-c/coding-drunk.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-787984375241452762</id><published>2011-12-28T18:52:00.000-05:00</published><updated>2011-12-28T18:52:44.622-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><title type='text'>Quand Google hurle, il faut être à l'affût</title><content type='html'>Ça fait plusieurs jours que je n'écris plus. C'est que je profite des vacances de Noël pour reprendre là où j'avais laissé mes signets dans quelques livres entamés et laissés-pour-compte. C'est ça le problème, trop de livres et d'intérêts, je passe d'un à l'autre pour finalement les achever quelques mois plus tard. Présentement, c'est la brique &lt;a href="http://code18.blogspot.com/2011/10/20-choses-savoir-sur-google-partie-1.html"&gt;In the Plex sur l'histoire de Google&lt;/a&gt; qui occupe mon temps.&lt;br /&gt;&lt;br /&gt;Dans un autre billet, j'avais mentionné que mon plus grand regret était qu'&lt;a href="http://code18.blogspot.com/2011/09/devant-une-bibliotheque-imposante.html"&gt;une vie est beaucoup trop courte pour lire tout ce qui m'intéresse&lt;/a&gt;. Malgré tout, je viens de recevoir aujourd'hui même un autre livre commandé sur Amazon (heureusement il fait à peine 125 pages) et je comptais bientôt aller regarnir ma bibliothèque pour raccourcir ma &lt;span style="font-style: italic;"&gt;wishlist&lt;/span&gt; de lecture.&lt;br /&gt;&lt;br /&gt;À quel point peut-il y avoir trop de livres ? Quand Larry Page de Google a eu l'idée qu'il serait utile de pouvoir chercher dans la totalité des livres publiés, son entourage déclara que ce serait impossible. Page considérait que ça pouvait être faisable et dispendieux, mais pas impossible. Il essaya de figurer ce que nécessiterait ce type d'opération et calcula que les coûts étaient raisonnables. Si Google achetait une copie de chaque livre publié à 10$ et qu'il existait 30 millions de bouquins, les coûts n'étaient que de 300 millions de dollars. Pour lui, ça représentait peu d'argent pour être en possession de la base de connaissance la plus précieuse au monde (en 2010, &lt;a href="http://mashable.com/2010/08/06/number-of-books-in-the-world/"&gt;Google se ravisa et estima plutôt à 130 millions le nombre total de livres sur le globe&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Rendons nous à l'évidence :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;contrairement à Page, mon portefeuille représente une fraction de sa petite monnaie&lt;br /&gt;&lt;/li&gt;&lt;li&gt;je suis un humain normalement constitué et je ne lis pas à la même vitesse que &lt;a href="http://www.youtube.com/watch?v=efGKDyjYLHk"&gt;Johnny 5 dans Coeur Circuit&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;C'est pour ces raisons que je dois être très sélectif dans ce que je veux donner comme nourriture à mes yeux et mon cerveau. Et avec les Interwebs, c'est impossible de lire tout ce qui est publié (à l'avenir, je devrai songer de me contenter à regarder que les images, comme un vrai homme!).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Les dernières pages que j'ai lues aujourd'hui racontaient la naissance de &lt;a href="http://books.google.ca/"&gt;Google Books&lt;/a&gt; (nom de code Ocean pour réfléter la vaste mer d'information à explorer). Saviez-vous que le premier livre qu'ils ont numérisé était &lt;a href="http://blogoscoped.com/googlebook/"&gt;The Google Book&lt;/a&gt;, un livre illustré pour enfant par Vincent Cartwright Vickers (1879-1939) ? Dans le titre, le terme Google fait référence à une créature étrange qui avait des aspects empruntés à un mammifère, un reptile et un poisson.&lt;/p&gt;&lt;p&gt;Ensuite, ils ont fait des tests avec un livre de photos, Ancient Forests par David Middleton, &lt;a href="http://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structures/dp/0201314525/"&gt;Algorithms in C par Robert Sedgewick&lt;/a&gt; et le livre &lt;a href="http://www.amazon.com/Startup-Silicon-Adventure-Jerry-Kaplan/dp/0140257314"&gt;Startup par Jerry Kaplan&lt;/a&gt;. Lors de leurs tests, un livre de 300 pages comme Startup prenait 42 minutes à numériser, soit plus rapide que ce qu'ils s'attendaient (ils ont accéléré le processus par la suite).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Ce qu'ils ignoraient et que Steven Levy fait remarquer, c'est l'ironie à la fin du premier livre numérisé qu'ils ont choisi, The Google Book :&lt;/p&gt;&lt;p style="font-style: italic;"&gt;The sun is setting&lt;br /&gt;Can't you hear&lt;br /&gt;A something in the distance&lt;br /&gt;Howl!!?&lt;br /&gt;I wonder if it's&lt;br /&gt;Yes!! it is&lt;br /&gt;That horrid Google&lt;br /&gt;On the prowl!!!&lt;/p&gt;&lt;p&gt;Traduction :&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Le soleil se couche&lt;br /&gt;N'entends-tu pas&lt;br /&gt;Quelque chose au loin&lt;br /&gt;Hurlement!?&lt;br /&gt;Je me demande si ce n'est&lt;br /&gt;Oui!&lt;br /&gt;Cet horrible Google&lt;br /&gt;À l'affût!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Au moins s'ils avaient choisi de numériser l'annuaire téléphonique, ça se serait terminé sur une note plus positive avec Monsieur Zzopardi.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-787984375241452762?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/787984375241452762/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=787984375241452762' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/787984375241452762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/787984375241452762'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/quand-google-hurle-il-faut-etre-laffut.html' title='Quand Google hurle, il faut être à l&apos;affût'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8138527857260361439</id><published>2011-12-23T07:09:00.000-05:00</published><updated>2011-12-23T07:09:04.875-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coffre à outils'/><title type='text'>32 gigaoctets de Coke = 4 Go diète</title><content type='html'>Quand j'ai acheté cette jolie petite clé USB de 32 Go sur eBay, ça semblait une véritable aubaine (un prix ridicule, à peine 15$, livraison incluse). Dans la même page, le marchand chinois offrait 3 modèles, soit une canette de Coca-Cola, de Pepsi ou de Heineken, chacun décliné en version 4, 8, 16 ou 32 Go avec un prix proportionnel.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-kKW7JoWsfF0/TvRt_M6zfpI/AAAAAAAABRg/niIMVR--wfY/s1600/canette-coke-usb.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-kKW7JoWsfF0/TvRt_M6zfpI/AAAAAAAABRg/niIMVR--wfY/s400/canette-coke-usb.jpg" alt="" id="BLOGGER_PHOTO_ID_5689293161842835090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Une fois reçue, j'ai glissé la clé dans l'ordinateur. Elle indiquait bien une capacité de stockage de 32 Go. Superbe! Pourtant, quelque chose semblait anormal. J'ai alors utilisé le petit outil &lt;a href="http://www.softpedia.com/progDownload/H2testw-Download-149366.html"&gt;H2testw&lt;/a&gt; pour m'assurer qu'elle était conforme et fiable à l'utilisation. Le test écrit et vérifie les données sur la totalité de la mémoire flash et présente un rapport indiquant les erreurs rencontrées. Ainsi, une série de 32 fichiers de 1 Go (.h2w) est généré à même le lecteur et est ensuite vérifié, d'où l'importance de le faire lorsqu'elle est vierge ou nouvellement formatée.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-pc26lRaputI/TvRt_XkYGoI/AAAAAAAABRo/6aV_haBOZHU/s1600/canette-coke-usb-2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/-pc26lRaputI/TvRt_XkYGoI/AAAAAAAABRo/6aV_haBOZHU/s400/canette-coke-usb-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5689293164701555330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Attendez-vous aussi à ce que ça soit très, très long comme en témoigne les captures d'écrans ci-dessous.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-Le-Xfr7359Y/TvOc3GRRPZI/AAAAAAAABQw/XeGyAKAGt7k/s1600/H2testw.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 249px;" src="http://3.bp.blogspot.com/-Le-Xfr7359Y/TvOc3GRRPZI/AAAAAAAABQw/XeGyAKAGt7k/s400/H2testw.jpg" alt="" id="BLOGGER_PHOTO_ID_5689063224688852370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Après plus de 1h30 d'attente, ça s'annonçait mal... Les premiers 3,6 Go sont testés fonctionnels et les suivants sont déjà corrompus.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-pKGmnthN3rI/TvOc9vgPEaI/AAAAAAAABRI/k05GUtyoYI4/s1600/H2testw-final.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-KxONHP927P4/TvOc6cNxYbI/AAAAAAAABQ8/AyXjfoOZp60/s1600/H2testw-progress.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 329px;" src="http://4.bp.blogspot.com/-KxONHP927P4/TvOc6cNxYbI/AAAAAAAABQ8/AyXjfoOZp60/s400/H2testw-progress.jpg" alt="" id="BLOGGER_PHOTO_ID_5689063282119369138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Au final, 27,4 Go sont inutilisables sur une possibilité de 32 Go. Le verdict tombe : "&lt;span style="font-style: italic;"&gt;The media is likely to be defective&lt;/span&gt;". Évitons donc d'y stocker des documents importants...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-Le-Xfr7359Y/TvOc3GRRPZI/AAAAAAAABQw/XeGyAKAGt7k/s1600/H2testw.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-pKGmnthN3rI/TvOc9vgPEaI/AAAAAAAABRI/k05GUtyoYI4/s1600/H2testw-final.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 329px;" src="http://3.bp.blogspot.com/-pKGmnthN3rI/TvOc9vgPEaI/AAAAAAAABRI/k05GUtyoYI4/s400/H2testw-final.jpg" alt="" id="BLOGGER_PHOTO_ID_5689063338836693410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Heureusement que j'ai testé le média avant de laisser le feedback au vendeur (qui n'a jamais retourné mes emails pour obtenir réparation). Est-ce qu'il le savait au moment de la vente ? Je l'ignore. Mais c'est dommage pour lui car à voir dégringoler son pourcentage de feedback positif (de 99% au moment de l'achat à 93%), je ne suis pas le seul insatisfait.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8138527857260361439?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8138527857260361439/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8138527857260361439' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8138527857260361439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8138527857260361439'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/32-gigaoctets-de-coke-4-go-diete.html' title='32 gigaoctets de Coke = 4 Go diète'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-kKW7JoWsfF0/TvRt_M6zfpI/AAAAAAAABRg/niIMVR--wfY/s72-c/canette-coke-usb.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-6627915381940575935</id><published>2011-12-22T18:24:00.000-05:00</published><updated>2011-12-22T18:24:25.500-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Marché des saveurs'/><title type='text'>Faire pousser des légumes en hiver</title><content type='html'>Si vous allez faire un tour du côté du marché Jean-Talon ces temps-ci (maintenant que l'hiver est commencé), vous y trouverez une abondance de fruits et légumes sur les étalages. Sans surprise, ils n'ont pas poussé chez nous et la courte saison d'agriculture au Québec nous oblige à nous approvisionner dans de multiples pays qui ont la chance d'avoir un peu plus de chaleur. Qui dit importation rime aussi avec transport, pollution, manque de fraicheur et prix à la hausse.&lt;br /&gt;&lt;br /&gt;J'avais vu un reportage à la télé sur les &lt;a href="https://lufa.com/"&gt;fermes Lufa&lt;/a&gt;, une entreprise québécoise d'agriculture urbaine qui a eu l'ingéniosité d'installer des serres sur le toit d'un entrepôt du Marché Central de Montréal, à quelques minutes de chez moi. Si vous circulez sur le boulevard de l'Acadie, c'est du côté du Canadian Tire que vous pourrez les apercevoir. Croyez-le ou non, c'est 6000 lbs de légumes qui sont récoltés chaque semaine.&lt;br /&gt;&lt;br /&gt;Frais, local, responsable. Trois mots qui définissent bien ce que je recherchais. Un ami déjà inscrit m'a assuré que le petit panier serait suffisant pour ma copine et moi. Du moins, pour commencer. La semaine dernière, j'ai finalement décidé d'en faire l'essai durant les mois d'hiver. L'inscription est sur une base de 12 semaines, ce qui me garantit des légumes frais, cultivés à Montréal durant la grosse période de froid. Et je l'avoue, ça sera bon de manger santé après s'être empiffré durant le temps des fêtes.&lt;br /&gt;&lt;br /&gt;Quelques jours plus tard, voilà arrivé le moment de la cueillette. Je viens à l'instant d'aller récupérer mon panier au point de chute le plus près de chez moi (situé à moins de 2 km de ma maison).&lt;br /&gt;&lt;br /&gt;Voici ce que j'ai reçu dans mon 1er panier :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-BHDzqkId0I4/TvOx8P9W73I/AAAAAAAABRU/tpva6foYm8I/s1600/lufa-farms.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/-BHDzqkId0I4/TvOx8P9W73I/AAAAAAAABRU/tpva6foYm8I/s400/lufa-farms.jpg" alt="" id="BLOGGER_PHOTO_ID_5689086402933223282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Laitue Boston et le trio de laitues&lt;/li&gt;&lt;li&gt;4 sortes de tomates&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2 concombres libanais&lt;br /&gt;&lt;/li&gt;&lt;li&gt;3 piments forts&lt;/li&gt;&lt;li&gt;2 gousses d'ail&lt;/li&gt;&lt;li&gt;4 pommes&lt;/li&gt;&lt;li&gt;1 courge butternut&lt;/li&gt;&lt;li&gt;1 pot de confiture biologiques aux bleuets&lt;/li&gt;&lt;li&gt;Échalottes&lt;/li&gt;&lt;li&gt;Fines herbes mini-fenouil&lt;/li&gt;&lt;/ul&gt;Ça sent vraiment bon. Je n'ai aucune idée de ce que je ferai avec la courge, un aliment que je n'ai pas  l'habitude de mettre dans mon panier d'épicerie. Il faut croire que je ne suis pas le seul à m'être posé la question, c'est pourquoi ils ont mis une recette sur leur site web. Définitivement à essayer. D'ailleurs, ils y indiquent aussi chaque semaine ce que contiendra les paniers de façon à ne pas acheter des produits identiques à l'épicerie.&lt;br /&gt;&lt;br /&gt;Et comme il y aura des légumes surprises à chaque semaine, c'est parfait pour la diversité dans l'assiette et pour être créatif en cuisine.&lt;br /&gt;&lt;br /&gt;Entre des légumes qui ont poussé à plusieurs milliers de kilomètres, qui ont passé plusieurs jours en transport et sans doute un certain temps en entreposage versus des légumes locaux frais cueillis le matin même (rien de moins!), le choix est évident. Chapeau pour l'initiative.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-6627915381940575935?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/6627915381940575935/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=6627915381940575935' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6627915381940575935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6627915381940575935'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/faire-pousser-des-legumes-en-hiver.html' title='Faire pousser des légumes en hiver'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-BHDzqkId0I4/TvOx8P9W73I/AAAAAAAABRU/tpva6foYm8I/s72-c/lufa-farms.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5010611095681330872</id><published>2011-12-18T09:05:00.001-05:00</published><updated>2011-12-18T09:05:36.832-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 142 sur la superstition</title><content type='html'>Un chat noir qui traverse votre chemin signifie que l'animal va quelque part.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Groucho Marx&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5010611095681330872?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5010611095681330872/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5010611095681330872' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5010611095681330872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5010611095681330872'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/citation-no-142-sur-la-superstition.html' title='Citation no. 142 sur la superstition'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-2029431878111671862</id><published>2011-12-18T08:20:00.001-05:00</published><updated>2011-12-18T08:20:19.872-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Marché des saveurs'/><title type='text'>Vegemite, la mort noire</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-A-ElbAtsuHk/Tu3ib_sHdSI/AAAAAAAABQk/vGv_CBDzzEs/s1600/vegemite.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 242px; height: 242px;" src="http://2.bp.blogspot.com/-A-ElbAtsuHk/Tu3ib_sHdSI/AAAAAAAABQk/vGv_CBDzzEs/s400/vegemite.jpg" alt="" id="BLOGGER_PHOTO_ID_5687450875019621666" border="0" /&gt;&lt;/a&gt;Bon matin chers lecteurs. J'écris ces lignes en prenant un petit déjeuner à peine nocif pour ma santé, à savoir une tranche de pain grillé tartiné avec du beurre d'arachides accompagné d'un grand verre de lait au chocolat. C'est quand même mieux que d'avaler un &lt;a href="http://www.hersheys.com/reeses/products/reeses-peanut-butter-cups/1lb.aspx"&gt;Reese's d'une livre&lt;/a&gt; et ça goûte à peu près la même chose (la portion complète est de 2280 calories et 132 grammes de gras).&lt;br /&gt;&lt;br /&gt;Il faut l'avouer, parfois nous nous alimentons si mal que c'en est presque honteux. Non ça l'est. Quand j'ai écrit le billet sur &lt;a href="http://code18.blogspot.com/2011/11/le-plaisir-insoupconne-de-manger-du.html"&gt;Le plaisir insoupçonné de manger du Velveeta&lt;/a&gt;, c'est dire à quel point l'alimentation américaine a pu déteindre sur la culture culinaire canadienne. Heureusement, ça ne représente pas notre quotidien, on s'alimente généralement mieux mais on se laisse parfois tenter par le &lt;span style="font-style: italic;"&gt;comfort&lt;/span&gt; et le &lt;span style="font-style: italic;"&gt;junk &lt;/span&gt;&lt;span style="font-style: italic;"&gt;food&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Attendez-moi un instant, je vais me faire une autre toast.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Oui, en étendant la pâte brune et crémeuse sur le pain, je comprends le dédain que pouvait ressentir le petit Grégory (le petit Basque que nous avions hébergé pendant son séjour au Québec) lorsque nous lui avions présenté ce condiment pour son premier petit déjeuner en Amérique. Intrigué, il avait ouvert le pot, regardé dedans, essaya de se familiariser avec l'odeur et le referma aussitôt, jugeant que ça ne répondait pas à ses attentes. C'est comprenable, ce produit brillait par son absence sur les tablettes des supermarchés français et donc, pratiquement méconnu.&lt;br /&gt;&lt;br /&gt;Comment peut-on ressentir la même sensation face à un produit alimentaire ? Quel produit équivalent pourrait susciter le dégoût de ce côté de l'océan ? Contre toute attente, c'est ma copine qui m'a apporté la réponse lorsqu'elle a entendu la pièce &lt;a href="http://www.youtube.com/watch?v=RJhDV0MMPAs"&gt;Vegemite (The Black Death) de l'artiste américaine Amanda Palmer&lt;/a&gt; (album Goes Down Under).&lt;br /&gt;&lt;br /&gt;Qu'est-ce que le Vegemite ? Selon &lt;a href="http://whatscookingamerica.net/History/VegemiteHistory.htm"&gt;What's Cooking America&lt;/a&gt;, c'est un produit australien typique et apprécié des enfants du pays de &lt;a href="http://www.imdb.com/title/tt0090555/"&gt;Crocodile Dundee&lt;/a&gt; au même titre qu'un sandwich au beurre de peanuts l'est pour un jeune américain. Fabriqué à partir des restes d'extraits de levure de bière, de différents légumes et d'épices, la pâte résultante possède une couleur rouge-brune, presque noire, et elle est reconnue pour être riche en vitamine B.&lt;br /&gt;&lt;br /&gt;Mis à part un goût très salé, laissons Mme Palmer résumer la saveur :&lt;br /&gt;&lt;blockquote&gt;Vegemite? It tastes like sadness.&lt;br /&gt;It tastes like batteries. It tastes like acid.&lt;br /&gt;I cannot hold a man so close who spreads this cancer on his toast.&lt;br /&gt;It is the Vegemite, my darling, or it's me.&lt;/blockquote&gt;&lt;br /&gt;Élogieux.&lt;br /&gt;&lt;br /&gt;Et à voir la réaction des étudiants canadiens confrontés à un test de goût par leur enseignant, c'est loin de faire l'unanimité...&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/UaJ_dHmZLOE" allowfullscreen="" frameborder="0" height="315" width="420"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Je n'ai pas encore eu la chance d'en trouver au supermarché. Mais si vous connaissez un commerçant montréalais qui en vend, j'oserai relever le défi d'y goûter et mettre ainsi ma vie en péril.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-2029431878111671862?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/2029431878111671862/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=2029431878111671862' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/2029431878111671862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/2029431878111671862'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/vegemite-la-mort-noire.html' title='Vegemite, la mort noire'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-A-ElbAtsuHk/Tu3ib_sHdSI/AAAAAAAABQk/vGv_CBDzzEs/s72-c/vegemite.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5915138360704318506</id><published>2011-12-17T09:51:00.001-05:00</published><updated>2011-12-17T09:53:11.517-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Club Vidéo'/><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><title type='text'>Cinéma-Twit et Parodies sur Terre</title><content type='html'>Pour les nostalgiques de l'époque où Musique Plus était déjanté et se permettait d'excellentes parodies avec Cinéma-Twit et Parodies sur Terre (vers le milieu des années 90), en voici une de Star Wars mettant en vedette Hand Solo et Chabada.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/Hib9yKT6psU" allowfullscreen="" frameborder="0" height="360" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Avec &lt;a href="http://fr.wikipedia.org/wiki/La_fin_du_monde_est_%C3%A0_sept_heures"&gt;La fin du monde est à 7 heures&lt;/a&gt;, c'est le genre de truc que j'aimerais bien retrouver sur DVD. En attendant, quelqu'un a eu l'excellente idée de le rendre disponible sur Google Videos, pour le bon plaisir de tous.&lt;br /&gt;&lt;br /&gt;&lt;embed id="VideoPlayback" src="http://video.google.com/googleplayer.swf?docid=1024108232631746558&amp;amp;hl=en&amp;amp;fs=true" style="width:480px;height:391px" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;Quelques extraits mémorables :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Michael Douglas qui saute les plombs sur le creton versus le Paris Pâté ou encore pour le poulet : viande blanche que je voulais, viande blanche! Pas d'la putain de viande brune avec de la tiraille dedans.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;je vais te dire quelque chose qui va te refroidir pour de bon : je suis un mec!&lt;/li&gt;&lt;li&gt;tous les extraits avec Business (un personnage assez rural) dont le fameux "on a un spécial de 50% si vous prenez une escalope avec une salade. Non merci mais une escapade avec une salope, j'hairais pas ça".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;les extraits de l'émission d'Ed Sullivan (vers 1h18) avec les chansons Dans l'garage et Fait le fucké, avec une chorégraphie dont même Rihanna ne peut égaler.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5915138360704318506?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5915138360704318506/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5915138360704318506' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5915138360704318506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5915138360704318506'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/cinema-twit-et-parodies-sur-terre.html' title='Cinéma-Twit et Parodies sur Terre'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/Hib9yKT6psU/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-1370176578422900086</id><published>2011-12-07T20:57:00.000-05:00</published><updated>2011-12-07T20:57:39.996-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>Preuve de concept : 1 guitare, 8 manches</title><content type='html'>Voici la preuve qu'il est possible de construire et de jouer sur une guitare à 8 manches. Bien sûr, il faudra 16 mains et un peu de pratique mais ça donne un résultat vraiment bien.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/w37MSOnRhhA" allowfullscreen="" frameborder="0" height="284" width="504"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Liste des manches :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;mandoline&lt;/li&gt;&lt;li&gt;ukulele&lt;/li&gt;&lt;li&gt;guitare 6 cordes&lt;/li&gt;&lt;li&gt;basse fretless&lt;/li&gt;&lt;li&gt;basse&lt;/li&gt;&lt;li&gt;guitare 12 cordes&lt;/li&gt;&lt;li&gt;guitare bariton&lt;/li&gt;&lt;li&gt;guitare 7 cordes&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Comme quoi ce n'est pas la longueur du manche qui compte, mais bien le nombre que vous avez entre les mains!&lt;/p&gt;&lt;p&gt;Si vous voulez passer une commande, &lt;a href="http://dgncustomguitars.com/"&gt;DNG Custom Guitars&lt;/a&gt; se fera un plaisir de répondre à vos besoins.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-1370176578422900086?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/1370176578422900086/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=1370176578422900086' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1370176578422900086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1370176578422900086'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/preuve-de-concept-1-guitare-8-manches.html' title='Preuve de concept : 1 guitare, 8 manches'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/w37MSOnRhhA/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-4318920277679211501</id><published>2011-12-06T18:03:00.000-05:00</published><updated>2011-12-06T18:03:50.760-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><category scheme='http://www.blogger.com/atom/ns#' term='Programmation'/><title type='text'>L'humour du programmeur et son icône monstrueux</title><content type='html'>En reconfigurant mon nouveau PC Windows 7, j'ai installé la plus récente version de &lt;a href="http://notepad-plus-plus.org/"&gt;NotePad++ (5.9.6.2)&lt;/a&gt; et juste avant de terminer le processus, j'ai remarqué cette option d'installation :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/--prIpuv07cA/Tt6FITmJ07I/AAAAAAAABQU/GOn8cTVGLLM/s1600/notepad-plusplus.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 312px;" src="http://3.bp.blogspot.com/--prIpuv07cA/Tt6FITmJ07I/AAAAAAAABQU/GOn8cTVGLLM/s400/notepad-plusplus.jpg" alt="" id="BLOGGER_PHOTO_ID_5683126157533893554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Use the old, obsolete and monstrous icon.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I won't blame you if you want to get the old icon back :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Haha!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-4318920277679211501?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/4318920277679211501/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=4318920277679211501' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4318920277679211501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4318920277679211501'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/lhumour-du-programmeur-et-son-icone.html' title='L&apos;humour du programmeur et son icône monstrueux'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/--prIpuv07cA/Tt6FITmJ07I/AAAAAAAABQU/GOn8cTVGLLM/s72-c/notepad-plusplus.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-6910557405830526338</id><published>2011-12-04T09:51:00.001-05:00</published><updated>2011-12-04T09:51:19.154-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 141 sur la merde</title><content type='html'>Quand la merde vaudra de l'or, le cul des pauvres ne leur appartiendra plus.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Henry Miller&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-6910557405830526338?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/6910557405830526338/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=6910557405830526338' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6910557405830526338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6910557405830526338'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/citation-no-141-sur-la-merde.html' title='Citation no. 141 sur la merde'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8488328862190940672</id><published>2011-12-04T09:43:00.000-05:00</published><updated>2011-12-04T09:43:34.500-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Zend Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Retour vers le passé et voyage dans le temps avec Zend_Date</title><content type='html'>Un client se plaignait d'avoir entré une date et que malgré tout, ça affichait la mauvaise année à l'écran. On croyait avoir affaire à un code 18 de sa part mais comme c'était reproductible, nous avons dû nous creuser les méninges pour trouver la source du problème.&lt;br /&gt;&lt;br /&gt;En examinant le code, tout semblait conforme : la valeur de la date, la valeur stockée, la localisation (qui aurait pu jouer des tours) et le format d'affichage spécifié. Pour trouver d'où provenait l'erreur, j'ai utilisé la &lt;a href="http://code18.blogspot.com/2011/12/fonction-php-pour-formater-lheure.html"&gt;même méthode décrite à mon dernier billet&lt;/a&gt; en faisant des appels en boucle. Avec un peu de chance, peut-être que quelque chose en resortirait.&lt;br /&gt;&lt;pre name="code" class="php"&gt;$locale = new Zend_Locale('fr_CA');&lt;br /&gt;$date = new Zend_Date('2011-12-04', false, $locale);&lt;br /&gt;&lt;br /&gt;$i = 0;&lt;br /&gt;do{&lt;br /&gt;   echo $date-&amp;gt;get('dd MMMM YYYY');&lt;br /&gt;   $date-&amp;gt;add(1, Zend_Date::DAY);&lt;br /&gt;&lt;br /&gt;   echo BR; // constante&lt;br /&gt;   $i++;&lt;br /&gt;} while($i &amp;lt; 60);&lt;/pre&gt;Remarquez ce qui se passe dans le calcul lorsqu'on change d'année :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-av73QS482b8/TttwRbRbKUI/AAAAAAAABP8/l0U2FGU_doo/s1600/zend-date-yyyy.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 335px; height: 315px;" src="http://2.bp.blogspot.com/-av73QS482b8/TttwRbRbKUI/AAAAAAAABP8/l0U2FGU_doo/s400/zend-date-yyyy.jpg" alt="" id="BLOGGER_PHOTO_ID_5682258799538940226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nom de Zeus! Où est passé le 1er janvier 2012 ? On croirait à une déchirure du continuum espace-temps puisqu'on se retrouve soudainement au 1er jour de 2011 pour ensuite revenir en 2012 à l'itération suivante.&lt;br /&gt;&lt;br /&gt;Pourquoi ? Ça m'enrageait un peu car ce n'était pas la première fois que j'avais des mauvaises surprises avec les dates de PHP (&lt;a href="http://twitter.com/#%21/pparadis/status/142990231937875973"&gt;@pparadis avait raison&lt;/a&gt;). Pour les besoins du projet, le composant Zend_Date avait été retenu pour manipuler et calculer des dates et du temps, configuré avec un type de format autre que celui natif de PHP (plus intuitif que "j F Y"). Et nous ne nous attendions pas à ce type de comportement. À vrai dire, le programmeur aurait eu intérêt à mieux lire la documentation car de ce que j'ai trouvé, il existe une différence minime mais fondamentale entre les formats yyyy écrits en minuscules et majuscules :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;YYYY pour l'année ISO&lt;/li&gt;&lt;li&gt;yyyy pour l'année réelle&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;En modifiant le format pour l'année réelle, le problème s'est réglé immédiatement. Alors quand devrait-on utiliser le format ISO 8601 ? Selon ma compréhension, ce serait si on a à construire, manipuler ou représenter un calendrier graphique. J'ai vérifié sur Google Calendar et le 1er janvier 2012 se trouve dans la dernière semaine de 2011. Donc la valeur "2011" est affichée car c'est une semaine qui débute l'année précédente.&lt;br /&gt;&lt;br /&gt;Sinon, voici un autre exemple qui illustre mieux la représentation calendrier. Utilisez le même snippet de code ci-haut et modifiez la date initiale pour "2010-01-01". On s'attendrait que le 1er affichage indique 1er janvier 2010. Pourtant, la même logique s'applique.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-nUgknWbSEoY/Ttt06wc5z7I/AAAAAAAABQI/baXfeUwznv8/s1600/zend-date-yyyy-2010-01-01.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 367px; height: 143px;" src="http://2.bp.blogspot.com/-nUgknWbSEoY/Ttt06wc5z7I/AAAAAAAABQI/baXfeUwznv8/s400/zend-date-yyyy-2010-01-01.JPG" alt="" id="BLOGGER_PHOTO_ID_5682263907645378482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Encore une fois, si on se réfère au calendrier, les trois premiers jours de 2010 sont dans la dernière semaine de 2009. &lt;span style="font-weight: bold;"&gt;Pour faire simple, YYYY retourne l'année du 1er jour de la semaine où se trouve la date demandée. Le format yyyy retourne l'année réelle.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En conclusion, trois choses :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lisez toujours la documentation au lieu de prendre pour acquis certaines notions. Les différences entre yyyy et YYYY sont subtiles mais importantes en même temps.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Évitez-le format ISO pour l'affichage, à moins que vous sachiez exactement ce que vous êtes en train de faire.&lt;/li&gt;&lt;li&gt;Cette démonstration utilise Zend Framework pour PHP mais comme ISO 8601 est un standard, vous risquez de rencontrer le même problème dans d'autres frameworks et langages de programmation.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8488328862190940672?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8488328862190940672/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8488328862190940672' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8488328862190940672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8488328862190940672'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/retour-vers-le-passe-et-voyage-dans-le.html' title='Retour vers le passé et voyage dans le temps avec Zend_Date'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-av73QS482b8/TttwRbRbKUI/AAAAAAAABP8/l0U2FGU_doo/s72-c/zend-date-yyyy.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-4267637556298695971</id><published>2011-12-03T10:17:00.000-05:00</published><updated>2011-12-03T10:17:10.192-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Fonction PHP pour formater l'heure</title><content type='html'>Ce matin, je vais vous entretenir à propos d'un bogue que j'ai trouvé cette semaine dans un système qui calcule du temps. Pour faire court, le temps saisi au formulaire était correct, il était ensuite stocké dans une base de données sous forme de nombre à virgule flotante et lorsqu'il était récupéré puis affiché à l'écran, une minute était parfois perdue par rapport à l'heure initiale. Concrètement, 8h25 devenait soudain 8h24! Chaque enregistrement modifiant l'heure décrémentait les minutes. Multiplié par des centaines de manipulations, ça cumulait du temps perdu.&lt;br /&gt;&lt;br /&gt;Je soupçonnais la fonction de formatage de l'heure à l'écran.&lt;br /&gt;&lt;pre name="code" class="php"&gt;// simplifiée pour la démonstration&lt;br /&gt;function format($decimalTime){&lt;br /&gt;   $hour = (int)$decimalTime;&lt;br /&gt;   $minute = (int)(($decimalTime - $hour) * 60);&lt;br /&gt;   return $hour . 'h' . str_pad($minute, 2, '0', STR_PAD_LEFT);&lt;br /&gt;}&lt;/pre&gt;Je l'ai donc isolée et j'ai lancé un jeu de tests couvrant toutes les minutes d'une heure donnée (BR est une constante définie pour imprimer une balise de saut de ligne) :&lt;br /&gt;&lt;pre name="code" class="php"&gt;echo "Heure\tMinutes\tFormaté\tReprésentation interne" . BR;&lt;br /&gt;&lt;br /&gt;$hour = 8;&lt;br /&gt;foreach( range(0,59) as $minute ){&lt;br /&gt;   $time = $hour + ($minute/60);&lt;br /&gt;   echo $hour . "\t" . $minute . "\t" . format($time) . "\t" . $time . BR;&lt;br /&gt;}&lt;/pre&gt;Selon les résultats retournés, pratiquement 1 affichage sur 2 étaient erronés!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-fW9fh9QMebk/Tto0xtUgjcI/AAAAAAAABPw/abnUATJfqqY/s1600/php-heures-bogue.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 310px; height: 400px;" src="http://3.bp.blogspot.com/-fW9fh9QMebk/Tto0xtUgjcI/AAAAAAAABPw/abnUATJfqqY/s400/php-heures-bogue.jpg" alt="" id="BLOGGER_PHOTO_ID_5681911908465151426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Comme la partie des minutes est stockée en décimales, l'hypothèse d'une mauvaise conversion se confirmait. Dans certains cas, ça fonctionnait bien pour les fractions simples (8h15 = 8.25, 8h30 = 8.50, etc), alors que pour d'autres valeurs comme 8h12 (8.2 en décimal, 12 min = 1/5 d'une heure, donc 0.2), la fonction retourne la valeur formatée de 8h11 avec une minute en moins. Ce n'est pas le genre d'erreur qu'on peut tolérer (surtout quand le temps, c'est de l'argent).&lt;br /&gt;&lt;br /&gt;J'ai ensuite fait quelques tests supplémentaires :&lt;br /&gt;&lt;pre name="code" class="php"&gt;//Pour la portion minutes, si :&lt;br /&gt;var_dump(5/1); // int(5)&lt;br /&gt;var_dump(5/60); // float(0.083333333333333)&lt;br /&gt;&lt;br /&gt;// remettre les minutes décimales sur une base 60&lt;br /&gt;var_dump((5/60)*60); // devient un float(5)&lt;br /&gt;&lt;br /&gt;// exemple&lt;br /&gt;$time = 8.083333333333333; // représentation interne de 8h05&lt;br /&gt;$hour = (int)$time;&lt;br /&gt;$minute = ($time - $hour) * 60;&lt;br /&gt;&lt;br /&gt;var_dump( $minute ); // float(4.9999999999999)&lt;br /&gt;var_dump( (int)$minute ); // int(4) et non 5 !&lt;/pre&gt;À cause de la conversion (cast) float à int, la représentation interne de 4.9999999999999 ne conserve que le 4 plutôt que de l'arrondir à 5. Ce qu'il aurait fallu faire :&lt;br /&gt;&lt;pre name="code" class="php"&gt;var_dump( (int)round($minute, 0) ); // 5&lt;/pre&gt;Pour corriger le bogue, je n'ai eu qu'à modifier la fonction en remplaçant une ligne comme ceci :&lt;br /&gt;&lt;pre name="code" class="php"&gt;function format($decimalTime){&lt;br /&gt;   $hour = (int)$decimalTime;&lt;br /&gt;   //$minute = (int)(($decimalTime - $hour) * 60);&lt;br /&gt;   $minute = (int)round(($decimalTime - $hour) * 60, 0);&lt;br /&gt;   return $hour . 'h' . str_pad($minute, 2, '0', STR_PAD_LEFT);&lt;br /&gt;}&lt;/pre&gt;Ce fût ni long, ni difficile à régler. Mais la cause était incompréhensible pour le client et les conséquences étaient fâcheuses puisqu'il fallait ensuite faire rebalancer les données.&lt;br /&gt;&lt;br /&gt;Après réflexion, je me demande ce que ça aurait donné si, au lieu d'avoir choisit initialement de stocker les heures en float, on avait plutôt opté pour les conserver en un seul nombre entier représentant le total des minutes plutôt que des fractions d'heures (8h05 = 8h*60 minutes + 5 minutes = 485 minutes) ? Nous n'aurions probablement pas eu de problème de conversion, mais ça aurait certainement occasionné d'autres genres de problèmes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-4267637556298695971?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/4267637556298695971/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=4267637556298695971' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4267637556298695971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4267637556298695971'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/12/fonction-php-pour-formater-lheure.html' title='Fonction PHP pour formater l&apos;heure'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-fW9fh9QMebk/Tto0xtUgjcI/AAAAAAAABPw/abnUATJfqqY/s72-c/php-heures-bogue.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-4463459532217867534</id><published>2011-11-29T18:43:00.000-05:00</published><updated>2011-11-29T18:43:14.777-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Marché des saveurs'/><title type='text'>Le plaisir insoupçonné de manger du Velveeta</title><content type='html'>En arrivant du boulot, j'avais une petite fringale : hop au frigo et qu'est-ce  qu'il y a de facile à se mettre sous la dent ? Une tranche de fromage tranché Velveeta! Dès maintenant, veuillez mettre vos jugements de côté et ne considérez même pas à me regarder de haut en prétendant qu'ingurgiter cet aliment conçu avec du lait caillé fait "petit peuple". On a chacun nos défauts et ça permet de briser le mythe que je suis un snob grano du plateau Mont-Royal (d'ailleurs, je n'habite même pas là. Quoique j'en connais qui croient que son territoire s'étend sur à peu près toute la superficie de l'île de Montréal...).&lt;br /&gt;&lt;br /&gt;Eh oui, figurez vous que nous étions ma copine et moi au supermarché dans le rayon des produits laitiers. Nous nous attardions devant l'étalage des fromages afin de choisir le type idéal à faire fondre dans nos burgers à l'américaine. La concurrence est féroce et on doit déterminer un gagnant par élimination entre les &lt;a href="http://www.facebook.com/KraftSingles"&gt;Singles de Kraft&lt;/a&gt; et le &lt;a href="http://www.facebook.com/Velveeta"&gt;Velveeta&lt;/a&gt; (avis aux passionnés, suivez les liens pour faire parti des 49000+ personnes qui ont déclaré publiquement entretenir une relation d'amour avec ce type de fromage (à ce sujet, Urban Dictionary propose une définition amusante à propos de &lt;a href="http://www.urbandictionary.com/define.php?term=Kraft%20single"&gt;Kraft Singles&lt;/a&gt; si vous êtes célibataire et que vous portez le nom de famille Kraft : &lt;span style="font-style: italic;"&gt;reference to my constant status of relationship, and the lack of ability with people with the same name as cheese to get dates&lt;/span&gt;. Fin de la parenthèse dans la parenthèse)).&lt;br /&gt;&lt;br /&gt;C'est ma copine qui a eu le dernier mot : le Velveeta dans le panier. Son argument : ça fait vraiment longtemps qu'elle en avait pas mangé. Ma constatation de ce soir : ça goûte carrément la même chose! À vrai dire, je ne dois pas avoir les papilles gustatives bien entraînées puisque ça me semble tout droit sorti du même mélange que :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;les tranches Singles de Kraft&lt;/li&gt;&lt;li&gt;le Cheeze Whiz&lt;/li&gt;&lt;li&gt;la poudre de fromage dans le Kraft Dinner&lt;/li&gt;&lt;li&gt;les tranches Velveeta (ouais, pour ça on s'en doutait)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Juste à penser que ces produits seraient une déclinaison de la même mixture serait un peu décevant. En espérant que les fins palais parmi mes  lecteurs saura nous éclairer un peu.&lt;br /&gt;&lt;br /&gt;Et n'allez pas me parler de la légende urbaine  comme quoi le mélange initial est d'un appétissant gris avant d'ajouter une tonne  de colorant! Ce serait faux. Je tiens ça d'une personne ayant travaillé  toute sa vie chez Kraft et qui m'a juré que c'était un mythe. Par contre, il confirme que le  beurre  d'arachides est brun mais que la recette a changé avec le temps (je crois qu'ils n'enlèvent plus la petite peau, ou bien les écailles... en tout cas quelque chose comme ça). Selon  mon expérience avec un petit français  qu'on avait hébergé dans les années 80, il n'avait jamais vu ça de sa  vie et le regardait avec dédain. Pourtant les enfants sont supposés aimer ça les petits oursons ?&lt;br /&gt;&lt;br /&gt;Est-ce qu'un résident de la France peut me confirmer que le beurre  d'arachide se fait rare dans votre contrée ? Si vous y avez déjà goûté, avez-vous aimé ? (ça ressemble à de &lt;a href="http://www.lavachequirit.com/"&gt;la Vache qui rit&lt;/a&gt;, mais orange) Culturellement parlant, c'est une expérience à vivre si vous venez de ce côté de l'océan. Ça et le &lt;a href="http://www.ithq.qc.ca/"&gt;restaurant de l'ITHQ&lt;/a&gt; (pour imiter le prince William et sa femme Kate, bien sûr!).&lt;br /&gt;&lt;br /&gt;Bon, assez parlé de bouffe. Je meurs de faim, je pense que je vais aller me faire un &lt;span style="font-style: italic;"&gt;grilled cheese&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-4463459532217867534?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/4463459532217867534/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=4463459532217867534' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4463459532217867534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4463459532217867534'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/11/le-plaisir-insoupconne-de-manger-du.html' title='Le plaisir insoupçonné de manger du Velveeta'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-4296597648634403483</id><published>2011-11-27T12:11:00.000-05:00</published><updated>2011-11-27T12:11:45.721-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mathématique'/><title type='text'>Choisir le bon symbole</title><content type='html'>Quel &lt;a href="http://fr.wikipedia.org/wiki/Table_des_symboles_math%C3%A9matiques"&gt;&lt;/a&gt;symbole mathématique placé entre 5 et 9 permet d'obtenir un nombre plus grand que 5 et plus petit que 9 ?&lt;br /&gt;&lt;br /&gt;Essayez d'abord les plus communs : addition (+), soustraction (-), multiplication (×), division (÷). Ensuite, référez-vous à la table des &lt;a href="http://fr.wikipedia.org/wiki/Table_des_symboles_math%C3%A9matiques"&gt;symboles mathématiques&lt;/a&gt; pour vous donner un coup de pouce.&lt;br /&gt;&lt;br /&gt;Si vous n'avez pas trouvé, vous pourrez &lt;a onclick="document.getElementById('b20111127').style.display='';" href="javascript:;"&gt;consulter la solution&lt;/a&gt;. C'est tellement simple que c'en est presque ridicule.&lt;br /&gt;&lt;br /&gt;&lt;span id="b20111127" style="display:none; padding:5px; border:1px dotted gray; color:green;" &gt;Le point décimal, évidemment! 5.9 est plus grand que 5 et plus petit que 9.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-4296597648634403483?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/4296597648634403483/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=4296597648634403483' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4296597648634403483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4296597648634403483'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/11/choisir-le-bon-symbole.html' title='Choisir le bon symbole'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-7237732783758842303</id><published>2011-11-27T09:21:00.000-05:00</published><updated>2011-11-27T09:21:38.766-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 140 sur le voyage</title><content type='html'>On ne va jamais aussi loin que lorsque l'on ne sait pas où l'on va.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Christophe Colomb&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-7237732783758842303?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/7237732783758842303/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=7237732783758842303' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7237732783758842303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7237732783758842303'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/11/citation-no-140-sur-le-voyage.html' title='Citation no. 140 sur le voyage'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5161386558433214918</id><published>2011-11-24T18:20:00.001-05:00</published><updated>2011-11-24T18:21:53.837-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><title type='text'>Une petite leçon d'humilité</title><content type='html'>Cette histoire m'a été rapportée il y a quelques jours alors qu'un nouvel employé, étudiant en génie, aurait cogné son doigt à quelques reprises contre la table lors d'une réunion et aurait alors posé la question à ses interlocuteurs pour leur demander s'ils savaient ce que ça signifiait. Un peu surpris et ne sachant pas trop où il voulait en venir, ils l'ont laissé parler.&lt;br /&gt;&lt;br /&gt;- Quand un ingénieur cogne la bague à son doigt comme ça sur la table, le monde doit se taire et l'écouter.&lt;br /&gt;&lt;br /&gt;Silence. Malaise.&lt;br /&gt;&lt;br /&gt;Je ne faisais pas parti de la réunion mais ouch! Jamais je ne me serais permis de dire ça. Je vous le dit, j'ai sauté ça de haut quand on me l'a raconté (je sais, vous ne le voyez pas mais prenez la peine d'imaginer).&lt;br /&gt;&lt;br /&gt;Comment une personne peut-elle se surestimer à ce point pour oser dire une absurdité pareille ? Soit il est prétentieux et imbu de lui-même, soit ses professeurs lui ont fait tout un lavage de cerveau pour qu'il croit ce qu'il a dit. Si c'était une farce, il aurait mieux fait de se taire. Mais non, il tenait à informer les autres.&lt;br /&gt;&lt;br /&gt;Il ne faut pas être un grand observateur pour se rendre compte que la situation n'est pas à son avantage :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;il est encore aux études, donc aucun diplôme et aucune bague de l'Ordre des ingénieurs&lt;/li&gt;&lt;li&gt;il est en poste depuis quelques semaines seulement&lt;/li&gt;&lt;li&gt;après cet épisode, son emploi est probablement plus précaire qu'assuré&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Ce qui m'amène à un principe essentiel tiré de la &lt;a href="http://code18.blogspot.com/2009/06/citation-no-36-sur-le-silence.html"&gt;citation no. 36 sur le silence&lt;/a&gt; :&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;Avant d'ouvrir la bouche, assure-toi que ce que tu vas dire est plus beau que le silence.&lt;/blockquote&gt;&lt;br /&gt;Parce qu'il deviendra ingénieur et ce, même s'il l'était, je juge que c'est un problème d'attitude majeur. Tout porte à croire qu'il regarde de haut des gens plus expérimentés alors qu'il se trouve au bas de l'échelle. C'est pourquoi je classe ce type de personne dans la catégorie péjorative et peu flatteuse des "ingnégnieurs". Prouve tes compétences par tes actions et ton éthique de travail, pas en te cachant derrière ton titre (voir mon autre billet à ce sujet : &lt;a href="http://code18.blogspot.com/2011/06/limportance-du-titre-un-mythe.html"&gt;L'importance du titre : un mythe&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Dans une nouvelle réunion cette semaine, la qualité de son travail lui a éclaté au  visage (par professionnalisme, nous n'avons nommé personne) : trop de bogues, des vulnérabilités de sécurité, des problèmes de  performance, il a fait à sa tête alors qu'on lui avait recommandé  certaines solutions. Cette fois, il n'a pas osé dire un mot de la réunion. J'espère que c'est le signe qu'il s'est senti visé et qu'il a eu une petite leçon d'humilité.&lt;br /&gt;&lt;br /&gt;On va passer l'éponge et lui laisser une chance. Il est maladroit, certes, mais il n'est pas mal intentionné et ne cherche que des façons de s'intégrer dans l'équipe, même si c'est parfois avec des propos douteux. Mais vous serez averti, le prochain qui me dit ça, je lui arrache le doigt et je le lui enfonce à un endroit peu glorieux.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5161386558433214918?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5161386558433214918/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5161386558433214918' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5161386558433214918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5161386558433214918'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/11/une-petite-lecon-dhumilite.html' title='Une petite leçon d&apos;humilité'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-484701881106545114</id><published>2011-11-20T11:20:00.001-05:00</published><updated>2011-11-20T11:20:22.076-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><category scheme='http://www.blogger.com/atom/ns#' term='Programmation'/><title type='text'>Ne laissez pas le chaos l'emporter</title><content type='html'>Soyons franc, on n'apprécie pas beaucoup le désordre même s'il faut vivre avec. Dans un monde idéal, on combat férocement le chaos que peuvent créer les Kim Jong-il, Darth Vader ou Sauron. Seulement parce que l'équilibre de la paix est fragile et que les conséquences peuvent s'avérer désastreuses.&lt;br /&gt;&lt;br /&gt;Tout comme en programmation. Elle se doit d'être structurée, hiérarchisée, reglementée pour que tout tourne rondement. En cours de développement, l'utopie est de construire le tout dans les règles de l'art. La réalité ressemble davantage à de la rénovation ou à une réparation de voiture : on droit tricher d'un peu partout, forcer les pièces du puzzle ensemble pour qu'elles finissement à s'emboîter adéquatement.&lt;br /&gt;&lt;br /&gt;Lorsqu'un client soumet une demande de changement, il voudra l'obtenir au meilleur prix, même s'il faut le corriger avec du mastic et du ruban adhésif. Aux yeux de la majorité, ce genre de dépense ne procure aucun plaisir en retour alors pourquoi payer plus ? Et c'est généralement là que ça se met à déraper. Comment justifier le prix d'une réparation faite correctement si une patch à moindre coût peut suffire ? En tant que développeur, on peut tolérer quelques patches mais il vient un temps où il faut cesser de remettre du ruban adhésif par-dessus l'ancien qui déchire sans cesse.&lt;br /&gt;&lt;br /&gt;Dans le meilleur des mondes, un logiciel serait construit comme un gratte-ciel. La fondation doit être suffisamment inébranlable pour y empiler de multiples étages de dimensions égales qui pourront à leur tour accueillir des étages supplémentaires au sommet afin de répondre aux demandes futures du client. Les contraites du monde réel font que &lt;a href="http://code18.blogspot.com/2011/11/citation-no-139-sur-les-logiciels.html"&gt;les logiciels sont plus souvent bâtis comme une pyramide&lt;/a&gt;. Un nouvel étage trop large juché au sommet risque tôt ou tard de devoir tenir en équilibre sur la pointe, jusqu'à ce qu'il bascule dans le vide au moindre coup de vent. D'autres fois, la demande sera de venir glisser un nouvel étage entre le 7ème et le 8ème plancher d'un building existant (essayez un instant de vous représenter une image mentale de ce que ça implique). Retirer le 13ème étage malchanceux ? Aussi simple que de tirer une briquette d'un &lt;a href="http://fr.wikipedia.org/wiki/Jenga"&gt;jeu de Jenga&lt;/a&gt;! Dans tous les cas, effectuer le travail proprement, tout en minimisant les risques pour les travailleurs, fera grimper les coûts liés de rénovation et de logistique de construction. Et dans certains cas, le danger est tellement grand qu'il serait peut-être plus sage de refuser le mandat plutôt que d'accepter les pires conditions et la responsabilité en cas de désastre.&lt;br /&gt;&lt;br /&gt;Quand on parle de chaos, il faut aussi savoir reconnaître les signes précoces avant que ça commence à dégénérer. Prenez par exemple une usine. Pendant tout le temps qu'elle est en fonction, ses occupants en prennent soin (du moins, ils sont supposés). Le jour où le propriétaire met la clé sous la porte et que le bâtiment est abandonné, s'il n'est pas surveillé, ce ne sera qu'une question de temps avant qu'il commence à être vandalisé. Une fenêtre pourrait être brisée. Si elle n'est pas réparée rapidement, elle deviendra une cible facile : d'autres vitres seront fracassées, des graffitis feront leur apparition, des itinérants et des squateurs s'y établiront, ils commenceront à salir leur environnement emprunté, des dommages structureux gravent apparaîtront. Dans un espace de temps relativement court, le bâtiment sera endommagé  au-delà de la volonté du propriétaire de la réparer, et le sentiment d'abandon deviendra réalité.&lt;br /&gt;&lt;br /&gt;Lorsque le désordre augmente dans un logiciel, les programmeurs parlent alors de pourriture. Dans le livre &lt;a href="http://code18.blogspot.com/2009/02/pragmatic-programmer.html"&gt;The Pragmatic Programmer, From Journeyman to Master&lt;/a&gt;, les auteurs citent ce genre d'histoire pour nous rappeler une règle importante à retenir : ne laissez jamais une fenêtre brisée (mauvais design,  mauvaises décisions, mauvais code) non réparée. Fixer le tout correctement dès que le problème est découvert. &lt;span id="result_box" class="" lang="fr"&gt;&lt;span class="hps"&gt;Prenez&lt;/span&gt; &lt;span class="hps"&gt;des mesures pour&lt;/span&gt; &lt;span class="hps"&gt;prévenir d'autres dommages. La négligence ne fera que détériorer le système rapidement.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;C'est une question de gros bon sens. Maintenant, le défi est d'essayer de le faire comprendre au client...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-484701881106545114?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/484701881106545114/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=484701881106545114' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/484701881106545114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/484701881106545114'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/11/ne-laissez-pas-le-chaos-lemporter.html' title='Ne laissez pas le chaos l&apos;emporter'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-4496402225802203569</id><published>2011-11-20T11:18:00.001-05:00</published><updated>2011-11-20T11:18:08.768-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 139 sur les logiciels</title><content type='html'>La plupart des logiciels d'aujourd'hui ressemblent énormément à une pyramide égyptienne avec des millions de briques empilées les unes sur les autres, sans aucune intégrité structurelle, mais  réalisée brutalement par la force à l'aide de milliers d'esclaves.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Alan Kay&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-4496402225802203569?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/4496402225802203569/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=4496402225802203569' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4496402225802203569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4496402225802203569'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/11/citation-no-139-sur-les-logiciels.html' title='Citation no. 139 sur les logiciels'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8774176050921718149</id><published>2011-11-17T12:40:00.000-05:00</published><updated>2011-11-17T12:40:33.526-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><title type='text'>À l'attention des ados révoltés</title><content type='html'>J'ai reçu ceci d'un ami et c'est tellement du bonbon que j'ai jugé bon de le partager avec vous.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Règle 1&lt;/span&gt;&lt;br /&gt;La vie est injuste: habituez vous!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Règle 2&lt;/span&gt;&lt;br /&gt;Le monde se fout de votre amour-propre. Le monde s'attendra à ce que vous accomplissiez quelque chose AVANT que vous ne vous félicitiez vous-même.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Règle 3&lt;/span&gt;&lt;br /&gt;Vous ne gagnerez pas 60000$ par an en sortant de l'école.&lt;br /&gt;&lt;br /&gt;Vous ne serez pas vice-président en commençant, avec smartphone et voiture de fonction fournis, avant d'avoir mérité, gagné ces privilèges.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Règle 4&lt;/span&gt;&lt;br /&gt;Si vous croyez que votre professeur est dur avec vous, attendez d'avoir un patron.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Règle 5&lt;/span&gt;&lt;br /&gt;Travailler dans une friterie n'est pas s'abaisser. Vos grands-parents avaient un mot différent pour ça: ils l'appelaient une opportunité.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Règle 6&lt;/span&gt;&lt;br /&gt;Si vous gaffez, CE N'EST PAS LA FAUTE DE VOS PARENTS, arrêtez de chialer et apprenez de vos erreurs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Règle 7&lt;/span&gt;&lt;br /&gt;Avant que vous naissiez, vos parents n'étaient pas aussi ennuyants qu'ils le sont maintenant !&lt;br /&gt;Ils sont devenus comme ça :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;En payant vos factures&lt;/li&gt;&lt;li&gt;En nettoyant vos vêtements&lt;/li&gt;&lt;li&gt;Et en vous entendant répéter sans arrêt combien vous êtes bons et cools&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Ainsi, avant de sauver les forêts tropicales des parasites de la génération de vos parents, commencez donc par faire le ménage dans votre propre chambre et tout ce qui s'y trouve.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Règle 8&lt;/span&gt;&lt;br /&gt;Votre école s'est peut-être débarrassé du système « gagnant-perdant », PAS LA VIE !&lt;br /&gt;Dans certaines écoles, on a aboli les notes de passage et on vous donne autant de chances que vous voulez pour obtenir la bonne réponse. Ceci n'existe pas dans la vraie vie !&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Règle 9&lt;/span&gt;&lt;br /&gt;La vie n'est pas divisée en semestres. L'été n'est pas une période de congé. Et très peu d'employeurs sont disposés à vous aider à VOUS ASSUMER, c'est votre responsabilité.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Règle 10&lt;/span&gt;&lt;br /&gt;La télévision n'est pas la «vraie vie». Dans la vraie vie, les gens quittent le café et vont travailler.&lt;br /&gt;&lt;br /&gt;Si vous êtes d'accord, faites circuler, sinon, mettez-vous la tête dans le sable et prenez une grande respiration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8774176050921718149?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8774176050921718149/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8774176050921718149' title='5 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8774176050921718149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8774176050921718149'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/11/lattention-des-ados-revoltes.html' title='À l&apos;attention des ados révoltés'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5663938585917810488</id><published>2011-11-16T19:26:00.002-05:00</published><updated>2011-11-16T19:27:51.366-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Connaître la version de SQL Server pour les nuls</title><content type='html'>Un programmeur junior en interrompt un autre dans son travail pour lui demander s'il sait quelle est la version de SQL Server qui roule sur un serveur particulier sur lequel il est en train de développer. De mémoire, il ne s'en rappelle pas et il répond simplement qu'il l'ignore mais qu'il pourra le vérifier directement regardant une propriété système accessible par une requête SQL.&lt;br /&gt;&lt;br /&gt;Plutôt que de googler les termes pour obtenir rapidement la réponse, son réflexe est de se lever et d'aller voir l'administrateur réseau pour lui demander. Soupir... Est-ce normal de m'inquiéter de l'efficacité du système D (débrouillardise) de ce programmeur ?&lt;br /&gt;&lt;br /&gt;La programmation est avant tout un travail de résolution de problème, qu'il soit technique ou non. Avant de déranger quelqu'un inutilement et de lui faire perdre sa concentration, assurez-vous d'abord :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;d'avoir fouillé dans la documentation&lt;br /&gt;&lt;/li&gt;&lt;li&gt;d'avoir posé au moins une fois la question à Google&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Si et seulement si vous êtes toujours dans une impasse, optez pour le dérangement mais démontrez-lui que vous avez fait votre part pour y arriver seul. Avec un peu de chance, la personne à qui vous poserez la question sera meilleure que vous à interroger Google et pourra vous renvoyer le lien &lt;a href="http://lmgtfy.com/"&gt;lmgtfy&lt;/a&gt; approprié.&lt;br /&gt;&lt;br /&gt;Voici la réponse trouvée sur Google en 0,21 secondes que je lui ai transmis.&lt;br /&gt;&lt;pre name="code" class="sql"&gt;-- juste le numéro de version&lt;br /&gt;SELECT SERVERPROPERTY('ProductVersion')&lt;/pre&gt;10.0.1600.22&lt;br /&gt;&lt;pre name="code" class="sql"&gt;-- la version en format long&lt;br /&gt;SELECT @@version&lt;/pre&gt;Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64)   Jul  9 2008 14:17:44   Copyright (c) 1988-2008 Microsoft Corporation  Standard Edition (64-bit) on Windows NT 5.2 &lt;x64&gt; (Build 3790: Service Pack 2)&lt;br /&gt;&lt;pre name="code" class="sql"&gt;SELECT SERVERPROPERTY('ProductVersion')&lt;/pre&gt;8.00.2039&lt;br /&gt;&lt;pre name="code" class="sql"&gt;SELECT @@version&lt;/pre&gt;Microsoft SQL Server  2000 - 8.00.2039 (Intel X86)   May  3 2005 23:18:38   Copyright (c) 1988-2003 Microsoft Corporation  Standard Edition on Windows NT 5.2 (Build 3790: Service Pack 2)&lt;br /&gt;&lt;br /&gt;La morale de cette histoire, c'est que si vous êtes arrivé sur ce billet, c'est que vous êtes soit un programmeur junior qui n'a pas pris de mauvais pli ou encore un programmeur plus expérimenté qui vient de vivre la même situation que moi. Dans ce cas, n'hésitez pas à transmettre subtilement le lien de ce billet en guise de réponse.&lt;br /&gt;&lt;/x64&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5663938585917810488?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5663938585917810488/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5663938585917810488' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5663938585917810488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5663938585917810488'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/11/connaitre-la-version-de-sql-server.html' title='Connaître la version de SQL Server pour les nuls'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-6385675336991921122</id><published>2011-11-14T20:11:00.000-05:00</published><updated>2011-11-14T20:11:36.649-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>Combien de personnes dans chaque groupe d'âge</title><content type='html'>Voici un cas réel où j'ai eu à résoudre un problème en classant des individus par groupe d'âge à l'aide d'une base de données Postgres. D'abord, imaginons deux tables : la première "human" contient la liste des personnes avec une propriété "birth" où est stockée la date de naissance qu'on utilisera pour connaître son âge en temps réel. L'autre table, nommée  "age_group" contient la définition des groupes d'âges en incluant comme propriétés l'âge minimum et maximum pour faire parti du groupe. Une valeur nulle dans l'âge maximum indique l'infini (pour inclure les immortels comme le &lt;a href="http://www.imdb.com/title/tt0091203/"&gt;Highlander&lt;/a&gt; par exemple).&lt;br /&gt;&lt;br /&gt;Voici le nécessaire si vous souhaitez reproduire l'exercice :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;CREATE TABLE human&lt;br /&gt;(&lt;br /&gt;   human_id serial NOT NULL,&lt;br /&gt;   firstname character varying(50) NOT NULL,&lt;br /&gt;   lastname character varying(50) NOT NULL,&lt;br /&gt;   birth date&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;CREATE TABLE age_group&lt;br /&gt;(&lt;br /&gt;   group_id serial NOT NULL,&lt;br /&gt;   age_min integer NOT NULL,&lt;br /&gt;   age_max integer,&lt;br /&gt;   group_name character varying(50) NOT NULL&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;INSERT INTO age_group(age_min, age_max, group_name)&lt;br /&gt;VALUES  (0, 12, 'Enfant (Fan de Justin Bieber)'),&lt;br /&gt;  (13, 17, 'Adolescent boutonneux'),&lt;br /&gt;  (18, 25, 'Jeune adulte fringant'),&lt;br /&gt;  (26, 54, 'Adulte'),&lt;br /&gt;  (55, 65, 'Retraité Liberté 55'),&lt;br /&gt;  (65, null, 'Bel âge (Les résidences Soleil!)');&lt;br /&gt;&lt;br /&gt;INSERT INTO human (firstname, lastname, birth)&lt;br /&gt;VALUES  ('Marge', 'Simpson', '1963-06-08'),&lt;br /&gt;  ('Homer', 'Simpson', '1962-01-31'),&lt;br /&gt;  ('Bart', 'Simpson', '1997-09-04'),&lt;br /&gt;  ('Lisa', 'Simpson', '1999-06-06'),&lt;br /&gt;  ('Maggie', 'Simpson', '2002-07-27'),&lt;br /&gt;  ('Milhouse', 'Van Houten', '1997-08-08'),&lt;br /&gt;  ('Montgomery', 'Burns', '1912-03-13'),&lt;br /&gt;  ('Abraham', 'Simpson', '1914-07-27');&lt;/pre&gt;&lt;span style="font-style: italic;"&gt;NB. Évidemment, les dates de naissance des personnages des Simpsons sont 100% arbitraires puisqu'ils ne vieillissent pas depuis plus de 20 ans!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;À partir de ces données, comment peut-on connaître le nombre de  personnes dans chaque groupe d'âge (incluant les groupes vides) ? L'objectif est d'obtenir comme résultat des statistiques comme celles-ci :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-SK6ZE754QJ0/TsG5KXl8vgI/AAAAAAAABPc/Li4imudmXHI/s1600/groupe-age-sql.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 163px;" src="http://1.bp.blogspot.com/-SK6ZE754QJ0/TsG5KXl8vgI/AAAAAAAABPc/Li4imudmXHI/s400/groupe-age-sql.jpg" alt="" id="BLOGGER_PHOTO_ID_5675020593246551554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;À l'aide d'une sous-requête lancée sur chacun des enregistrements, on peut obtenir au mieux une seule information relative au groupe d'âge :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;SELECT h.*, (SELECT group_name FROM age_group as tag WHERE extract('year' from age(h.birth)) BETWEEN tag.age_min AND COALESCE(tag.age_max, 200)) as group_name&lt;br /&gt;FROM human as h&lt;br /&gt;ORDER BY group_name&lt;/pre&gt;En se basant sur le calcul de l'âge pour déterminer le groupe relié, voici 3 façons d'écrire un énoncé SQL pour arriver exactement au même résultat.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Méthode 1&lt;/span&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;SELECT ag.group_id, ag.group_name, ag.age_min, ag.age_max, COUNT(t.human_id) as nb&lt;br /&gt;FROM human as h&lt;br /&gt;INNER JOIN (&lt;br /&gt;   SELECT human_id, (SELECT group_id FROM age_group as tag WHERE extract('year' from age(birth)) BETWEEN tag.age_min AND COALESCE(tag.age_max, 1000)) as group_id&lt;br /&gt;   FROM human&lt;br /&gt;) as t ON t.human_id = h.human_id&lt;br /&gt;RIGHT JOIN age_group as ag ON ag.group_id = t.group_id&lt;br /&gt;GROUP BY ag.group_id, ag.group_name, ag.age_min, ag.age_max&lt;br /&gt;ORDER BY ag.age_min&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Méthode 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Il sera possible de simplifier l'énoncé un peu :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;-- requête simplifiée&lt;br /&gt;SELECT ag.group_id, ag.group_name, ag.age_min, ag.age_max, COUNT(h.human_id) as nb&lt;br /&gt;FROM human as h&lt;br /&gt;RIGHT JOIN age_group as ag ON ag.group_id = (SELECT group_id FROM age_group as tag WHERE extract('year' from age(h.birth)) BETWEEN tag.age_min AND COALESCE(tag.age_max, 1000))&lt;br /&gt;GROUP BY ag.group_id, ag.group_name, ag.age_min, ag.age_max&lt;br /&gt;ORDER BY ag.age_min&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;Méthode 3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ou encore, une méthode alternative en réécrivant la requête SQL complètement différemment :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;-- façon alternative&lt;br /&gt;SELECT ag.group_id, ag.group_name, ag.age_min, ag.age_max, COUNT(tmp.human_id) as nb&lt;br /&gt;FROM age_group as ag&lt;br /&gt;LEFT JOIN (&lt;br /&gt;   SELECT tag.group_id, h.human_id&lt;br /&gt;   FROM human as h&lt;br /&gt;   CROSS JOIN age_group as tag&lt;br /&gt;   WHERE extract('year' from age(h.birth)) BETWEEN tag.age_min AND COALESCE(tag.age_max, 1000)&lt;br /&gt;) as tmp ON ag.group_id = tmp.group_id&lt;br /&gt;GROUP BY ag.group_id, ag.group_name, ag.age_min, ag.age_max&lt;br /&gt;ORDER BY ag.age_min&lt;/pre&gt;Je serais curieux de savoir laquelle vous préférez et pourquoi. Avec un gros volume de données, il serait possible d'ajouter une colonne à la table "human" pour stocker le groupe d'âge pour éviter le calcul à chaque appel mais il serait nécessaire de maintenir la donnée avec un trigger sur la date de naissance et sur la table des groupes d'âges en cas de changement (où il serait nécessaire de mettre à jour toutes les fiches des personnes). Vous avez d'autres suggestions ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-6385675336991921122?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/6385675336991921122/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=6385675336991921122' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6385675336991921122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6385675336991921122'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/11/combien-de-personnes-dans-chaque-groupe.html' title='Combien de personnes dans chaque groupe d&apos;âge'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-SK6ZE754QJ0/TsG5KXl8vgI/AAAAAAAABPc/Li4imudmXHI/s72-c/groupe-age-sql.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5722986690675230395</id><published>2011-11-07T20:38:00.000-05:00</published><updated>2011-11-07T20:38:26.132-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><category scheme='http://www.blogger.com/atom/ns#' term='Le coin du geek'/><category scheme='http://www.blogger.com/atom/ns#' term='Saviez-vous que'/><title type='text'>20 choses supplémentaires à savoir sur Google (partie 2)</title><content type='html'>À la fin de mon billet &lt;a href="http://code18.blogspot.com/2011/10/20-choses-savoir-sur-google-partie-1.html"&gt;20 choses à savoir sur Google&lt;/a&gt;, je vous promettais de transcrire la deuxième partie de mes notes de lecture de In The Plex. Voici donc une autre liste comptant 20 autres anecdotes sur Google :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Larry Page était un adepte enthousiaste  et supporteur de l'&lt;a href="http://singularityu.org/"&gt;Université de la Singularité de Ray Kurzweil&lt;/a&gt; (inventeur de l'OCR, text-2-speech, instruments de musique et auteur de l'excellent livre &lt;a href="http://www.amazon.ca/Age-Spiritual-Machines-Ray-Kurzweil/dp/0140282025"&gt;The Age of Spiritual Machines&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Larry et Sergey étaient des habitués de l'événement &lt;a href="http://www.burningman.com/"&gt;Burning Man&lt;/a&gt; (un festival post-hippie dans le désert de Death Valley en Californie)&lt;/li&gt;&lt;li&gt;En louant une voiture chez Hertz à Atlanta, celle-ci était équipée d'un système de navigation GPS dont Page trouvait qu'il fonctionnait mal et était convaincu qu'il pourrait faire mieux. On connaît la suite avec la venue de Google Maps.&lt;/li&gt;&lt;li&gt;Le tout premier contrat de license pour intégrer une boîte de recherche "Google Quick Search Box" fût avec Red Hat (distributeur d'une version de Linux) et rapporta 20000$ à Google. Par la suite vint un partenariat avec Netscape­. C'était une décision ambitieuse puisque Google n'avait pas assez d'équipement pour prendre en charge cette hausse soudaine de traffic.&lt;/li&gt;&lt;li&gt;Page et Brin ne voulait pas avoir de chef de la direction (CEO - chief executive officer). Après avoir rencontré Steve Jobs d'Apple, Andy Grove d'Intel, Scott Cook d'Intuit, Jeff Bezos d'Amazon et quelques autres, ils furent convaincus qu'ils étaient prêts à en avoir un. Mais le seul qu'ils voulaient et qui rencontraient leurs standards était Steve Jobs.&lt;/li&gt;&lt;li&gt;Amit Patel (un des premiers employés de Google) nota que le CEO Eric Schmidt ne partageait pas son espace de travail (pourtant restreint). Un jour, Patel alla le voir et lui demanda s'il était prêt à partager son bureau. Contrairement aux patrons des autres compagnies qui se seraient contentés de répondre "non", il accepta, preuve qu'il avait bien compris l'attitude à avoir chez Google. Patel, croyait qu'il blaguait et qu'il s'en plaindrait à son supérieur immédiat. Le personnel en charge des installations n'osaient pas procéder au déménagement, de peur de représailles. Une des règles chez Google est que si on veut quelque chose, il faut le faire soi-même. Patel prit un bureau et le déménagea lui-même dans le local de Schmidt. Il y resta 6 mois.&lt;/li&gt;&lt;li&gt;Le créateur du système de publicité extrêmement fructueux de Google, Eric Veach (un canadien originaire de Sarnia en Ontario), a déjà déclaré qu'il détestait les publicités. La force du système réside dans le fait qu'il exploite le concept de "&lt;a href="http://code18.blogspot.com/2009/12/long-tail-par-chris-anderson.html"&gt;Long Tail&lt;/a&gt;" auprès des annonceurs.&lt;/li&gt;&lt;li&gt;Durant une réunion où il était question decertains pays qui n'utilisent pas vraiment la carte de crédit, Page proposa d'accepter les paiements par troc selon la spécificité de l'endroit. Par exemple, il suggéra que pour les transactions en Uzberkistan, Google pourrait accepter les paiements en chèvres. Ce à quoi Veach répondit : pour l'instant, essayons d'abord d'accepter Visa et MasterCard.&lt;/li&gt;&lt;li&gt;À la conférence TED de 2001, Bill Gross, le fondateur de l'engin de recherche et de publicité GoTo (renommé par la suite Overture et acquis par Yahoo! en 2003) proposa à Page et Brin de fusionner Google avec son entreprise. Il créa même un démo qu'il nomma GOTOOGLE.&lt;/li&gt;&lt;li&gt;Le modèle d'achat pour les publicités AdWords était basé (sans le savoir) sur les &lt;a href="http://fr.wikipedia.org/wiki/Ench%C3%A8re_de_Vickrey"&gt;enchères de Vickrey&lt;/a&gt;, un système utilisé par les obligations de la réserve fédérale, et dont les économistes qui l'ont conçu ont remporté un prix Nobel.&lt;/li&gt;&lt;li&gt;Le système d'apprentissage de Google pour prédire les mots associés à une recherche se nomme &lt;a href="http://math.berkeley.edu/%7Edatta/philtalk.pdf"&gt;PHIL pour Probabilistic Hierarchical Inferential Learner&lt;/a&gt;. Mais il fût nommé ainsi surtout parce que ce nom sonnait bien.&lt;/li&gt;&lt;li&gt;En 2003, une compagnie nommée Applied Semantics utilisait sa technologie dans un produit nommé AdSense. Google acheta la compagnie 42 millions de dollars en comptant et 1% en actions. Google changea le nom de son propre système pour adopter le nom plus attirant de "AdSense" (bien que la technologie interne soit encore basée sur PHIL). Le nom de code d'AdSense était "Puppy".&lt;/li&gt;&lt;li&gt;Au début, l'association des mots aux annonces affichées a causé des problèmes non-intentionnels,. Par exemple sur un article dans le New York Post décrivant un assassinat où le tueur avait découpé un corps pour le mettre dans un sac à déchets, l'espace publicitaire de Google affichait des publicités pour des sacs à ordures. En 2008, une histoire de terrorisme à Mumbai était accompagnée d'un annonce où on pouvait lire : "Obtenez un certificat en terrorisme 100% en ligne. Inscrivez-vous dès maintenant". À propos d'un empoisonnement alimentaire massif dans un restaurant Olive Garden de Los Angeles, la publicité en marge offrait un "diner gratuit pour deux" à ce restaurant.&lt;/li&gt;&lt;li&gt;En mai 2010, Google révéla pour la première fois que 68% des revenus des publicités AdSense sur le contenu était retourné à ceux qui hébergeaient les annonces et que Google gardait 32%.&lt;/li&gt;&lt;li&gt;Google avait pour objectif de rentabiliser l'achat d'Applied Semantics en récoltant 1 million par jour, puis 2 millions, jusqu'à 2 milliards par année. Ils n'avaient jamais prédit que ce serait plutôt 10 milliards par année.&lt;/li&gt;&lt;li&gt;Si Sergey Brin juge vos résultats et les qualifie "d'assez bons", il faudra le considérer comme un compliment équivalent à recevoir un prix Nobel.&lt;/li&gt;&lt;li&gt;Comment acheter une compagnie selon Google : analyser le marcher jusqu'à ce qu'on trouve ce que l'on cherche. Proposer un partenariat (car toute bonne compagnie qui vaut la peine d'être achetée ne voudra jamais vendre). Inversez les règles et proposez aux fondateurs de joindre Google. C'est ainsi qu'après plusieurs mois de négociation, Google acheta Urchin pour 20 millions en 2004. Urchin deviendra ensuite Google Analytics.&lt;/li&gt;&lt;li&gt;Larry et Sergey sont des enfants de l'&lt;a href="http://fr.wikipedia.org/wiki/P%C3%A9dagogie_Montessori"&gt;école Montessori&lt;/a&gt;, une école basée sur la philosophie de Maria Montessori, une physicienne italienne née en 1870 et qui croyait que les enfants devaient avoir la liberté de poursuivre ce qui les intéressent sans détruire la créativité innocente de l'enfant.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;À un souper avec le Prince Philip, les serveurs ont apporté des soufflés avec un petit verre de jus de fruit de la passion en guise de sirop. Ce qu'il fallait faire, c'était d'écraser le soufflé et de verser le jus dessus pour éviter qu'il soit trop sec. Larry Page, qui était invité, pris le petit verre et avala le contenu d'un coup, comme s'il s'agissait d'un shooter de tequila. Sergey fit la même chose, devant l'étonnement du prince.&lt;/li&gt;&lt;li&gt;Pour le poisson d'avril de l'an 2000, Brin envoya un email aux employés pour annoncer que la valeur de l'action passait de 0,25$ à 4,01$ (une référence obscure au 1er avril). Le April Fool's Day est depuis un incontournable chez Google.&lt;/li&gt;&lt;/ol&gt;J'espère que vous avez apprécié ce court résumé jusqu'à maintenant. J'ai lu presque la moitié du livre, ce qui veut dire que je publierai probablement d'autres notes prochainement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5722986690675230395?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5722986690675230395/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5722986690675230395' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5722986690675230395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5722986690675230395'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/11/20-choses-supplementaires-savoir-sur.html' title='20 choses supplémentaires à savoir sur Google (partie 2)'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5465031169677579259</id><published>2011-11-02T21:23:00.000-04:00</published><updated>2011-11-02T21:23:39.273-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Bubblesort en JavaScript</title><content type='html'>Dans un CMS, un des champs d'un formulaire permet à l'utilisateur de faire un choix à l'intérieur d'un selectbox. Comme c'est parfois le cas, l'élément recherché n'est pas disponible dans la liste et l'utilisateur doit changer de page pour aller dans un autre module ajouter un élément dans la liste de référence utilisé pour populer la liste de sélection du formulaire initial. Si le système est mieux pensé, il sera possible d'ajouter une entrée à la liste de référence sans même quitter le formulaire en cours d'édition. Parfois, ce sera sous forme d'un popup qui affichera un formulaire simplifié, qui soumettra le contenu à la base de données à l'aide d'un appel Ajax, qui lui-même retournera comme réponse l'identificateur unique et le libellé à venir glisser par JavaScript dans le selectbox du formulaire parent.&lt;br /&gt;&lt;br /&gt;Voilà ce qui décrit le système sur lequel je travaillais cet après-midi. Tout fonctionnait à merveille. Le seul défaut, c'est que la nouvelle entrée s'insérait à la toute fin de la liste de référence au lieu de se positionner correctement par ordre alphabétique. Je me disais qu'une simple fonction de tri JavaScript de type "bubblesort" appliqué sur les options du selectbox serait suffisant pour rafraîchir l'ordre de la liste.&lt;br /&gt;&lt;br /&gt;Un exemple de liste :&lt;br /&gt;&lt;pre name="code" class="html"&gt;&amp;lt;select id="mySelectBox"&amp;gt;&lt;br /&gt;   &amp;lt;option value="5"&amp;gt;E&amp;lt;/option&amp;gt;&lt;br /&gt;   &amp;lt;option value="1"&amp;gt;A&amp;lt;/option&amp;gt;&lt;br /&gt;   &amp;lt;option value="2"&amp;gt;B&amp;lt;/option&amp;gt;&lt;br /&gt;   &amp;lt;option value="4"&amp;gt;D&amp;lt;/option&amp;gt;&lt;br /&gt;   &amp;lt;option value="26"&amp;gt;Z&amp;lt;/option&amp;gt;&lt;br /&gt;   &amp;lt;option value="3"&amp;gt;C&amp;lt;/option&amp;gt;&lt;br /&gt;   &amp;lt;option value="10"&amp;gt;J&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;/pre&gt;J'ai codé cette fonction bubblesort en JavaScript qui fait le travail minimum pour répondre au besoin :&lt;br /&gt;&lt;pre name="code" class="js"&gt;function bubbleSortOptionsByText(optionsList){&lt;br /&gt;   var length = optionsList.length;&lt;br /&gt;   var swap1, swap2;&lt;br /&gt;&lt;br /&gt;   while(length &amp;gt; 0){&lt;br /&gt;       for(var i=1 ; i&amp;lt;length ; i++){&lt;br /&gt;           if(optionsList[i-1].text &amp;gt; optionsList[i].text){&lt;br /&gt;               swap1 = optionsList[i-1];&lt;br /&gt;               swap2 = optionsList[i];&lt;br /&gt;&lt;br /&gt;               optionsList[i-1] = swap2;&lt;br /&gt;               optionsList[i] = swap1;&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;       length = length-1;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   return optionsList;&lt;br /&gt;}&lt;/pre&gt;Appel avec jQuery :&lt;br /&gt;&lt;pre name="code" class="js"&gt;$j = jQuery.noConflict();&lt;br /&gt;&lt;br /&gt;$j(document).ready(function(){&lt;br /&gt;   var elems = $j('#mySelectBox option');&lt;br /&gt;   elems = bubbleSortOptionsByText(elems);&lt;br /&gt;   $j('#mySelectBox').html(elems);&lt;br /&gt;});&lt;/pre&gt;Ça fonctionne. Malgré tout, la fonction comporte quelques défauts :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;elle ne peut trier que par le texte affiché et non par la valeur (dans ce cas, on pourrait remplacer optionsList[i].text par optionsList[i].value)&lt;/li&gt;&lt;li&gt;il s'agit d'un tri alphanumérique donc sur une liste comportant des libellés ou des valeurs de 1 à 99, l'ordre logique positionnerait 10 immédiatement après 1 (plutôt qu'à la suite de 9)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;l'opérateur de comparaison force le tri ascendant (dans ce cas, de A à Z)&lt;/li&gt;&lt;li&gt;ce n'est peut-être pas le meilleur algorithme de tri pour la performance&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Bien sûr, la fonction aurait pu être améliorée pour être plus flexible pour des projets futurs  et c'est seulement après l'avoir écrite que je me suis souvenu qu'il y a presqu'un an, j'avais utilisé le plugin &lt;a href="http://code18.blogspot.com/2010/12/trier-les-elements-du-dom-avec-tinysort.html"&gt;jQuery TinySort&lt;/a&gt; pour résoudre un problème similaire sur le DOM.&lt;br /&gt;&lt;br /&gt;J'ai relu mon propre billet, je l'ai mis à l'essai et presque par magie, TinySort contourne avec brio les défauts mentionnés plus haut. De plus, une seule ligne de code facile à lire suffit :&lt;br /&gt;&lt;pre name="code" class="js"&gt;$j('#mySelectBox option').tsort({'attr':'text', 'order': 'asc'});&lt;/pre&gt;J'ai fait disparaître ma fonction pour la remplacer par ce petit plugin dont j'apprécie maintenant encore plus l'utilité.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5465031169677579259?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5465031169677579259/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5465031169677579259' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5465031169677579259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5465031169677579259'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/11/bubblesort-en-javascript.html' title='Bubblesort en JavaScript'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8015888314139863607</id><published>2011-10-29T10:18:00.001-04:00</published><updated>2011-12-28T17:23:20.362-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><category scheme='http://www.blogger.com/atom/ns#' term='Le coin du geek'/><category scheme='http://www.blogger.com/atom/ns#' term='Saviez-vous que'/><title type='text'>20 choses à savoir sur Google (partie 1)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-gHzpk0S6ZMs/TqwHWrkOMJI/AAAAAAAABPI/hkU4PGha0Do/s1600/in-the-plex.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 131px; height: 200px;" src="http://3.bp.blogspot.com/-gHzpk0S6ZMs/TqwHWrkOMJI/AAAAAAAABPI/hkU4PGha0Do/s200/in-the-plex.jpg" alt="" id="BLOGGER_PHOTO_ID_5668914117185777810" border="0" /&gt;&lt;/a&gt;Après avoir lu l'excellent livre &lt;a href="http://code18.blogspot.com/2010/12/hackers-heroes-of-computer-revolution.html"&gt;Hackers de Steven Levy&lt;/a&gt; (magazine Wired), le plus récent ouvrage de l'auteur semblait tout à fait prometteur puisqu'il offrait une incursion privilégiée dans le monde de Google avec &lt;a href="http://www.amazon.ca/Plex-Google-Thinks-Works-Shapes/dp/1416596585"&gt;In The Plex: How Google Thinks, Works, and Shapes Our Lives&lt;/a&gt; (2011). N'ayant fait qu'une bouchée des anecdotes de la 1ère section, je surlignais tellement de passages intéressants que j'ai jugé bon vous faire un premier compte rendu ici.&lt;br /&gt;&lt;br /&gt;Voici donc 20 anecdotes que vous ne connaissiez peut-être pas sur Google :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;À l'université, Larry Page avait décidé de travailler dans le département Human-Computer Interaction Group. Il a lu le livre "&lt;a href="http://www.amazon.ca/Psychology-Everyday-Things-Donald-Norman/dp/0465067093"&gt;The Psychology of Everyday Things&lt;/a&gt;" du gourou des interfaces d'Apple, Donald Norman dont l'argument principal est "l'utilisateur a toujours raison".&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);" class=" down" style="display: block;" id="formatbar_CreateLink" title="Link"&gt;&lt;img src="http://www.blogger.com/img/blank.gif" alt="Link" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Larry Page rencontra Sergey Brin alors que ce dernier travaillait comme guide dans des tours guidés de la ville San Francisco. Sa première impression : il le trouvait insupportable.&lt;/li&gt;&lt;li&gt;Sergey se promenait constamment à l'&lt;a href="http://www.stanford.edu/"&gt;université Stanford&lt;/a&gt; avec des Rollerblades et avait un intérêt pour le trapèze.&lt;/li&gt;&lt;li&gt;Curieusement, Google a pris naissance dans le &lt;a href="http://cs.stanford.edu/info/gates"&gt;Gates Computer Science Building de Stanford&lt;/a&gt; (nommé en l'honneur de Bill Gates de Microsoft, qui n'a jamais fréquenté l'institution).&lt;/li&gt;&lt;li&gt;Le programme initial de Page comptait beaucoup de bugs, en partie parce qu'il a utilisé le tout nouveau langage Java pour construire son ambitieux projet et que Java plantait continuellement.&lt;/li&gt;&lt;li&gt;Le programme (spider) fût ensuite traduit en Python.&lt;/li&gt;&lt;li&gt;Une seule machine exécutait 1000 threads (processus indépendants qui ne se pilent pas sur les orteils un de l'autre)&lt;/li&gt;&lt;li&gt;En 1995, DEC, qui avait conçu Altavista, croyait le contraire de Google et qu'il était impossible de faire de l'argent avec un engin de recherche. Les travaux d'un réfugié de l'Allemagne Nazie, Gerard Salton, qui a créé des algorithmes sur la recherche d'information, ont grandement influencé les moteurs de recherche modernes.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;À Stanford, BackRub avait accès uniquement à la bande passante du Gates Building (10 megabits de trafic par seconde, alors que l'université entière était sur une ligne T3 à 45 megabits). L'équipe trouva comment modifier la switch pour avoir accès à la totalité de la bande passante du réseau. À l'époque, une seule machine s'occupait d'analyser la totalité du web et elle était hébergée directement dans le dortoir.&lt;/li&gt;&lt;li&gt;Avant d'être rebaptisé Google, le nom original était BackRub. Lorsqu'ils  ont voulu le renommer, le nom The Whatbox avait été considéré mais ils  trouvaient que ça sonnait trop comme &lt;a href="http://www.urbandictionary.com/define.php?term=wet%20box"&gt;Wetbox&lt;/a&gt;.  Le colocataire de Page suggéra alors Googol, un terme mathématique  faisant référence au chiffre 1, suivi de 100 zéros et qui était à la  hauteur des objectifs qui s'étaient donnés (parfois le terme googolplex  était utilisé génériquement pour parler d'un nombre incroyablement  grand). Page changea l'orthographe pour Google car le nom de domaine  épelé correctement était déjà utilisé.&lt;/li&gt;&lt;li&gt;Brin et Page ont rencontré les fondateurs du portail Yahoo!, Jerry Yang  et David Filo (anciennement de Stanford aussi) et ils ne voyaient pas  l'utilité d'acheter une technologie d'engin de recherche. Par contre,  Altavista semblait plus intéressé à BackRub.&lt;/li&gt;&lt;li&gt;Comme la technologie PageRank (importance du contenu selon le nombre de liens qui y réfèrent) avait été développée durant les années d'études du duo à Stanford, l'université détenait le brevet et la propriété intellectuelle. Un arrangement s'est conclut alors que Google donna 1,8 millions de parts pour avoir la propriété exclusive.&lt;/li&gt;&lt;li&gt;Les utilisateurs vantaient le design Zen de la page de recherche de Google où prédominait la couleur blanche. Dans les faits, Page déclara que c'était simplement parce qu'ils n'avaient pas de webmestre pour designer le tout et qu'ils avaient du le faire eux-même.&lt;/li&gt;&lt;li&gt;Le logo de Google a été créé par Sergey en utilisant le &lt;a href="http://www.gimp.org/"&gt;logiciel d'édition graphique open-source GIMP&lt;/a&gt;. Initialement, un point d'exclamation avait été ajouté pour faire comme Yahoo!. Le logo voulait utiliser des couleurs qui rappelaient les blocs pour enfants afin de donner une impression jeune et enjouée.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pour stocker des millions de pages analysées, ils avaient besoin de beaucoup d'espace disque. Pour que ça soit économique, Page achetait des disques réusinés à une fraction du prix original (10%). Sachant qu'ils avaient une défectuosité, il découvrit qu'il pouvait les fixer à condition de remplacer le système d'exploitation du disque. Il acheta alors 120 disques de 9 Go pour avoir une capacité d'un tera de données.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Pour démarrer l'entreprise, le duo avait besoin de capitaux. C'est Andy Bechtolsheim (co-fondateur de Sun Microsystems) qui le premier remetta un chèque de 100 000$ pour financer leurs activités. Pour célébrer leur réussite, Brin et Page allèrent déjeuner au Burger King. Ne pouvant encaisser le chèque faute de compte de banque, il demeura dans la chambre de Page pendant 1 mois.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Parmi les investisseurs initiaux de Google, on pouvait compter Jeff Bezos d'Amazon.&lt;/li&gt;&lt;li&gt;Un des premiers employés de Google fut Amit Patel, un étudiant au doctorat en théorie du langage de programmation. Sur sa carte d'affaires, on pouvait y lire : "fauteur de troubles".&lt;/li&gt;&lt;li&gt;Le moteur de recherche de Google cherche des mots mais est assez intelligent pour trouver des synonymes et faire des associations de mots. Ainsi, le mot "dog" était similaire à "puppy" et "boiling water" était associé à "hot". Un des problèmes initiaux était que le système considérait que "hot dog" équivalait à "boiling puppy".&lt;/li&gt;&lt;li&gt;L'ingénieur engagé pour combattre le spam était Matt Cutts. Suite à une entente commerciale où Google devait fournir des résultats de recherche "sécuritaires pour la famille", il devait regarder les sites pour adultes afin de savoir quoi considérer comme était indésirable. Étonnamment, aucun de ses collègues ne voulait l'aider! Un soir, une fois retourné à la maison, il s'en plaigna à sa femme et elle se porta volontaire pour faire cuire des biscuits aux brisures de chocolat pour récompenser les Googlers qui allaient aider Matt à dénicher des sites à insérer dans son système de blocage. Il organisa une journée "Look for Porn Day" qui connu du succès puisque depuis, sa femme s'est fait surnommer la "porn cookie lady at Google".&lt;/li&gt;&lt;/ol&gt;Je n'ai pas encore eu le temps de tout transcrire alors je vous offrirai la suite prochainement dans un autre billet. En attendant, si j'ai piqué votre curiosité, n'hésitez pas à vous le procurer les yeux fermés, il vaut amplement son prix.&lt;br /&gt;&lt;br /&gt;Lire la suite : &lt;a href="http://code18.blogspot.com/2011/11/20-choses-supplementaires-savoir-sur.html"&gt;20 choses supplémentaires à savoir sur Google (partie 2)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8015888314139863607?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8015888314139863607/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8015888314139863607' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8015888314139863607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8015888314139863607'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/10/20-choses-savoir-sur-google-partie-1.html' title='20 choses à savoir sur Google (partie 1)'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-gHzpk0S6ZMs/TqwHWrkOMJI/AAAAAAAABPI/hkU4PGha0Do/s72-c/in-the-plex.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-7396832806464472328</id><published>2011-10-24T21:50:00.001-04:00</published><updated>2011-10-24T21:50:51.270-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Le coin du geek'/><title type='text'>3 chandelles à souffler</title><content type='html'>Eh oui, déjà 3 années se sont écoulées depuis le lancement de mon blogue. Mon tout premier billet publié le 24 octobre 2008 résumait bien mes objectifs :&lt;br /&gt;&lt;blockquote&gt;Le but exact de ce blogue est encore incertain. Il traitera certainement de technologies, de programmation, de musique et un brin d'humour. Le reste est à vos risques.&lt;/blockquote&gt;&lt;br /&gt;Étonnamment, l'objectif demeure toujours incertain. Un défi lancé à moi-même ? Sans doute. Mais surtout une épreuve d'endurance à rédiger 1 billet par jour dès la 1ère année sur un sujet qui m'intéressait. Même lorsque j'étais malade ou en vacances à l'extérieur. J'avais amorcé une liste de thèmes que je voulais aborder ou explorer :  plus de 300 au total. Et elle n'a fait que s'allonger.&lt;br /&gt;&lt;br /&gt;C'était aussi le défi d'éviter de tomber dans le même piège que de nombreux autres blogueurs : mettre en place un blogue pour finalement l'abandonner tout aussi rapidement. D'un autre côté, comment répartir les efforts entre plusieurs intérêts et concilier le tout avec les responsabilités du travail, les rénovations à entreprendre sur  ma "nouvelle" vieille maison, ma guitare de rêve que je vois constamment du coin de l'oeil et qui ne demande qu'à se faire gratter ? De toute évidence, je dois ralentir  la cadence et équilibrer le temps que je peux allouer à chacun. Mais ne pas abandonner. Publier moins, publier mieux.&lt;br /&gt;&lt;br /&gt;D'ailleurs, la rigueur que je me suis donné à rédiger régulièrement ne doit pas devenir une obligation. Sur ce point, un ami m'a gentiment rappellé que c'est mon blogue et non  un magazine. Par conséquent, je pouvais bien y publier ce que je  voulais.&lt;br /&gt;&lt;br /&gt;En partageant mes intérêts avec vous et parce que vous me lisez, je sais qu'on a des intérêts communs. Et je sais aussi qu'en discuter autour d'une bière serait bien sympathique. Je crois que ce sera mon nouvel objectif pour l'année à venir. Justement, j'ai déjà promis une bière à deux lecteurs (à ce rythme, ça va me coûter cher!).&lt;br /&gt;&lt;br /&gt;Bien humblement, merci de me lire et à très bientôt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-7396832806464472328?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/7396832806464472328/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=7396832806464472328' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7396832806464472328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7396832806464472328'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/10/3-chandelles-souffler.html' title='3 chandelles à souffler'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5364917096376272530</id><published>2011-10-23T08:24:00.000-04:00</published><updated>2011-10-23T08:24:30.245-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 138 sur les rencards avec les femmes</title><content type='html'>La probabilité qu'un jeune homme rencontre une jeune femme désirable et réceptive augmente d'une progression pyramidale s'il est déjà accompagné : 1. d'une autre femme; 2. de son épouse; 3. d'un ami masculin riche qui paraît mieux.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Le principe de Beifeld&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5364917096376272530?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5364917096376272530/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5364917096376272530' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5364917096376272530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5364917096376272530'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/10/citation-no-138-sur-les-rencards-avec.html' title='Citation no. 138 sur les rencards avec les femmes'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-6031485120086327066</id><published>2011-10-22T11:56:00.000-04:00</published><updated>2011-10-22T11:56:17.212-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Histoire'/><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><title type='text'>666, le nombre de la bête</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-BcD_CwjxwH8/TqLm6riP_-I/AAAAAAAABOw/TJ2rqN9AbEc/s1600/la-sorciere-et-l-occident.jpg"&gt;&lt;img style="float: left; margin: 0pt 25px 10px 0pt; cursor: pointer; width: 126px; height: 210px;" src="http://2.bp.blogspot.com/-BcD_CwjxwH8/TqLm6riP_-I/AAAAAAAABOw/TJ2rqN9AbEc/s200/la-sorciere-et-l-occident.jpg" alt="" id="BLOGGER_PHOTO_ID_5666345176978685922" border="0" /&gt;&lt;/a&gt;&lt;span&gt;&lt;span&gt;Durant mes années de collège, suite à un cours d'anthropologie, j'ai eu envie d'explorer les grands mythes, croyances et légendes de l'humanité, allant de l'Atlantide jusqu'à la naissance de toute forme de religion. J'ai alors eu le courage de passer au travers la brique de 700 pages &lt;a href="http://clio.revues.org/index330.html"&gt;La sorcière et l'occident (1997) de l'historien Guy Bechtel&lt;/a&gt; et j'en ai retenu ceci (entre autre) :&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;Que l'Église catholique soutenait fortement l'Inquisition&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;Qu'on mettait au bucher à peu près n'importe qui soupçonné de dévier de la norme&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Qu'il était facile d'accuser d'hérésie ceux qui n'avaient pas adhéré au culte du Dieu unique (dont les païens)&lt;/li&gt;&lt;li&gt;Qu'on diabolisait avec excès le sexe féminin&lt;/li&gt;&lt;li&gt;Que la médecine naturelle des "sorcières" entrait en concurrence avec la profession en devenir du médecin qui s'appuyait sur une approche plus scientifique et que c'était un bon prétexte pour les éliminer&lt;/li&gt;&lt;li&gt;Que ça valide une fois de plus que l'histoire est écrite par les vainqueurs&lt;/li&gt;&lt;/ul&gt;Tout ça, on s'en doutait un peu. Mais ça m'avait inspiré une théorie sur  l'origine du 666 associé à l'Antéchrist de l'apocalypse. Dans les lignes qui suivent, je tenterai d'expliquer comment m'est venue cette  interprétation que je n'ai jamais pu valider.&lt;br /&gt;&lt;br /&gt;I&lt;span&gt;&lt;span&gt;l y a plusieurs siècles au moment de l'Inquisition, l'Église catholique considérait les hérétiques (ceux croyant en une doctrine différente que celle officielle) ainsi que les peuples athées (qui nie l'existence de toute divinité) comme des ennemis qu'il fallait combattre, conquérir et convertir de force à la religion chrétienne, au risque de payer de leur vie en cas de désobéissance. C'est aussi ce qui a mené à marginaliser d'autres minorités : malades, hérétiques, excentriques sexuels, porteurs de vérités nouvelles, immigrants, etc. Comme seule explication, le mal faisait son oeuvre.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;Comprenez-le bien, pour simplifier au maximum un concept et entrer dans la généralisation, il faut que les éléments qui s'opposent soient clairs : le jour/la nuit, oui/non, le bien/le mal,  le blanc/le noir. Jamais de juste milieu entre les deux. C'est ce  qu'on appelle le dualisme. Et le christianisme n'en échappe pas. Si Dieu  est le bien, Satan est le mal.&lt;/span&gt;&lt;/span&gt; A&lt;span&gt;&lt;span&gt;vec le temps, le mal a été directement associé au contrôle tentateur de Satan sur les gens. En fait, tout ce qui était hors de l'Église était impur, donc satanique. Mais qui était Satan ?&lt;br /&gt;&lt;br /&gt;Satan, le diable, n'est pas une divinité. Il a été créé par Dieu en tant qu'ange bon mais comme il a été chassé du Ciel quand il a choisi de devenir mauvais, Dieu l'a condamné aux enfers (une autre création de Dieu tout puissant). Ici, l'enfer est symbolique et n'existe pas. Il n'a rien à voir avec l'enfer populaire remplit de flammes qu'avait imaginé l'Église pour terroriser le peuple et le tenir loin du Mal. Encore aujourd'hui, l'Église confirme que l'enfer est davantage un symbole qu'une réalité.&lt;br /&gt;&lt;br /&gt;L'Église chrétienne fonde son pouvoir sur le monothéiste, c'est-à-dire qu'elle ne croit qu'en un seul dieu unique. Ceux se trouvant à l'extérieur de l'Empire chrétien romain (selon des limites politiques, non territoriales) étaient perçus comme non-civilisés et une conversion à la "bonne" religion était souhaitable. Les celtes par exemple avaient un système religieux polythéiste, possédaient une hiérarchie impressionnante de divinités et croyaient aussi en la magie et aux pouvoirs des éléments naturels. On conviendra que cela ne plaisait pas particulièrement à l'Église!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;Pour les peuples celtes païens (dont l'apogée de l’expansion se situe entre le VIIIème siècle av. J.‑C. jusqu'au IIIème siècle), &lt;span style="font-style: italic;"&gt;le druide est à la fois ministre du culte, philosophe, gardien du Savoir  et de la Sagesse, historien, juriste et aussi conseiller militaire du  roi et de la classe guerrière. Il est en premier lieu l’intermédiaire  entre les dieux et les hommes&lt;/span&gt; (source: Wikipedia).&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; Il connaissait aussi le secret des runes, un alphabet ancien servant entre autre à des desseins magiques. Un des symboles provenant des croyances celtiques est le triskel, une sorte d'étoile à trois branches recourbées sur elles-mêmes où chacune représente une virtue du peuple celtique (ou un des dieux principaux, selon l'interprétation). Autrement dit, u&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;n symbole religieux important au même titre que la croix représentant la crucifixion de Jésus-Christ.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;La numérologie  chrétienne pratiquée par les membres ecclésiastiques  prenait sa source dans la Trinité : Dieu le père, le Fils et le  Saint-Esprit, un dogme instauré au Concile de Nicée (en 325 Après  J.-C.). Ils se disaient que Dieu était un être parfait et que c'était la  Trinité (le chiffre 3) était la représentation parfaite. Or, comme le 6  était lié à l'imperfection dans la Bible, 666 symbolisait l'imperfection suprême .&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://4.bp.blogspot.com/-M388oW4TxK8/TqLlLNfTwII/AAAAAAAABOk/gKDG5vxYzoA/s1600/triskel.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 100px; height: 93px;" src="http://4.bp.blogspot.com/-M388oW4TxK8/TqLlLNfTwII/AAAAAAAABOk/gKDG5vxYzoA/s200/triskel.gif" alt="" id="BLOGGER_PHOTO_ID_5666343261947805826" border="0" /&gt;&lt;/a&gt;&lt;span&gt;&lt;span&gt;Si on regarde bien le triskel, les trois branches forment le chiffre 666 si on le retourne sur lui-même. Est-il possible que ce symbole ait inspiré et soutenu d'une quelconque façon le nombre de la bête tel que mentionné dans l'Apocalypse de Jean (&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;un des disciples de Jésus)&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; ? Curieusement, on estime la rédaction du texte vers 66-67 après J.-C et que la bête du 666 ferait référence à l'empereur Néron, le 6ème empereur romain, qui persécuta les premiers chrétiens. Plus tard, au 16ème siècle, Jean Wier dénombra pas moins de 44 millions de démons, divisés en 666 légions commandées par 66 princes.&lt;/span&gt;&lt;/span&gt;.. Chose certaine, ce chiffre a alimenté l'imaginaire de ses détracteurs! Qui sait si ce n'était pas une interprétation volontaire pour servir les intérêts d'expansion des puissances politiques et religieuses concernées.&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;À votre avis, cette théorie se tient ? Dans le pire des cas, ce ne serait qu'une bêtise de plus dans l'histoire. Au mieux, un bon album pour le groupe Iron Maiden...&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-6031485120086327066?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/6031485120086327066/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=6031485120086327066' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6031485120086327066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6031485120086327066'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/10/666-le-nombre-de-la-bete.html' title='666, le nombre de la bête'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-BcD_CwjxwH8/TqLm6riP_-I/AAAAAAAABOw/TJ2rqN9AbEc/s72-c/la-sorciere-et-l-occident.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8156418702416452236</id><published>2011-10-17T21:05:00.001-04:00</published><updated>2011-10-17T21:10:20.411-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><title type='text'>Guide de survie contre les zombies</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-_K8C73ZCeM4/Tpy27tQPbqI/AAAAAAAABOM/al0JDXmqK0c/s1600/zombie-survival-guide.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 213px; height: 320px;" src="http://4.bp.blogspot.com/-_K8C73ZCeM4/Tpy27tQPbqI/AAAAAAAABOM/al0JDXmqK0c/s320/zombie-survival-guide.jpg" alt="" id="BLOGGER_PHOTO_ID_5664603568201494178" border="0" /&gt;&lt;/a&gt;Hier soir était la grande première de la deuxième saison de la série &lt;a href="http://www.amctv.com/shows/the-walking-dead"&gt;The Walking Dead&lt;/a&gt; sur les ondes de la chaine AMC. Évidemment, Vidéotron n'offre pas cette chaîne à ses abonnés alors je n'ai pas pu le regarder (à ma grande joie, je viens de découvrir qu'on peut regarder le &lt;a href="http://www.amctv.com/the-walking-dead/videos/the-walking-dead-episode-201"&gt;1er épisode en ligne sur le site d'AMC&lt;/a&gt;!). Entre temps, je viens à l'instant de terminer de lire un livre sur le même thème : &lt;a href="http://www.amazon.ca/Zombie-Survival-Guide-Complete-Protection/dp/1400049628/"&gt;The Zombie Survival Guide de Max Brooks&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Que voulez-vous, le buzz sur tout ce qui entoure l'excellente série télé m'a poussé à un intérêt soudain pour les morts-vivants. Et croyez-moi, ça m'arrive rarement de me laisser emporter par une vague de la sorte. Moi qui n'est pas trop amateur d'histoires  fantastiques, je dois confesser que je me suis découvert un faible pour les histoires de  zombies. Entre les loups-garous, les vampires et les histoires à l'eau  de rose à la Twilight, seules ces ghoules paraissent les plus  crédibles dans un monde où une épidémie de source mystérieuse transforme par une simple morsure les humains en cannibales à décapiter avec plaisir. Vous serez d'accord avec moi que c'est un scénario plus plauside et alléchant qu'un vampire qui  scintille au soleil...&lt;br /&gt;&lt;br /&gt;Publié la même année que le 1er numéro du comic original de The Walking  Dead (2003), je reconnais que l'auteur de la série s'est peut-être servit de  certaines idées pour élaborer son scénario. Ce guide de survie à l'attention des plus paranoïaques d'entre nous deviendra un outil pratique pour se préparer à un scénario apocalyptique imminent. Après avoir remplit votre bunker d'&lt;a href="http://www.costco.com/Browse/Product.aspx?Prodid=11613699"&gt;un an de conserves achetées chez Costco&lt;/a&gt; (pouvant nourrir 4 personnes pour seulement 3500$!), apprenez comment vous préparer au pire : une invasion de zombies. Vous saurez discerner les mythes de la réalité, la science vous éclairera sur le (faux) virus du Solanum qui est responsable de la maladie, vous apprendrez à choisir les meilleures armes pour attaquer et vous défendre en plus des techniques de combat les plus efficaces. Tout ça pour apprendre à vivre dans un monde peuplé de morts-vivants.&lt;br /&gt;&lt;br /&gt;À la fin, un chapitre complet recensant des attaques "historiques" de zombies à travers le globe. C'est sans doute la moins bonne partie et c'est là qu'on décroche. À vrai dire, ça m'a rappellé l'engouement soudain pour les extra-terrestres grâce aux  X-Files dans les années 90. Et comme dans tous les exemples cités, il n'y aucune source crédible vérifiable, ce qui rend impossible de prouver leur existence (mais on veut y croire!). En quelque sorte, les  zombies représentent la version moderne au goût du jour. Du coup, plusieurs des témoins  des attaques "recensées" sont morts subitement, disparus ou tués, les journaux ayant publié les articles témoignant des événements ont fait faillite, ont été détruits ou les preuves indéniables se trouvent uniquement dans des documents secrets jalousement conservés par les familles des témoins.&lt;br /&gt;&lt;br /&gt;Poussant l'exagération plus loin, il est question d'une histoire d'après-guerre où la Russie tenta de maîtriser les morts-vivants  dans le but de les utiliser comme force de combat dans une éventuelle  Troisième Guerre Mondiale. Sans surprise, le gouvernement a caché les événements pendant la période communiste... Comme s'il s'agissait d'une conspiration  pour que le commun des mortels reste dans l'ignorance face à cette  menace si proche. Évidemment, tout ça est de la pure fiction et ce n'est pas tout à fait le meilleur complément pour vous mettre du zombie sous la dent.&lt;br /&gt;&lt;br /&gt;Honnêtement, même si c'est un bestseller du NY Times, je n'ai pas trouvé que c'était une lecture si divertissante. Est-ce que je vous le recommandrais ? Bof... Procurez-vous plutôt &lt;a href="http://code18.blogspot.com/2011/07/walking-dead-dvd-et-papier.html"&gt;The Walking Dead Compendium&lt;/a&gt;, une bible de 1000 pages désormais incontournable dans ma bibliothèque.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8156418702416452236?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8156418702416452236/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8156418702416452236' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8156418702416452236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8156418702416452236'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/10/guide-de-survie-contre-les-zombies.html' title='Guide de survie contre les zombies'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-_K8C73ZCeM4/Tpy27tQPbqI/AAAAAAAABOM/al0JDXmqK0c/s72-c/zombie-survival-guide.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5208410072126240972</id><published>2011-10-12T21:14:00.001-04:00</published><updated>2011-10-12T21:17:06.993-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Histoire'/><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><title type='text'>Et si les nazis avaient gagné la guerre ?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-WJw4Xm5ayjE/TpYWNzA4CWI/AAAAAAAABOA/HauTf8SsqDc/s1600/maitre-du-haut-chateau.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 299px; height: 226px;" src="http://4.bp.blogspot.com/-WJw4Xm5ayjE/TpYWNzA4CWI/AAAAAAAABOA/HauTf8SsqDc/s400/maitre-du-haut-chateau.jpg" alt="" id="BLOGGER_PHOTO_ID_5662738007752968546" border="0" /&gt;&lt;/a&gt;Lors du dernier Pecha Kucha, un des présentateurs a glissé un mot sur le Yi King et sa référence qui lui est faite dans le livre &lt;a href="http://www.renaud-bray.com/Livres_Produit.aspx?id=25306"&gt;Le maître du haut chateau de Philip K. Dick&lt;/a&gt; (écrit en 1962). Ayant su attirer ma curiosité, je me suis empressé de le lire.&lt;br /&gt;&lt;br /&gt;Dans ce roman, il imagine un monde où l'Axe, composé des allemands, des japonais et des italiens, aurait gagné la Seconde Guerre Mondiale. Le président Roosevelt a été assassiné, les alliés ont capitulé en 1947, le Japon et l'Allemagne occupent désormais une partie du territoire américain où une des zones est reconnue comme abritant des camps de concentration.&lt;br /&gt;&lt;br /&gt;Dans cette nouvelle réalité dominée par le totalitarisme nazi (Hitler est mort et d'autres lui ont succédé au pouvoir), un écrivain de science-fiction, connu sous le nom du Maître du haut château, publie à son tour un livre qui explique ce que serait le monde si les alliés avaient gagné la guerre. Rédigé à l'aide de l'&lt;a href="http://wengu.tartarie.com/wg/wengu.php?l=Yijing&amp;amp;lang=fr"&gt;ancien texte chinois du Yi King&lt;/a&gt;, c'est devenu d'usage dans cette société de s'en servir pour consulter l'oracle avant de prendre  une décision sur une question difficile. Celui-ci proposera des explications (nébuleuses et libres d'interprétations) et des prédictions sur l'évolution possible de la situation, ce qui influence les actions des gens.&lt;br /&gt;&lt;br /&gt;Ce livre, intitulé La sauterelle pèse lourd, sera interdit en territoire allemand et sera au coeur de l'intrigue qui se joue autour d'un antiquaire d'art américain qui vend des objets rares dont l'historicité est douteuse (et pourtant très prisée de ses clients japonais qui l'ignorent), d'un juif ayant changé d'identité pour échaper à la mort, de haut placés japonais et allemands, et d'un faux officier italien venu en secret assassiner l'auteur de l'ouvrage controversé.&lt;br /&gt;&lt;br /&gt;Sont-ils certains de vivre dans la réalité où ils se trouvent ? Et si le Yi King affirmait le contraire ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5208410072126240972?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5208410072126240972/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5208410072126240972' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5208410072126240972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5208410072126240972'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/10/et-si-les-nazis-avaient-gagne-la-guerre.html' title='Et si les nazis avaient gagné la guerre ?'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-WJw4Xm5ayjE/TpYWNzA4CWI/AAAAAAAABOA/HauTf8SsqDc/s72-c/maitre-du-haut-chateau.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5818525007019423686</id><published>2011-10-11T20:37:00.001-04:00</published><updated>2011-10-11T20:41:08.075-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>The Ventures vs Rufus Wainwright</title><content type='html'>La fin de semaine dernière, je suis allé voir mon beau-père pour lui montrer ma nouvelle guitare. Étant lui-même un excellent guitariste, il pouvait apprécier à sa juste valeur ma dernière acquisition (secrètement, j'espère l'avoir rendu un peu jaloux :P).&lt;br /&gt;&lt;br /&gt;En discutant de musique et en échangeant quelques riffs, il finit par passer la remarque que le &lt;a href="http://code18.blogspot.com/2010/08/tablature-de-guitare-du-theme-des.html"&gt;thème des Fraggle Rock&lt;/a&gt; lui faisait penser au style de &lt;a href="http://www.theventures.com/"&gt;The Ventures&lt;/a&gt;, un groupe instrumental au somment de sa popularité dans les années 60 (pensez à leur succès Hawaii  Five-O!). Même qu'initialement, il croyait que ça avait été emprunté d'eux. Pour vérifier, nous sommes allés sur le site musical &lt;a href="http://grooveshark.com/#/artist/The+Ventures/19358"&gt;Grooveshark&lt;/a&gt; passer en revue leur discographie. Sans succès.&lt;br /&gt;&lt;br /&gt;Pourtant, la pièce qui a retenue notre attention fut Yellow Jacket. Pourquoi ? Parce qu'on trouvait que le riff de guitare avait peut-être inspiré la mélodie chantée dans I'm a-Runnin du jeune auteur Rufus Wainwright qui apparaissait dans le film pour enfants &lt;a href="http://www.imdb.com/title/tt0096282/"&gt;Les aventuriers du timbre perdu&lt;/a&gt; (1988). Il a d'ailleurs eu une nomination au prix Genie pour la meilleure pièce originale (il avait 14 ans). Je ne veux pas dire qu'il y a eu plagiat, seulement que les deux pièces ont des similitudes. Juste pour dire, quand j'ai démarré la musique de Yellow Jacket de The Ventures, ma copine n'a eu aucun problème à superposer les paroles pour chanter. Comparez par vous-même et dites moi si je suis à côté de la track.&lt;br /&gt;&lt;br /&gt;I'm a-Runnin de Rufus Wainwright (faites abstraction des arrangements typiques des années 80) :&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/Jucltvt4aLg" allowfullscreen="" frameborder="0" height="315" width="420"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;La pièce instrumentale Yellow Jacket de The Ventures :&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/DwSz1MYsb1U" allowfullscreen="" frameborder="0" height="315" width="420"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Que de bons souvenirs du conte pour tous Les aventuriers du timbre perdu. Je m'étais d'ailleurs procuré un &lt;a href="http://en.wikipedia.org/wiki/Bluenose_%28postage_stamp%29"&gt;Bluenose (un timbre datant de 1929)&lt;/a&gt; suite au visionnement de ce film qui avait créé un effet de mode partout dans la province. Le personnage de Tommy avait volé une copie rare du timbre avec "l'homme dans le mat" pour le revendre dans un magasin pour collectionneurs. Il n'y a pas si longtemps, j'ai découvert que le &lt;a href="http://maps.google.com/maps?q=March%C3%A9+Philat%C3%A9lique+De+Montr%C3%A9al%2FLuc+Legault,+Montreal,+QC,+Canada&amp;amp;hl=en&amp;amp;ie=UTF8&amp;amp;ll=45.548194,-73.601846&amp;amp;spn=0.001298,0.003484&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=49.089956,114.169922&amp;amp;vpsrc=6&amp;amp;hq=March%C3%A9+Philat%C3%A9lique+De+Montr%C3%A9al%2FLuc+Legault,&amp;amp;hnear=Montreal,+Communaut%C3%A9-Urbaine-de-Montr%C3%A9al,+Quebec,+Canada&amp;amp;t=m&amp;amp;z=19&amp;amp;layer=c&amp;amp;cbll=45.548285,-73.601766&amp;amp;panoid=zjaq5yXcFJKsbmoa_BRWpQ&amp;amp;cbp=12,280.51,,0,0.54"&gt;Marché Philatélique De Montréal&lt;/a&gt;, qui était utilisé pour le tournage, existe toujours à la même adresse (depuis 1958). Mais ce n'est pas là que je m'arrête à chaque semaine lorsque je suis dans le secteur mais bien à deux coins de rue, chez &lt;a href="http://magazoo.com/"&gt;Magazoo&lt;/a&gt;, pour acheter des grillons et des vers pour nourrir mon lézard...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5818525007019423686?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5818525007019423686/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5818525007019423686' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5818525007019423686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5818525007019423686'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/10/ventures-vs-rufus-wainwright.html' title='The Ventures vs Rufus Wainwright'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/Jucltvt4aLg/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-6123034976776748873</id><published>2011-10-09T12:05:00.000-04:00</published><updated>2011-10-09T12:05:26.949-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 137 sur le pourcentage</title><content type='html'>Quand tu discutes, si tu mentionnes un pourcentage, il y a 88% des gens qui vont croire tout ce que tu dis.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Pierre Légaré&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-6123034976776748873?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/6123034976776748873/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=6123034976776748873' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6123034976776748873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6123034976776748873'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/10/citation-no-137-sur-le-pourcentage.html' title='Citation no. 137 sur le pourcentage'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8320760408731650048</id><published>2011-10-07T22:44:00.002-04:00</published><updated>2011-10-07T22:45:05.141-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curiosités'/><category scheme='http://www.blogger.com/atom/ns#' term='Le coin du geek'/><title type='text'>Prévision météo des émotions dans le monde</title><content type='html'>J'assistais dimanche dernier à la 20ème édition du &lt;a href="http://montreal.pecha-kucha.ca/"&gt;Pecha Kucha Night Montréal&lt;/a&gt; qui coincidait avec la tenue du colloque &lt;a href="http://mutationdesavantgardes.org/"&gt;Mutation des avant-gardes&lt;/a&gt; où certains intervenants avaient été invités à donner un avant-goût du contenu à travers le fameux concept 20 images x 20 secondes.&lt;br /&gt;&lt;br /&gt;L'artiste algérien &lt;a href="http://www.benayoun.com/"&gt;Maurice Benayoun&lt;/a&gt; en a profité pour glisser un mot sur le &lt;a href="http://www.emotionforecast.com/"&gt;projet Emotion Forecast&lt;/a&gt; (que je ne connaissais pas) qui tente de prédire la météo des émotions en analysant le contenu de &lt;a href="http://news.google.com/"&gt;Google News&lt;/a&gt; et qui illustre sur des cartes dynamiques des nuages représentant l'état émotionnel des différentes zones de la planète pour les 3 jours à venir.&lt;br /&gt;&lt;br /&gt;La tendance mondiale est à la &lt;span style="font-weight: bold;"&gt;peur&lt;/span&gt;, possiblement en raison des mauvaises nouvelles économiques (et du décès de Steve Jobs ?).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Wt-7X2NsD5U/To-xlSiPL9I/AAAAAAAABN4/5ZDaxmRqa2c/s1600/meteo-des-emotions.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 229px;" src="http://2.bp.blogspot.com/-Wt-7X2NsD5U/To-xlSiPL9I/AAAAAAAABN4/5ZDaxmRqa2c/s400/meteo-des-emotions.jpg" alt="" id="BLOGGER_PHOTO_ID_5660938510816718802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dans la grande région de Montréal, les prévisions actuelles indiquent que la tendance est à l'&lt;span style="font-weight: bold;"&gt;agressivité&lt;/span&gt;. Les faits concordent avec les plus récentes actualités : le club de hockey Canadiens de Montréal qui perd son match inaugural, le pont Champlain qui tombe en ruine et qui sera reconstruit à péage, la collusion et la corruption dans l'industrie de la construction, sans compter l'état d'âme des concurrentes féminines face à &lt;a href="http://occupationdouble.canoe.ca/fiche/81"&gt;Christyna dans la télé-réalité Occupation Double&lt;/a&gt;. Oyoyoye!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8320760408731650048?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8320760408731650048/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8320760408731650048' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8320760408731650048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8320760408731650048'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/10/prevision-meteo-des-emotions-dans-le.html' title='Prévision météo des émotions dans le monde'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Wt-7X2NsD5U/To-xlSiPL9I/AAAAAAAABN4/5ZDaxmRqa2c/s72-c/meteo-des-emotions.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5589580067545900855</id><published>2011-10-05T19:30:00.001-04:00</published><updated>2011-10-05T19:30:56.107-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><title type='text'>Paieriez-vous vraiment pour ça ?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-UmEObOl5KvE/ToZAosu1GJI/AAAAAAAABNo/o46NYkVeErE/s1600/paying-for-it.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 145px; height: 200px;" src="http://4.bp.blogspot.com/-UmEObOl5KvE/ToZAosu1GJI/AAAAAAAABNo/o46NYkVeErE/s200/paying-for-it.jpg" alt="" id="BLOGGER_PHOTO_ID_5658281049784129682" border="0" /&gt;&lt;/a&gt;Quand elle a lu mon billet &lt;a href="http://code18.blogspot.com/2011/07/petit-delire-sur-le-plus-vieux-metier.html"&gt;Petit délire sur le plus vieux métier du monde&lt;/a&gt;, la première chose qu'Amélie m'a demandé, c'est si je connaissais le livre &lt;a href="http://www.amazon.ca/Paying-Comic-Strip-Memoir-About-Being/dp/1770460489/"&gt;Paying For It&lt;/a&gt; (2011) du &lt;a href="http://www.drawnandquarterly.com/artStudio.php?artist=a3dff7dd51fc01"&gt;bédéiste montréalais Chester Brown&lt;/a&gt;. Ça ne me disait rien du tout mais le sujet était rattaché à mon article parce qu'il traitait de sexe et d'argent. Comme j'ai terminé sa lecture récemment, c'est maintenant l'occasion de vous en parler.&lt;br /&gt;&lt;br /&gt;Mettant en vedette l'auteur jouant son propre rôle dans une sorte de comic-réalité (il semblerait que c'est autobiographique), il raconte comment se termina sa dernière relation avec la musicienne et actrice &lt;a href="http://twitter.com/#%21/sookyinlee"&gt;Sook-Yin Lee&lt;/a&gt;, qui à son tour en débuta une autre avec un autre homme jusqu'à pousser lentement son ex à la porte. Chester semblait indifférent à cela. Ce qu'il trouvait le plus difficile dans sa rupture, c'était de ne plus pouvoir copuler. Ses réflexions lui permirent de tirer la conclusion que la vie de couple n'était pas faite pour lui et qu'il mettait définitivement une croix là-dessus. Le chaud lapin se questionna alors comment il pouvait avoir du sexe sans avoir à entretenir de relation avec une petite amie.&lt;br /&gt;&lt;br /&gt;La solution : coucher avec des prostituées. Et là-dessus, l'auteur s'assume totalement puisqu'il détaille toutes les expériences où il a payé pour coucher avec une femme depuis 2003 (à noter que la sollicitation des travailleuses du sexe est illégale au Canada). Et nous voilà partis pour 300 pages d'aventures (c'est le cas de le dire!) où il nous illustre son histoires, ses conquêtes et ses préférences. Sans être ni vulgaire, ni trop explicite, le plus étonnant étant qu'il banalise presque la chose. La gène du début fait rapidement place à une habitude de consommateur,  au même titre que de choisir un produit à l'épicerie du  coin et de lire les critiques sur les interwebs. Au même titre que pour les info-publicités, tout le monde s'est déjà fait prendre dans un attrappe-nigaud. C'est un peu la même chose avec les petites annonces, les filles ne sont pas  toujours telles qu'elles se décrivent. Enfin, à l'image du restaurant, on doit remettre un pourboire pour le service. Mais combien ?&lt;br /&gt;&lt;br /&gt;À lire si vous n'êtes pas prude et que vous voulez lire sur un sujet controversé. Mais je persiste à croire que mon billet est beaucoup plus rigolo.&lt;br /&gt;&lt;br /&gt;Petite anecdote en terminant : aux dernières élections fédérales canadiennes, Chester Brown s'est présenté sous la bannière du Parti libertarien du Canada (à ne pas confondre avec le Parti Libéral) dans la circonscription de Trinity-Spadina en Ontario contre Olivia Chow du NPD (la femme de feu-Jack Layton, chef du Nouveau Parti Démocratique). Cette dernière l'a emporté avec une forte majorité, M.Brown devant se contenter de 0.7% des votes. Et il continue probablement de fréquenter des escortes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5589580067545900855?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5589580067545900855/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5589580067545900855' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5589580067545900855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5589580067545900855'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/10/paieriez-vous-vraiment-pour-ca.html' title='Paieriez-vous vraiment pour ça ?'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-UmEObOl5KvE/ToZAosu1GJI/AAAAAAAABNo/o46NYkVeErE/s72-c/paying-for-it.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-2977371788003781547</id><published>2011-10-02T14:46:00.001-04:00</published><updated>2011-10-02T14:46:43.641-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 136 sur le travail autonome</title><content type='html'>Peu importe le coût minimum de votre soumission pour réaliser un travail, il y aura toujours un idiot disposé à le faire pour moins cher.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- La loi du travailleur autonome&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-2977371788003781547?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/2977371788003781547/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=2977371788003781547' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/2977371788003781547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/2977371788003781547'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/10/citation-no-136-sur-le-travail-autonome.html' title='Citation no. 136 sur le travail autonome'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-57270274255845356</id><published>2011-10-01T11:21:00.000-04:00</published><updated>2011-10-01T11:21:26.870-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><title type='text'>Après l'empire : essai sur la décomposition du système américain</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-9EPYSlzDJWo/ToZGfvWfOrI/AAAAAAAABNw/9E-g0zSEmpg/s1600/apres-empire.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 136px; height: 200px;" src="http://2.bp.blogspot.com/-9EPYSlzDJWo/ToZGfvWfOrI/AAAAAAAABNw/9E-g0zSEmpg/s200/apres-empire.jpg" alt="" id="BLOGGER_PHOTO_ID_5658287492938283698" border="0" /&gt;&lt;/a&gt;Pour une rare fois que je regardais la télé pour tuer le temps (mis à part les matchs de hockey), c'est l'émission Bazzo.tv du 22 septembre dernier qui a attiré mon attention, tout juste au début de l'éditorial de Camil Bouchard qui y présentait le Krispy Kreme Burger. Pourtant, ce n'est pas le dégoût de l'animatrice Marie-France Bazzo face à ce sandwich calorique qui m'a maintenu au poste. C'est plutôt la comparaison qu'en a fait M.Bouchard avec le déclin inévitable de l'empire américain, qui lui rappelle le livre Après l'empire de l'historien Emmanuel Todd (qui lui est mince, a-t-il tenu à préciser). Voyez ici sa &lt;a href="http://bazzotv.telequebec.tv/occurence.aspx?id=718&amp;amp;ep=86"&gt;chronique vidéo&lt;/a&gt;, c'est assez convainquant. Comme il le rappelle, est-ce mieux de mourir de faim par manque de nourriture ou de crever en s'étouffant dans son gras pour en avoir abusé ?&lt;br /&gt;&lt;br /&gt;Publié 1 an après le 11 septembre et lu 10 ans après sa publication (j'y ai consacré 3 soirées), j'ai trouvé très pertinent de voir les choses sous un angle plus rationnel. Cette lecture intellectuelle met la lumière sur  les enjeux politiques et économiques que nous vivons actuellement. Sans  vouloir dire que c'était annoncé d'avance, on vit aujourd'hui le printemps arabe et on tente désespérément de se sortir de la plus grosse crise économique depuis le crash d'octobre 1929. Est-ce que la situation s'améliorera ? Si oui, quels sont les enjeux ?&lt;br /&gt;&lt;br /&gt;Jadis considéré comme un pays protecteur, les États-Unis se rangent désormais du côté des prédateurs. La place qu'occupe les USA dans le monde devient de plus en plus futile. Sa domination, sa  crédibilité et son influence sur l'échéquier mondial s'effritent au fur et à mesure que la nation prouve son incompétence tant au niveau militaire qu'économique. Le monde produit pour que l'Amérique consomme. Son  équilibre est fragile. L'impérialisme américain, comme celui de Rome à une autre époque, est en chute libre. Pourtant, le gouvernement américain présente un impérialisme théâtral pour faire croire du contraire. Et il le fait en intervenant dans des pays qui ne peuvent se défendre, trop faibles militairement et parfois désorganisés. Tout cela pour justifier sa présence en territoires étrangers et en alimentant la crainte d'un axe du mal dans le monde musulman de qui il dépend pour ses approvisionnements en pétrole (j'ignorais que la Russie était le 2ème producteur/exportateur de pétrole et le 1er pour le gaz naturel, du moins, au moment où le livre a été publié).&lt;br /&gt;&lt;br /&gt;Pendant que les États-Unis paufinent leur mise en scène, les autres pays s'organisent et il est fort à parier qu'ils ne pourraient bientôt plus avoir besoin de ce qui a déjà été le pays le plus puissant de la planète. La France, l'Allemagne, la Russie, le Japon ont entre les mains le pouvoir de faire basculer les choses en leur faveur en assenant le coup fatal aux américains. Comme le livre, concluons simplement en admettant que si l'Amérique s'obstine à vouloir démontrer sa toute-puissance, elle n'aboutira qu'à révéler au monde son impuissance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-57270274255845356?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/57270274255845356/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=57270274255845356' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/57270274255845356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/57270274255845356'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/10/apres-lempire-essai-sur-la.html' title='Après l&apos;empire : essai sur la décomposition du système américain'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-9EPYSlzDJWo/ToZGfvWfOrI/AAAAAAAABNw/9E-g0zSEmpg/s72-c/apres-empire.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-9152630257767974773</id><published>2011-09-29T21:01:00.001-04:00</published><updated>2011-09-30T06:22:07.000-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>Vérifier si une table existe dans Postgres</title><content type='html'>Une base de données Postgres, de nombreux schémas dont la structure est calquée les uns sur les autres mais qui ne contiennent pas nécessairement les mêmes tables. C'est dans ce contexte que j'ai eu à écrire un script qui devait parcourir chaque schéma afin de vérifier la présence d'une table précise et si c'était le cas, appliquer une modification à la structure afin que les tables soient uniformes à travers les différents schémas.&lt;br /&gt;&lt;br /&gt;Comment peut-on vérifier l'existance d'une table dans un schéma ? Si on fait un SELECT sur une table inexistante, peut-on capturer une exception plutôt que de provoquer une erreur ? Est-ce qu'il existe une fonction système pour en faire la vérification ? Je n'en ai pas trouvé. Par contre, en cherchant un peu dans les catalogues systèmes, j'ai pu écrire une requête SQL qui permet de vérifier la présence d'une table dans un schéma spécifié (autrement, il cherchera dans le schéma public par défaut) :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;SELECT *&lt;br /&gt;FROM pg_class as tbl&lt;br /&gt;INNER JOIN pg_namespace as schm on tbl.relnamespace = schm.oid&lt;br /&gt;WHERE schm.nspname = '' || p_s_schema || ''&lt;br /&gt;AND tbl.relname = '' || p_s_tablename || ''&lt;/pre&gt;Si la requête retourne un enregistrement, c'est qu'une table a été trouvée (à utiliser avec EXISTS ou FOUND). Pour le reste, il suffit de l'encapsuler dans une fonction à réutiliser dans vos différents projets :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;CREATE OR REPLACE FUNCTION table_exists(schema_name character varying, table_name character varying)&lt;br /&gt;   RETURNS boolean AS&lt;br /&gt;$BODY$&lt;br /&gt;BEGIN&lt;br /&gt;   IF EXISTS(&lt;br /&gt;       SELECT *&lt;br /&gt;       FROM pg_class as tbl&lt;br /&gt;       INNER JOIN pg_namespace as schm on tbl.relnamespace = schm.oid&lt;br /&gt;       WHERE schm.nspname = '' || schema_name || ''&lt;br /&gt;       AND tbl.relname = '' || table_name || ''&lt;br /&gt;   ) THEN&lt;br /&gt;       RETURN true;&lt;br /&gt;   ELSE&lt;br /&gt;       RETURN false;&lt;br /&gt;   END IF;&lt;br /&gt;END;&lt;br /&gt;$BODY$&lt;br /&gt;LANGUAGE 'plpgsql' VOLATILE;&lt;/pre&gt;Appel à la fonction :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;SELECT table_exists('public', 'employees') // retourne true ou false&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-9152630257767974773?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/9152630257767974773/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=9152630257767974773' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/9152630257767974773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/9152630257767974773'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/verifier-si-une-table-existe-dans.html' title='Vérifier si une table existe dans Postgres'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-6695929268403095204</id><published>2011-09-27T20:31:00.000-04:00</published><updated>2011-09-27T20:31:44.727-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><category scheme='http://www.blogger.com/atom/ns#' term='Le coin du geek'/><title type='text'>Devant une bibliothèque imposante</title><content type='html'>Mon plus grand regret, c'est de ne pas m'être procuré un certain livre lorsque j'ai eu la chance de le dénicher. Je l'ai tout bonnement laissé filer. Depuis, impossible de le retrouver, même après plusieurs années. Le résultat : chaque fois que j'ai l'intention de lire quelque chose, je ne prends aucun risque et je l'achète immédiatement pour l'ajouter à ma liste de lecture. Il faut dire que je lis beaucoup. Mais chaque fois que j'en termine un, quelques livres supplémentaires sont déjà apparus sur les étagères de ma bibliothèque. Trop peu de temps disponible par rapport à l'ensemble des intérêts que j'aimerais explorer au cours de ma vie. Face à la somme du savoir du monde, je me sens démunis.&lt;br /&gt;&lt;br /&gt;Je peux passer des heures à fouiller les librairies et les boutiques de livres usagés, juste dans l'espoir de trouver la perle rare ou quelque chose qui stimule mon intellect. Entre regarder Occupation Double et me plonger dans un livre, je sais lequel représente le meilleur investissement. &lt;a href="http://code18.blogspot.com/2010/05/investir-dans-ses-connaissances.html"&gt;Investir dans ses connaissances&lt;/a&gt; ouvre la voie du succès.&lt;br /&gt;&lt;br /&gt;Voilà, j'ai trop de livres et j'ai de la difficulté à me défaire de ceux que j'ai déjà lu. On ne se débarrasse pas de la connaissance lorsqu'elle est à la portée de la main. Et puis, avoir une belle bibliothèque bien garnie permet de dégager un certain prestige. Du moins, celui de &lt;a href="http://code18.blogspot.com/2010/02/citation-no-69-sur-la-culture.html"&gt;donner l'impression à ses visiteurs d'être cultivé&lt;/a&gt;. D'où l'idée de ne pas se laisser impressionner si facilement.&lt;br /&gt;&lt;br /&gt;À une personne qui entrerait chez lui pour la première fois, qui découvrirait son imposante bibliothèque et qui ne trouverait rien de mieux que de lui demander s'il les avait tous lus, l'auteur et professeur Umberto Eco cite 3 réponses possibles :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;j'en ai lu davantage&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ces livres-là sont seulement ceux que je dois lire la semaine prochaine. Ceux que j'ai déjà lus sont à l'université&lt;/li&gt;&lt;li&gt;je n'ai lu aucun de ces livres. Sinon, pourquoi les garderais-je ?&lt;/li&gt;&lt;/ol&gt;Ma librairie iTunes m'indique que si j'écoutais toutes les chansons de mon répertoire sans répétition, j'en aurais pour 83 jours de suite à entendre des pièces différentes. Pourtant, j'ai tendance à réécouter souvent les mêmes albums et à ignorer les autres. Pour en revenir à ma bibliothèque et considérant que ça prend plus de temps lire un bouquin que d'écouter un album, quelle est la probabilité de lire une deuxième fois un livre que j'ai conservé si précieusement ?&lt;br /&gt;&lt;br /&gt;La réalité, c'est que je continue à les accumuler. Juste au cas-où. Qui sait si un jour, je finirai par imiter le &lt;a href="http://bombsite.com/issues/80/articles/2501"&gt;musicien d'avant-garde John Zorn&lt;/a&gt; : avoir des livres, disques et films partout, du plancher au plafond et ce dans toutes les pièces, allant même jusqu'à condamner la cuisine pour en stocker davantage. Ça doit être de toute beauté à voir! S'il vous invite chez lui pour contempler sa collection, vous aurez à vous assoir par terre puisqu'il s'est aussi défait de son mobilier...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-6695929268403095204?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/6695929268403095204/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=6695929268403095204' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6695929268403095204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6695929268403095204'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/devant-une-bibliotheque-imposante.html' title='Devant une bibliothèque imposante'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-1574334366223436861</id><published>2011-09-19T19:27:00.000-04:00</published><updated>2011-09-19T19:27:50.246-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><title type='text'>Les jeunes condamnés à la location perpétuelle ?</title><content type='html'>J'allais écrire un commentaire en réaction à l'article &lt;a href="http://lapresseaffaires.cyberpresse.ca/economie/immobilier/201109/16/01-4448420-les-jeunes-et-la-propriete-location-perpetuelle.php"&gt;Les jeunes et la propriété: location perpétuelle?&lt;/a&gt; de Marc Tison sur Cyberpresse et vu la longueur de ma réponse (parce que j'en ai toujours trop à dire), j'ai préféré utilisé mon blogue comme tribune. Tout d'abord, sachez que je ne suis pas un expert en la matière et  que l'écriture de ce billet est motivé par le gros bon sens.&lt;br /&gt;&lt;br /&gt;Est-ce que les jeunes sont condamnés à vivre à perpétuité en tant que locataires ? Que ce soit leur choix ou non, il semblerait que ça soit la meilleure option, du moins du point de vue financier. Une maison engendre plus de coûts ? Oui, je suis tout à fait d'accord. Ce dont je suis moins, c'est l'exagération de  l'argumentaire présenté dans le texte qui dépeint un portrait alarmiste de la situation. J'ai un peu l'impression que  l'auteur (du moins, sa source) exagère les chiffres pour faire valoir  son point de vue.&lt;br /&gt;&lt;br /&gt;Je rappelle la question initiale : lequel, entre un loyer de 900$ ou  l'achat d'une maison de 350000$ est le plus  rentable ? Avant de se  poser la question, il faut reconnaître que ces  chiffres ne sont pas  très réalistes. On parle de jeunes ET d'achat d'une première maison. Je ne sais pas pour vous, mais de mon  côté, personne dans mon entourage n'a les moyens de  s'offrir une  maison à 350 000$. Ce que leur calcul ne dit pas, c'est  qu'avec une  hypothèque à 5% amortie sur 25 ans, ça représente des  paiements de plus  de 1800$ par mois, sans compter les taxes municipales  et scolaires!.  Si l'exemple parlait d'une propriété valant entre 200 000$ et 250 000$, ce  serait  déjà plus crédible (hypothèque mensuelle approximative entre  1000$ et  1300$). Si on est d'accord que le prix moyen est de 100 000$  inférieur à ce qu'ils avancent, tous les chiffres qui en découlent  sont biaisés. Et alors là, l'accession à la propriété redevient soudainement possible aux jeunes.&lt;br /&gt;&lt;br /&gt;En considérant un appartement en bon état dont le loyer est de 900$ à Montréal, ce sera sans doute un 4 ou 5 et demi avec un petit balcon suffisamment grand pour y placer un barbecue et une chaise. Pour être propriétaire de ce même appartement sous forme de condo, il faudra débourser au moins 200 000$ et ça peut vite grimper à 250 ou 300 000$. Généralement, une maison de banlieue de 350 000$ compte le double ou le triple de la superficie habitable, au moins 4 chambres, 2 salles de bain, un garage, une cour, une piscine creusée, un chien Fido, un voisin qui aime un peu trop sa pelouse, etc. À Montréal, il ne faudra pas se surprendre si on voit le prix doubler. Juste pour dire que quand on paye un loyer 900$, on s'attend à en avoir pour 900$. Pourquoi ne pas comparer le coût de dépense pour le logis au pied carré ? C'est exactement comme comparer des pommes avec des bananes. Ou de comparer l'investissement de 1000$ sur un vélo versus une voiture à 20 000$. La bicyclette est un moyen de transport pratique et écologique mais le jour où vous aurez à vous rendre sous la pluie chez de la famille qui vit à 300 km de chez vous, vous opterez certainement pour le véhicule qui vous offre les meilleurs avantages.&lt;br /&gt;&lt;br /&gt;Avec un prix ajusté à la réalité, à supposer que la mise de fond demeure de 10%, la prime d'assurance (à payer si la mise de fond est inférieure à 20% de la valeur de la maison) chute à 4500$ plutôt que 7000$. Une différence qui vous permet de faire un beau voyage ou de l'investir à votre guise.&lt;br /&gt;&lt;br /&gt;Pour ce qui est des taxes foncières, j'ai des amis qui ont acheté sur la rive-nord dans un tout nouveau  développement et leurs taxes frôlent les 4000$ annuellement pour une maison de moins de 250000$ (blâmez les infrastructures à payer!). Mes parents habitent en banlieue dans une maison du milieu des années 80, les taxes sont maintenant de 2100$. Pour ma part, avec une  maison à Montréal, la somme de mes taxes municipales et scolaires ne  dépassent pas 2500$ par année. Je sais que je ne paye pas cher et durant mon magasinage, la moyenne avoisinait 3000$. Les taxes sont généralement plus chères dans les nouveaux quartiers/nouvelles constructions mais elles auront tendance à baisser et se stabiliser avec le temps. Encore une lacune dans leur méthode de calcul.&lt;br /&gt;&lt;br /&gt;Autres points à souligner :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Je suppose que les frais de démarrage de 17 500$ font référence aux frais de notaire, d'inspecteur, taxe de bienvenue, déménageur, peinture et quelques rénovations urgentes. Là-dessus, je vous dirais par mon expérience que les chiffres sont un peu plus réalistes mais quand même plus élevés que dans ma situation.&lt;/li&gt;&lt;li&gt;Coût annuel d'entretien : 5000$/an. Pour certains travaux, vous devrez faire appel à un spécialiste. C'est un montant réaliste si vous faites toujours affaire avec des professionnels. Pour d'autres, si vous êtes moindrement bricoleurs et débrouillards, vous sauverez au moins 50% de la facture en le faisant vous-même. Il ne vous faut que les matériaux et un peu de votre temps. Lorsque j'étais à loyer, le propriétaire n'était pas pressé à faire  changer les fenêtres et la porte-patio. Ça gelait par l'intérieur durant  l'hiver et il fallait augmenter le chauffage, ce qui influençait à la hausse la facture d'électricité payée par les locataires. Étant  propriétaire occupant, on fait les travaux nécessaires parce qu'on vit  dedans et qu'on veut éviter les inconvénients ou que ça se dégrade. Et on ne se le cachera pas, c'est une valeur ajoutée dans le cas d'une revente.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Frais à la revente : rien ne nous oblige à faire affaire avec un agent lorsque viendra le moment de vendre. On minimisera la commission et il nous en restera plus dans nos poches. On aime ça hein?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Assurance habitation : j'ai été surpris quand mon assureur m'a dit que les coûts étaient moindre pour assurer ma maison PLUS mes biens comparativement à lorsque j'assurais uniquement mes biens en appartement. La raison : on est supposément plus responsable étant propriétaire qu'en étant locataire. Comme dans l'exemple illustré (360$ en loyer vs 900$), si le prix triple pour vous assurer, changez d'assureur!&lt;/li&gt;&lt;/ul&gt;Quelles raisons poussent les jeunes à rester à loyer ?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;des revenus qui ne permettent pas d'acheter une maison&lt;br /&gt;&lt;/li&gt;&lt;li&gt;une situation temporaire pour économiser de l'argent pour une mise de fond&lt;br /&gt;&lt;/li&gt;&lt;li&gt;un choix de vie qui permet d'avoir plus d'argent pour se payer du luxe&lt;/li&gt;&lt;/ul&gt;Dans le texte, on indique qu'un locataire qui aurait plutôt placé son argent dans des investissements aurait une valeur d'un million de dollars en banque après 30 ans. Mon oeil! C'est de la pure théorie. Et ça ne risque pas d'arriver parce que contrairement aux baby-boomers, les jeunes veulent profiter de la vie immédiatement et ne pas se priver de rien. Faire des économies pour plus tard est de moins en moins une priorité pour les plus récentes générations. Ensuite parce qu'il faut considérer que les placements fluctuent avec l'économie. Nous ne sommes pas à l'abri de pertes financières ou d'une crise économique.&lt;br /&gt;&lt;br /&gt;Si je me fie à ce que j'ai investi en placements le temps que j'étais à loyer et que j'extrapole le tout sur 30 ans, j'aurais probablement un porte-feuille de 150 000$ (avec intérêts). Oui, il manque un zéro par rapport aux prévisions. J'ai beau gagner un bon salaire, je n'arrive pas au même résultat qu'eux dans mon calcul. Dans mon livre à moi, avec tous les scandales et problèmes financiers des dernières années, une maison est un placement plus sûr et qu'on peut bénéficier immédiatement si on vit dedans.&lt;br /&gt;&lt;br /&gt;Un autre point qui m'agace : les couples agés fin vingtaine ou début trentaine sont exactement dans la tranche d'âge de ceux qui souhaitent fonder une famille. Donc plus de dépenses et moins de liquidités pour une hypothèque. Selon le calculateur de la capacité d'emprunt du site web de ma banque, un couple de jeunes professionnels gagnant un salaire de 45 000$ chacun, sans dette et ayant une mise de fond de 25 000$ pourrait emprunter jusqu'à 350 000$.&lt;br /&gt;&lt;br /&gt;C'est le portrait de votre situation ? Bravo, vous avez la capacité de payer! Pour y arriver, oubliez les voyages, les repas au restaurant, troquez votre voiture pour un vélo, évitez de vous reproduire et cessez de respirer. Aucun de ces paramètres ne sont pris en compte dans votre capacité d'emprunt. Ou encore payez un montant plus réaliste en achetant une propriété qui répond à vos besoins et profitez de tout ce que la vie a de bon à vous offrir. Quand je vois un exemple aussi absurde que celui de cet article, je me demande si ce n'est pas les propriétaires qui tentent de convaincre les jeunes qu'il est plus avantageux de rester à loyer de peur de voir s'envoler leur profit facile.&lt;br /&gt;&lt;br /&gt;Maintenant que nous avons considéré tout ça, on peut conclure par un  point dont il n'est jamais question dans l'article : il vous faudra  payer votre propriété pendant 25  ans alors que pour un loyer, vous aurez à le payer toute votre vie. Pour moi, c'est une évidence que ça devrait être une variable importante dans le calcul. Si  vous achetez à 30 ans, vous serez libéré de votre dette à votre  55ème anniversaire. À  loyer, vous serez dépendant de votre propriétaire à qui vous devrez envoyer un chèque par mois jusqu'à votre mort. Mais ça, c'est si vous vous laissez convaincre que vous êtes condamnés à perpétuité...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-1574334366223436861?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/1574334366223436861/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=1574334366223436861' title='5 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1574334366223436861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1574334366223436861'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/les-jeunes-et-la-location-perpetuelle.html' title='Les jeunes condamnés à la location perpétuelle ?'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8751820571140435262</id><published>2011-09-18T08:32:00.000-04:00</published><updated>2011-09-18T08:32:11.026-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 135 sur les grands penseurs</title><content type='html'>Quand quelqu'un que vous admirez et respectez semble être en réflexion profonde, il ou elle est probablement en train de penser à aller déjeuner.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- La règle du Grand&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8751820571140435262?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8751820571140435262/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8751820571140435262' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8751820571140435262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8751820571140435262'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/citation-no-135-sur-les-grands-penseurs.html' title='Citation no. 135 sur les grands penseurs'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-7419222081814761114</id><published>2011-09-18T08:17:00.000-04:00</published><updated>2011-09-18T08:18:04.955-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Tri conditionnel dans un énoncé SQL</title><content type='html'>Si vous avez déjà présenté les résultats d'une requête SQL sous forme de tableau dont l'entête de chaque colonne permettait de trier les données par ordre ascendant ou descendant, vous avez probablement utilisé une ou l'autre de ces techniques :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;construire l'énoncé SQL par concaténation en lui ajoutant dynamiquement le nom du champ avant d'envoyer à l'exécution&lt;br /&gt;&lt;/li&gt;&lt;li&gt;écrire un énoncé SQL qui prend en charge la vérification du tri demandé&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;C'est de cette deuxième technique dont je vais vous parler, d'une part parce que c'est celle que je préfère utiliser et que j'essaie généralement d'éviter l'autre. Cet exemple sera illustré en utilisant une procédure stockée de SQL Server mais ça peut fonctionner sous d'autres systèmes puisque ce n'est qu'une façon de formuler une requête SQL standard.&lt;br /&gt;&lt;br /&gt;Le truc est d'utiliser des CASE WHEN dans la clause ORDER BY où seule une condition sera vraie à l'exécution. Répétez au besoin pour toutes combinaisons que vous souhaitez couvrir. La procédure recevra en paramètre une constante qui permettra de déterminer la colonne et le sens du tri.&lt;br /&gt;&lt;br /&gt;Voici un exemple concret sur lequel vous pourrez vous baser :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;CREATE PROCEDURE nom_de_la_procedure&lt;br /&gt;   @paramTri VARCHAR(50)&lt;br /&gt;AS&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;-- je n'ai conservé que l'essentiel pour plus de clareté&lt;br /&gt;&lt;br /&gt;SELECT *&lt;br /&gt;FROM dbo.inventaire&lt;br /&gt;ORDER BY&lt;br /&gt;CASE WHEN @paramTri = 'NOM_ITEM_ASC' THEN nom_item END ASC,&lt;br /&gt;CASE WHEN @paramTri = 'NOM_ITEM_DESC' THEN nom_item END DESC,&lt;br /&gt;CASE WHEN @paramTri = 'PRIX_ASC' THEN prix END ASC,&lt;br /&gt;CASE WHEN @paramTri = 'PRIX_DESC' THEN prix END DESC,&lt;br /&gt;CASE WHEN @paramTri = 'QUANTITE_EN_STOCK_ASC' THEN quantite_stock END ASC,&lt;br /&gt;CASE WHEN @paramTri = 'QUANTITE_EN_STOCK_DESC' THEN quantite_stock END DESC,&lt;br /&gt;CASE WHEN @paramTri = 'QUANTITE_COMMANDE_ASC' THEN quantite_commande END ASC,&lt;br /&gt;CASE WHEN @paramTri = 'QUANTITE_COMMANDE_DESC' THEN quantite_commande END DESC,&lt;br /&gt;CASE WHEN @paramTri = 'EN_STOCK_DEPUIS_ASC' THEN date_stock END ASC,&lt;br /&gt;CASE WHEN @paramTri = 'EN_STOCK_DEPUIS_DESC' THEN date_stock END DESC,&lt;br /&gt;nom_item ASC -- tri par défaut&lt;/pre&gt;L'appel à la procédure :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;EXEC nom_de_la_procedure 'NOM_ITEM_ASC'&lt;/pre&gt;En écrivant la requête de cette façon plutôt que par concaténation, vous préviendrez aussi les risques d'injection SQL puisque si le libellé reçu par le paramètre n'est pas pris en charge par le CASE WHEN, le tri par défaut sera alors utilisé.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-7419222081814761114?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/7419222081814761114/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=7419222081814761114' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7419222081814761114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7419222081814761114'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/tri-conditionnel-dans-un-enonce-sql.html' title='Tri conditionnel dans un énoncé SQL'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-3010609769975962666</id><published>2011-09-13T18:47:00.000-04:00</published><updated>2011-09-13T18:47:06.383-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Bouton personnalisé dans un datepicker jQueryUI</title><content type='html'>Remplacer un contrôle datepicker en JavaScript qui date de 2004 par celui de &lt;a href="http://jqueryui.com/demos/datepicker/"&gt;jQueyUI&lt;/a&gt; ? Oui ! N'importe quoi pour se débarrasser d'une vieille librairie dont le rendu jure avec le reste de l'application.&lt;br /&gt;&lt;br /&gt;Dans la plupart des écrans, il était possible de choisir une date par le calendrier mais aussi de vider la valeur sélectionnée par un simple clic (ce qui avait pour effet de vider la valeur de l'input). Avec l'ancien contrôle datepicker, chaque input text accueillant une date était associé à une icône pour ouvrir le calendrier de saisie et une autre pour vider le champ. Contrairement à jQuery qui utilise des sélecteurs pour initialiser l'interface, celui-là avait du code HTML et JavaScript ajouté manuellement.&lt;br /&gt;&lt;br /&gt;Comme j'allais le remplacer par le datepicker de jQueryUI, mon objectif était d'éviter d'avoir à ajouter du code à l'emplacement de chaque champ date (plus propre) et de voir s'il existait une option built-in à configurer. La documentation de jQuery indique qu'on peut ajouter un "button bar" qui comprend le bouton de fermeture mais contrairement au contrôle Dialog, il ne semble pas possible d'ajouter des boutons personnalisés (du moins, pas dans la version courante 1.8.16). Seul le libellé du bouton peut être modifié pour des fins de traduction.&lt;br /&gt;&lt;br /&gt;Et pourquoi ne pas tenter de remplacer le fonctionnement du bouton pour qu'il fasse ce dont j'ai besoin ? Après tout, si on clique à l'extérieur de la zone du calendrier, il se ferme automatiquement, ce qui ne change en rien son comportement.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-mnQB-bLq09Q/Tm_XeFNvuFI/AAAAAAAABNg/i8yC-MuyH-I/s1600/jqueryui-calendar-clear-button.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 239px;" src="http://1.bp.blogspot.com/-mnQB-bLq09Q/Tm_XeFNvuFI/AAAAAAAABNg/i8yC-MuyH-I/s400/jqueryui-calendar-clear-button.jpg" alt="" id="BLOGGER_PHOTO_ID_5651972969169139794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pour remplacer le fonctionnement du bouton "Done" (Terminé) par "Clear" (Vider), j'y suis arrivé par un petit hack. Ça fonctionne bien pour les besoins de la cause mais je ne peux pas garantir que ce sera fonctionnel dans tous les cas ni dans les versions ultérieures. Voyez-le comme une solution temporaire pour ajouter simplement une option de configuration.&lt;br /&gt;&lt;br /&gt;Pour commencer, référez-vous à la documentation du datepicker de jQueryUI pour l'intégrer à votre projet. Vous aurez probablement à définir des valeurs par défaut pour le contrôle et vous aurez au minimum besoin de celles-ci (remplacez $j par $ si vous n'utilisez pas l'option noConflict) :&lt;br /&gt;&lt;pre name="code" class="js"&gt;$j.datepicker.setDefaults({&lt;br /&gt;   'dateFormat':'yy-mm-dd',&lt;br /&gt;   'buttonImageOnly': true,&lt;br /&gt;   'buttonImage': 'images/icon.gif',&lt;br /&gt;   'showButtonPanel' : true,&lt;br /&gt;   'showOn': 'both'&lt;br /&gt;});&lt;/pre&gt;Si vous inspectez le DOM, vous remarquez que le datepicker s'insère dedans uniquement au premier appel (lorsque le calendrier apparaît à l'écran). Vous trouverez le HTML immédiatement avant la balise de fermeture du BODY. C'est pourquoi il faudra utiliser la fonction live() de jQuery pour que le hack fonctionne.&lt;br /&gt;&lt;pre name="code" class="js"&gt;$j(document).ready(function(){&lt;br /&gt;   $j('button.ui-datepicker-close').live('click',&lt;br /&gt;       function(){&lt;br /&gt;           var id = $j('button.ui-datepicker-current').attr('onclick').replace(/.*gotoToday\('#(.*)'\);/gi, '$1');&lt;br /&gt;           if( $j('button.ui-datepicker-close', $j('#ui-datepicker-div')).html() == 'Clear' ){&lt;br /&gt;               $j('#' + id).val('');&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;   );&lt;br /&gt;});&lt;/pre&gt;La première chose à faire, c'est d'attacher un événement click en mode live sur le bouton qui possède la classe ui-datepicker-close. Il n'y en aura qu'un seul pour tous les champs de la page qui utilisent un datepicker. Dans le markup HTML généré sur demande pour le calendrier, le nom du champ associé (ID de l'input) se trouve passé en paramètre à une fonction attachée inline à l'élément. J'utilise une regex pour l'extraire de l'attribut. Enfin, je vérifie que le libellé du bouton est égal à "Clear" (ou toute autre valeur que vous aurez choisi selon votre personnalisation). Si c'est le cas, je vide l'input.&lt;br /&gt;&lt;br /&gt;Certaines instances du calendrier pourront maintenant avoir ou non le changement de fonctionnalité du bouton. Pour qu'il l'ait, il suffira de changer le libellé du bouton en visant un ID en particulier ou un sélecteur CSS lors de l'initialisation.&lt;br /&gt;&lt;pre name="code" class="js"&gt;$j(document).ready(function(){&lt;br /&gt;&lt;br /&gt;   // avec bouton close (standard)&lt;br /&gt;   $j('#datePicker1').datepicker();&lt;br /&gt;&lt;br /&gt;   // avec bouton Clear&lt;br /&gt;   $j('.datePicker2').datepicker({'closeText' : 'Clear'});&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;Vous auriez fait autrement ? Partagez votre solution!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-3010609769975962666?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/3010609769975962666/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=3010609769975962666' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3010609769975962666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3010609769975962666'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/bouton-personnalise-dans-un-datepicker.html' title='Bouton personnalisé dans un datepicker jQueryUI'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-mnQB-bLq09Q/Tm_XeFNvuFI/AAAAAAAABNg/i8yC-MuyH-I/s72-c/jqueryui-calendar-clear-button.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8171870756390266771</id><published>2011-09-11T22:22:00.001-04:00</published><updated>2011-09-11T22:22:53.220-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curiosités'/><title type='text'>Mon top 3 photos du 11 septembre 2011</title><content type='html'>Aujourd'hui était le 10ème anniversaire des attentats du World Trade Center. Plutôt que de m'écraser devant la télévision pour regarder les reportages, j'ai décidé de sortir et profiter d'une des dernières belles journées chaudes de l'été. Direction Terrebonne pour retrouver des amis à une exposition de voitures anciennes.&lt;br /&gt;&lt;br /&gt;Voici donc un court résumé de ma journée en photos pour voir ce que vous avez manqué.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1ère position&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La fameuse Delorean d'AMC, popularisée par le film Back To The Future. Elle fait rêver les jeunes et les moins jeunes, même si elle n'a aucun &lt;a href="http://www.tfaw.com/Profile/Back-To-The-Future-Flux-Capacitor-Replica-Unlimited-Edition___337120"&gt;convecteur temporel&lt;/a&gt;. Je serais curieux de savoir combien il y en a au Québec.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-oIusSUbfqgM/Tm1oukUHhYI/AAAAAAAABNI/oKBkN9HIvs0/s1600/delorean.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/-oIusSUbfqgM/Tm1oukUHhYI/AAAAAAAABNI/oKBkN9HIvs0/s400/delorean.jpg" alt="" id="BLOGGER_PHOTO_ID_5651288256651167106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2ème position&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On annonçait des bagnoles modifiées. Cherchez la pièce qui n'est pas d'origine.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-io8Vtitep0Y/Tm1ouzi_0gI/AAAAAAAABNY/q4KnlmuDlGM/s1600/moteur-guinness.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-io8Vtitep0Y/Tm1ouzi_0gI/AAAAAAAABNY/q4KnlmuDlGM/s400/moteur-guinness.jpg" alt="" id="BLOGGER_PHOTO_ID_5651288260740108802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3ème position&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pour une raison que j'ignore, il semblerait que les baby boomers apprécient un peu trop les poupées boudeuses puisqu'il y en avait partout. Mais euh, qu'est-ce qu'ils font ?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-E3bTst4qU_I/Tm1ougUywOI/AAAAAAAABNQ/tuNqMo1YLB0/s1600/boudeurs.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 300px; height: 400px;" src="http://4.bp.blogspot.com/-E3bTst4qU_I/Tm1ougUywOI/AAAAAAAABNQ/tuNqMo1YLB0/s400/boudeurs.jpg" alt="" id="BLOGGER_PHOTO_ID_5651288255580258530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;P.s. 4,15$ pour un aller simple Montréal-Terrebonne en transport en commun, c'est du vol.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8171870756390266771?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8171870756390266771/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8171870756390266771' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8171870756390266771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8171870756390266771'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/mon-top-3-photos-du-11-septembre-2011.html' title='Mon top 3 photos du 11 septembre 2011'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-oIusSUbfqgM/Tm1oukUHhYI/AAAAAAAABNI/oKBkN9HIvs0/s72-c/delorean.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-7207074467531688914</id><published>2011-09-11T08:26:00.000-04:00</published><updated>2011-09-11T08:26:36.678-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 134 sur le mensonge</title><content type='html'>On ne ment jamais autant qu'avant les élections, pendant la guerre et après la chasse.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Otto von Bismarck&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-7207074467531688914?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/7207074467531688914/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=7207074467531688914' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7207074467531688914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7207074467531688914'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/citation-no-134-sur-le-mensonge.html' title='Citation no. 134 sur le mensonge'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-1912163274104014167</id><published>2011-09-07T20:29:00.000-04:00</published><updated>2011-09-07T20:29:06.277-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Sélectionner le 1er enregistrement de chaque groupe en SQL</title><content type='html'>Voici mon casse-tête SQL auquel j'ai eu à faire face hier et dont j'ai trouvé la solution plus tôt aujourd'hui. Pour vous mettre en situation, imaginez un site web où une liste de produits s'affiche en page d'accueil. Bien que chaque produit soit classé dans une catégorie, la requête initiale n'en tenait pas compte et se contentait d'afficher aléatoirement quelques produits du catalogue.&lt;br /&gt;&lt;br /&gt;La demande que j'ai reçu consistait à modifier l'affichage de façon à choisir un produit au hasard dans chaque catégorie.&lt;br /&gt;&lt;br /&gt;Voici une représentation simplifiée de la structure des tables ainsi que des données bidons pour que vous puissez reproduire ce tutoriel :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;CREATE TABLE categories&lt;br /&gt;(&lt;br /&gt;   category_id serial NOT NULL,&lt;br /&gt;   category_name character varying(50) NOT NULL&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;CREATE TABLE products&lt;br /&gt;(&lt;br /&gt;   product_id serial NOT NULL,&lt;br /&gt;   category_id integer NOT NULL,&lt;br /&gt;   product_name character varying(100) NOT NULL,&lt;br /&gt;   price numeric&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;-- populer les tables avec des enregistrements&lt;br /&gt;&lt;br /&gt;INSERT INTO categories (category_name)&lt;br /&gt;VALUES&lt;br /&gt;('Catégorie 1'),&lt;br /&gt;('Catégorie 2'),&lt;br /&gt;('Catégorie 3');&lt;br /&gt;&lt;br /&gt;INSERT INTO products(category_id, product_name, price)&lt;br /&gt;VALUES&lt;br /&gt;   (1, 'Produit 1', 10),&lt;br /&gt;   (1, 'Produit 2', 25),&lt;br /&gt;   (2, 'Produit 3', 5),&lt;br /&gt;   (2, 'Produit 4', 17),&lt;br /&gt;   (3, 'Produit 5', 22),&lt;br /&gt;   (3, 'Produit 6', 11);&lt;/pre&gt;J'ai mis à l'essai quelques modèles de requêtes SQL pour répondre au besoin. La première qui m'est venue en tête consistait à utiliser des sous-requêtes. À partir de la liste des catégories, lancer pour chacune une sous-requête pour obtenir un produit au hasard, avec la fonction random() :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;SELECT c.category_id, c.category_name,&lt;br /&gt;   (SELECT product_name FROM products as p WHERE p.category_id = c.category_id ORDER BY random() LIMIT 1)&lt;br /&gt;FROM categories as c&lt;br /&gt;ORDER BY c.category_name&lt;/pre&gt;C'est bien, mais on n'obtient qu'un nom aléatoire de produit qui correspond à la catégorie et aucun autre champs de l'enregistrement. De plus, il est impossible de lancer une deuxième sous-requête en parallèle puisque les résultats ne feront pas référence au même enregistrement.&lt;br /&gt;&lt;pre name="code" class="sql"&gt;-- mauvais!!!&lt;br /&gt;SELECT c.category_id, c.category_name,&lt;br /&gt;   (SELECT product_name FROM products as p WHERE p.category_id = c.category_id ORDER BY random() LIMIT 1),&lt;br /&gt;   (SELECT product_id FROM products as p WHERE p.category_id = c.category_id ORDER BY random() LIMIT 1)&lt;br /&gt;FROM categories as c&lt;br /&gt;ORDER BY c.category_name&lt;/pre&gt;Une autre possibilité aurait été d'utiliser une requête par catégorie de produits et de les combiner avec des UNION. Sauf qu'il faudrait connaître d'avance le nombre de catégories...&lt;br /&gt;&lt;br /&gt;Essayons à l'inverse en utilisant la table de produits et une jointure sur la table des catégories.&lt;br /&gt;&lt;pre name="code" class="sql"&gt;SELECT c.category_name, p.*&lt;br /&gt;FROM products as p&lt;br /&gt;INNER JOIN categories as c ON c.category_id = p.category_id&lt;br /&gt;ORDER BY c.category_name, random()&lt;/pre&gt;Ici, nous obtenons la liste de tous les produits classés par catégories, dont l'ordre des produits est généré aléatoirement à partir du tri secondaire (toujours avec "random()"). Ici encore, nous n'avons pas réussi à filtrer la liste pour ne conserver qu'un seul produit par catégorie.&lt;br /&gt;&lt;br /&gt;L'astuce : l'instruction OVER PARTITION, valide autant sous Postgres (comme dans mon cas) que dans SQL Server.&lt;br /&gt;&lt;pre name="code" class="sql"&gt;-- solution&lt;br /&gt;SELECT c.category_name, t.*&lt;br /&gt;FROM (&lt;br /&gt;   SELECT *, MAX(random_order) OVER (PARTITION BY category_id)&lt;br /&gt;   FROM (&lt;br /&gt;       SELECT *, random() as random_order&lt;br /&gt;       FROM products&lt;br /&gt;   ) as tmp&lt;br /&gt;) as t&lt;br /&gt;INNER JOIN categories as c ON c.category_id = t.category_id&lt;br /&gt;WHERE MAX = random_order&lt;br /&gt;ORDER BY c.category_id&lt;/pre&gt;Pour comprendre la solution, vous devez d'abord savoir qu'il est possible d'utiliser une sous-requête (ou une table dérivée) qui retourne un résultat plutôt que de spécifier le nom d'une table. Pour commencer l'analyse, jetez un oeil à la sous-requête la plus imbriquée. J'ajoute une valeur aléatoire avec random() (de type double, comprise entre 0 et 1) à chaque enregistrement de la table products que je nomme avec l'alias random_number. Il est ensuite nécessaire d'indiquer le champ utilisé pour le regroupement avec PARTITION. Dans mon cas, je veux que ça se fasse par catégorie. Remarquez qu'il n'y a pas de clause ORDER BY à ma requête puisque je prendrai tout simplement l'enregistrement ayant le numéro aléatoire le plus élevé avec MAX(random_number). La clause MAX = random_order me permettra ensuite de filtrer les résultats pour ne conserver que le premier enregistrement de chaque catégorie.&lt;br /&gt;&lt;br /&gt;Important à noter : pour que ça fonctionne, vous devez obligatoirement donner un alias aux sous-requêtes qui servent de tables (dans mon exemple final : "tmp" et "t"). Autrement, vous obtiendrez une erreur de type SQL state: 42601.&lt;br /&gt;&lt;br /&gt;En espérant que ça vous évitera de chercher trop longtemps comme je l'ai fait. Si vous avez d'autres solutions originales, n'hésitez pas à me les envoyer. Je serais curieux de les comparer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-1912163274104014167?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/1912163274104014167/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=1912163274104014167' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1912163274104014167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1912163274104014167'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/selectionner-le-1er-enregistrement-de.html' title='Sélectionner le 1er enregistrement de chaque groupe en SQL'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-1526788110756391520</id><published>2011-09-05T08:47:00.000-04:00</published><updated>2011-09-05T08:47:10.137-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mathématique'/><title type='text'>La réponse sera toujours 8</title><content type='html'>Petit exercice mathématique :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pensez à un nombre au hasard entre 1 et 100 (vous pouvez en choisir un supérieur et je ne vous en voudrai pas si vous utilisez une calculatrice)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Soustrayez 1 de ce nombre&lt;/li&gt;&lt;li&gt;Multipliez le résultat par 3&lt;/li&gt;&lt;li&gt;Ajoutez 12 au résultat&lt;/li&gt;&lt;li&gt;Divisez la réponse par 3&lt;/li&gt;&lt;li&gt;Ajoutez 5 à la réponse&lt;/li&gt;&lt;li&gt;Soustrayez le nombre que vous aviez choisi à l'étape 1 (en espérant que vous vous en rappelez encore!)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Je devine que la réponse est 8. Vous avez un doute ? Essayez à nouveau.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-1526788110756391520?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/1526788110756391520/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=1526788110756391520' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1526788110756391520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1526788110756391520'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/la-reponse-sera-toujours-8.html' title='La réponse sera toujours 8'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-2968953623906932966</id><published>2011-09-04T14:03:00.001-04:00</published><updated>2011-09-04T14:05:38.403-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>Récupérer l'ID d'un enregistrement inséré sous Postgres</title><content type='html'>En programmation, c'est une bonne stratégie de connaître des alternatives pour écrire du code qui fait le même travail. On se rend compte avec le temps qu'il n'y a pas de mauvaise façon de faire, juste des meilleures.&lt;br /&gt;&lt;br /&gt;Quand j'ai écrit mes premières lignes de code pour des fonctions Postgres et que j'avais à insérer un enregistrement pour récupérer et retourner la valeur de l'identificateur unique (par sa séquence / clé primaire), j'ai pris l'habitude d'y aller en deux étapes : l'insertion d'abord, la récupération ensuite. Le tout étant encapsulé dans une fonction suivant les règles de transaction, ça fonctionnait bien.&lt;br /&gt;&lt;pre name="code" class="sql"&gt;CREATE OR REPLACE FUNCTION insert_something(fname character varying, lname character varying)&lt;br /&gt;RETURNS integer AS&lt;br /&gt;$BODY$&lt;br /&gt;BEGIN&lt;br /&gt;   INSERT INTO artist (firstname, lastname)&lt;br /&gt;   VALUES (fname, lname);&lt;br /&gt;&lt;br /&gt;   RETURN currval('public.artist_id_artist_seq');&lt;br /&gt;END;&lt;br /&gt;$BODY$&lt;br /&gt;LANGUAGE 'plpgsql' VOLATILE;&lt;/pre&gt;Avec ce code, il est impératif de connaître le nom de la séquence pour obtenir la valeur courante de l'insertion qui la précède. Et comme on utilise généralement le &lt;a href="http://code18.blogspot.com/2009/01/type-serial-de-postgresql.html"&gt;type SERIAL&lt;/a&gt; pour faciliter la création d'une clé primaire qui génère du même coup la séquence avec un nom générique, il faudra d'abord trouver ce nom.&lt;br /&gt;&lt;br /&gt;L'énoncé pour obtenir le nom d'une séquence appliquée à une colonne d'une table :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;SELECT pg_get_serial_sequence('artist', 'id_artist')&lt;br /&gt;-- "public.t_artist_id_artist_seq"&lt;br /&gt;&lt;/pre&gt;Et on demande sa valeur par currval :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;SELECT currval('public.artist_id_artist_seq') as id;&lt;br /&gt;&lt;br /&gt;-- ou en l'assignant à une variable pl/pgsql&lt;br /&gt;&lt;br /&gt;id := currval('public.artist_id_artist_seq');&lt;/pre&gt;La requête retournera l'ID généré par l'appel de la fonction :&lt;br /&gt;&lt;pre name="code" class="sql"&gt;SELECT insert_something('Jimi', 'Hendrix') // 4&lt;/pre&gt;Pour faire exactement la même chose, on pourrait réécrire le code en utilisant une particularité de Postgres pour demander à la requête SQL de retourner la valeur d'un champ dans le même énoncé en utilisant le mot clé RETURNING qui l'assignera à une variable déclarée.&lt;br /&gt;&lt;pre name="code" class="sql"&gt;CREATE OR REPLACE FUNCTION insert_something(fname character varying, lname character varying)&lt;br /&gt;   RETURNS integer AS&lt;br /&gt;$BODY$&lt;br /&gt;DECLARE&lt;br /&gt;   id integer; -- déclaration de la valeur de retour&lt;br /&gt;BEGIN&lt;br /&gt;   INSERT INTO t_test (firstname, lastname)&lt;br /&gt;   VALUES (fname, lname)&lt;br /&gt;   RETURNING "id_record" INTO STRICT id;&lt;br /&gt;&lt;br /&gt;   RETURN id;&lt;br /&gt;END;&lt;br /&gt;$BODY$&lt;br /&gt;LANGUAGE 'plpgsql' VOLATILE;&lt;/pre&gt;En fait, vous pouvez retourner n'importe quelle valeur de  l'enregistrement venant d'être créé, que ce soit la valeur de la séquence ou la valeur par défaut définie dans un champ de la table (par exemple une date de création avec comme valeur par défaut "now()"). Cependant, si la valeur à retourner est insérée par un trigger de type AFTER INSERT, sa valeur sera nulle car Postgres fait appel au trigger uniquement après l'insertion (BEFORE INSERT ne présente pas de problème).&lt;br /&gt;&lt;br /&gt;L'énoncé qui utilise RETURNING a l'avantage qu'on n'a pas à connaître le nom de la séquence et que ça fonctionnera quand même si son nom change dans le futur (tant que le nom du champ demandé reste inchangé!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-2968953623906932966?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/2968953623906932966/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=2968953623906932966' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/2968953623906932966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/2968953623906932966'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/recuperer-lid-dun-enregistrement-insere.html' title='Récupérer l&apos;ID d&apos;un enregistrement inséré sous Postgres'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-9079174766868525512</id><published>2011-09-04T09:39:00.000-04:00</published><updated>2011-09-04T09:39:36.829-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 133 sur l'art d'être bien informé</title><content type='html'>Dans toute organisation, il y aura toujours une personne qui sait ce qui se passe; cette personne doit être virée.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- &lt;/span&gt;&lt;span style="font-style: italic;" id="result_box" class="" lang="fr"&gt;&lt;span class="hps"&gt;Loi&lt;/span&gt; &lt;span class="hps"&gt;de Conway&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-9079174766868525512?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/9079174766868525512/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=9079174766868525512' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/9079174766868525512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/9079174766868525512'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/citation-no-133-sur-lart-detre-bien.html' title='Citation no. 133 sur l&apos;art d&apos;être bien informé'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-6393023612479147672</id><published>2011-09-01T22:52:00.001-04:00</published><updated>2011-09-02T07:36:34.315-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><title type='text'>La survie du petit commerce</title><content type='html'>J'ai appris aujourd'hui qu'un disquaire indépendant où j'ai déjà travaillé dans une autre vie allait fermer ses portes d'ici peu. Pincement au coeur. Les disques, ça ne vend plus. C'est même surprenant qu'il ait survécu aussi longtemps.  Maintenant que nous sommes à l'ère numérique, les gens n'accordent plus d'importance à l'objet CD. Ni pour les livres et les DVD. La chaîne de location de films Blockbuster a fermé ses portes au Canada. Les torrents n'ont jamais été aussi populaires. Demandez à un jeune de 12 ans comment il consomme sa musique : achetée en ligne sur iTunes et déposée directement dans son lecteur mp3. Dans le cas du groupe Misteur Valaire, on coupe les intermédiaires avec une stratégie "direct-to-fan" (remarquez, ça a du bon). Il n'y a plus d'objet physique à manipuler. Ni de plaisir à admirer le livret, à s'imprégner de l'univers de l'artiste en lisant les paroles et en regardant les photos si évocatrices du contexte de création (on s'entend, ça vaut pour certains styles musicaux seulement, pas pour les artistes biodégradables ou jetables après usage).&lt;br /&gt;&lt;br /&gt;Comme client, se rendre chez ce disquaire représentait pour moi des heures à discuter avec des passionnés. Ils connaissaient mes goûts et savaient exactement ce qui allait m'intéresser. Du service comme vous en verrez plus jamais. En discutant au téléphone avec un futur ex-employé, je lui ai avoué que ça faisait un bout de temps que je n'y étais pas retourné. Comme tout le monde, j'ai suivi le mouvement et j'ai remplacé mes  habitudes de consommation en achetant sur Internet, surtout en raison des prix. Pour ce qui est des mp3, j'ai regretté mon choix et je cherche à racheter mes albums préférés en copies palpables. Ça se fait lentement et pas à n'importe quel prix. Juste pour ne pas avoir l'impression d'avoir payé le même album en double. D'ailleurs,  eBay c'est une excellente place pour profiter de ceux qui se débarassent de leurs  CD à bas prix après les avoir compressés en mp3.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Chez Indigo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Plus le temps passe, plus je finis par croire que certains types de magasins n'auront plus pignon sur rue. On cherche le meilleur prix, à tout prix. D'où la popularité des Walmart de ce monde. Il n'y a pas si longtemps, je suis allé chez le libraire &lt;a href="http://www.chapters.indigo.ca/"&gt;Chapters/Indigo&lt;/a&gt;. J'avais consulté leur site web avant d'aller à la succursale du centre-ville pour vérifier la disponibilité d'un livre. Il restait une copie en inventaire au prix de 35$. Lorsque j'ai pris le livre sur l'étalage, j'ai vérifié au verso et l'étiquette indiquait 55$. J'ai demandé à la commis s'il s'agissait d'une erreur. Étonnamment non. J'étais prêt à passer à la caisse et contre toute attente, il n'y avait aucun moyen de faire égaler le prix. C'était pourtant la même bannière commerciale mais ils se permettaient d'offrir des prix différents en magasin et sur le web. La jeune fille finit par me recommander d'acheter en ligne pour bénéficier des meilleurs prix. Ce à quoi je répondis : tu te rends compte que tu m'encourages à te faire perdre ton boulot ? Malaise.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ma première guitare&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Un autre exemple m'est venu en tête au milieu de la nuit. Quand j'étais  adolescent, j'ai magasiné ma première guitare (une Fender Stratocaster  "made in Mexico") en gardant en tête que je devais respecter mon budget.  Je me souviens avoir visité deux magasins qui avaient une approche  complètement différente. Au premier, le jeune vendeur semblait plus  préoccupé à m'impressionner par son talent de guitariste que de me  transmettre de l'information pertinente. À l'autre, le vendeur (un  drummer qui s'appelait Bruno) a passé 1h30 à m'expliquer la base, ce qui  est important de regarder, les avantages et inconvénients, etc. Au  final, le package guitare, ampli, étui, câble, accordeur, etc coûtait un  peu plus cher que chez le concurrent. Mais la qualité du service a fait  pencher la balance en sa faveur. Ce magasin s'appelait St-Jean Musique  et était situé sur le boulevard des Laurentides à Laval. Depuis, il  semble avoir fermé ses portes ou avoir changé de nom car une autre  boutique du même genre occupe les locaux. Et le concurrent ? Eh bien il a  pris de l'expansion et a ouvert d'autres succursales au fil des ans.  Comme quoi le meilleur prix l'emporte généralement sur la qualité du  service.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Le dilemme : où acheter ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cette semaine, j'ai magasiné pour un article plutôt dispendieux dans différents magasins de Montréal. Avec les taxes, le prix frôle les 3000$. La différence entre le prix le plus haut et le plus bas est peut-être de 40 ou 50$. Sur le total, c'est peu. Le premier vendeur était d'un magasin réputé mais il essayait de me vendre sous pression. Ceux des deux autres commerces visités ont bien répondu à mes questions. L'un était d'un magasin à grande surface avec un vendeur compétent mais à commission, l'autre un petit commerce indépendant de mon quartier avec des employés passionnés. En effectuant une recherche sur les Internets, j'ai noté que je pouvais commander le même produit en ligne dans un magasin en Ontario. En plus d'obtenir la livraison gratuite, je sauvais un peu plus de 200$ en taxes (on ne paye que la taxe sur les produits et services de 5% plutôt que la taxe combinée de presque 14%).&lt;br /&gt;&lt;br /&gt;En tant que consommateur, j'ai le choix d'aller :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Chez celui qui voulait me vendre sous pression&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Au magasin à grand surface tenu par des actionnaires&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Dans la boutique en ligne d'un commerce situé dans une autre province (on oublie le service après-vente)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Au petit commerce local probablement tenu par un voisin de quartier qui risque tôt ou tard de devoir se battre pour sa survie face aux gros joueurs&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Cette fois-ci, la tentation est grande de faire affaire avec le petit commerce. Après tout, ne devrait-on pas donner son argent à celui qui nous montre du respect, qui est à l'écoute de nos besoins et qui offre le meilleur service tout en ne prenant pas sa clientèle pour acquis ? Juste par principe.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-6393023612479147672?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/6393023612479147672/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=6393023612479147672' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6393023612479147672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6393023612479147672'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/09/la-survie-du-petit-commerce.html' title='La survie du petit commerce'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-3252919240798809642</id><published>2011-08-29T21:05:00.001-04:00</published><updated>2011-08-29T21:07:03.382-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><title type='text'>Le chaud lapin qui voulait une année sabbatique</title><content type='html'>Mon billet d'aujourd'hui s'inspire d'une réflexion qui m'est passée par la tête suite à une discussion concernant les &lt;a href="http://www.cnt.gouv.qc.ca/conges-et-absences/evenements-familiaux/conge-parental/"&gt;congés parentaux au Québec&lt;/a&gt;, plus particulièrement ceux de paternité. Avant d'aller plus loin, sachez que je n'ai aucune intention d'annoncer quelque chose de spécial concernant Mme Code 18 et moi-même. Vous le saurez en temps et lieu, promis :-)&lt;br /&gt;&lt;br /&gt;C'est que je me disais que comme les pères ont droit à un congé de paternité de 5 semaines, il existe certainement au moins un homme assez excentrique pour avoir fait le calcul qu'en mettant enceinte 10,4 femmes, il aurait droit à une année de congé sabbatique! Vous voyez, même moi qui est normal, j'y ai pensé. Toujours faut-il que la procréation se fasse dans l'espace de quelques semaines pour que les périodes de congés puissent se juxtaposer et ainsi éviter les interruptions et le retour temporaire au travail.&lt;br /&gt;&lt;br /&gt;OK, l'idée ne tient pas du génie car j'ai peine à imaginer le prix à payer pour les pensions alimentaires, ce qui serait suffisant pour faire regretter son geste à un père indigne&lt;span class="st"&gt;&lt;/span&gt;. Il serait néanmoins tiré d'embarras s'il peut posséder un harem, que la polygamie est socialement acceptée ou s'il est gourou d'une secte aux moeurs douteuses. Donc hypothétiquement, si ça avait lieu, est-ce que de donner un congé à long terme au père serait perçu comme un accommodement raisonnable par la société ?&lt;br /&gt;&lt;br /&gt;Récemment, j'ai vu la bande-annonce du &lt;a href="http://www.starbuck-lefilm.com/"&gt;film Starbuck&lt;/a&gt; où le personnage découvre qu'il est le géniteur de 533 enfants suite à un don de sperme. Dans ce cas, quelle est la probabilité que les congés soient rétroactifs ? Aucune idée s'il en est question dans le film car comme vous le savez, j'ai une préférence pour le cinéma de répertoire...&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-3252919240798809642?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/3252919240798809642/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=3252919240798809642' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3252919240798809642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3252919240798809642'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/le-chaud-lapin-qui-voulait-une-annee.html' title='Le chaud lapin qui voulait une année sabbatique'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8207443516568313179</id><published>2011-08-28T12:27:00.000-04:00</published><updated>2011-08-28T12:27:26.403-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><title type='text'>La valeur illusoire des médias sociaux</title><content type='html'>Je lisais sur le site Technaute que le &lt;a href="http://technaute.cyberpresse.ca/nouvelles/internet/201108/26/01-4429155-tumblr-vaudrait-800-millions-de-dollars.php"&gt;service de microblogues Tumblr aurait actuellement une valorisation de 800 millions de dollars&lt;/a&gt;.  Pourtant, les revenus de l'entreprise n'étaient que de 120 millions de  dollars en 2010.&lt;br /&gt;&lt;br /&gt;Si Facebook entre en bourse au début de 2012, les experts estiment que la compagnie verrait sa valeur grimper à &lt;a href="http://www.theregister.co.uk/2011/06/14/facebook_ipo/"&gt;100 milliards de dollars&lt;/a&gt;. Les &lt;a href="http://www.bloomberg.com/news/2010-12-16/facebook-sales-said-likely-to-reach-2-billion-this-year-beating-target.html"&gt;revenus de Facebook en 2010&lt;/a&gt; : 2 milliards. Déjà mieux, mais est-ce réaliste ?&lt;br /&gt;&lt;br /&gt;De son côté, &lt;a href="http://mashable.com/2011/07/20/twitter-8-billion/"&gt;Twitter aurait une valeur de 8 milliards de dollars&lt;/a&gt; à la bourse. &lt;a href="http://mashable.com/2011/01/24/twitter-revenue-150-million/"&gt;Revenus estimés de Twitter pour l'année 2011&lt;/a&gt; : 150 millions de dollars.&lt;br /&gt;&lt;br /&gt;On parle de gros sous et les investisseurs, attirés par le profit, se ruent sur les opportunités de profits en créent de la spéculation. Et tout ce qui monte finit par redescendre.&lt;br /&gt;&lt;br /&gt;Vous vous souvenez de l'expérience &lt;a href="http://www.myspace.com/"&gt;MySpace&lt;/a&gt; ? Un bref résumé : News Corp l'acheta pour 580 millions en 2005. En 2007, sa valeur était estimée à 12 milliards de dollars. En juin 2011, le site fût revendu à Specific Media pour la mince somme de 35 millions...&lt;br /&gt;&lt;br /&gt;Lequel sera le prochain à tomber ? La morale de l'histoire : évitez d'investir dans ce secteur à risque. Démarrez plutôt votre propre projet relié aux médias sociaux, faites gonfler sa valeur artificiellement et revendez au plus offrant avant que la bulle techno éclate.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8207443516568313179?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8207443516568313179/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8207443516568313179' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8207443516568313179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8207443516568313179'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/la-valeur-illusoire-des-medias-sociaux.html' title='La valeur illusoire des médias sociaux'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8406975150742475552</id><published>2011-08-28T09:33:00.002-04:00</published><updated>2011-08-28T09:33:28.349-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 132 sur la vie</title><content type='html'>Nous devons nous y habituer : aux plus importantes croisées des chemins de notre vie, il n'y a pas de signalisation.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Ernest Hemingway&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8406975150742475552?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8406975150742475552/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8406975150742475552' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8406975150742475552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8406975150742475552'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/citation-no-132-sur-la-vie.html' title='Citation no. 132 sur la vie'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-292298256443590517</id><published>2011-08-26T16:21:00.000-04:00</published><updated>2011-08-26T16:21:57.678-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><title type='text'>On est jamais mieux servi que par soi-même</title><content type='html'>Le retour à l'école est amorcé pour des milliers d'étudiants à travers la province. Dur retour à la réalité! Leur cheminement sur les bancs d'école sera déterminant pour leur avenir puisqu'ils finiront par être la future force de travail. Malheureusement, pour beaucoup d'entre eux, l'objectif n'est pas d'assimiler des connaissances mais d'obtenir la note de passage pour décrocher leur diplôme. Après tout, une fois le certificat en main, les employeurs ont peu d'outils pour comparer objectivement les compétences des nouveaux diplômés fraîchement sortis de l'école. Heureusement, ce n'est pas une finalité et c'est loin d'être aussi simple!&lt;br /&gt;&lt;br /&gt;Comme certaines matières ne sont pas déterminantes pour la pratique éventuelle d'un métier, il ne faut pas se surprendre si certains y mettent le minimum d'effort. Peu importe le moyen d'obtenir la note, l'important est d'en avoir une qui débloque l'accès à l'étape suivante. C'est pourquoi on rencontre si souvent des étudiants dont le seul souçi est de s'assurer que leur nom figure sur la page de présentation d'un  travail au moment de sa remise. Gageons que si le correcteur poussait l'investigation plus loin, il se rendrait vite compte que certains auteurs n'ont pas la moindre idée de ce que le document contient!&lt;br /&gt;&lt;br /&gt;L'exemple le plus flagrant dont je me souviens remonte à un cours de  philosophie au Cegep où le professeur avait demandé à la classe de  former des équipes de 4 personnes pour réaliser un travail écrit. Dans  notre équipe, mon rôle consistait à fournir les idées et à formuler  l'argumentation. Une fille s'était attribué la tâche de retranscrire le  texte manuscrit à l'ordinateur et de corriger les fautes. Un autre élève  se disait faire l'avocat du diable pour trouver des contre-arguments et  finissait par approuver tel quel tout ce qui sortait de ma bouche. Enfin, le dernier prenait la responsabilité de lire  le texte devant la classe. Je me rappelle que nous avions eu une bonne note mais pour dire vrai, qui la méritait vraiment ?&lt;br /&gt;&lt;br /&gt;Le travail d'équipe comporte ce risque : qu'une personne se ramasse avec  la responsabilité du travail au nom du reste du groupe. Et parce  qu'elle prend son succès personnel à coeur, tous finiront par partager la récompense. Le plus triste, c'est que les mauvaises habitudes d'hier se répercuteront aussi demain en milieu de travail. Plutôt que d'apporter une contribution à parts égales, ces parasites s'avèrent souvent plus nuisibles qu'autre chose (à eux-même ainsi qu'à leur entourage). Hip Hip Hip Hourra! pour la sélection naturelle, ceux qui se sont le mieux adaptés à relever des nouveaux défis finissent par se démarquer des incompétents.&lt;br /&gt;&lt;br /&gt;Au nom de l'esprit d'équipe, jusqu'à quel point faut-il tolérer l'incompétence autour de nous ? Comment peut-on accepter de déléguer du travail à quelqu'un qui le fera moins bien que si on l'avait fait soi-même ? Individuellement, nous sommes tous en mode "survie" et malgré tout le bien qu'on dit de la force d'unité d'une équipe, nous sommes là d'abord pour sauver notre peau mais aussi pour progresser individuellement et se surpasser. Si tout le monde pousse dans la même direction et y met du sien, là oui, nous sommes en présence des conditions gagnantes pour que chacun influence l'autre à s'améliorer. L'apport de chacun est bien sûr différent mais la participation à l'effort collectif est le facteur le plus important.&lt;br /&gt;&lt;br /&gt;Ça c'est en théorie, dans le meilleur des mondes. D'ailleurs, un jour j'irai vivre en Théorie, car en Théorie tout se passe bien. Même si tous mettent l'épaule à la roue dans un but commun, certains pousseront plus fort que d'autres et se démarqueront du lot. Et puisque notre système capitaliste valorise la performance et qu'elle varie en fonction de la personne, la reconnaissance et la récompense seront attribuées aux plus méritants.&lt;br /&gt;&lt;br /&gt;Sachant cela, n'est-il pas plus tentant de privilégier l'individualisme pour son profit personnel ? Ou est-ce plutôt un argument pour mettre de côté son ego et d'encourager les plus forts à partager leur savoir pour aider les plus faibles à niveller vers le haut ? Combien pensent qu'aider l'autre à s'améliorer ou partager une connaissance constitue un risque que l'élève surpasse le maître ?&lt;br /&gt;&lt;br /&gt;Quelle est votre opinion ?&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-292298256443590517?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/292298256443590517/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=292298256443590517' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/292298256443590517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/292298256443590517'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/on-est-jamais-mieux-servi-que-par-soi.html' title='On est jamais mieux servi que par soi-même'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-7856703171511371536</id><published>2011-08-23T22:05:00.002-04:00</published><updated>2011-08-23T22:06:01.433-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><title type='text'>Votre performance au travail ne réflète pas votre salaire</title><content type='html'>Si vous êtes du genre à être performant au travail, vous avez probablement déjà eu l'impression qu'on vous demandait constamment d'en accomplir plus que demandé (et plus qu'aux autres). Pour ce qui vous concerne, l'accumulation d'expérience vous pousse à atteindre l'efficience, c'est-à-dire d'être capable de vous aquitter de vos tâches avec succès sans perdre de temps ni d'énergie. Si vous maîtrisez si bien votre travail au point où ça devient routinier, certaines personnes croiront que parce que vous ne suez pas à grosses gouttes, vous êtes capables d'en fournir plus. Parce qu'une personne aura tendance à rencontrer les objectifs, elle compensera aussi pour ceux qui sont moins fiables. Et du coup, du travail supplémentaire se retrouve sur votre bureau.&lt;br /&gt;&lt;br /&gt;La révolution industrielle nous a appris qu'une machine doit tourner à plein régime pour atteindre une production optimale. Après  tout, le corps humain n'est qu'une machine sophistiquée. Il suffit de la  pousser à bout pour en tirer le maximum. Pourquoi aborder ce sujet ? Parce que j'ai récemment appris le salaire que gagnaient d'autres employés. Je sais, c'est malsain car ça favorise la comparaison. Mais le mal est fait et ça m'a poussé à réfléchir.&lt;br /&gt;&lt;br /&gt;Qu'est-ce qui fait qu'un employé nouvellement arrivé, avec moins d'expérience, qui est maladroit et fait des erreurs coûteuses et qui livre une qualité de travail discutable, gagne un salaire à peine plus bas qu'un employé qui se trouve dans une situation opposée ? Je pense à quelqu'un en particulier. Sur papier, disons que son CV indiquait 5 années d'expérience en programmation. En discutant avec la personne, je découvre que la programmation ne représente qu'une infime partie des tâches qu'elle accomplissait dans le cadre de son emploi précédent. Disons 20%. En réalité, pourrait-on conclure à une expérience réelle d'un an en développement ?&lt;br /&gt;&lt;br /&gt;Ce qui m'amène à me demander comment un employeur a pu lui accorder un salaire similaire à celui d'un employé de 10 ans en poste qui accomplit son travail avec justesse... Est-ce que c'est parce que le candidat a bien su vendre sa salade et négocier ? Ou est-ce parce que le patron ou la personne responsable des ressources humaines lui a simplement offert le salaire moyen de l'industrie selon une charte prédéterminée et qu'après quelques mois en poste, l'évaluation des compétences sera faite selon les projets livrés ? Dans mon cas, quelle est la possibilité que je sois une aubaine sur le marché ?&lt;br /&gt;&lt;br /&gt;Je me souviens à mes débuts au sein de l'entreprise, réaliser un travail X pouvait me demander quelques semaines. Quelques années plus tard, j'étais capable de l'accomplir en la moité du temps. Et aujourd'hui, il me suffit que de quelques jours et la qualité est nettement supérieure. C'est ce que je me dis à chaque fois que je revois le code des plus vieux projets que j'ai réalisé. Pourtant, même en produisant mieux et plus vite, que mes compétences ont progressé exponentiellement, mon salaire lui, ne réflète pas cette situation. Bien sûr, il a augmenté rapidement mais ma performance et mon salaire se sont multipliés selon des facteurs différents.&lt;br /&gt;&lt;br /&gt;Un chargé de projet ou un patron peut exercer une certaine pression pour nous inciter à dépasser nos limites. Avec le temps, ça réussit et le standard auquel ils sont habitués s'élève peu à peu pour atteindre des nouveaux sommets. Comme pour le saut en hauteur, le novice ne saute pas très haut. Quiconque peut passer la barre du mètre avec un effort minimal. Encouragé par le coach et avec de la pratique, on met beaucoup d'efforts à se surpasser et jamais la récompense n'est exponentielle. À un certain point, on ne peut hausser la barre que de quelques centimètres car l'être humain a ses limites. Comme un athlète expérimenté, l'employé peut livrer une performance hors du commun. S'investir autant pour obtenir en retour une récompense (salaire) inversement proportionnelle au temps et aux efforts consacrés.&lt;br /&gt;&lt;br /&gt;Est-ce que ça en vaut le coût quand on pense que le dernier venu n'a pas le même niveau de stress, pas autant de responsabilités, ni d'attentes démesurées envers lui et qu'il peut malgré tout s'assurer d'un salaire décent ? Juste pour vous donner une idée, j'ai commencé ma carrière de programmeur en gagnant un salaire de 13$ de l'heure. Les nouveaux exigent davantage, sans même avoir fait leurs preuves. Et une partie du problème est qu'ils l'obtiennent. Je suis convaincu que si j'avais fait le saut d'une compagnie à l'autre à  quelques reprises, j'aurais pu faire grimper mon salaire  artificiellement. J'en connais plusieurs qui l'ont fait.&lt;br /&gt;&lt;br /&gt;Comment alors évaluer la vraie valeur d'un employé ? Si on me demande si je suis satisfait de mon salaire, je dirais oui pour mon salaire actuel, surtout parce que je l'ai obtenu par le mérite. Est-ce que les avantages qu'on m'offre me sont suffisants ? Oui, mais en prenant le soin de comparer, peut-être que j'obtiendrais plus ailleurs ? Alors de quoi est-ce que je me plains exactement ? Peut-être juste d'avoir le sentiment de gagner un salaire équitable. Comparativement à l'industrie et par rapport à mes collègues.&lt;br /&gt;&lt;br /&gt;Pour le premier, on ne peut s'y fier que pour y percevoir une tendance dans le domaine. Pour le second, plusieurs facteurs peuvent entrer en ligne de compte. Que vaut la fidélité, une ancienneté de 10 ans pour un employeur de nos jours quand la majorité quittent pour d'autres défis après 2 ou 3 ans ? Comment peuvent-ils s'assurer de bâtir sur du solide s'il y a constamment du roulement d'employés qui voient à court terme ? Ce sont les éléments qui font partis du noyau de l'équipe qui assurent, qui réparent, qui redressent les fautes de ceux qui quittent, qui prennent  sur leurs épaules la responsabilité de systèmes complets qu'ils connaissent comme le fond de leur poche et qui forment les nouveaux venus. Il faut encourager ces comportements et les inciter à prendre à coeur les vrais intérêts de l'entreprise. Ceux qui le font sont une rareté et celle-ci vient avec un prix. Et le prix n'est pas celui de se faire prendre pour acquis. Personne n'est irremplaçable à ce qu'on dit, jusqu'à ce qu'on réalise ce qu'on vient de perdre.&lt;br /&gt;&lt;br /&gt;Comme un joueur de hockey qu'on tente d'attirer dans une équipe de concession, il faut bâtir une relation gagnant-gagnant, voir et s'assurer de ses services à long terme. La signature au contrat vient avec les avantages qui s'imposent. Comme nous ne sommes pas dans le sport et que je n'ai pas d'agent qui représente mes intérêts, je peux quand même agir à l'image d'un joueur autonome et comparer pour voir ce que je vaux sur le marché. Parce qu'on veut tous améliorer notre sort, j'irai là où l'offre sera la meilleure.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-7856703171511371536?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/7856703171511371536/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=7856703171511371536' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7856703171511371536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7856703171511371536'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/votre-performance-au-travail-ne-reflete.html' title='Votre performance au travail ne réflète pas votre salaire'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-7037165866639935908</id><published>2011-08-21T11:09:00.000-04:00</published><updated>2011-08-21T11:09:53.567-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><title type='text'>L'histoire de la patate sur la plage</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-YO3Q6s3FaQY/TlEfdELI3-I/AAAAAAAABM4/ROSzShm2kFA/s1600/patate-maillot.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 197px; height: 244px;" src="http://4.bp.blogspot.com/-YO3Q6s3FaQY/TlEfdELI3-I/AAAAAAAABM4/ROSzShm2kFA/s320/patate-maillot.jpg" alt="" id="BLOGGER_PHOTO_ID_5643326392269070306" border="0" /&gt;&lt;/a&gt;C'est l'histoire de deux gars sur une plage. Le premier essaie de courtiser les filles mais il n'arrive pas à se faire remarquer. Il demande à son ami quel est son truc pour y arriver. Il lui conseille tout simplement de mettre une patate dans son maillot de bain et que ça suffira pour attirer l'attention des filles. Après une journée à mettre en pratique sa nouvelle technique, il constate que ça n'a pas du tout fonctionné comme il l'espérait. Il retourne voir son ami pour lui faire part de son échec et son ami lui répond : "Si tu avais mis la patate en avant plutôt qu'en arrière, tu aurais eu plus de succès!".&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-7037165866639935908?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/7037165866639935908/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=7037165866639935908' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7037165866639935908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7037165866639935908'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/lhistoire-de-la-patate-sur-la-plage.html' title='L&apos;histoire de la patate sur la plage'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-YO3Q6s3FaQY/TlEfdELI3-I/AAAAAAAABM4/ROSzShm2kFA/s72-c/patate-maillot.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8003274167994034866</id><published>2011-08-21T10:05:00.000-04:00</published><updated>2011-08-21T10:05:20.435-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 131 sur la parole</title><content type='html'>Tout a déjà été dit, mais pas par tout le monde.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Karl Valentin&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8003274167994034866?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8003274167994034866/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8003274167994034866' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8003274167994034866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8003274167994034866'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/citation-no-131-sur-la-parole.html' title='Citation no. 131 sur la parole'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8282236884343433557</id><published>2011-08-13T11:27:00.001-04:00</published><updated>2011-08-13T11:27:57.690-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curiosités'/><title type='text'>Le hibou qui fait coucou</title><content type='html'>Cette pièce a été vue dans une fenêtre au-dessus d'une galerie d'art / boutique cadeaux (à supposer que ça se donne bien!).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-DRy6WlNnG4M/TkaUs-Ymw8I/AAAAAAAABMw/9WVShu6IsJo/s1600/art-siege-toilette.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-DRy6WlNnG4M/TkaUs-Ymw8I/AAAAAAAABMw/9WVShu6IsJo/s400/art-siege-toilette.jpg" alt="" id="BLOGGER_PHOTO_ID_5640359083709481922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Un siège de toilette, un hibou et une fleur de plastique. Si l'art est une forme d'expression qui consiste à arranger entre eux divers éléments en s'adressant délibérément aux sens, aux émotions et à l'intellect, de quel type d'art s'agit-il ? Qu'est-ce que ça évoque ? Les paris sont ouverts.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8282236884343433557?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8282236884343433557/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8282236884343433557' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8282236884343433557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8282236884343433557'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/le-hibou-qui-fait-coucou.html' title='Le hibou qui fait coucou'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-DRy6WlNnG4M/TkaUs-Ymw8I/AAAAAAAABMw/9WVShu6IsJo/s72-c/art-siege-toilette.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-497232520029702103</id><published>2011-08-10T21:32:00.000-04:00</published><updated>2011-08-10T21:32:28.692-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Histoire'/><category scheme='http://www.blogger.com/atom/ns#' term='Montréal'/><category scheme='http://www.blogger.com/atom/ns#' term='Le coin du geek'/><title type='text'>Machine internationale qui donne le temps</title><content type='html'>Cet après-midi, je suis allé faire un tour du côté du &lt;a href="http://ville.montreal.qc.ca/portal/page?_pageid=2497,3088440&amp;amp;_dad=portal&amp;amp;_schema=PORTAL"&gt;Centre d'histoire  de Montréal&lt;/a&gt; (dans une magnifique ancienne caserne de pompiers) pour voir une exposition sur les &lt;a href="http://ville.montreal.qc.ca/portal/page?_pageid=2497,85237573&amp;amp;_dad=portal&amp;amp;_schema=PORTAL"&gt;quartiers disparus&lt;/a&gt; de la  ville (en fait, ce serait plus exact de dire qu'ils ont été complètement rasés de la carte). On  parle ici du Faubourg à m'lasse, le Red Light et Goose Village. Je vous  laisse le soin d'aller découvrir l'histoire et les anecdotes de ces  quartiers afin qu'ils ne tombent pas dans l'oubli. Qui plus est, vous  aurez droit de visiter 3 expositions pour la modique somme de 6$ par  adulte.&lt;br /&gt;&lt;br /&gt;En fait, ce qui pourrait intéresser les plus geeks d'entre vous pourra être vu dans la section qui  traite du passé de Montréal : un petit détail qui passe généralement inaperçu sur une horloge antique fabriquée par &lt;a href="http://www.ibm.com/"&gt;International  Business Machines&lt;/a&gt; inc, mieux connue sous son acronyme de IBM. Il ne  faut pas oublier qu'avant de se lancer dans les machines informatiques,  l'entreprise centenaire développait déjà d'autres types de mécanismes.&lt;br /&gt;&lt;br /&gt;Voici les photos :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-IkOmkIseEDg/TkMsDXheRYI/AAAAAAAABMg/jyWMpRKyGSc/s1600/horloge-ibm-1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/-IkOmkIseEDg/TkMsDXheRYI/AAAAAAAABMg/jyWMpRKyGSc/s400/horloge-ibm-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5639399594763634050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Plaque métallique à l'intérieur :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-ywrpqsJhh5M/TkMsDgTUy1I/AAAAAAAABMo/iLyTAXuQd5M/s1600/horloge-ibm-2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/-ywrpqsJhh5M/TkMsDgTUy1I/AAAAAAAABMo/iLyTAXuQd5M/s400/horloge-ibm-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5639399597120211794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Selon cette &lt;a href="http://www-03.ibm.com/ibm/history/exhibits/cc/cc_intro.html"&gt;page de référence&lt;/a&gt;, la compagnie IBM aurait fabriqué des horloges du 19ème siècle jusqu'en 1958.&lt;br /&gt;&lt;br /&gt;C'est la deuxième machine d'époque fabriquée par IBM que je vois qui ne soit pas du domaine informatique. La  première étant une vieille caisse enregistreuse à boutons que j'avais remarqué dans un bâtiment du &lt;a href="http://www.villagehistoriqueacadien.com/"&gt;Village Historique Acadien&lt;/a&gt; au Nouveau-Brunswick (si ma mémoire est bonne, vers la fin du parcours, un magasin général). J'ai toujours  regretté de ne pas avoir pris de photo. Cette fois-ci, je n'ai pas raté  ma chance.&lt;br /&gt;&lt;br /&gt;Un petit service... Si quelqu'un va à un ou l'autre de ces endroits (ou si vous y travaillez),  pouvez-vous SVP demander s'ils connaissent les dates de fabrication ?  Merci d'avance !&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-497232520029702103?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/497232520029702103/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=497232520029702103' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/497232520029702103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/497232520029702103'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/machine-internationale-qui-donne-le.html' title='Machine internationale qui donne le temps'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-IkOmkIseEDg/TkMsDXheRYI/AAAAAAAABMg/jyWMpRKyGSc/s72-c/horloge-ibm-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5019547434684710545</id><published>2011-08-09T16:24:00.000-04:00</published><updated>2011-08-09T16:24:37.579-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sécurité'/><title type='text'>La clé du problème</title><content type='html'>Ce matin, j'ai glissé la clé dans la serrure, j'ai tourné et voilà, une pièce interne s'est brisée, bloquant le mécanisme. Trop tard, ma clé était déjà tordue. Vous pouvez maintenant imaginer le reste de ma journée (inventez l'histoire que vous voulez tant qu'il y a une introduction, un élément perturbateur, un héros qui ne connaît pas sa force, une péripétie, une résolution et une conclusion).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-TA2vRDVPiBE/TkGTzYkAudI/AAAAAAAABMY/qUmvP-qY2x0/s1600/cle-tordue.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/-TA2vRDVPiBE/TkGTzYkAudI/AAAAAAAABMY/qUmvP-qY2x0/s400/cle-tordue.jpg" alt="" id="BLOGGER_PHOTO_ID_5638950719420676562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;RIP 2011-2011.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5019547434684710545?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5019547434684710545/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5019547434684710545' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5019547434684710545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5019547434684710545'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/la-cle-du-probleme.html' title='La clé du problème'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-TA2vRDVPiBE/TkGTzYkAudI/AAAAAAAABMY/qUmvP-qY2x0/s72-c/cle-tordue.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-597145138193264475</id><published>2011-08-08T10:15:00.002-04:00</published><updated>2011-08-08T10:19:40.855-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coffre à outils'/><category scheme='http://www.blogger.com/atom/ns#' term='Programmation'/><title type='text'>Quand Firebug ne suffit plus</title><content type='html'>Ça m'est arrivé à quelques reprises d'avoir à travailler avec un composant Flash qui soit paramétré pour faire appel à un script PHP quelque part dans son mécanisme interne (je pense entre autre à &lt;a href="http://www.uploadify.com/"&gt;Uploadify 2.1.4&lt;/a&gt;). Le problème dans ce cas-ci, c'est que lorsqu'une erreur se produit côté serveur, le message explicite renvoyé par PHP est filtré par le composant Flash pour fournir une réponse amicale pour le commun des mortels (du type HTTP error) et ainsi ne rien dévoiler de compromettant. Rien d'utile pour nous aider pendant la phase de développement et de débogage.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-9TeHqzgk9qA/Tj_l5R0IdaI/AAAAAAAABMI/P_S9xizwFNg/s1600/uploadify-error.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 392px; height: 153px;" src="http://3.bp.blogspot.com/-9TeHqzgk9qA/Tj_l5R0IdaI/AAAAAAAABMI/P_S9xizwFNg/s400/uploadify-error.jpg" alt="" id="BLOGGER_PHOTO_ID_5638478030688515490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Comme d'habitude, je me suis tourné vers Firebug mais comme l'appel à la page PHP est délégué à Flash, il n'apparaît nulle part (ni dans les XHR de Firebug même si au fond, Flash utilise une technique identique). C'est une des rares limitations que j'ai rencontré avec le traçage de Firebug jusqu'à maintenant.&lt;br /&gt;&lt;br /&gt;J'ai tenté d'accéder directement au script PHP pour détecter toute erreur de syntaxe, sans rien y trouver. Et comme il est exécuté en dehors du contexte du composant Flash qui l'appelle et qu'on ne voit pas quels paramètres lui sont envoyés, la manoeuvre est biaisée. Il me faut tout voir pour bien comprendre.&lt;br /&gt;&lt;br /&gt;Parfois, le meilleur moyen de suivre à la loupe tout ce qui se passe est de  capturer et d'analyser les requêtes du protocole HTTP à l'aide  d'un Web Debugging Proxy. J'avais déjà essayé &lt;a href="http://www.charlesproxy.com/"&gt;Charles&lt;/a&gt; il y a quelques années, un outil commercial multi-plateformes, mais pour le moment, un équivalent gratuit nommé &lt;a href="http://www.fiddler2.com/fiddler2/"&gt;Fiddler&lt;/a&gt; sera suffisant même s'il est limité à l'environnement Windows.&lt;br /&gt;&lt;br /&gt;Assurez-vous d'abord dans la configuration PHP que le flag &lt;a href="http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors"&gt;display_errors&lt;/a&gt; soit activé. Autrement, vous ne verrez rien (sauf par le log d'erreur de PHP qui se trouve sur le serveur). Et dans le cas d'Uploadify, ne vous fiez pas toujours à la confirmation de transfert car l'interface affiche parfois un succès même s'il rencontre un warning (difficile à détecter puisque seule une entête HTTP 500 indiquera dans l'interface une erreur côté serveur).&lt;br /&gt;&lt;br /&gt;Une fois ceci réglé, on pourra improviser une solution en utilisant la bonne vieille méthode d'impression avec des instructions "echo" ou "print_r" en guise de trace. Dans la portion de gauche, cliquez sur la requête HTTP à décortiquer. Son détail apparaîtra sous différentes vues dans la portion de droite (onglet Inspectors). Si vous avez configuré proprement le report des erreurs PHP et que vous  ne les prenez pas en charge par un handler particulier, vous devriez  aussi les voir apparaître à droite. Les détails de la requête sont en haut, ceux de la réponse du serveur en bas.&lt;br /&gt;&lt;br /&gt;Exemple de trace forcée par le code PHP :&lt;br /&gt;&lt;pre name="code" class="php"&gt;header('HTTP/1.1 500 Internal Server Error');&lt;br /&gt;&lt;br /&gt;echo "Étape 1\n";&lt;br /&gt;echo "Valeur A: 123\n";&lt;br /&gt;echo "Valeur B: 456\n";&lt;br /&gt;echo "Valeurs POST: \n";&lt;br /&gt;print_r($_POST);&lt;br /&gt;&lt;br /&gt;echo "Étape 2\n";&lt;br /&gt;echo "--&amp;gt; trace ici...";&lt;br /&gt;exit;&lt;/pre&gt;Résultat dans Fiddler (cliquez pour agrandir) :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-zJqti6vcYN4/Tj_nnEb59jI/AAAAAAAABMQ/r1SSZr4WKCw/s1600/fiddler-erreur-exemple.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 263px;" src="http://3.bp.blogspot.com/-zJqti6vcYN4/Tj_nnEb59jI/AAAAAAAABMQ/r1SSZr4WKCw/s400/fiddler-erreur-exemple.jpg" alt="" id="BLOGGER_PHOTO_ID_5638479916882851378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;J'attire votre attention sur les deux boutons TextView qui seront utiles pour visualiser plus facilement les détails. Pour l'instant, c'est suffisant pour que vous puissiez pousser plus loin votre investigation en cas de problème.&lt;br /&gt;&lt;br /&gt;N.B. le logiciel est gratuit mais souvenez-vous qu'un programmeur se cache derrière tout ce travail. Tout comme au restaurant lorsque vous recevez un bon service, vous pouvez laisser un pourboire à l'auteur en utilisant PayPal mais plus original encore, vous pouvez lui donner une commission de 7% (sans frais pour vous) sur votre prochain achat chez Amazon en magasinant à partir du lien du menu $Donate qu'il a glissé dans son application. C'est ce que je ferai la prochaine fois.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-597145138193264475?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/597145138193264475/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=597145138193264475' title='3 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/597145138193264475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/597145138193264475'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/quand-firebug-ne-suffit-plus.html' title='Quand Firebug ne suffit plus'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-9TeHqzgk9qA/Tj_l5R0IdaI/AAAAAAAABMI/P_S9xizwFNg/s72-c/uploadify-error.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-3974763896847160096</id><published>2011-08-07T08:51:00.000-04:00</published><updated>2011-08-07T08:51:10.905-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 130 sur l'assurance-emploi</title><content type='html'>Ne vous inquiétez pas si ça ne fonctionne pas correctement. Si tout fonctionnait, vous n'auriez plus de travail.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Mosher's Law of Software Engineering&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-3974763896847160096?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/3974763896847160096/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=3974763896847160096' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3974763896847160096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3974763896847160096'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/citation-no-130-sur-lassurance-emploi.html' title='Citation no. 130 sur l&apos;assurance-emploi'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8297502596747984473</id><published>2011-08-05T08:06:00.001-04:00</published><updated>2011-08-05T08:06:44.972-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><category scheme='http://www.blogger.com/atom/ns#' term='Curiosités'/><title type='text'>Livres absurdes qui ont existé malgré tout</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-A9d4uF7zXQ8/TjvbYk9KjMI/AAAAAAAABMA/Kt09k0CKCrQ/s1600/eco-esperez-pas-vous-debarasser-des-livres.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 340px; height: 268px;" src="http://2.bp.blogspot.com/-A9d4uF7zXQ8/TjvbYk9KjMI/AAAAAAAABMA/Kt09k0CKCrQ/s400/eco-esperez-pas-vous-debarasser-des-livres.jpg" alt="" id="BLOGGER_PHOTO_ID_5637340573867871426" border="0" /&gt;&lt;/a&gt;Plus je lis, plus j'ai le goût d'imiter Umberto Eco en collectionnant les livres absurdes et témoignant de la bêtise humaine. Voici quelques titres suggérés trouvés dans les entretiens de Jean-Claude Carrière et Umberto Eco dans le livre &lt;a href="http://www.amazon.ca/NESP%C3%83%C2%89REZ-PAS-VOUS-D%C3%83%C2%89BARRASSER-LIVRES/dp/2253156175/"&gt;N'espérez pas vous débarasser des livres&lt;/a&gt; (passionnant d'ailleurs pour quiconque aime l'objet livre).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Edmond Andrieu en 1869 publia un livre sur &lt;a href="http://books.google.com/books?id=HhsTSQAACAAJ"&gt;les inconvénients du cure-dent&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Fourmel en 1858  sur la fonction des coups de bâton, allant même jusqu'à fournir une liste d'écrivains et d'artistes célèbres qui avaient été bastonnés, comme Voltaire et Mozart&lt;/li&gt;&lt;li&gt;le docteur Edgar Bérillon, qui en 1915, écrit que les Allemands défèquent en plus grosses quantités que les français. C'est au volume de leurs excréments qu'on sait qu'ils sont passés par là. On parle de &lt;a href="http://fr.wiktionary.org/wiki/polych%C3%A9sie"&gt;polychésie&lt;/a&gt; de la race allemande&lt;/li&gt;&lt;li&gt;Le sieur Chesnier-Duchen, en 1843, a élaboré un système pour traduire le français en hiéroglyphes, qui pourrait ainsi être compris par tous les peuples&lt;/li&gt;&lt;li&gt;Le sieur Chassaignon écrit en 1779 quatre volumes intitulés Cataractes de l'imagination, déluge de la scribomanie, vomissement littéraire, hémorragie encyclopédique, monstre des monstres (on y trouve un éloge de l'éloge et une réflexion sur les racines de réglisse)&lt;/li&gt;&lt;li&gt;Un certain Madrolle qui traite de la théologie des chemins de fer&lt;/li&gt;&lt;li&gt;Félix Passot qui publie en 1829 une &lt;a href="http://books.google.com/books?id=FfUmQwAACAAJ"&gt;Démonstration de l'immobilité de la Terre&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Le travail d'un certain Tardy qui, en 1878, démontre que la Terre tourne sur elle-même en 48 heures&lt;/li&gt;&lt;/ul&gt;Vous avez d'autres suggestions ? Soumettez-les moi !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8297502596747984473?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8297502596747984473/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8297502596747984473' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8297502596747984473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8297502596747984473'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/livres-absurdes-qui-ont-existe-malgre.html' title='Livres absurdes qui ont existé malgré tout'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-A9d4uF7zXQ8/TjvbYk9KjMI/AAAAAAAABMA/Kt09k0CKCrQ/s72-c/eco-esperez-pas-vous-debarasser-des-livres.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-7654329827474912592</id><published>2011-08-03T20:53:00.000-04:00</published><updated>2011-08-03T20:53:55.235-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curiosités'/><title type='text'>Comment ne pas gagner à la loterie</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-3v8GKoRqcvY/TjnGEs01NAI/AAAAAAAABLY/9IsWDilrVAY/s1600/lotto-6-49.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 206px; height: 213px;" src="http://3.bp.blogspot.com/-3v8GKoRqcvY/TjnGEs01NAI/AAAAAAAABLY/9IsWDilrVAY/s400/lotto-6-49.jpg" alt="" id="BLOGGER_PHOTO_ID_5636754192685413378" border="0" /&gt;&lt;/a&gt;Pour être certain de ne pas gagner à la loterie , vous avez deux choix : ne jamais acheter de billets ou utiliser la stratégie de mon grand-père.&lt;br /&gt;&lt;br /&gt;Quand il choisissait ses numéros à la lotto 6/49 (dont le principe consiste à choisir 6 numéros compris entre 1 et 49), il effectuait constamment sa sélection en utilisant les jours des dates de naissance de certains membres de sa famille. Malgré la superstition attachée à ses numéros chanceux, il ne réalisait pas qu'il réduisait considérablement ses chances de gagner si le boulier sortait par malheur des nombres au-delà de 31. Mais après tout, c'est ça le risque du hasard.&lt;br /&gt;&lt;br /&gt;Souvent, une fois le tirage effectué, il prenait plaisir à comparer ses choix avec la combinaison gagnante et réussissait à établir des coïncidences qui auraient pu le mener au gros lot (à la retraite, on se divertit comme on peut!). Par exemple, une différence de quelques chiffres en plus ou en moins sur certains numéros ou une suite de nombre croissant décalée par rapport à celle du tirage.&lt;br /&gt;&lt;br /&gt;Je me suis toujours demandé ce qui serait arrivé s'il avait obtenu la combinaison de 5 sur 6 et que le nombre manquant pour remporter le gros lot correspondait à la date de fête d'un/une ex-conjoint(e). J'imagine qu'en cherchant une explication, on doit finir par en vouloir un peu à la personne qui avait laissé son ex né(e) la "bonne" journée...&lt;br /&gt;&lt;br /&gt;Contrairement à &lt;a href="http://www.boucar-diouf.com/"&gt;Boucar Diouf&lt;/a&gt; (l'humoriste dont la marque de commerce est de parler de son grand-père), je n'ai aucune inspiration pour vous sortir une parole de sagesse ou une morale à cette histoire. Tant pis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-7654329827474912592?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/7654329827474912592/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=7654329827474912592' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7654329827474912592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7654329827474912592'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/comment-ne-pas-gagner-la-loterie.html' title='Comment ne pas gagner à la loterie'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-3v8GKoRqcvY/TjnGEs01NAI/AAAAAAAABLY/9IsWDilrVAY/s72-c/lotto-6-49.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-3997508500757191876</id><published>2011-08-02T21:31:00.000-04:00</published><updated>2011-08-02T21:31:23.175-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intégration'/><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><title type='text'>Retirer un site du Wayback Machine</title><content type='html'>Si vous êtes un artiste du domaine musical et que vos droits d'auteur sont protégés, ils vous en déplaira (à vous et certainement à votre producteur) que votre musique soit téléchargée illégalement. Même si c'est par des gens qui apprécient le fruit de votre travail. Vous serez d'autant plus choqué si vous apprenez que vos oeuvres sont copiées et redistribuées sans votre consentement.&lt;br /&gt;&lt;br /&gt;Dans un défunt projet web ayant rendu l'âme il y a près de 10 ans, j'opérais un site web d'information où j'étais le contributeur principal mais je faisais appel de temps à autre à quelques auteurs pour rédiger des articles originaux. Durant les 5 ans qu'a duré le projet, j'ai reçu beaucoup de commentaires positifs pour ces textes. L'enthousiasme des idées qu'on avançait inspira même le sujet d'un livre qui fût mis en vente alors que nous diffusions la même information gratuitement. Dans d'autres cas, du contenu fût plagié par des sites similaires, dont un plutôt important. J'ai même vu un individu recopier des textes et les republier sur son site en prétendant qu'il en était l'auteur! Comme si une simple manipulation de copier-coller suffisait pour créer du contenu nouveau. Avec du recul, je me sens flatté parce que ça prouvait que le contenu qu'on produisait était de qualité. Remarquez, ce n'est pas vraiment mieux en 2011 puisque la tendance actuelle dans la récupération de contenu est souvent de traduire le texte original d'un site réputé, d'en emprunter même les images et de créditer discrètement la source au bas du billet. Visiblement, ramasser les miettes peut mener à un certain succès.&lt;br /&gt;&lt;br /&gt;Bref, ce n'est pas là que je veux en venir. C'est que ce projet dont j'ai parlé avait été copié intégralement à plusieurs reprises au fil du temps par le site d'archives &lt;a href="http://www.archive.org/web/web.php"&gt;Internet Wayback Machine&lt;/a&gt;. Que ce soit la copie de musique ou de textes, jamais on m'a demandé d'autorisation et j'étais bien décidé à en faire retirer le contenu, par principe.&lt;br /&gt;&lt;br /&gt;La façon de fonctionner de ce site est simple : ils copient tout ce qu'ils trouvent et si le propriétaire du contenu n'est pas d'accord, il peut demander à ce que le domaine soit exclu de la consultation. Et la procédure s'est avérée difficile puisque le site était hors-ligne et que le domaine n'était plus renouvellé depuis des années. D'abord, j'ai envoyé deux courriels à leur service de retrait, sans obtenir de réponse pendant des semaines. À la troisième communication, j'ai fait valoir mes droits de copyrights et on m'a finalement répondu.&lt;br /&gt;&lt;br /&gt;Pour que le site soit retiré, je devais répondre à un des critères suivants :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;envoyer une requête à partir du courriel principal listé sur le site&lt;/li&gt;&lt;li&gt;leur indiquer où mon information personnelle se trouvait (nom, information de contact, images de moi). Une vérification d'identité pourrait ensuite être faite en envoyant une photo numérisée provenant d'une carte d'identité valide (ils précisent que l'information sensible peut être cachée comme la date de naissance, adresse, téléphone)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;leur transférer une communication entre la compagnie d'hébergement référencé par le nom de domaine. Ici, j'avais encore en main quelque document d'origine&lt;/li&gt;&lt;li&gt;envoyer un courriel de la personne ayant enregistré le domaine (qui doit être identique à celui dans le &lt;a href="http://www.whois.net/"&gt;WhoIs Lookup&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;mettre en ligne une requête à même le site (le lien doit leur être envoyé)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;J'ai mis quelques jours à retrouver et rassembler les documents et j'ai fini par leur envoyer une copie numérisée de l'enregistrement du nom de domaine au CIRA, le contrat de l'hébergeur, les enregistrements de l'entreprise au &lt;a href="http://www.registreentreprises.gouv.qc.ca/"&gt;Régistraire des entreprises du Québec&lt;/a&gt; (REQ, originalement IGIF) et un document à mon nom prouvant les copyrights. J'ai finalement eu gain de cause. Autrement, si le site avait encore été actif, j'aurais simplement suivi ces instructions pour l'&lt;a href="http://www.archive.org/about/exclude.php"&gt;exclure automatiquement par robots.txt&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-L9JaPixa5Qg/TjiZPo2h8DI/AAAAAAAABLQ/mSGzY7mh7uE/s1600/wayback-machine.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 68px;" src="http://2.bp.blogspot.com/-L9JaPixa5Qg/TjiZPo2h8DI/AAAAAAAABLQ/mSGzY7mh7uE/s400/wayback-machine.jpg" alt="" id="BLOGGER_PHOTO_ID_5636423427597398066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pourtant, je ne suis pas contre le libre accès à l'information, au contraire! Mais à l'ère d'Internet, ça devient de plus en plus difficile de valider les sources et d'obtenir le crédit pour le travail accompli. Aussi bien que ça se retrouve dans mon portfolio où je peux prendre le soin de pointer vers les éléments les plus pertinents.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-3997508500757191876?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/3997508500757191876/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=3997508500757191876' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3997508500757191876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3997508500757191876'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/08/retirer-un-site-du-wayback-machine.html' title='Retirer un site du Wayback Machine'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-L9JaPixa5Qg/TjiZPo2h8DI/AAAAAAAABLQ/mSGzY7mh7uE/s72-c/wayback-machine.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-3139882478571012001</id><published>2011-07-31T13:35:00.002-04:00</published><updated>2011-07-31T13:36:12.823-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mathématique'/><title type='text'>Soustraction sans emprunt par le complément de 9</title><content type='html'>Tout comme en informatique, un problème mathématique est souvent plus simple à solutionner lorsqu'on le fragmente en étapes plus simples. Dans une soustraction, nous avons tous appris à la petite école qu'on pouvait placer les nombres un par dessus l'autre et effectuer la soustraction des chiffres par colonnes en commençant par le nombre situé à droite :&lt;br /&gt;&lt;pre&gt; 29&lt;br /&gt;-12&lt;br /&gt;---&lt;br /&gt; 17&lt;/pre&gt;Dans une colonne, si le chiffre supérieur est moins élevé que celui à soustraire, on utilise la méthode de l'emprunt au chiffre immédiatement placé à sa gauche pour lui ajouter une dizaine.&lt;br /&gt;&lt;pre&gt; 32&lt;br /&gt;-19&lt;br /&gt;---&lt;br /&gt; 13&lt;/pre&gt;Où on obtient 12 (une dizaine empruntée au 3) - 9 = 3 suivi de 2 (3 - l'emprunt de 1) - 1 = 1 pour un résultat final de 13.&lt;br /&gt;&lt;br /&gt;Mais comment peut-on effectuer une soustraction sans utiliser la méthode de l'emprunt ?&lt;br /&gt;La réponse : à l'aide des compléments de 9.&lt;br /&gt;&lt;br /&gt;Dans l'équation 522 - 149, nous ferons appel à un complément de 999 car ce sont des nombres à 3 chiffres. Autrement, un nombre de 4 chiffres aurait nécessité 9999, etc.&lt;br /&gt;&lt;br /&gt;Étape 1 : soustraire le complément par le 2ème nombre (remarquez, aucun emprunt n'est nécessaire)&lt;br /&gt;&lt;pre&gt; 999&lt;br /&gt;-149&lt;br /&gt;----&lt;br /&gt; 850&lt;br /&gt;&lt;/pre&gt;Étape 2 : additionner le 1er nombre de l'équation au résultat&lt;br /&gt;&lt;pre&gt; 522&lt;br /&gt;+850&lt;br /&gt;----&lt;br /&gt;1372&lt;br /&gt;&lt;/pre&gt;Étape 3 : ajouter 1 et soustraire 1000&lt;br /&gt;&lt;pre&gt; 1372&lt;br /&gt;+   1&lt;br /&gt;-1000&lt;br /&gt;-----&lt;br /&gt;  373&lt;br /&gt;&lt;/pre&gt; Pourquoi ça fonctionne ?&lt;br /&gt;&lt;br /&gt;L'équation 522 - 149 + 1000 - 1000 est équivalente à 522 - 149 + 999 + 1 - 1000. Les nombres peuvent être regroupés ainsi 522 + (999 - 149) + 1 - 1000, ce qui nous donne le bon résultat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-3139882478571012001?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/3139882478571012001/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=3139882478571012001' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3139882478571012001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3139882478571012001'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/soustraction-sans-emprunt-par-le.html' title='Soustraction sans emprunt par le complément de 9'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-6968690563536205572</id><published>2011-07-31T09:59:00.000-04:00</published><updated>2011-07-31T09:59:35.356-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 129 sur le gel</title><content type='html'>Marcher sur l'eau ainsi que le développement de logiciels à partir d'un cahier des charges sont faciles si les deux sont gelés.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Edward V Berard&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-6968690563536205572?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/6968690563536205572/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=6968690563536205572' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6968690563536205572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6968690563536205572'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/citation-no-129-sur-le-gel.html' title='Citation no. 129 sur le gel'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8502412814529840167</id><published>2011-07-29T14:56:00.000-04:00</published><updated>2011-07-29T14:56:00.311-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curiosités'/><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>Les archéologues retrouveront un jour la momie de Céline Dion</title><content type='html'>D'abord et avant tout, promis juré, ce sera la seule et dernière fois que je vous parlerai de Céline Dion. C'est que je suis tombé sur un album d'un (défunt) groupe underground montréalais nommé Ghoulunatics qui présente une caractéristique intéressante et méconnue du public (de part et d'autre puisque leurs bases de fans respectives se trouvent dans des styles musicaux diamétralement opposés).&lt;br /&gt;&lt;br /&gt;Alors que Céline sortait "Falling Into You" en 1996, les ghoules du Québec écrivaient la musique pour leur album à venir intitulé "Carving Into You" qui allait être immortalisé sur disque deux ans plus tard. Comme le titre était similaire, ils ont eu l'idée de reprendre la pochette  d'album et de demander à un peintre de transformer la diva en momie.&lt;br /&gt;&lt;br /&gt;Voici le résultat pour comparer :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-plp7EdEEDNs/TjL-k_UxfbI/AAAAAAAABLI/AXua-eQoBfY/s1600/ghoulunatics-celine-dion.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 197px;" src="http://1.bp.blogspot.com/-plp7EdEEDNs/TjL-k_UxfbI/AAAAAAAABLI/AXua-eQoBfY/s400/ghoulunatics-celine-dion.jpg" alt="" id="BLOGGER_PHOTO_ID_5634845995221220786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On aime ? Oui !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8502412814529840167?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8502412814529840167/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8502412814529840167' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8502412814529840167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8502412814529840167'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/les-archeologues-retrouveront-un-jour.html' title='Les archéologues retrouveront un jour la momie de Céline Dion'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-plp7EdEEDNs/TjL-k_UxfbI/AAAAAAAABLI/AXua-eQoBfY/s72-c/ghoulunatics-celine-dion.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-7555053349412275498</id><published>2011-07-27T19:02:00.004-04:00</published><updated>2011-07-30T11:34:11.262-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Saviez-vous que'/><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>La gaffe à 150000$</title><content type='html'>Quand tu achètes un violon datant de 1772 au prix d'un million de dollars et fabriqué par Giovanni Guadagnini (un luthier aussi réputé et prestigieux qu'Antonio Stradivari), la pire chose qui pourrait arriver serait de le briser.&lt;br /&gt;&lt;br /&gt;C'est pourtant la gaffe qu'a fait en décembre 2007 le jeune virtuose &lt;a href="http://www.david-garrett.com/"&gt;David Garrett&lt;/a&gt; dans des circonstances des plus étranges. Alors qu'il descendait les marches d'un escalier après un concert au Barbican Centre de Londres, il a trébuché et est tombé directement sur l'étui, ce qui brisa l'instrument en morceaux (certains attribuent la faute à une pelure de banane, d'autres à une descente du coude). La restauration était estimée à 150 000$.&lt;br /&gt;&lt;br /&gt;Pendant le temps de la réparation, un Stradivarius d'une valeur de 5 millions lui fût prêté (le San Lorenzo de 1718). Il faut croire que le propriétaire lui fait confiance. Fait notable, la québécoise Angèle Dubeau possède le Stradivarius Des Rosiers construit en 1733. Jamais l'idée ne lui est passée par la tête de mettre son postérieur dessus.&lt;br /&gt;&lt;br /&gt;Malgré sa maladresse, vous pouvez constater son talent avec cette performance solo de Master of Puppets de Metallica (disponible sur l'album &lt;a href="http://www.amazon.ca/Rock-Symphonies-David-Garrett/dp/B003O86MY8"&gt;Rock Symphonies&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/6kBvHnCz2FU" allowfullscreen="" frameborder="0" height="314" width="500"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-7555053349412275498?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/7555053349412275498/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=7555053349412275498' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7555053349412275498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7555053349412275498'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/la-gaffe-150000.html' title='La gaffe à 150000$'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/6kBvHnCz2FU/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-2527149608112500635</id><published>2011-07-25T18:32:00.000-04:00</published><updated>2011-07-25T18:32:41.391-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curiosités'/><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><title type='text'>La mort d'Angry Bird</title><content type='html'>Un oiseau du jeu &lt;a href="http://www.rovio.com/index.php?page=angry-birds"&gt;Angry Birds&lt;/a&gt; a trouvé la mort dans l'exercice de ses fonctions ce dimanche, 24 juillet 2011, alors qu'il venait d'être projeté par un lance-pierre contre une forteresse ennemie tenue par des cochons.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-MtVU3llWW7M/Ti3tbha8ClI/AAAAAAAABLA/c2-XfVtRbxM/s1600/angry-bird-do-not-cross.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-MtVU3llWW7M/Ti3tbha8ClI/AAAAAAAABLA/c2-XfVtRbxM/s400/angry-bird-do-not-cross.jpg" alt="" id="BLOGGER_PHOTO_ID_5633419765993966162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cet oiseau noir, dont les pouvoirs sont réputés pour être dévastateurs, aurait percuté de plein fouet le mur de brique avant d'avoir le temps d'exploser. Selon des témoins présents sur la scène du crime, aucun point bonus n'a été accordé pour cette manoeuvre.&lt;br /&gt;&lt;br /&gt;L'enquête est en cours et la police demande l'aide de public pour tout indice menant à l'arrestation d'un suspect.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-2527149608112500635?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/2527149608112500635/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=2527149608112500635' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/2527149608112500635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/2527149608112500635'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/la-mort-dangry-bird.html' title='La mort d&apos;Angry Bird'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-MtVU3llWW7M/Ti3tbha8ClI/AAAAAAAABLA/c2-XfVtRbxM/s72-c/angry-bird-do-not-cross.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-7324070617357095400</id><published>2011-07-23T10:24:00.000-04:00</published><updated>2011-07-23T10:24:46.730-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Club Vidéo'/><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><title type='text'>The Walking Dead, DVD et papier</title><content type='html'>Il y a quelques mois, j'ai découvert sur DVD la première saison de la série &lt;a href="http://www.amctv.com/shows/the-walking-dead"&gt;The Walking Dead&lt;/a&gt;, une histoire de zombies inspirée des comic books à laquelle je n'aurais pas porté attention si ce n'eut été de l'excellente qualité de la production et du suspense de l'histoire. Et voilà, je suis maintenant accro, moi qui n'a jamais été amateur du genre.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-9Vfjj3d03VM/TirIvDaCTOI/AAAAAAAABKg/ozVBSsbTnoc/s1600/walking-dead-atlanta.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://3.bp.blogspot.com/-9Vfjj3d03VM/TirIvDaCTOI/AAAAAAAABKg/ozVBSsbTnoc/s400/walking-dead-atlanta.jpg" alt="" id="BLOGGER_PHOTO_ID_5632534994674142434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;L'histoire débute alors que le personnage principal, le policier Rick Grimes, se réveille d'un coma à l'hôpital. Impression de déjà vu dans &lt;a href="http://www.imdb.com/title/tt0289043/"&gt;28 Days Later&lt;/a&gt;  (qu'on se souviendra pour y retrouver dès l'intro une excellente  pièce de l'album Yanqui du groupe post-rock montréalais &lt;a href="http://en.wikipedia.org/wiki/Godspeed_You%21_Black_Emperor"&gt;Godspeed You! Black Emperor&lt;/a&gt;). Sauf que l'action se déroule à Atlanta plutôt qu'en  Angleterre et heureusement, la coincidence s'arrête là (28 Days Later est sorti au cinéma en 2002 alors que le premier numéro de The Walking Dead est paru en octobre 2003. Il ne doit pas exister 1001 façons de mettre en situation une situation post-apocalyptique).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-cG1PusfSiYU/TirKMV8C_VI/AAAAAAAABKo/iIdbRzI5-o0/s1600/dont-open-dead-inside.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://4.bp.blogspot.com/-cG1PusfSiYU/TirKMV8C_VI/AAAAAAAABKo/iIdbRzI5-o0/s400/dont-open-dead-inside.jpg" alt="" id="BLOGGER_PHOTO_ID_5632536597376466258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Évidemment, on se retrouve en minorité du côté des survivants qui tentent tant bien que mal de passer à travers l'épreuve en attendant le sauvetage promis de l'armée qui recommanda aux gens de se réfugier dans les villes lorsque l'épidémie prenait de l'ampleur. Grave erreur. Depuis, les communications ont été coupées, la recherche de nourriture et fuir les hordes de zombies sont devenues les activités du quotidien des rares humains qui se sont rassemblés pour mieux se défendre. À tout moment, on sent la tension et la détresse psychologique des personnages, ce qui n'est pas sans faire de conflits entre eux...&lt;br /&gt;&lt;br /&gt;Malheureusement, le pilote pour la saison 1 ne compte que 6 épisodes donc trop peu à se mettre sous la dent. Comme ça m'est arrivé pour The Lord of the Rings, je n'avais jamais lu la trilogie et un ami m'avait fait découvrir le 1er volet en DVD. Le second étant annoncé pour l'année suivante, j'ai fini par dévorer les livres tellement j'étais impatient de connaître la suite. J'ai fait exactement la même chose avec The Walking Dead. Au début, j'ai déniché les premiers ebooks au format CBR (Comic Book Reader) mais comme j'avais trop de rattrapage à faire, j'ai plutôt opté pour me procurer la brique de 1000 pages &lt;a href="http://www.amazon.ca/Walking-Dead-Compendium-1/dp/1607060760/"&gt;The Walking Dead Compendium&lt;/a&gt; qui regroupe les numéros 1 à  48  à petit prix (40$). Ça m'a tenu occupé pendant quelques semaines et j'ai déjà hâte à la sortie du Compendium 2 qui, par déduction, risque de paraître après la sortie du no.96 (au moment d'écrire ces lignes, le no.87 vient tout juste d'être publié).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-C7HZO_gPvTc/TirGku5XB5I/AAAAAAAABKY/hgxCiYPkcno/s1600/walking-dead-compendium.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-C7HZO_gPvTc/TirGku5XB5I/AAAAAAAABKY/hgxCiYPkcno/s400/walking-dead-compendium.jpg" alt="" id="BLOGGER_PHOTO_ID_5632532618346432402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bien que la série télé ait été saluée par la critique, que les maquillages soient surréalistes et qu'on embarque à coup sûr dans l'intrigue, le scénario semble vouloir prendre une tangente différente par rapport au script d'origine. Reste que c'est intéressant de voir comme ça a été adapté pour le petit écran. Par exemple, le personnage de Shane meurt tôt dans les livres alors que le réalisateur de la série semble vouloir lui donner un rôle différent ce qui prolonge son espérance de vie (du moins, il n'était pas encore mort à la fin de la 1ère saison. Et quand je dis mort, je ne fais pas référence aux morts-vivants). On note aussi des petits détails sur la chronologie des évéments et sur la façon dont Rick et Glenn se rencontrent dans la ville (ici, c'est supérieur dans la version télévisuelle).&lt;br /&gt;&lt;br /&gt;De même, toute la portion du sniper sur le toit du building qui finit par se faire menotter est absent du comic book. Quant à la finale de la 1ère saison, elle a été  créée de toutes pièces, ce qui m'a déçu car ça s'écartait trop du récit  original et le téléspectateur n'avait pas besoin de se faire prendre par la main pour connaître certains mystères scientifiques qui expliquent en partie la nature des événements. Ça enlève du charme au chaos qui règne! Par contre, l'ambiance est à la hauteur et nous avons constamment le goût de poursuivre à l'épisode suivant (je ressentais le même effet lorsque je lisais les comics). Même que pour certaines scènes, c'est tellement fidèle aux illustrations  des comics que certains plans de caméra sont pratiquement identiques.  Les comics demeureront la référence pour les fans, malgré qu'ils sont en noir et blanc, mais ils apprécieront à coup sûr le réalisme de la série télé.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-45rxu16FP3Y/TirLQE-7mwI/AAAAAAAABKw/evzP80HsNF0/s1600/walking-dead-bicycle-woman.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 225px;" src="http://4.bp.blogspot.com/-45rxu16FP3Y/TirLQE-7mwI/AAAAAAAABKw/evzP80HsNF0/s400/walking-dead-bicycle-woman.jpg" alt="" id="BLOGGER_PHOTO_ID_5632537761056267010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Si vous avez aimé, réjouissez vous, il existe déjà assez de matériel pour faire au moins 7 ou 8 saisons. D'ailleurs, comme le succès de la série a dépassé les attentes, une deuxième saison est en préparation et débutera le 16 octobre 2011 sur la chaîne AMC. Si au moins Vidéotron offrait l'abonnement au poste...&lt;br /&gt;&lt;br /&gt;En attendant, jetez un oeil à la bande-annonce de la saison 2 :&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/ipuXgEQarPI" allowfullscreen="" frameborder="0" height="314" width="504"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Et pour en savoir plus sur l'univers de la série, je vous recommande de visiter &lt;a href="http://walkingdead.wikia.com/wiki/The_Walking_Dead_Wiki"&gt;The Walking Dead Wiki&lt;/a&gt; qui comprend une section dédiée à la série papier utile pour connaître les dates de sorties de votre future série préférée.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-7324070617357095400?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/7324070617357095400/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=7324070617357095400' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7324070617357095400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7324070617357095400'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/walking-dead-dvd-et-papier.html' title='The Walking Dead, DVD et papier'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-9Vfjj3d03VM/TirIvDaCTOI/AAAAAAAABKg/ozVBSsbTnoc/s72-c/walking-dead-atlanta.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-2349024635083044593</id><published>2011-07-20T19:25:00.000-04:00</published><updated>2011-07-20T19:25:02.857-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curiosités'/><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><title type='text'>Petit délire sur le plus vieux métier du monde</title><content type='html'>&lt;span style="font-weight: bold;"&gt;En guise d'introduction, la partie ennuyante :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cette réflexion m'est venue suite à une discussion avec un chargé de projet sur la façon d'appliquer les taxes sur des produits en fonction de l'endroit où le marchand se trouve et où le bien est consommé. Suite à quelques comparaisons, nous avons déduit qu'un achat par un Québécois sur le site web d'un commerçant ayant pignon sur rue en Ontario devrait normalement calculer que la &lt;a href="http://www.cra-arc.gc.ca/tpstvh/"&gt;taxe sur les produits et services (TPS)&lt;/a&gt;. J'ai précisé ensuite que la taxe à appliquer dépendait aussi du type de bien. Par exemple, les fruits et légumes ne sont pas taxables alors qu'on ne paye qu'une des deux taxes à l'achat d'un livre et que vous payerez la totale si vous vous procurez un ordinateur ou une voiture. En se questionnant sur les types de biens taxables, nous avons commencé à déconner en extrapolant un tout petit peu (et croyez-moi, quand on s'y met, ça a tendance à déraper).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Et là où le délire commence :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Prenons par exemple une fille de joie : ça entre dans la catégorie taxable ou non ? Aucune idée que je lui réponds! De toute façon, je suppose qu'elle ne doit pas émettre de facture. Donc le client paye en dessous de la table et le gouvernement ne perçoit pas de taxes, ce qui constitue une forme de fraude fiscale. Et même si elle était conforme à la loi, à la fin de l'année, qu'est-ce qu'elle écrirait dans sa déclaration de revenus ? Aux yeux de la loi, nous sommes tous égaux et nous avons l'obligation de produire notre rapport d'impôt. Est-ce considéré comme être travailleur autonome ? Est-ce qu'elle pourrait conserver certains reçus qui seraient déductibles pour l'exercice de sa fonction ? Ma foi, nous sommes totalement ignorants de ce domaine d'activités. Tellement qu'on se demandait s'il existait aussi le principe des cartes de fidélité qui sont poinçonnées dans le but d'obtenir une gratuité après quelques visites.&lt;br /&gt;&lt;br /&gt;On en rit mais loin de moi l'idée de juger leur métier car ça ne doit pas être facile et fort est à parier que ce n'était pas leur premier choix de carrière. D'ailleurs, ce n'est pas le genre de métier que l'orienteur de l'école va te conseiller suite à un examen d'aptitudes. Certains organismes prennent la &lt;a href="http://www.chezstella.org/"&gt;défense des travailleuses du sexe&lt;/a&gt; afin qu'elles puissent vivre et travailler en sécurité et avec dignité. S'affilieront-elles un jour à un syndicat ?&lt;br /&gt;&lt;br /&gt;Ultimement, si leur gagne-pain venait à être légalisé, nous pourrions imaginer quel genre de &lt;a href="http://code18.blogspot.com/2010/08/freakonomics-curiosites-economiques.html"&gt;curiosité économique&lt;/a&gt; ce serait. Auraient-t-elles droit à des crédits d'impôt ? Des subventions à la recherche et au développement ? Chose certaine, comme toutes les entreprises, elles percevraient des taxes à remettre au  gouvernement. Mais celui-ci, ayant déjà un monopole lucratif sur les loteries (Loto-Québec) et l'alcool (Société des Alcools du Québec - SAQ), pourrait se montrer opportuniste à contrôler cette facette cachée du bonheur social et à maintenir le tout dans des moeurs acceptables. On parle de développement économique, capitaux étrangers et création d'emplois. On jase...&lt;br /&gt;&lt;br /&gt;Toutes les semaines, la population serait tenue au courant par l'entremise d'un circulaire glissé en douce dans le Public-Sac. Au moment de payer, les clients pourraient bénéficier de points du programme Air Miles. Un check-in sur &lt;a href="https://foursquare.com/"&gt;Foursquare&lt;/a&gt; ? Eh oui, c'est toi le maire et tu viens de recevoir un badge supplémentaire! Pour pousser le délire un peu plus loin : de l'achat groupé à l'aide de &lt;a href="http://www.groupon.com/"&gt;Groupon&lt;/a&gt; ? Les lois économiques sont les mêmes si on sait faire abstraction de la nature du bien consommé. Et pour répondre à la question, oui ce serait taxable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-2349024635083044593?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/2349024635083044593/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=2349024635083044593' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/2349024635083044593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/2349024635083044593'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/petit-delire-sur-le-plus-vieux-metier.html' title='Petit délire sur le plus vieux métier du monde'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-3515991022294648944</id><published>2011-07-19T13:21:00.001-04:00</published><updated>2011-07-19T13:35:00.016-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curiosités'/><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><category scheme='http://www.blogger.com/atom/ns#' term='Le coin du geek'/><title type='text'>Tasse-grenade : prenez un numéro</title><content type='html'>Trop sollicité au bureau ? Pour mieux gérer les demandes, procurez-vous une &lt;a href="http://www.neatoshop.com/product/Grenade-Mug-Take-a-Number"&gt;tasse-grenade&lt;/a&gt; avec l'inscription "Département des plaintes, SVP, prenez un numéro". L'emballage comprend une tasse de 12 oz et un seul numéro (si quelqu'un ose le prendre, ça doit être une question de vie ou de mort).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-S_KKC5JAeyo/TiW60IKQ-hI/AAAAAAAABKQ/O-0uQrkK-pg/s1600/grenade-mug.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="http://4.bp.blogspot.com/-S_KKC5JAeyo/TiW60IKQ-hI/AAAAAAAABKQ/O-0uQrkK-pg/s400/grenade-mug.jpg" alt="" id="BLOGGER_PHOTO_ID_5631112313803176466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Merci à &lt;a href="http://twitter.com/cyber6_"&gt;@cyber6_&lt;/a&gt; pour le tuyau et pour l'initiative de s'en être procuré une.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-3515991022294648944?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/3515991022294648944/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=3515991022294648944' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3515991022294648944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3515991022294648944'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/tasse-grenade-prenez-un-numero.html' title='Tasse-grenade : prenez un numéro'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-S_KKC5JAeyo/TiW60IKQ-hI/AAAAAAAABKQ/O-0uQrkK-pg/s72-c/grenade-mug.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-1744103141770984731</id><published>2011-07-18T22:43:00.000-04:00</published><updated>2011-07-18T22:43:38.386-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Truc express pour proposer un fichier en téléchargement</title><content type='html'>Dans un billet précédent, je vous avais montré comment &lt;a href="http://code18.blogspot.com/2009/05/controler-le-telechargement-dun-fichier.html"&gt;contrôler le téléchargement d'un fichier par programmation&lt;/a&gt; en utilisant le langage PHP. Dans d'autres circonstances, on préférerait que le comportement par défaut sur certains types de fichiers soit d'être automatiquement proposés en téléchargement plutôt que de les lire par le fureteur. Je pense entre autre aux fichiers multimédias comme les mp3.&lt;br /&gt;&lt;br /&gt;Pour y arriver, il vous suffira d'ajouter une ligne par extension de fichier dans votre fichier .htaccess pour Apache :&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;AddType application/octet-stream .mp3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Si simple que ce billet ne peut être plus long (et ça tombe bien, je n'ai pas trop la tête à écrire quand il fait 30 degrés celsius dans mon bureau!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-1744103141770984731?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/1744103141770984731/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=1744103141770984731' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1744103141770984731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/1744103141770984731'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/truc-express-pour-proposer-un-fichier.html' title='Truc express pour proposer un fichier en téléchargement'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-33284639799065913</id><published>2011-07-17T22:14:00.001-04:00</published><updated>2011-07-17T22:14:45.537-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 128 sur les ennuis</title><content type='html'>Les ennuis, c’est comme le papier hygiénique, on en tire un, il en vient dix.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Woody Allen&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-33284639799065913?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/33284639799065913/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=33284639799065913' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/33284639799065913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/33284639799065913'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/citation-no-128-sur-les-ennuis.html' title='Citation no. 128 sur les ennuis'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8222051459804980983</id><published>2011-07-16T10:20:00.000-04:00</published><updated>2011-07-16T10:20:47.338-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Pertinent à savoir sur les arrays JavaScript</title><content type='html'>En JavaScript, il existe deux notations pour déclarer un array (new Array() et []). Elles peuvent sembler équivalentes mais il y a une différence importante à considérer. Pour comprendre, le mieux est de suivre l'exécution du code dans la démonstration suivante :&lt;br /&gt;&lt;pre name="code" class="js"&gt;var a1 = new Array();&lt;br /&gt;console.log(a1.length); // 0&lt;br /&gt;console.log(a1[0]); // undefined&lt;br /&gt;&lt;br /&gt;var a2 = new Array(1,2,3);&lt;br /&gt;console.log(a2.length); // 3&lt;br /&gt;console.log(a2[0]); // 1&lt;br /&gt;&lt;br /&gt;// optionnellement&lt;br /&gt;var a3 = new Array(3);&lt;br /&gt;console.log(a3.length); // 3&lt;br /&gt;console.log(a3[0]); // undefined&lt;/pre&gt;Jusqu'à maintenant, peu de surprises si ce n'est que de déclarer un tableau vide de trois éléments à la dernière étape.&lt;br /&gt;&lt;br /&gt;Poursuivons avec l'équivalent en utilisant la deuxième notation [] :&lt;br /&gt;&lt;pre name="code" class="js"&gt;var b1 = [];&lt;br /&gt;console.log(b1.length); // 0&lt;br /&gt;console.log(b1[0]); // undefined&lt;br /&gt;&lt;br /&gt;var b2 = [1,2,3];&lt;br /&gt;console.log(b2.length); // 3&lt;br /&gt;console.log(b2[0]); // 1&lt;/pre&gt;Ajoutons-y un degré de difficulté.&lt;br /&gt;&lt;pre name="code" class="js"&gt;var b3 = [3];&lt;br /&gt;console.log(b3.length);&lt;/pre&gt;Contrairement à la déclaration avec new Array(), la longueur de b3 sera de 1 car c'est la valeur 3 qui fait partie de l'array et non pas la réservation de 3 "espaces libres" comme dans a3.&lt;br /&gt;&lt;pre name="code" class="js"&gt;// ajoutons une valeur&lt;br /&gt;b3[3] = 2;&lt;/pre&gt;À ce stade-ci, quelle est la grandeur de l'array ?&lt;br /&gt;&lt;pre name="code" class="js"&gt;console.log(b3.length); // 4&lt;br /&gt;console.log(b3); // [3, undefined, undefined, 2]&lt;/pre&gt;Mais d'où viennent ces 2 espaces vides ? Comme nous avons placé la valeur 2 au 3ème indice de l'array b3, la taille du tableau est automatiquement élargie à 4.&lt;br /&gt;&lt;br /&gt;Maintenant, ajoutons à ce même tableau une valeur à une clé. Quelle sera la grandeur du tableau ? Est-ce que la longueur deviendra 5 ?&lt;br /&gt;&lt;pre name="code" class="js"&gt;b3['x'] = 'y';&lt;br /&gt;console.log(b3.length); // 4&lt;br /&gt;console.log(b3); // [3, undefined, undefined, 2]&lt;br /&gt;console.log(b3.x); // y&lt;/pre&gt;Eh non, la longueur demeure 4 mais une propriété x a été créée pour stocker la valeur de y. Donc on sait qu'on peut aussi stocker des propriétés si la clé est textuelle. Essayons autre chose.&lt;br /&gt;&lt;pre name="code" class="js"&gt;b3['10'] = 1; // associatif car la clé est textuelle et non numérique ?&lt;br /&gt;console.log(b3.length); // 11&lt;/pre&gt;Vous y comprenez quelque chose ? Le secret ici est que JavaScript tentera toujours de convertir la clé en numérique pour stocker la valeur au bon indice. S'il échoue, il utilisera une propriété associative qui pourra ensuite être appelée des deux façons (b3['x'] ou b.x).&lt;br /&gt;&lt;br /&gt;Ce qu'il faut se rappeler, c'est que selon la manière de déclarer l'array, on ne peut pas s'attendre au même comportement pour éviter des mauvaises surprises.&lt;br /&gt;&lt;pre name="code" class="js"&gt;console.log(Array(5).length); // 5&lt;br /&gt;console.log([5].length); // 1&lt;/pre&gt;Douglas Crockford, auteur du livre &lt;a href="http://oreilly.com/catalog/9780596517748"&gt;JavaScript, the Good Parts&lt;/a&gt; (et impliqué dans le développement du JavaScript par l'apport du fameux JSON), recommande l'utilisation de l'array littéral plutôt que sa forme objet. D'ailleurs, si vous regardez le &lt;a href="http://code.jquery.com/jquery-1.6.2.js"&gt;code source de jQuery&lt;/a&gt;, vous noterez qu'en aucun temps la notation new Array() n'est utilisée. Ça devrait vous donner un indice sur la méthode préférée des développeurs les plus expérimentés. Dorénavant, j'essaierai de changer mes habitudes, juste pour pouvoir me faire passer pour un expert ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8222051459804980983?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8222051459804980983/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8222051459804980983' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8222051459804980983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8222051459804980983'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/pertinent-savoir-sur-les-arrays.html' title='Pertinent à savoir sur les arrays JavaScript'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5713656998629823674</id><published>2011-07-14T21:17:00.000-04:00</published><updated>2011-07-14T21:17:34.767-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>Ceci est votre cerveau sur la musique</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-bpGAlucZSl4/Th7NwgMvreI/AAAAAAAABKI/Qso7Y7qqBBQ/s1600/this-is-your-brain-on-music.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 170px; height: 256px;" src="http://2.bp.blogspot.com/-bpGAlucZSl4/Th7NwgMvreI/AAAAAAAABKI/Qso7Y7qqBBQ/s400/this-is-your-brain-on-music.jpg" alt="" id="BLOGGER_PHOTO_ID_5629162817420504546" border="0" /&gt;&lt;/a&gt;J'ai peu écrit ces dernières semaines parce que (1) il faut profiter du beau temps, (2) j'avais d'autres projets sur lesquels travailler, (3) j'étais absorbé par la lecture de This Is Your Brain On Music (The science of a human obsession) * de &lt;a href="http://ego.psych.mcgill.ca/levitin/"&gt;Daniel J. Levitin&lt;/a&gt;, un professeur de psychologie et de neuroscience à l'Université McGill à Montréal qui a aussi un passé dans la production de disques (Eric Clapton, Blue Öyster Cult, Stevie Wonder, etc).&lt;br /&gt;&lt;br /&gt;Si comme moi vous jugez la musique fondamentale et que vous avez un intérêt pour la science, que les mots cortex, amygdale, hippocampe et cervelet ne vous font pas trembler et au contraire stimulent votre matière grise avec tout le pouvoir de la récursivité, vous vous devez d'ajouter ce livre à votre liste de lecture.&lt;br /&gt;&lt;br /&gt;Le cerveau compte cent milliards de neurones. Chaque neurone est connectée à d'autres neurones. Entre 1000 et 10000 connexions en moyenne pour chacune. Quelles parties du cerveau sont sollicitées et déterminantes dans la perception de la musique ? Comment les compositeurs exploitent-ils la façon dont le cerveau  donne un sens au monde ? Au fait, qu'est-ce que la musique exactement ? Son existence même est-elle inutile ou vitale ? Par rapport au langage, le cerveau apprend et développe la grammaire musicale propre à la culture où on vit. Et quelle est notre perception lorsque ce qu'on entend sort de notre zone de confort ?&lt;br /&gt;&lt;br /&gt;Comment peut-on reconnaître une pièce musicale après seulement quelques secondes d'écoute ? Et que dire des différentes variantes d'une même pièce interprétée en version studio, live ou transformée par un autre artiste ? Qu'est-ce qui fait qu'un logiciel de reconnaissance comme &lt;a href="http://www.shazam.com/"&gt;Shazam&lt;/a&gt; (l'auteur possède une expérience dans le domaine) ne peut différencier les différentes versions alors que le cerveau humain le peut ?&lt;br /&gt;&lt;br /&gt;Comment &lt;a href="http://code18.blogspot.com/2011/07/theorie-des-10-000-heures.html"&gt;10000 heures&lt;/a&gt; de pratique et non le talent forment des virtuoses ? Ne faut-il pas s'inquiéter des objectifs qu'avait en tête la compagnie de disques britannique EMI qui réinvestissait une part des profits engendrés par les Beatles dans les scanners IRM (imagerie par résonance magnétique) ? Pourquoi sommes nous émotionnellement attachés à la musique que nous avons écouté durant notre adolescence ? Est-ce en raison de la puberté qui active nos fonctions reproductives et joue un jeu important dans le rituel amoureux ? Est-ce une explication face à la si forte popularité de la chanson d'amour depuis la nuit des temps ?&lt;br /&gt;&lt;br /&gt;Ce sont toutes des réponses que vous trouverez en le lisant. Pour une dizaine de dollars, ne vous en privez pas. Dans ma bibliothèque, ce livre occupera une place de choix parmi mes préférés.&lt;br /&gt;&lt;br /&gt;Un livre très geek parfait pour quiconque juge la musique fondamentale. Comme mon anniversaire s'en vient, son second livre, &lt;a href="http://www.sixsongs.net/"&gt;The World in 6 Songs&lt;/a&gt;, serait un cadeau idéal pour quelqu'un comme moi :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;* Une traduction française est disponible sous le titre "De la note au cerveau: L'influence de la musique sur notre comportement ".&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5713656998629823674?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5713656998629823674/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5713656998629823674' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5713656998629823674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5713656998629823674'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/ceci-est-votre-cerveau-sur-la-musique.html' title='Ceci est votre cerveau sur la musique'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-bpGAlucZSl4/Th7NwgMvreI/AAAAAAAABKI/Qso7Y7qqBBQ/s72-c/this-is-your-brain-on-music.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-8385640605150071464</id><published>2011-07-12T21:36:00.001-04:00</published><updated>2011-07-12T21:38:05.009-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curiosités'/><title type='text'>L'énigme de Stanford</title><content type='html'>Ce problème a été posé lors d'une épreuve de réflexion aux étudiants de l'&lt;a href="http://www.stanford.edu/"&gt;Université Stanford&lt;/a&gt;. Essayez de deviner de quoi il s'agit :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;C'est mieux que Dieu.&lt;/li&gt;&lt;li&gt;C'est pire que le diable&lt;/li&gt;&lt;li&gt;Les pauvres en ont.&lt;/li&gt;&lt;li&gt;Les riches en ont besoin.&lt;/li&gt;&lt;li&gt;Et si l'on en mange, on meurt.&lt;/li&gt;&lt;/ol&gt;J'ajouterais aussi que si vous avez lu la &lt;a href="http://fr.wikipedia.org/wiki/Trilogie_du_cycle_des_dieux"&gt;trilogie du Cycle des Dieux&lt;/a&gt; de Bernard Werber, vous connaissez déjà la réponse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-8385640605150071464?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/8385640605150071464/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=8385640605150071464' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8385640605150071464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/8385640605150071464'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/lenigme-de-stanford.html' title='L&apos;énigme de Stanford'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-6410891349059227430</id><published>2011-07-10T08:28:00.001-04:00</published><updated>2011-07-10T08:29:00.486-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 127 sur l'efficience</title><content type='html'>&lt;span id="result_box" class="" lang="fr"&gt;&lt;span title="Click for alternate translations" class="hps"&gt;Si j'avais&lt;/span&gt; &lt;span title="Click for alternate translations" class="hps"&gt;six heures pour&lt;/span&gt; &lt;span title="Click for alternate translations" class="hps"&gt;couper un arbre&lt;/span&gt;&lt;span class="" title="Click for alternate translations"&gt;, je passerais&lt;/span&gt;&lt;span title="Click for alternate translations" class="hps"&gt; les quatre premières à&lt;/span&gt; &lt;span title="Click for alternate translations" class="hps"&gt;aiguiser&lt;/span&gt; &lt;span title="Click for alternate translations" class="hps"&gt;la hache.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: right;"&gt;&lt;span id="result_box" class="" lang="fr"&gt;&lt;span title="Click for alternate translations" class="hps"&gt;&lt;span style="font-style: italic;"&gt;- &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;" class="status-body"&gt;&lt;span class="status-content"&gt;&lt;span class="entry-content"&gt;Abraham Lincoln&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-6410891349059227430?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/6410891349059227430/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=6410891349059227430' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6410891349059227430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/6410891349059227430'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/citation-no-127-sur-lefficience.html' title='Citation no. 127 sur l&apos;efficience'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-3506727958514738334</id><published>2011-07-10T08:21:00.001-04:00</published><updated>2011-07-10T08:23:58.011-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Apache'/><title type='text'>Quelques solutions à des problèmes communs sur 000webhost</title><content type='html'>Vu la popularité du &lt;a href="http://www.000webhost.com/"&gt;serveur gratuit 000webhost&lt;/a&gt;, beaucoup de développeurs l'ont adopté et si comme moi c'est la première fois que vous l'utilisez, vous risquez de rencontrer quelques erreurs lors de la mise en place de votre projet. Voici quelques astuces qui vous donneront des pistes de solutions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configurer correctement le RewriteBase dans .htaccess&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Selon vos besoins :&lt;br /&gt;&lt;br /&gt;RewriteBase /&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Désactiver le code analytics en JavaScript&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pour une raison que j'ignore, je n'ai pas trouvé l'accès par le cPanel. Mais rendez-vous ici pour l'activer / désactiver.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://members.000webhost.com/analytics.php"&gt;http://members.000webhost.com/analytics.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Erreurs dans foot.php&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Je vois apparaître à l'écran une des erreurs suivantes (pourtant, je n'ai pas de fichier foot.php dans mon projet) :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Undefined index:  HTTP_X_REQUESTED_WITH /usr/local/lib/php/foot.php 3&lt;/li&gt;&lt;li&gt;Undefined variable: c_ads /usr/local/lib/php/foot.php 3&lt;/li&gt;&lt;/ul&gt;Il semblerait que le serveur glisse automatiquement du code à la fin (append). Pour vous dépanner, vous pourriez redéfinir les valeurs directement en PHP.&lt;br /&gt;&lt;br /&gt;$_SERVER['HTTP_X_REQUESTED_WITH'] = '';&lt;br /&gt;$c_ads = '';&lt;br /&gt;&lt;br /&gt;Ou utiliser une solution propre, par .htaccess (on voit bien la configuration par phpinfo()) :&lt;br /&gt;&lt;br /&gt;php_value auto_append_file none&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Configurer une page 404 dans .htaccess&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ErrorDocument 404 /ma-page-404.php&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Désactiver les directory listings dans .htaccess&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pour éviter de voir la liste des fichiers lorsqu'on est à la racine d'un répertoire.&lt;br /&gt;&lt;br /&gt;Options All -Indexes&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Robots.txt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Tout s'affiche sur une ligne unique. Assurez-vous d'avoir ajouté cette ligne dans votre fichier .htaccess :&lt;br /&gt;&lt;br /&gt;AddType text/plain .txt&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Prise en charge des erreurs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dans le fichier .htaccess, indiquez le niveau d'erreur à rapporter (exemple : la constante PHP E_ALL = 30719) mais indiquez de ne pas afficher les erreurs à l'écran (pour éviter de donner des indices aux gens mal intentionnés) :&lt;br /&gt;&lt;br /&gt;php_value error_reporting 30719&lt;br /&gt;php_flag display_errors 0&lt;br /&gt;&lt;br /&gt;Ensuite, dans le code PHP, écrivez votre propre fonction pour prendre en charge ce qui se passe lorsqu'une erreur survient avec &lt;a href="http://www.php.net/manual/fr/function.set-error-handler.php"&gt;set_error_handler&lt;/a&gt;.&lt;br /&gt;&lt;pre name="code" class="php"&gt;set_error_handler('ma_fonction');&lt;br /&gt;&lt;br /&gt;function ma_fonction($errno, $errmsg, $filename, $linenum, $vars){&lt;br /&gt;  // minimalement, faites afficher un message&lt;br /&gt; echo "Oups, erreur!":&lt;br /&gt;&lt;br /&gt; // écrire l'erreur dans un log&lt;br /&gt;}&lt;/pre&gt;&lt;span style="font-weight:bold;"&gt;Inclure Zend Framework&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Le service 000webhost bloque l'ouverture des fichiers lorsqu'ils sont préfixés par le chemin absolu d'un répertoire virtuel. Oubliez $_SERVER['DOCUMENT_ROOT']. Je n'ai pas eu d'autre choix que de définir le chemin au long dans la propriété include_path. Par exemple, déposez le répertoire de Zend dans un dossier "inc" qui se trouve à la racine de public_html.&lt;br /&gt;&lt;br /&gt;Ensuite, utilisez ini_set() en PHP (dans un bootstrap ou fichier global) :&lt;br /&gt;&lt;br /&gt;ini_set('include_path', ini_get('include_path').':/home/xxxxxxxxx/public_html/inc:');&lt;br /&gt;&lt;br /&gt;Ou mieux avec .htaccess :&lt;br /&gt;&lt;br /&gt;php_value include_path ".:/home/xxxxxxxxx/public_html/inc"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-1ucHg6nXJOo/ThmPsgOd5fI/AAAAAAAABIc/52QpgzOZPkI/s1600/000webhost-account-infos.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 258px; height: 147px;" src="http://3.bp.blogspot.com/-1ucHg6nXJOo/ThmPsgOd5fI/AAAAAAAABIc/52QpgzOZPkI/s400/000webhost-account-infos.jpg" alt="" id="BLOGGER_PHOTO_ID_5627687204103775730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pour configurer le chemin exact, référez-vous à la rubrique Account Information du cPanel de 000webhost et remplacez xxxxxxxxx par votre nom d'utilisateur.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-3506727958514738334?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/3506727958514738334/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=3506727958514738334' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3506727958514738334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/3506727958514738334'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/quelques-solutions-des-problemes.html' title='Quelques solutions à des problèmes communs sur 000webhost'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-1ucHg6nXJOo/ThmPsgOd5fI/AAAAAAAABIc/52QpgzOZPkI/s72-c/000webhost-account-infos.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-7696665108131211474</id><published>2011-07-06T21:18:00.001-04:00</published><updated>2011-07-06T21:18:47.922-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><title type='text'>Théorie des 10 000 heures</title><content type='html'>En guise d'entrée en matière, c'est un sujet que j'ai déjà abordé à quelques reprises dans des billets comme &lt;a href="http://code18.blogspot.com/2011/06/limportance-du-titre-un-mythe.html"&gt;L'importance du titre : un mythe&lt;/a&gt; et dans &lt;a href="http://code18.blogspot.com/2010/10/on-est-tous-des-attention-whores.html"&gt;On est tous des attention whores&lt;/a&gt;. Juste parce que le mot "expert" s'emploie maintenant à toutes les sauces, ça m'enrage. Beaucoup se prétendent l'être, peu le sont vraiment. Et je ne le cacherai pas, j'ai une dent contre les experts en médias sociaux en particulier. Parce que c'est le buzz de l'heure et que personne ne veut avoir l'impression d'avoir manqué le train, ils profitent de la naiveté des gens, tel des prédicateurs qui croient détenir la clé du succès et qui sont habiles à les convaincre. Il n'y a pas si longtemps, il y avait prolifération des experts pour solutionner tous vos maux quant au bogue de l'an 2000. L'histoire se répète et la prétention est une constante. La méconnaissance d'un sujet résulte toujours en la naissance de soi-disant experts qui exploiteront le filon.&lt;br /&gt;&lt;br /&gt;Après tout, la question que j'aimerais une fois pour toutes élucider est : c'est quoi un expert ? J'ai trouvé une définition intéressante dans le même livre de Levitin dont je vous parlais récemment (This is your brain on music, pages 196-197) et qui dans ce cas-ci s'applique aux musiciens (ma deuxième passion après la programmation).&lt;br /&gt;&lt;br /&gt;Premièrement, qu'est-ce qu'on sous-entend par "expert" ? Généralement, on s'accorde pour le dire de quelqu'un qui a atteint un haut niveau d'accomplissement relatif à une autre personne. Comme tel, l'expertise est un jugement social, une déclaration qu'on fait par rapport à quelques individus par rapport à un groupe plus large de la population. Aussi, les accomplissements sont normalement considérés être dans un domaine que nous nous soucions. Comme le notait Sloboda, je peux devenir expert à me plier les bras ou à prononcer mon propre nom, mais ce n'est généralement pas la même chose que d'être un expert aux échecs, à réparer des voitures Porsches ou d'être capable de voler les &lt;a href="http://fr.wikipedia.org/wiki/Joyaux_de_la_Couronne_britannique"&gt;joyaux de la couronne britannique&lt;/a&gt; sans se faire prendre.&lt;br /&gt;&lt;br /&gt;L'image qui émerge de ces études est que &lt;span style="font-weight: bold;"&gt;dix mille heures de pratique&lt;/span&gt; sont nécessaires pour atteindre le niveau de maîtrise associé à être un expert de classe mondiale, et ce dans n'importe quoi. Que ce soit des compositeurs, des joueurs de basketball, des écrivains de fiction, des patineurs, des pianistes de concerts, des joueurs d'échecs ou des maîtres criminels, c'est le même chiffre qui revient tout le temps. 10 000 heures est l'équivalent à pratiquer 3 heures par jour ou 20 heures par semaine, et ce pendant 10 ans! Personne n'a encore trouvé de cas où l'expertise avait été atteinte plus rapidement. Il semblerait que le cerveau ait besoin de tout ce temps pour assimiler le nécessaire pour atteindre la maîtrise voulue.&lt;br /&gt;&lt;br /&gt;Prouvez-moi que vous avez passé 10000 heures à étudier le sujet et vous aurez tout mon respect. Même &lt;a href="http://www.cyberpresse.ca/chroniqueurs/nathalie-petrowski/200812/06/01-807961-dix-mille-heures.php"&gt;Nathalie Petrowski&lt;/a&gt; en a parlé. Même moi, je ne me considère expert en rien. Mes intérêts sont trop diversifiés pour avoir consacré autant de temps à une seule chose. Même 10000 heures cumulées en programmation ne font pas de moi un expert puisque le temps est réparti dans différentes sphères allant de la modélisation de bases de données à la programmation PHP, JavaScript et d'autres langages appris avec le temps.&lt;br /&gt;&lt;br /&gt;Comment peut-on s'auto-proclamer expert dans un domaine émergent comme les médias sociaux ? Publier 25000 tweets de 140 caractères sur Twitter ne me dit pas que vous êtes un expert, ça m'indique seulement que vous êtes trop bavard et que vous avez du temps à perdre ! Ceci dit, ça fait à peine une semaine que &lt;a href="https://plus.google.com/"&gt;Google+&lt;/a&gt; est lancé que seuls quelques chanceux de mon entourage ont reçu une invitation. On est d'accord que parce qu'ils ont pu explorer le produit avant les autres ne fait pas d'eux des experts. Ils n'ont qu'une longueur d'avance que vous rattrapperez lorsque vous y aurez vous aussi accès.&lt;br /&gt;&lt;br /&gt;Lorsque je rencontre quelqu'un se présentant comme un expert dans une technologie, j'ai tendance à être critique et méfiant jusqu'à ce que la personne me convainc de sa compétence.  Une expérience passée me revient en tête : pour un projet quelconque, nous avions à nous familiariser avec &lt;a href="http://www-01.ibm.com/software/websphere/"&gt;WebSphere&lt;/a&gt; (c'était conditionnel à l'obtention du contrat, que nous n'avons pas eu d'ailleurs). Nous avions engagé un formateur expert en WebSphere (selon son CV) pour nous aider à mettre sur pied l'environnement de développement et nous donner un coup de pouce pour préparer un prototype du projet. Dès la première heure, il était embêté par nos questions et se retira chez lui pour tenter de trouver les réponses. Nous n'avons plus jamais entendu parler de lui. À mon avis, le type était débrouillard et croyait être en mesure de figurer le fonctionnement pendant la durée du mandat.&lt;br /&gt;&lt;br /&gt;Comme il avait déjà mis le nez dans cette technologie, il était en meilleure position que nous. Au même titre que moi, en tant que programmeur donc travaillant en informatique, je suis immédiatement  catégorisé comme un expert en ordinateurs par mon entourage. Pourtant, ni le hardware ni Windows n'ont de lien avec la programmation que je fais. Rien pour aider  ma cause, je trouve des solutions!&lt;br /&gt;&lt;br /&gt;Avoir un intérêt pour quelque chose n'équivaut pas à être une sommité en la matière. Alors avant de vous apposer le titre d'expert et de prétendre être meilleur que vous l'êtes en réalité, méfiez-vous parce que vous finirez tôt ou tard à être démasqué.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-7696665108131211474?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/7696665108131211474/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=7696665108131211474' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7696665108131211474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7696665108131211474'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/theorie-des-10-000-heures.html' title='Théorie des 10 000 heures'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5333817656615270241</id><published>2011-07-05T20:02:00.002-04:00</published><updated>2011-07-05T20:02:54.424-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><category scheme='http://www.blogger.com/atom/ns#' term='Curiosités'/><category scheme='http://www.blogger.com/atom/ns#' term='Humour'/><title type='text'>Le livre sans titre</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-MKtNrd264Wo/ThOjZvosYXI/AAAAAAAABHU/p8pxEriwp4M/s1600/livre-sans-titre.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 224px; height: 320px;" src="http://4.bp.blogspot.com/-MKtNrd264Wo/ThOjZvosYXI/AAAAAAAABHU/p8pxEriwp4M/s320/livre-sans-titre.jpg" alt="" id="BLOGGER_PHOTO_ID_5626020022195085682" border="0" /&gt;&lt;/a&gt;Pourquoi cet ouvrage reste-t-il sans titre ? Parce que le sujet dont il est question était tabou dans les bonnes moeurs au moment de sa parution dans les années 1830. La moralité de l'époque était sévère envers l'&lt;a href="http://www.linternaute.com/dictionnaire/fr/definition/onanisme/"&gt;onanisme&lt;/a&gt;. Vous savez ce que c'est ? Non ? Sachez que cette funestre habitude fait mourir à elle seule plus de jeunes gens que toutes les maladies ensemble. Oui oui oui, vous avez bien compris.&lt;br /&gt;&lt;br /&gt;Maintenant, ai-je besoin de vous faire un dessin? Un indice vous donnerait un coup de main (lol)? Allez, si vous n'avez pas déjà deviné, cliquez sur le lien plus haut pour en connaître le synonyme. Dans les faits, c'était un guide dédié aux jeunes gens, et aux pères et mères de famille qui constituait une mise en garde face à ceux qui s'adonnaient intimement à cette pratique.&lt;br /&gt;&lt;br /&gt;Bon, je vous en fais un court résumé des fâcheuses conséquences qui s'en suivent :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;la figure devient pâle, le regard éteint; souvent des boutons purulents au visage, au front surtout, une haleine empestée, des douleurs d'estomac&lt;/li&gt;&lt;li&gt;ses cheveux, si beaux, tombent comme dans la vieillesse : sa tête se dépouille avant l'âge (hey! j'en connais un comme ça)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;il a faim, il veut apaiser sa faim, les aliments ne peuvent séjourner dans son estomac... (intolérance au lactose et au gluten ?)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;sa poitine s'affaisse... il vomit le sang&lt;/li&gt;&lt;li&gt;tout son corps se couvre de pustules... il est horrible à voir!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;une fièvre lente le consume, il languit : tout son corps brule (justement, un employé s'est absenté aujourd'hui pour cause de fièvre)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;tout son corps se roidit! Ses membres cessent d'agir&lt;/li&gt;&lt;li&gt;il délire : il se roidit contre la mort : la mort est plus forte&lt;/li&gt;&lt;li&gt;il s'est corrompu!  Bientôt il porte la peine de sa faute : vieux avant l'âge... son dos se courbe... (The Curious Case of Benjamin Button)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;un feu dévorant embrase ses entrailles. Il souffre d'horribles douleurs d'estomac&lt;/li&gt;&lt;li&gt;voyez ces yeux naguères si purs, si brillants, ils sont éteints! Une bande de feu les entoure&lt;/li&gt;&lt;li&gt;il ne peut plus marcher... ses jambes fléchussent&lt;/li&gt;&lt;li&gt;Des songes affreux agitent son sommeil... il ne peut dormir&lt;/li&gt;&lt;li&gt;ses dents se gâtent et tombent (si on rêve qu'on perd ses dents, est-ce que ça compte ?)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;sa poitrine s'enflamme... il crache le sang&lt;/li&gt;&lt;/ol&gt;Ça fout la trouille ! Si vous reconnaissez des gens de votre entourage qui présentent de tels signes, veuillez en avertir les autorités compétentes. Et pour parfaire votre connaissance sur le sujet et devenir maître en la matière, téléchargez un &lt;a href="http://books.google.com/books?id=B_46AAAAcAAJ&amp;amp;dq=livre+sans+titre"&gt;exemplaire gratuit en eBook&lt;/a&gt; sur Google Books. Ceci constituera une bonne lecture de chevet avant de vous endormir afin de vous garder dans le droit chemin (pour vous-même ou vos enfants).&lt;br /&gt;&lt;br /&gt;C'est ainsi que par mon tempéramment rebelle, je viens à l'instant de saisir tout le sens des paroles de la chanson Creeping Death du groupe Metallica que j'écoutais étant adolescent : Die, by my hand...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5333817656615270241?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5333817656615270241/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5333817656615270241' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5333817656615270241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5333817656615270241'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/07/le-livre-sans-titre.html' title='Le livre sans titre'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-MKtNrd264Wo/ThOjZvosYXI/AAAAAAAABHU/p8pxEriwp4M/s72-c/livre-sans-titre.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-4688351564289768179</id><published>2011-06-29T21:39:00.000-04:00</published><updated>2011-06-29T21:39:17.102-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Livres'/><title type='text'>Récupérer des informations d'un livre par Google Books API</title><content type='html'>Je l'avoue, je suis un rat de bibliothèque. Je possède des tonnes de livres pour étancher ma curiosité et lorsqu'est venu le temps de faire un inventaire de tout ce que j'avais, la charge de travail me semblait simplement trop pénible. Pour la rendre plus motivante et pour accélérer la saisie des données, j'ai écrit un petit script PHP qui récupère l'information à l'aide de la clé ISBN unique qui se trouve à l'endos d'un livre et de l'&lt;a href="http://code.google.com/apis/books/"&gt;API de Google Books&lt;/a&gt;. Aucune clé n'est nécessaire.&lt;br /&gt;&lt;br /&gt;J'ai d'abord dressé la liste des codes ISBN en les récupérant sur Amazon car a) je m'en suis procuré beaucoup à partir de ce marchand et b) c'est plus simple de compiler les codes numériques par copier/coller du site web que de les sortir un par un de la bibliothèque (paresseux vous dites ?). Si vous préférez le faire à la main, l'ISBN peut être retrouvé facilement en regardant autour du code barre ou sur une des premières pages, au même endroit où se trouve la classification et le copyright.&lt;br /&gt;&lt;br /&gt;Ensuite, j'ai créé une page PHP avec un formulaire HTML comprenant un seul champ de recherche pour l'ISBN. Une fois le formulaire soumis, une requête était faite à Google et je faisais apparaître le résultat pour pouvoir valider que c'était bien le livre recherché. D'un simple click sur un bouton et l'information était stockée dans une table de ma base de données SQL. J'ai même osé sauvegarder une copie de l'image sur le disque pour une utilisation future (vous trouverez les détails dans un billet semblable où j'expliquais &lt;a href="http://code18.blogspot.com/2009/05/recuperer-une-image-sur-amazon-avec.html"&gt;comment récupérer une image sur Amazon&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Pour ce qui est du script PHP, la portion qui nous intéresse est celle-ci :&lt;br /&gt;&lt;pre name="code" class="php"&gt;$isbn = isset($_POST['isbn']) ? $_POST['isbn'] : '';&lt;br /&gt;// ou si vous préférez hardcodé&lt;br /&gt;// $isbn = '0061234001';&lt;br /&gt;&lt;br /&gt;$request = 'https://www.googleapis.com/books/v1/volumes?q=isbn:' . $isbn;&lt;br /&gt;$response = file_get_contents($request);&lt;br /&gt;$results = json_decode($response);&lt;br /&gt;&lt;br /&gt;if($results-&amp;gt;totalItems &amp;gt; 0){&lt;br /&gt;   // avec de la chance, ce sera le 1er trouvé&lt;br /&gt;   $book = $results-&amp;gt;items[0];&lt;br /&gt;&lt;br /&gt;   $infos['isbn'] = $book-&amp;gt;volumeInfo-&amp;gt;industryIdentifiers[0]-&amp;gt;identifier;&lt;br /&gt;   $infos['titre'] = $book-&amp;gt;volumeInfo-&amp;gt;title;&lt;br /&gt;   $infos['auteur'] = $book-&amp;gt;volumeInfo-&amp;gt;authors[0];&lt;br /&gt;   $infos['langue'] = $book-&amp;gt;volumeInfo-&amp;gt;language;&lt;br /&gt;   $infos['publication'] = $book-&amp;gt;volumeInfo-&amp;gt;publishedDate;&lt;br /&gt;   $infos['pages'] = $book-&amp;gt;volumeInfo-&amp;gt;pageCount;&lt;br /&gt;&lt;br /&gt;   if( isset($book-&amp;gt;volumeInfo-&amp;gt;imageLinks) ){&lt;br /&gt;       $infos['image'] = str_replace('&amp;amp;edge=curl', '', $book-&amp;gt;volumeInfo-&amp;gt;imageLinks-&amp;gt;thumbnail);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   print_r($infos);&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;   echo 'Livre introuvable';&lt;br /&gt;}&lt;/pre&gt;Résultat :&lt;br /&gt;&lt;pre name="code" class="php"&gt;Array&lt;br /&gt;(&lt;br /&gt;   [isbn] =&amp;gt; 0061234001&lt;br /&gt;   [titre] =&amp;gt; Freakonomics&lt;br /&gt;   [auteur] =&amp;gt; Steven D. Levitt&lt;br /&gt;   [langue] =&amp;gt; en&lt;br /&gt;   [publication] =&amp;gt; 2006-10-05&lt;br /&gt;   [pages] =&amp;gt; 320&lt;br /&gt;   [image] =&amp;gt; http://bks2.books.google.com/books?id=9O6-UWVfDP0C&amp;amp;printsec=frontcover&amp;amp;img=1&amp;amp;zoom=1&amp;amp;source=gbs_api&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;Deux astuces :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;il est parfois possible d'obtenir une image de plus grand format (lorsque disponible) en modifiant la valeur du paramètre zoom. Voici un exemple avec &lt;a href="http://bks8.books.google.com/books?id=3oSoqGOmI4sC&amp;amp;printsec=frontcover&amp;amp;img=1&amp;amp;zoom=1"&gt;zoom 1&lt;/a&gt; et la même image plus grande avec &lt;a href="http://bks8.books.google.com/books?id=3oSoqGOmI4sC&amp;amp;printsec=frontcover&amp;amp;img=1&amp;amp;zoom=4"&gt;zoom 4&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;je suggère de retirer de l'URL la paire clé/valeur "&amp;amp;edge=curl" car dans certains cas, l'URL de l'image retournée par Google contient ce paramètre qui applique un effet recourbé sur le coin inférieur droit de l'image&lt;/li&gt;&lt;/ol&gt;Bien entendu, tout ceci était fait pour un usage personnel. Pour un projet web, vous devrez vous conformer aux conditions d'utilisation du fournisseur des données ou vous taire à jamais.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-4688351564289768179?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/4688351564289768179/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=4688351564289768179' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4688351564289768179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4688351564289768179'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/06/recuperer-des-informations-dun-livre.html' title='Récupérer des informations d&apos;un livre par Google Books API'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5669995403368499119</id><published>2011-06-27T21:02:00.003-04:00</published><updated>2011-06-27T21:05:38.738-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>Gamme d'instruments de musique futuriste</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-36_6WwaMeZ4/Tgkml6cyITI/AAAAAAAABHI/t60nevgx6Y4/s1600/eigenharp-alpha.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 223px; height: 400px;" src="http://1.bp.blogspot.com/-36_6WwaMeZ4/Tgkml6cyITI/AAAAAAAABHI/t60nevgx6Y4/s400/eigenharp-alpha.jpg" alt="" id="BLOGGER_PHOTO_ID_5623068042535772466" border="0" /&gt;&lt;/a&gt;En fouillant pour trouver une démonstration d'un &lt;a href="http://www.nici.kun.nl/mmm/"&gt;travail de recherche de Desain et Honing&lt;/a&gt; présenté au CCRMA (Center for Computer Research in Music and Audio) dans les années 90 (un soulier informatisé qui apprend à reconnaître les rythmiques et qui les reproduit), j'ai découvert une nouvelle gamme d'instuments de musique futuristes développée par &lt;a href="http://www.eigenlabs.com/"&gt;Eigenlabs&lt;/a&gt; : le Eigenharp qui se décline en trois formats Alpha, Pico et Tau.&lt;br /&gt;&lt;br /&gt;Développé pendant 8 ans, le &lt;a href="http://www.eigenlabs.com/product/alpha/"&gt;Eigenharp Alpha&lt;/a&gt; (le plus complet) est un instrument électronique qui ressemble au &lt;a href="http://fr.wikipedia.org/wiki/Sitar"&gt;sitar indien&lt;/a&gt; mélangé avec une flûte qui intègre 120 clés tactiles sensibles dont chacune fonctionne comme un joystick analogique à 4 voies, 12 clés de percussion, un embout pour souffler, une prise à écouteurs et une autre pour un micro, un connecteur USB2, un logiciel, une librairie d'instruments et de percussions, de la compatibilité MIDI et le plus surprenant, c'est présentement supporté que sous Mac (éventuellement Windows).&lt;br /&gt;&lt;br /&gt;À 6200$ canadiens, on peut dire que c'est un instrument polyvalent. Oui, c'est plus dispendieux qu'une légendaire Gibson Les Paul ! Voici un "band de garage" ayant investi 20000$ pour former un trio :&lt;br /&gt;&lt;br /&gt;&lt;object height="314" width="504"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Y_k3wwTIXgk?version=3&amp;amp;hl=en_US&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Y_k3wwTIXgk?version=3&amp;amp;hl=en_US&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="314" width="504"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Pour voir plus de prototypes d'instruments informatisés dites d'expression de note 3D, visionnez cette vidéo qui traite &lt;a href="http://www.youtube.com/watch?v=AjVym8s8bNg"&gt;du Eigenharp, du Continuum et du LinnStrument&lt;/a&gt; (avancez le curseur entre 1:00 et 1:09 pour les démonstrations). Remarquez aussi le potentiel rock du Eigenharp qui se transforme par moments en guitare (vers 1:06).&lt;br /&gt;&lt;br /&gt;Pour satisfaire votre curiosité :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cerlsoundgroup.org/Continuum/"&gt;Continuum Fingerboard&lt;/a&gt; (prix actuel 5300$)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.rogerlinndesign.com/products/linnstrument/"&gt;Linnstrument&lt;/a&gt; (n'est pas encore commercialisé)&lt;/li&gt;&lt;li&gt;Et &lt;a href="http://www.rogerlinndesign.com/products/linnstrument/other_instruments.html"&gt;encore plus d'instruments de demain&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Une fois en possession de votre nouvel instrument, essayez de chercher un professeur dans une école locale. Normalement si vous vous en êtes procuré un, c'est que vous avez déjà la virtuosité au bout des doigts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5669995403368499119?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5669995403368499119/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5669995403368499119' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5669995403368499119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5669995403368499119'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/06/gamme-dinstruments-de-musique-futuriste.html' title='Gamme d&apos;instruments de musique futuriste'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-36_6WwaMeZ4/Tgkml6cyITI/AAAAAAAABHI/t60nevgx6Y4/s72-c/eigenharp-alpha.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-5315550557227961873</id><published>2011-06-26T11:18:00.002-04:00</published><updated>2011-06-26T11:18:54.518-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Citations'/><title type='text'>Citation no. 126 sur le dictionnaire</title><content type='html'>Il n'est plus nécessaire de chercher le mot Dictionnaire dans le dictionnaire, il est inscrit sur la pochette.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-style: italic;"&gt;- Les Chick'n swell&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-5315550557227961873?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/5315550557227961873/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=5315550557227961873' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5315550557227961873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/5315550557227961873'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/06/citation-no-126-sur-le-dictionnaire.html' title='Citation no. 126 sur le dictionnaire'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-7549274096657730240</id><published>2011-06-26T10:52:00.001-04:00</published><updated>2011-06-26T10:52:46.762-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curiosités'/><title type='text'>Faux Lucky Luke et guitare disproportionnée</title><content type='html'>Si vous êtes de passage au marché-aux-puces de St-Eustache, arrêtez donc prendre une photo souvenir avec le clone de Lucky Luke et la guitare qui fait deux fois sa hauteur. Cette imitation de &lt;a href="http://en.wikipedia.org/wiki/Fender_Stratocaster"&gt;stratocaster&lt;/a&gt; avec le manche trop court agencé avec un cowboy populaire font le bonheur des chasseurs d'aubaines à l'entrée du ciné-parc qui se transforme en bric-à-brac durant la fin de semaine. Retrouvez cette oeuvre de bon goût à l'aide de &lt;a href="http://maps.google.com/maps?hl=en&amp;amp;ll=45.582599,-73.872564&amp;amp;spn=0.010948,0.027702&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=50.291089,113.466797&amp;amp;layer=c&amp;amp;cbll=45.584521,-73.874707&amp;amp;panoid=_bDZ1AqwdaEAVcqIALuWAA&amp;amp;cbp=12,161.34,,0,-11.66&amp;amp;z=16"&gt;Google Maps&lt;/a&gt;. Et qui dit bon goût rime avec dégustration de fromage en grains frais du jour que tout le monde a pigé dedans avec ses mains sales. Miam!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-DHDh_Dd2UtE/TgdAeyJ_MLI/AAAAAAAABHA/LRqkoLVJ0Mk/s1600/faux-lucky-luke-et-guitare.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 282px;" src="http://4.bp.blogspot.com/-DHDh_Dd2UtE/TgdAeyJ_MLI/AAAAAAAABHA/LRqkoLVJ0Mk/s400/faux-lucky-luke-et-guitare.jpg" alt="" id="BLOGGER_PHOTO_ID_5622533557399269554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ça me rappelle l'ancien village du Far West de Saint-Césaire où je me souviens avoir eu un pistolet entre les mains et ma première crise d'asthme (rassurez-vous, j'ai eu ce problème pendant des années mais c'est maintenant chose du passé, ayant mis fin à cette mauvaise habitude de me promener avec des armes à feu).&lt;br /&gt;&lt;br /&gt;Pub rétro avec le valeureux cowboy Lucky et les deux crapules, Joe et Averell Dalton (le plus petit et le plus grand).&lt;br /&gt;&lt;br /&gt;&lt;object height="390" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Xq38WEvU82E?version=3&amp;amp;hl=en_US&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Xq38WEvU82E?version=3&amp;amp;hl=en_US&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="390" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Maintenant fermé du lundi au dimanche.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-7549274096657730240?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/7549274096657730240/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=7549274096657730240' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7549274096657730240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/7549274096657730240'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/06/faux-lucky-luke-et-guitare.html' title='Faux Lucky Luke et guitare disproportionnée'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-DHDh_Dd2UtE/TgdAeyJ_MLI/AAAAAAAABHA/LRqkoLVJ0Mk/s72-c/faux-lucky-luke-et-guitare.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-4429155751050277059</id><published>2011-06-24T10:29:00.000-04:00</published><updated>2011-06-24T10:29:57.406-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lois et principes'/><title type='text'>Les murs ont des oreilles et moi aussi</title><content type='html'>Ce ne sont que quelques indices que j'ai constaté durant la dernière semaine et j'espère me tromper parce que ça serait vraiment une situation fâcheuse.&lt;br /&gt;&lt;br /&gt;Considérant que :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;j'ai entendu une bribe de conversation entre deux employés où l'un d'eux s'est soudainement mis à chuchoter et ou, sans le vouloir (j'étais à proximité), j'ai eu vent qu'il était allé passer une entrevue ailleurs&lt;br /&gt;&lt;/li&gt;&lt;li&gt;j'ai appris récemment qu'il s'était créé un site web personnel sur lequel il offre ses services&lt;br /&gt;&lt;/li&gt;&lt;li&gt;le portfolio sur son site montre entre autres des réalisations récentes (datant des derniers mois) dont au moins deux ont été effectuées pour le compte d'un de nos concurrents&lt;br /&gt;&lt;/li&gt;&lt;li&gt;il a accepté une relation sur LinkedIn avec le même chasseur de tête qui m'a contacté hier pour un poste en programmation PHP&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;C'est moche hein ? Si un employé n'est pas heureux, on ne peut l'empêcher d'aller voir ailleurs. Par contre, je vois un problème éthique à tout cela, plus particulièrement sur le fait de travailler pour un concurrent alors qu'on occupe un poste permanent en même temps. Dénoncer ou fermer les yeux ? Vous en pensez quoi ? J'ai l'impression que d'une façon ou d'une autre, peu importe qui agira le premier, un changement est imminent.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-4429155751050277059?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/4429155751050277059/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=4429155751050277059' title='4 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4429155751050277059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4429155751050277059'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/06/les-murs-ont-des-oreilles-et-moi-aussi.html' title='Les murs ont des oreilles et moi aussi'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8085342449633067864.post-4420160625006846356</id><published>2011-06-22T22:20:00.001-04:00</published><updated>2011-06-22T22:20:47.285-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Saviez-vous que'/><category scheme='http://www.blogger.com/atom/ns#' term='Musique'/><title type='text'>Le syndrome Memento</title><content type='html'>Vous avez peut-être vu le film &lt;a href="http://www.imdb.com/title/tt0209144/"&gt;Memento&lt;/a&gt; du réalisateur Christopher Nolan ? L'histoire est celle d'un homme qui souffre de perte de mémoire à court terme et qui utilise des notes et des tatous pour se souvenir qu'il doit traquer l'homme qu'il croit avoir tué sa femme. Si ce n'est pas le cas, faites-le, vous ne le regretterez pas.&lt;br /&gt;&lt;br /&gt;La raison pour laquelle j'aborde le sujet ici est qu'en lisant l'excellent livre &lt;a href="http://www.amazon.ca/This-Brain-Music-Daniel-Levitin/dp/0452288525"&gt;This Is Your Brain On Music de Daniel J. Levitin&lt;/a&gt; (neuroscientifique du &lt;a href="http://ego.psych.mcgill.ca/labs/levitin/"&gt;Laboratoire Music Perception, Cognition and Expertise de l'Université McGill à Montréal&lt;/a&gt;), j'ai noté le passage suivant que j'ai jugé intéressant à partager et parce qu'il fournit une bribe d'explication sur la maladie d'alzheimer dont souffre ma grand-mère et qui a atteint un stade avancé (à ce sujet, une vidéo expliquant &lt;a href="http://vimeo.com/25081590"&gt;le pouvoir de la musique&lt;/a&gt; par rapport à cette maladie cérébrale évolutive). Malgré tout ce qu'elle a oublié (incluant tous les membres de sa famille sauf son défunt mari qu'elle croit toujours vivant), elle chante continuellement &lt;a href="http://fr.wikipedia.org/wiki/Roses_de_Picardie"&gt;Les Roses de Picardie&lt;/a&gt; dont les paroles semblent incrustées dans sa mémoire et dont nous ignorerons à jamais la signification que cette chanson avait dans ses souvenirs.&lt;br /&gt;&lt;br /&gt;Selon Levitin [traduction approximative], le système musical du cerveau semble fonctionner indépendamment de celui de la langue malgré la proximité du traitement de la musique et de la parole dans les lobes frontaux et temporaux. Des preuves viennent de nombreuses études de cas de patients qui, après un accident, avaient perdu une ou l'autre des facultés, mais pas les deux. Le cas le plus célèbre du "syndrome memento" est sans doute celui de &lt;a href="http://en.wikipedia.org/wiki/Clive_Wearing"&gt;Clive Wearing&lt;/a&gt;, un musicien, chef d'orchestre et claviériste, dont le cerveau fût endommagé à la suite d'encéphalite herpétique. Tel que rapporté par &lt;a href="http://www.oliversacks.com/"&gt;Oliver Sacks&lt;/a&gt; (neurologue), Clive a perdu toute la mémoire à l'exception des souvenirs musicaux et la mémoire de son épouse (vous voyez le rapprochement).&lt;br /&gt;&lt;br /&gt;D'autres cas ont été signalés pour lesquels le patient a perdu la mémoire de la musique mais a conservé la langue et d'autres souvenirs. Lorsque des parties de son cortex gauche se sont détériorées, le compositeur français Maurice Ravel perdit son sens de la hauteur (pitch) tout en conservant son sens du timbre, un déficit qui a inspiré son écriture du &lt;a href="http://www.youtube.com/watch?v=3-4J5j74VPw"&gt;Boléro&lt;/a&gt;, une pièce qui met l'accent sur les variations de timbre.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8085342449633067864-4420160625006846356?l=code18.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://code18.blogspot.com/feeds/4420160625006846356/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8085342449633067864&amp;postID=4420160625006846356' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4420160625006846356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8085342449633067864/posts/default/4420160625006846356'/><link rel='alternate' type='text/html' href='http://code18.blogspot.com/2011/06/le-syndrome-memento.html' title='Le syndrome Memento'/><author><name>Infinite Loop</name><uri>http://www.blogger.com/profile/14525518280316303728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/-c0DFxXSyyVg/ThweiPNGAcI/AAAAAAAABJo/2kt_IVt6ETQ/s220/code18.jpg'/></author><thr:total>0</thr:total></entry></feed>
