Rss du portail de Renaud Guezennec Astuces informatiques,Programmation, Projet et blog Sat, 07 Nov 09 15:09:00 +0100 Sat, 07 Nov 09 15:09:00 +0100 http://renaudguezennec.homelinux.org/rss.html Utiliser JFreeChart dans vos applications Java Comment utiliser la bibliothèque JFreeChart dans ses applications Java/Swing. Fri, 06 Nov 09 00:22:56 +0100 http://renaudguezennec.homelinux.org/ Astuce : GROUP BY qui respecte l'ordre numérique Avec MySQL. Triez un champ avec un tri num&eacute;rique et non sur les codes des caract&egrave;res en MySQL. Il est parfois utile de trier une liste d'enregistrement gr&acirc;ce &agrave; un champ. Si ce champ contient des chiffres mais qu'il est d&eacute;fini comme un varchar. La fonction ORDER BY fera un mauvais tri. Cas classique et id&eacute;al: Type: Integer(11) Data: <pre> +----------+<br /> | Nombres |<br /> +----------+<br /> | 10 |<br /> | 500 |<br /> | 1 |<br /> | 3000 |<br /> | 20 |<br /> | 50 |<br /> | 30 |<br /> | 1000 |<br /> +----------+<br /> </pre> Requ&ecirc;te nomale. <br /> Requ&ecirc;te: <code class="filename">SELECT numbers from table order by numbers</code> <br />Nous obtenons ce r&eacute;sultat: <pre> +----------+<br /> | Nombres |<br /> +----------+<br /> | 1 |<br /> | 10 |<br /> | 20 |<br /> | 30 |<br /> | 50 |<br /> | 500 |<br /> | 1000 |<br /> | 3000 |<br /> +----------+<br /> </pre> Le tri est fait de fa&ccedil;on correcte. Si nous changeons le type de la donn&eacute;e en texte, et que nous trions &agrave; nouveau. <br />Requ&ecirc;te: <code class="filename">SELECT left(numbers, 11) as numbersSTR from table order by numbersSTR</code> <br />Nous obtenons ce r&eacute;sultat: <pre> +------------+<br /> | NombresSTR |<br /> +------------+<br /> | 1 |<br /> | 10 |<br /> | 1000 |<br /> | 20 |<br /> | 30 |<br /> | 3000 |<br /> | 50 |<br /> | 500 |<br /> +------------+<br /> </pre> Ce r&eacute;sultat ne suit pas l'ordre math&eacute;matique des nombres. Dans le m&ecirc;me ordre d'id&eacute;e, si vous avez des nombres stock&eacute;s dans une champ text ou varchar, et que vous souhaitez les trier dans l'ordre croissant. Ce r&eacute;sultat sera surement mauvais.<br />Requ&ecirc;te: <code class="filename">select number from (table) order by number;</code> <pre> +--------+<br /> | Nombre |<br /> +--------+<br /> | 1 |<br /> | 10 |<br /> | 2 |<br /> | 3 |<br /> | 4 |<br /> | 5 |<br /> | 6 |<br /> | 7 |<br /> | 8 |<br /> | 9 |<br /> +--------+<br /> </pre> Pour palier ce probl&egrave;me, vous pouvez utiliser cette astuce.<br />Requ&ecirc;te: <code class="filename">select number from (table) order by (number+0);</code> <pre> +--------+<br /> | Nombre |<br /> +--------+<br /> | 1 |<br /> | 2 |<br /> | 3 |<br /> | 4 |<br /> | 5 |<br /> | 6 |<br /> | 7 |<br /> | 8 |<br /> | 9 |<br /> | 10 |<br /> +--------+<br /> </pre> Le r&eacute;sultat est celui attendu. (champ + 0 ) convertit le texte/le caract&egrave;re en nombre. Ainsi le tri est fait correctement. Wed, 04 Nov 09 23:16:00 +0100 http://renaudguezennec.homelinux.org/ 5 pas de l'acceptation d'un super pouvoir Je regarde beaucoup de s&eacute;ries am&eacute;ricaines et autres films de science-fiction. <br />Un th&egrave;me r&eacute;current dans ce genre de support culturel : les super pouvoirs. <br />En effet, il est fr&eacute;quent qu'un personnage se voit doter d'un super pouvoir. <br />Gr&acirc;ce &agrave; celui-ci, il fera basculer l'histoire. Bien entendu, le m&eacute;chant lui aussi aura des super pouvoirs. &nbsp;<br /><br />Malheureusement, la mal-connaissance de la psychologie du super h&eacute;ros fait qu'ils perdent souvent de pr&eacute;cieuses minutes de film pour prendre pleine possession de leur capacit&eacute;. <br />Il est vrai qu'il peut &ecirc;tre troublant de savoir voler ou traverser des murs, etc. &nbsp;<br /><br />A l'image, des 5&nbsp; &eacute;tapes de l'acceptation de la mort d&eacute;crites par Elisabeth K&uuml;bler-Ross (1969)<br />(source : http://fr.wikipedia.org/wiki/Elisabeth_K%C3%BCbler-Ross), j'ai imagin&eacute; les<br />5 &eacute;tapes de l'acceptation d'un super pouvoir:<br /><br /> <ul> <li><u>D&eacute;ni</u>: ce n'est pas possible, je r&ecirc;ve. </li></ul> <ul> <li><u>Rationalisation</u> : ce n'est pas rationnel vers c'est g&eacute;n&eacute;tique ou environnemental</li></ul> <ul> <li><u>Suppression</u>: essaie de l'arr&ecirc;ter, de gu&eacute;rir ou la dissimulation</li></ul> <ul> <li><u>Compr&eacute;hension</u>: d&eacute;couverte de l'utilit&eacute; et des capacit&eacute;s compl&egrave;tes. (&ccedil;a peut sauver des vies ou me rapporte de l'argent, ou m'aider &agrave; me venger)</li></ul> <ul> <li><u>Utilisation</u> : pour le bien ou le mal </li></ul> Sun, 01 Nov 09 20:34:28 +0100 http://renaudguezennec.homelinux.org/ Index des sites bash.org-like Il existe une multitude de sites pr&eacute;sentent du contenu humoristique de quelques lignes:<br /><br />Le premier d'entre eux:<br /><a href="http://www.bash.org">www.bash.org</a> : [anglais] regroupe des perles de chat IRC. Cela s'adresse plut&ocirc;t &agrave; un public de geek. <br /><br />Il existe une version fran&ccedil;aise:<br /><a href="http://danstonchat.com">http://danstonchat.com/</a> : regroupe des perles de chat IRC. Cela s'adresse plut&ocirc;t &agrave; un public de geek. <br /><br />VDM reste une r&eacute;f&eacute;rence. Loin d'&ecirc;tre mon pr&eacute;f&eacute;r&eacute;, il est cependant tr&egrave;s souvent mise &agrave; jour car il est tr&egrave;s connu. <a href="www.viedemerde.fr">www.viedemerde.fr</a><br /><br />Geekscottes est la r&eacute;f&eacute;rence pour les linuxiens et autres libristes. C'est un blog BD <a href="http://nojhan.net/geekscottes/">http://nojhan.net/geekscottes/</a> assez amusant. <br /><br /><br />Toujours en informatique: <a href="http://www.pebkac.fr">www.pebkac.fr</a> car le probl&egrave;me est toujours entre le clavier et la chaise. <br /><br /><br />Dans des d&eacute;marches plus &eacute;ducatives : <br /><a href="http://www.retourneaucm1.com">http://www.retourneaucm1.com/</a> et <a href="http://copies.doubles.free.fr/index2.html">http://copies.doubles.free.fr/</a><br />Malheureusement, il ne sont pas tr&egrave;s bien entretenu et ne propose que peut de fonctionnalit&eacute; de recherche. <br /><br />Il en existe bien d'autres. Je l'ai rajouterai au fur et &agrave; mesure.<br /><a href="http://copies.doubles.free.fr/index2.html"><br /><br /></a><br /> Mon, 05 Oct 09 23:35:07 +0200 http://renaudguezennec.homelinux.org/ GNU/Linuxien sous Mac OS - ÉPISODE 2 <h2>La d&eacute;couverte:</h2>Il y a deux choses qui frappent quand on utilise un mac pour la premi&egrave;re fois. <br /><br />La premi&egrave;re, c'est l'effort fait pour &ecirc;tre diff&eacute;rent: <br /> <ul> <li>La liaison pivot de l'&eacute;cran qui n'offre aucun jeu. C'est tr&egrave;s agr&eacute;able &ccedil;a donne tr&egrave;s rapidement un sentiment de solidit&eacute;. </li> <li>Aucun syst&egrave;me de crochet pour maintenir l'&eacute;cran en position ferm&eacute;. <br /></li></ul>Apple fait un effort particulier sur le packaging . <br /> <ul> <li>Le carton m&ecirc;me est vraiment adapt&eacute; au MacBook. <br /></li> <li>Le livre de la documentation.</li> <li>Le touchpad est vraiment pr&eacute;cis mais il demande une force &eacute;norme pour activer le clique. J'ai cru pendant quelques jours qu'il ne cliquait pas...<br /></li> <li>Le d&eacute;marrage est vraiment travaill&eacute;. Vous n'avez pas d'&eacute;cran noir qui indique le chargement du disque. Pas d'&eacute;cran pour le bios. <br /></li></ul>Bref, on se dit: c'est quand m&ecirc;me une belle b&ecirc;te. Cet avantage vient uniquement du faite qu'Apple fait le mat&eacute;riel et le logiciel. Ils peuvent donc vraiment faire une int&eacute;gration. <br /><br /><br /><br /> <h2>Premi&egrave;res utilisations :</h2>J'avais des inqui&eacute;tudes par rapport au clavier Mac et leurs raccourcis bizarres. Ce n'est pas trop dramatique en faite.<br /><br />Le syst&egrave;me de barre de t&acirc;che et de menu dans Dock est je trouve tr&egrave;s d&eacute;routant. Pour moi, c'est pas un gros probl&egrave;mes mais pour un d&eacute;butant comme faire la diff&eacute;rence entre une application en ex&eacute;cution et un raccourci ? Tout est m&eacute;lang&eacute;. <br /><br />La barre de menu tout en haut, c'est une bonne id&eacute;e. <br />Le finder qui est une sorte d'exploreur de fichier et de menu application. C'est tr&egrave;s particulier par contre. <br /><br /><br />Bon &ccedil;a sera tout pour aujourd'ui. Prochaine &eacute;pisode: D&eacute;velopper sous Mac Os.<br /><br /> Thu, 17 Sep 09 15:53:15 +0200 http://renaudguezennec.homelinux.org/ L'Écosse en 10 jours Je vais d&eacute;crire, ici, comment j'ai fait pour visiter l'&eacute;cosse en 10 jours:<br />le parcours, les choses biens et les choses moins biens.<br /><br /> <h4>Premier et deuxi&egrave;me jours:</h4>Tout d'abord, l'arriv&eacute;e &agrave; Glasgow: ville tr&egrave;s peu touristique mais bon sympa quand m&ecirc;me. Je pense qu'Edimbourg est plus joli. <br />Je suis rester deux jours sur Glasgow. Il y a un ou deux mus&eacute;es sympathiques. Globalement, une petite journ&eacute;e suffit pour visiter Glasgow.<br /><br /> <h4>Troisi&egrave;me jour:</h4>En suite,&nbsp; direction le nord:<br />La ville de Stirling, haut-lieu de la lutte pour l'ind&eacute;pendance &eacute;cossaise, tr&egrave;s touristique (ch&acirc;teau, monument et champs de batailles).<br />Dans les environs, il y a ,au nord, Trossachs &agrave; voir puis l&eacute;g&egrave;rement au sud le loch Katrine. Il est possible de faire une superbe ballade &agrave; v&eacute;lo ou &agrave; pied. Je vous conseille d'y passer une bonne journ&eacute;e enti&egrave;re pour faire le tour du Lock tranquillement (Location de v&eacute;lo sur place).<br /><br /> <h4>Quatri&egrave;me jour:</h4>Par la suite, j'ai pris la route Balloch -&gt; inveraray -&gt;&nbsp; Kilmartin -&gt; Oban -&gt; Glencoe. Clairement, seul Glencoe vaut le coup d'oeil. Sur le trajet, vous trouverez un mus&eacute;e et/ou des lieux important sur l'histoire pr&eacute;historique de l'&eacute;cosse.<br /><br />Si j'avais su:<br />J'aurais pris une location, directement, autour de Fort william, pour plusieurs jours. De l&agrave;, il est possible de faire: Glencoe, l'&icirc;le de Skye par le f&eacute;rie et revenir par le pont ainsi que le Loch Ness. <br /><br /> <h4>Cinqui&egrave;me jour: </h4>D&eacute;part de Glencoe, direction Arisaig/Mallaig avec au passage le loch Morar qui est le plus profond d'&eacute;cosse. Entre temps, nous avons visit&eacute; Fort William. <br /><br /> <h4>Sixi&egrave;me jour : </h4>&icirc;le de Skye en f&eacute;rie, visite de l'&icirc;le, je suis parti par le pont &agrave; Kyleakin. Apr&egrave;s le pont, il y a le Eilann Donan Castle &agrave; visiter. Les environs sont aussi &agrave; voir. Retour &agrave; l'hotel par Spean Bridge. <br /><br /> <h4>Septi&egrave;me jour : </h4>Longer le loch Ness direction Inverness, puis aller vers Glen Affric. C'est magnifique, le loch Ness c'est vraiment trop banal par rapport &agrave; &ccedil;a. <br /><br /> <h4>Huiti&egrave;me jour:</h4>D&eacute;part de Bonar Bridge vers Tongue, grosse travers&eacute;e des Highlands. j'ai visit&eacute; Durness puis j'ai long&eacute; la c&ocirc;te jusqu'a Thurso. <br /><br /> <h4>Neuvi&egrave;me jour:</h4>J'ai suivi la route de la c&ocirc;te pour aller &agrave; Inverness. Il faut pr&eacute;voir des arr&ecirc;ts fr&eacute;quents, il y a pas mal de ch&acirc;teaux sur la route.&nbsp; J'ai fini la journ&eacute;e par la visite d'Inverness. <br /><br /> <h4>Dixi&egrave;me jour:</h4>La travers&eacute;e du parc Naturel au sud de Inverness est &agrave; faire. J'ai continu&eacute; d'aller vers le sud, pour voir Saint Andrews.<br />L'&eacute;tape la plus dure: le retour &agrave; l'a&eacute;roport de Glasgow, dans la soir&eacute;e.&nbsp; <br /><br /><br /><br /><br /><br /> Sun, 13 Sep 09 21:36:10 +0200 http://renaudguezennec.homelinux.org/ PlayListGenerator <h3 class="contenttext">PlayListGenerator</h3> PlayListGenerator is a free software.<br /> PlayListGenerator can create, manage a playlist. It is also possible to<br /> amend mp3 files tags. Of course, it allows to save, load, export<br /> and import your playlist. In version 0.9.1, thanks to phonon framework, you can also listen to your songs. <br /><br />The playlist can be viewed in two different widgets:<br /><b>Table</b> : One line per file. <br />or<br /><b>Tree</b>: I use the following hierarchy to show the playlist:<br /><br />Artist Name 1<br />&nbsp;&nbsp; Album Name 1<br />&nbsp;&nbsp; Album Name 2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Song 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Song2<br />Artist Name 2<br /><br /> <h4>Todo:</h4>I'm working on new view to display the list:<br />One will use a real list (not a table) <br />and <br />Perhaps I will try to use QGraphicsScene to display it as a grid.<br /><br />I also started to work on a regexp wizzard which will help you to amend with all fields.<br /> <br /> <h4>Change log:</h4><br /> <h5 class="contenttext">[Features]<br /></h5> <p> -add feature to play songs.</p> <p> -add new tab to display the playlist in QList</p> <p> -modified Doxyfile for automatic generation</p> <p> -Cut/past selected items to somewhere in the list</p> <p> -Add command MoveSelectionTo</p> <p> -Add plugins support</p> <p> -Lyrics viewer is in process</p> <p> -save statut of the player dock</p> <p> -The finding assistant works but it uses too much the cpu.</p> <p> -Add Management of ogg, mpc, flac and other sound file format.</p> <p> -The documentation is in two languages: French and English.(But it doesn't</p> <p> finish)</p> <p> -Song seeker and double click event involve the display of the selected item</p> <p> in the middle of the tableView.</p> <h3 class="contenttext"> </h3> <p><br /></p> <h5> [Fixed Bugs]</h5> <p> -Weird behaviour of the playing</p> <p> -the reading song is in bold and no others</p> <h3 class="contenttext"> </h3> <p><br /></p> <h5> [Known Issues]</h5> <p> -Documentation is not complete.</p> <p> -Lyrics finder is not complete.</p> <p> -regex wizzard must not be used. </p> <h3 class="contenttext"> </h3> <p><br /></p> <h5> [TODO]</h5> <p> -Manage closing of tab</p> <p> -Improve the regex wizzard.</p> <p> -Lyrics viewer: Looking for lyrics from many websites.</p> <p> -Thinking about support of database such as Sqlite.</p> <p> -Autamatic search in tree hierarchy pick up all supported file formats.</p> <br /> <h4>Languages:</h4>English, French.<br /><br /> <h4>Screenshot:</h4><a href="http://renaudguezennec.homelinux.org/prog/Projet/PlayListGenerator/img/Capture.png" rel="lightbox" title="PlayListGenerator.png"><img src="prog/Projet/PlayListGenerator/img/miniature/mini_Capture.png" alt="playlistgenerator" title="playlistgenerator" border="0" /></a><br /><br /> Sun, 13 Sep 09 13:20:29 +0200 http://renaudguezennec.homelinux.org/ Rester r&eacute;actif pendant un traitement long avec Qt4 et le design pattern Command Ce petit tutoriel vous explique comment utiliser des QThread afin de garder une certaine r&eacute;activit&eacute; lors d'un traitement long avec Qt4 et un design pattern command. Wed, 02 Sep 09 03:54:56 +0200 http://renaudguezennec.homelinux.org/ Astuce de configuration de ssh. Bonjour.<br />Aujourd'hui, une petite astuce ssh pour configurer vos&nbsp; hostnames. <br />Il est souvent fastidieux d'&eacute;crire compl&egrave;tement le nom de domaine d'un serveur. Surtout, si vous en avez (comme moi) un tr&egrave;s long. Il est aussi pas souvent &eacute;vident de retenir les adresses ip de tous les PC sur votre r&eacute;seau local. <br /><br /><br />Pour se faire:<br />Editez le fichier <code class="filename">~/.ssh/config</code> (s'il n'existe pas, cr&eacute;ez le)<br />Ajoutez ceci:<br /><pre class="code">host toto<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User myuser<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hostName toto.homelinux.org<br /> IdentityFile /home/utilisateur_client/.ssh/cle_priv&eacute;e<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ForwardX11 yes</pre><br /><span style=""></span>host est l'alias qui sera utilis&eacute; dans vos connexions ssh (donc un truc cours est recommand&eacute; [ici toto]) .<br />User est le nom de l'utilisateur &agrave; utiliser pour la connexion [ici myuser]. <br />hostname est l'adresse ou l'ip du serveur &agrave; atteindre [ici toto.homelinux.org].<br />IdentityFile permet de sp&eacute;cifier quelle cl&eacute; doit &ecirc;tre utilis&eacute;e. <br />ForwardX11 permet d'autoriser ou non le transfert de trame X11. <br /><br />Au lieu de faire : <code class="filename">ssh -X myuser@toto.homelinux.org -i /home/utilisateur_client/.ssh/cle_priv&eacute;e</code><br /><br />il suffit maintenant de faire<br /><code class="filename">ssh toto</code><br /><br />Plus pratique n'est- ce pas ?<br /><br />Quel avantages y a-t'il par rapport &agrave; d&eacute;finir un alias ?<br />Il est vrai qu'un alias peut suffir mais le gros plus de cette technique c'est que cela marche avec toutes les commandes qui utilise du ssh, c'est &agrave; a dire : ssh, svn+ssh, scp et certaiement bien d'autre. <br />Il vous faudra d&eacute;finir un alias pour chaque commande, c'est un peu lourd, je trouve.<br /><br /><br />Bien entendu, il existe des syst&egrave;mes plus puissant que l'astuce d'aujourd'hui pour r&eacute;gler &ccedil;a. Le rapport temps/service est, je pense int&eacute;ressant. <br /><br /><br />Plus d'info: <a target="" href="http://www.delafond.org/traducmanfr/man/man5/ssh_config.5.html">man page</a><br /><br /> Thu, 27 Aug 09 21:33:09 +0200 http://renaudguezennec.homelinux.org/ Pipe versus regexp Bonjour, <br />Au cours, d'une conversation sur IRC, j'ai &eacute;mit l'id&eacute;e que l'utilisation de <code class="filename">pipe</code> entre diff&eacute;rent <code class="filename">grep</code> serait certainement aussi, voir plus, performant qu'une expr&eacute;ssion r&eacute;guli&egrave;re. Les r&eacute;sultats m'ont donn&eacute; raison mais je ne pensais pas que la diff&eacute;rence serait si importante. <br /><br />Voici les r&eacute;sultats:<br />Taille des donn&eacute;es : 360 ko<br /><pre class="code">time cat corps6.txt | grep -Ev [&eacute;&egrave;&ecirc;&ccedil;&agrave;&ugrave;&ucirc;&ocirc;&icirc;] </pre>real&nbsp;&nbsp;&nbsp; 0m0.823s<br />user&nbsp;&nbsp;&nbsp; 0m0.072s<br />sys&nbsp;&nbsp;&nbsp; 0m0.016s<br /><br /><br /><pre class="code">time cat corps6.txt | grep -Ev &eacute; <br />| grep -Ev &egrave; | grep -Ev &ecirc; <br />| grep -Ev &ccedil; | grep -Ev &agrave; <br />| grep -Ev &ugrave; | grep -Ev &ucirc; <br />| grep -Ev &ocirc; | grep -Ev &icirc; </pre>real&nbsp;&nbsp;&nbsp; 0m0.477s<br />user&nbsp;&nbsp;&nbsp; 0m0.028s<br />sys&nbsp;&nbsp;&nbsp; 0m0.032s<br /> <hr size="2" width="100%" /><br />Taille des donn&eacute;es: 9 mo<br /><pre class="code">time cat corps6.txt | grep -Ev [&eacute;&egrave;&ecirc;&ccedil;&agrave;&ugrave;&ucirc;&ocirc;&icirc;] </pre>real&nbsp;&nbsp;&nbsp; 0m6.992s<br />user&nbsp;&nbsp;&nbsp; 0m1.212s<br />sys&nbsp;&nbsp;&nbsp; 0m0.252s<br /><br /><br /><pre class="code">time cat corps6.txt | grep -Ev &eacute;<br />| grep -Ev &egrave; | grep -Ev &ecirc; <br />| grep -Ev &ccedil; | grep -Ev &agrave; <br />| grep -Ev &ugrave; | grep -Ev &ucirc; <br />| grep -Ev &ocirc; | grep -Ev &icirc; </pre>real&nbsp;&nbsp;&nbsp; 0m7.008s<br />user&nbsp;&nbsp;&nbsp; 0m0.148s<br />sys&nbsp;&nbsp;&nbsp; 0m0.180s<br /> <hr size="2" width="100%" /><br />Taille des donn&eacute;es: 92 mo<br /><pre class="code">time cat corps6.txt | grep -Ev [&eacute;&egrave;&ecirc;&ccedil;&agrave;&ugrave;&ucirc;&ocirc;&icirc;] </pre><br />real&nbsp;&nbsp;&nbsp; 1m10.425s<br />user&nbsp;&nbsp;&nbsp; 0m13.305s<br />sys&nbsp;&nbsp;&nbsp; 0m1.024s<br /><br /><br /><pre class="code">time cat corps6.txt | grep -Ev &eacute; <br />| grep -Ev &egrave; | grep -Ev &ecirc; <br />| grep -Ev &ccedil; | grep -Ev &agrave; <br />| grep -Ev &ugrave; | grep -Ev &ucirc; <br />| grep -Ev &ocirc; | grep -Ev &icirc; </pre>real&nbsp;&nbsp;&nbsp; 0m48.086s<br />user&nbsp;&nbsp;&nbsp; 0m1.568s<br />sys&nbsp;&nbsp;&nbsp; 0m1.048s<br /> Fri, 31 Jul 09 03:03:36 +0200 http://renaudguezennec.homelinux.org/ GNU/Linuxien sous Mac OS - ÉPISODE 1 Ce petit article est le premier d'une s&eacute;rie qui traitera des diff&eacute;rences, des avantages et des inconv&eacute;nients des ordinateurs Mac. &eacute;tant GNU/Linuxien depuis bient&ocirc;t 3 ans, mes exemples seront certainement bas&eacute;s sur la diff&eacute;rence entre ces deux syst&egrave;mes.<br /><br />Pour vous donnez un id&eacute;e, je suis adepte des distributions utilisant Gnome + apt (Ubuntu ou Debian).<br /><br />J'ai r&eacute;cemment fait l'acquisition d'un MacBook Pro.<br />Commen&ccedil;ons par la premi&egrave;re diff&eacute;rence: le prix<br /><br /> <h3>Mon Mac : </h3>&nbsp;&nbsp;&nbsp; * Processor 065-8455 3.06GHz Intel Core 2 Duo<br />&nbsp;&nbsp;&nbsp; * Memory 065-8457 4GB 1066MHz DDR3 SDRM-2x2GB<br />&nbsp;&nbsp;&nbsp; * Hard Drive 065-8463 500GB Serial ATA Drive@7200rpm<br />&nbsp;&nbsp;&nbsp; * Optical Drive 065-8466 SuperDrive 8X DL<br />&nbsp;&nbsp;&nbsp; * Display 065-8668 MBP 15 Glossy WS Display<br />&nbsp;&nbsp;&nbsp; * Apple Keyboard &amp; User's Guide FZ065-8481 Keyboard/Users Guide-FZ<br />&nbsp;&nbsp;&nbsp; * Country Kit/AEX 065-8484 Country Kit<br /><br /><span style="">Prix</span> : $2,649.00 soit 1863,52 &euro;<br />Si je l'avais achet&eacute; en France, dans ma m&ecirc;me configuration. Il m'aurait cout&eacute; 2.414,01 &euro;. <br />J'ai donc &eacute;conomis&eacute; 550 &euro;<br /><br /><font size="1">*Source store.apple.com/fr/</font><br /><br />Comparons maintenant au prix d'un ordinateur d'une autre marque &eacute;quip&eacute; du syst&egrave;me &agrave; la fen&ecirc;tre. <br />Sur LDLC, il existe seulement 3 ordinateurs poss&eacute;dant + ou - les m&ecirc;mes configurations: <br /> <table class="Table_admin"> <tbody> <tr> <th>Mod&egrave;le</th> <th>Prix</th> <th>Diff&eacute;rence</th> </tr> <tr> <td>Toshiba Qosmio G50-123</td> <td>1335,96 &euro;</td> <td>500 Go en deux disques durs</td></tr> <tr> <td>Toshiba Qosmio G50-136</td> <td>1295,96 &euro;</td> <td>500 Go en deux disques durs</td></tr> <tr> <td>Sony VAIO AW21Z/B</td> <td>1975,96 &euro;</td> <td>500 Go + 1 SSD de 64 Go</td></tr> </tbody></table> <br /><br />Ils sont tous moins chers que le MacBook Pro (sur la base du prix fran&ccedil;ais). Le Sony a un argument de poids pour justifier son<br />prix : le SSD. Les toshiba sont moins cher. <br />Le Mac les surclasse tous en terme de cadence processeur (3 Ghs contre 2.66).<br />Les &eacute;crans des 3 sont tous des 18 pouces. Mon mac seulement 15 mais les 4 utilisent la m&ecirc;me r&eacute;solution. <br /><br />L'ayant acheter aux USA, j'ai fait une assez bonne op&eacute;ration. Au final, le prix est assez r&eacute;sonnable alors que le prix fran&ccedil;ais<br />est vraiment de trop cher compar&eacute; &agrave; des PC de la m&ecirc;me cat&eacute;gorie. <br /><br /><span style="">Prochaine &eacute;pisode</span>: la d&eacute;couverte du syst&egrave;me. <br /><br /><font size="1">PS: la licence de la photo.<br />Ce fichier est publi&eacute; sous la licence Creative Commons Attribution ShareAlike 3.0. En r&eacute;sum&eacute; : vous &ecirc;tes libre de redistribueret faire des corrections de cette &oelig;uvre sous r&eacute;serve de mentionner clairement son auteur, et de la publier sous une licencecompatible avec celle-ci.</font> Sat, 25 Jul 09 05:56:57 +0200 http://renaudguezennec.homelinux.org/ Rolisteam 1.0-Release Candidate Bonjour,<br /><br />J'ai repris, il y a maintenant quelques mois, le d&eacute;veloppement de rolistik. C'est un software d&eacute;velopp&eacute; en Qt4 pour permettre a des personnes &eacute;loign&eacute;es les unes des autres, de jouer &agrave; des jeux de r&ocirc;les. <br /> <h3>Quelques fonctionnalit&eacute;s : </h3> <ul> <li>Partage de carte</li> <li>Partage d'image</li> <li>Jet de d&eacute;s</li> <li>Conversation commune ou priv&eacute;e</li> <li>Ambiance musicale partag&eacute;e</li></ul> <h3>Mes principales modifications:</h3> <ul> <li>Portage sous GNU/Linux</li> <li>Passage &agrave; phonon <br /></li> <li>Support du 64 bits</li> <li>Conversion de la documentation chm vers une document Qt assistant</li> <li>Support des noms de domaine pour la connexion r&eacute;seau<br /></li> <li>R&eacute;duction de bugs</li></ul> <h3>Je pr&eacute;vois de nombreuses autres am&eacute;liorations:</h3> <ul> <li>Refonte du syst&egrave;me de dessin</li> <li>Refonte de la gestion r&eacute;seau</li> <li>Traduction des sources vers l'anglais</li> <li>Support de l'internationalisation</li> <li>Assistant graphique pour le jet de d&eacute;s</li> <li>Meilleure gestion des droits de chaque joueur</li> <li>Support de plugin pour l'aide sp&eacute;cialiser &agrave; certain jeu de r&ocirc;les: fiches de personnage, etc.&nbsp;</li></ul> <h3>Si vous souhaitez avoir plus d'information: </h3> <ul> <li><a href="http://code.google.com/p/rolisteam/">http://code.google.com/p/rolisteam/</a> Site du projet sur google code</li></ul>Vous pouvez aussi t&eacute;l&eacute;charger une version binaire pour ubuntu 9.04. <ul> <li><a href="http://renaudguezennec.homelinux.org/blog,3-16.html">Binaire de la Release Candidate</a></li></ul>Je vous tiendrai au courant de l'&eacute;volution de ce projet. Sat, 11 Jul 09 22:15:12 +0200 http://renaudguezennec.homelinux.org/ IrregularVerbs <h1>Irregular Verbs</h1> C'est un applet GNOME qui s'incruste dans le tableau de bord. Il affiche un verbe irr&eacute;gulier anglais. Ce verbe change chaque jour. <br />Il est affich&eacute; de la fa&ccedil;on suivante:<br /><b>Infinitif - Pr&eacute;t&eacute;rit - Participe pass&eacute; - Traduction</b>&nbsp; <br />Il permet ainsi d'am&eacute;liorer sa connaissance sans se forcer. <br /><br /><br />IrregularVerbs is a GNOME applet which is displayed on the GNOME panel. Each day, It shows a new english irregular verb. <br />So well, you can see:<br /><b>Infinitive -&nbsp; </b><b>Simple Past - </b><b>Past Participle - French translation<br /><br /><br /></b><br /> <h3>Installation</h3>L'installation se fait pas la ligne de commande.<br /><br /> <ul> <li>Extraire l'archive ( tar -xzvf IrregularVerbs-*.tar.gz )<br /> </li> <li>Aller dans le dossier : cd IrregularVerbs<br /> </li> <li>make<br /> </li> <li>sudo make install<br /> </li> <li>Clique-droit sur le tableau de bord GNOME.<br /> </li> <li>Ajouter au tableau de bord...<br /> </li> <li>Choississez IrregularVerbs<br /> </li> <li>Glissez/D&eacute;posez. <br /></li></ul><br />The installation should be done thank to the command line.<br /><br /> <ul> <li>Extract the archive ( tar -xzvf IrregularVerbs-*.tar.gz )<br /> </li> <li>Go to the directory : cd IrregularVerbs<br /> </li> <li>make<br /> </li> <li>sudo make install<br /> </li> <li>Right click on the GNOME panel<br /> </li> <li>Add to GNOME panel<br /> </li> <li>Pick up IrregularVerbs<br /> </li> <li>Drag and drop where you want. <br /></li></ul><br /> <h3>Utilisation / How to use:</h3>Il y a rien de particulier &agrave; faire. Apr&egrave;s minuit, vous pouvez faire un clicque droit puis cliquer sur "Mise &agrave; jour" , pour forcer le rafra&icirc;chissement. <br /><br />After mid-night, you can refresh the displayed verb by these actions : Right-click on the applet &gt; click on "Update" .<br /><br /><br /> <h3><b>Objectifs / Goals:</b></h3>Dans le futur, je pense faire de cette application quelque chose de plus g&eacute;n&eacute;rique. Elle permettra &agrave; termes d'afficher n'importe quel document: La liste des d&eacute;partements fran&ccedil;ais, des &eacute;tats am&eacute;ricains ou la classification des &eacute;l&eacute;ments. <br /><br />Next versions of IrregularVerbs will be more generic. It will allow you to learn any kind of list: French department, every states of the USA or anything else. <br /><br /> <h3>D&eacute;pendences / Dependencies :</h3> <ul> <li>Gnome</li> <li>libpanelapplet-2.0-dev</li></ul> Thu, 14 May 09 05:18:24 +0200 http://renaudguezennec.homelinux.org/ la Ratatouille (Pour 3-4 Personnes) Voici une version personnelle de la ratatouille. Il existe des centaines de recettes pour la ratatouille.<br />Plus encore, vous pouvez faire 100 fois la m&ecirc;me recette &agrave; la lettre, votre plat ne sera jamais pareil. C'est l&agrave; que r&eacute;side tout l'int&eacute;r&ecirc;t.<br />C'est ce genre de plat qui necessite l'intuition culinaire. <h3>Ingr&eacute;dients:</h3><ul><li>5 courgettes</li><li>3 aubergines </li><li>2 poivrons</li><li>2 oignons</li><li>3 gousses d'ail enti&egrave;res (avec la peau)</li><li>huile d'olives</li></ul><br /><h3>La pr&eacute;paration:</h3><br /><ul><li>Couper les oignons en fines lamelles. Mettre &agrave; chauffer une cocotte avec au fond un filet d'huile d'olive (bien qu'une grande casserole&nbsp; puisse faire l'affaire)</li><li>1&nbsp;min - Faire dorer les oignons dans la cocotte.</li><li>Quand les oignons sont transparent ajouter les courgettes coup&eacute;es en morceaux: faire un peu cuire et dorer. (Voir &agrave; la fin comment couper les l&eacute;gumes). Mettre &agrave; feu moyen (voir doux) - 3-4 mins.</li><li>Si vous avez le temps,&nbsp;&eacute;gouter les courgettes les stocker dans un saladier &agrave; part sinon&nbsp;laisser les dans la cocotte - (3-4 mins).</li><li>Ajouter les aubergines coup&eacute;es en petits moceaux. Attendre 15 minutes, que les aubergines aient le temps de cuirre un peu puis remettre les courgettes: (30 mins)&nbsp;</li><li>Quand c'est bienramolli, ajouter les poivrons coup&eacute;s en lani&egrave;res. M&eacute;langer et faire cuire doucement. (20 mins voir beaucoup plus)</li><li>Mettre les 3 gousses d'ail &eacute;cras&eacute;es, saler et poivrer. Ajouter une grosse cuill&egrave;re &agrave; soupe de concentr&eacute; de tomate et m&eacute;langer. (30 mins)&nbsp;</li><li>A la fin, ajouter un peu d'huile d'olives pour le moelleux.</li></ul><br /><h3>FAQ:</h3><br /><ul><li>Couper les l&eacute;gumes?Pour les courgettes et aubergines, enlever la t&ecirc;te du l&eacute;gumes, couper les en 4 dans le sens de la longueur. Puis couper les 4 bandes dans la largeur tous les centimetres et demi.&nbsp; Si &ccedil;a vous semble gros c'est normal apr&egrave;s la cuisson ils seront plus petit et tr&egrave;s tendre. </li></ul><br /><h4>Autres Images:</h4><a href="http://renaudguezennec.homelinux.org/blog,3-15.html" rel="lightbox" title="premi&egrave;re &eacute;tapes Ratatouille"><img class="blog_msg_imgmsg" src="http://renaudguezennec.homelinux.org/blog/image/miniature/mini_DSC00142.JPG" alt="premi&egrave;re &eacute;tapes Ratatouille"/></a> Sun, 26 Apr 09 03:59:14 +0200 http://renaudguezennec.homelinux.org/ Faire un stage aux État-Unis: obtenir un visa Dans ce pr&eacute;sent topic, je vais d&eacute;crire les diff&eacute;rentes &eacute;tapes que j'ai <br /> dues effectuer pour faire mon stage de Master2 informatique dans une entreprise am&eacute;ricaine.<br /> <br /> Je donnerai pour chaque &eacute;tape avec une date la plus pr&eacute;cise possible.<br /> Information importante: mon stage commen&ccedil;ait le 2 f&eacute;vrier pour se terminer le 31 juillet.<br /> <br /> <br /> <h3>Trouver l'entreprise</h3><br /> le 3 novembre, j'ai eu la confirmation de la part de la soci&eacute;t&eacute; am&eacute;ricaine qu'ils &eacute;taient d'accord pour me prendre<br /> en stage. Je me suis donc renseign&eacute; pour les formalit&eacute;s administratives. J'ai aussi commenc&eacute; &agrave; rechercher un <br /> appartement.<br /> <br /> <br /> <h3>Recherche de logement</h3><br /> J'ai trouv&eacute; mon logement sur le site <a href="http://www.craigslist.org/about/sites">craigslist</a>. C'est un site <br /> assez difficile &agrave; comprendre aux premiers abords. Il faut s&eacute;lectionner la zone g&eacute;ographique souhait&eacute;e et ensuite vous<br /> avez des centaines d'offres. J'ai trouv&eacute; une collocation chez une femme. C'est cher pour la surface mais bon elle est <br /> serviable et c'est que pour six mois. La recherche de logement est ce qui m'a le plus retard&eacute; pour la proc&eacute;dure de visa.<br /> <br /> <br /> <h3>Obtenir un visa</h3><br /> Le visa pour un stage est le J-1. Pour l'obtenir, je suis pass&eacute; par <a href="http://www.parenthese-paris.com/">parenth&egrave;se</a>.<br /> Le cycle pour obtenir le visa c'est : <br /> -Le formulaire DS7002 est le premier truc &agrave; remplir. Il est en deux parties: une &agrave; remplir par le stagiaire et une autre<br /> par l'entreprise am&eacute;ricaine. Vous devez donner une adresse de r&eacute;sidence sur le DS7002. C'est cette petite condition <br /> qui m'a fait perdre un bon mois. <br /> Dans la partie que vous devez remplir, vous devez fournir une preuve de votre niveau d'anglais (TOEIC/Autres examens du genre ou une <br /> lettre de votre professeur d'anglais.) Il faut aussi donner la raison de ce stage donc une preuve que ce stage fait partie<br /> de votre formation universitaire.<br /> -Le dossier d'inscription pour parenth&egrave;se (avec le ch&egrave;que). J'ai pay&eacute; 1200 &euro; environ pour un stage de six mois sachant que j'ai <br /> pay&eacute; 125 &euro; de frais non obligatoire (frais d'acc&eacute;l&eacute;ration et envoie par chronopost). Je pense qu'en <br /> &eacute;vitant de passer par une soci&eacute;t&eacute; vous ne payeriez que la moiti&eacute; (et encore pas s&ucirc;r).<br /> <br /> Une fois que le DS7002 et le dossier d'inscription sont pr&ecirc;ts, vous envoyez le tout &agrave; parenth&egrave;se. <br /> Si votre dossier est complet, une personne de parenth&egrave;se vous appellera pour vous poser trois questions<br /> en anglais. <br /> Donc l&agrave;, votre formulaire DS7002 part aux USA pour &ecirc;tre v&eacute;rifi&eacute; par le CIEE. Parenth&egrave;se devrait &agrave; ce moment-l&agrave;, vous donner une date<br /> pour la prise de rendez-vous &agrave; l'ambassade (sur Paris OBLIGATOIREMENT). <br /> Apr&egrave;s v&eacute;rification, le CIEE &eacute;dite alors un DS2019 (le truc super important) qui est renvoy&eacute; &agrave; parenth&egrave;se. <br /> Parenth&egrave;se vous renverra le DS2019 dans un dossier explicatif avec tous les documents necessaires: DS7002 sign&eacute; (c'est juste une feuille<br /> qui prouve que le DS7002 a &eacute;t&eacute; v&eacute;rifier), le DS2019, des lettres pour l'assurance etc.<br /> <br /> Pour mon cas, j'ai envoy&eacute; le dossier &agrave; parenth&egrave;se, le 15 d&eacute;cembre. Le 30 d&eacute;cembre, parenth&egrave;se m'envoyait le courrier avec toutes les pi&egrave;ces.<br /> parenth&egrave;se vous donnera les dates pour prendre un rendez-vous &agrave; l'ambassade. Compter un petit mois entre l'envoi de votre dossier <strong>complet</strong><br /> et le rendez-vous.<br /> <br /> <br /> <br /> <h4>Rendez-vous &agrave; l'ambassade</h4><br /> J'avais rendez-vous le 13/01 au matin &agrave; 8h. J'y suis all&eacute; vers 6h30. On nous installe derri&egrave;re des grilles de l'autre cot&eacute;<br /> de la rue. A 7h10, ils demandent aux personnes ayant rendez-vous entre 7h30 et 8h de rentrer. Ils contr&ocirc;lent vite fait vos affaires,<br /> votre passeport. Ils vous donnent une feuille d'instructions. La premi&egrave;re chose &agrave; faire apr&egrave;s avoir pass&eacute; les portes c'est de<br /> prendre un ticket. Ensuite, vous avez le temps de pr&eacute;parer votre dossier, comme il est demand&eacute; sur la feuille d'instructions<br /> (mettre tous les formulaires dans l'enveloppe chronopost). Maintenant, il ne reste plus qu'&agrave; attendre que votre num&eacute;ro soit appel&eacute;.<br /> Au premier appel, vous arrivez devant une fonctionnaire qui r&eacute;cup&egrave;re l'enveloppe, v&eacute;rifie vite-fait les pi&egrave;ces, prend vos empreintes digitales puis vous demande<br /> de vous rassoir.<br /> Au deuxi&egrave;me appel, ils ont normalement v&eacute;rifi&eacute; si toutes les pi&egrave;ces avaient &eacute;t&eacute; donn&eacute;es. Ils vous posent trois ou quatre questions (Moi c'&eacute;tait en fran&ccedil;ais, mais je pense que<br /> &ccedil;a d&eacute;pend de l'humeur du fonctionnaire et du type de visa).<br /> les questions : -Comment vous avez trouv&eacute; ce stage ?<br /> -Dans quelle ville ?-Dans quel &eacute;tat ? -Quel domaine ? Si tout c'est bien pass&eacute;, il vous dira qu'il a accord&eacute; le visa.<br /> Je suis sorti &agrave; 8h45, de l'ambassade. Ils ne m'ont m&ecirc;me pas regard&eacute; les autres pi&egrave;ces justificatives que j'avais pris (Convention de stage,<br /> preuve d'attachement &agrave; la France...)<br /> Cinq jours plus tard, vous recevrez dans l'enveloppe chronopost : votre passeport avec le visa ainsi que deux ou trois papiers importants.<br /> <br /> Voil&agrave;, c'est termin&eacute;. Sun, 15 Mar 09 19:24:30 +0100 http://renaudguezennec.homelinux.org/ gnome-mount-desktop <h2>Gnome-mount-desktop: switch your desktop, permutter votre bureau</h2><br /> <h3>Description:</h3>&nbsp;This is a gnome's applet to help you to mount another folder as desktop. <br /><br />C'est un applet gnome qui facilite le montage d'un autre dossier en tant que bureau. <br /><br /> <h3>Installation : </h3>-Extract files from the archive.<br />-Go to your install directory in the console<br />-Type these following commands:<br />make<br />sudo make install<br />-Right click on the Gnome&nbsp; top panel and select the first item of the popup menu: Add ...<br />-Look for Gnome Mount Dir Applet and drag it to the panel. Drop it. That's all.<br /><br /><br />-Extraire les fichiers de l'archive<br />-Avec la console, aller dans le r&eacute;pertoire d'installation<br />-taper les commandes suivantes:<br />make <br />sudo make install<br />-Faite un click droit sur le tableau de bord de Gnome. Selectionner Ajouter au tableau de bord <br />-Rechercher Gnome Mount Dir Applet dans la liste et d&eacute;poser le dans le tableau de bord.<br /><br /><br /> <h3>Use:</h3><object data="http://theorasea.org/itheora/index.php?v=http://renaudguezennec.homelinux.org/blog/file/out-3.ogv&amp;t=28&amp;n=Gnome-mount-desktop&amp;l=en" type="application/xhtml+xml" style="width: 420px; height:340px;"><!--[if IE]><iframe src= http://theorasea.org/itheora/index.php?v=http://renaudguezennec.homelinux.org/blog/file/out-3.ogv&amp;t=28&amp;n=Gnome-mount-desktop&amp;l=en style= width:420px; height:340px; allowtransparency= true frameborder= 0 ></iframe><![endif]--></object><br /> <h3>Dependencies, D&eacute;pendences :</h3>Gnome<br />libbonoboui2-dev<br />libbonobo2-dev<br /><br /> Tue, 24 Feb 09 03:01:33 +0100 http://renaudguezennec.homelinux.org/ Comment surcharger les op&eacute;rateurs &gt;&gt; et &lt;&lt; dans une hi&eacute;rarchie de classes? <p>Bonjour, dans la cat&eacute;gorie Astuce de programmation C++ : Comment surcharger les op&eacute;rateurs &gt;&gt; et &lt;&lt;dans une hi&eacute;rarchie de classes?</p><p>En fait, ce n'est pas possible mais il existe une petite astuce pour obtenir un comportement assez proche.<br /> Imaginons la situation suivante: vous avez un programme qui a un mod&egrave;le de donn&eacute;es qui ressemble agrave; &ccedil;a:</p> <pre class="code"><code> //une classe abstraite pure<br /> class A {<br /> string* name;<br />public:<br /> virtual string* getName()=0;<br /> }; </code><br /></pre> <br /> puis vous avez deux classes concr&egrave;tes qui h&eacute;rite de A.<br /> Ces deux classes ajoutent chacune un nouveau membre.<pre class="code"><code><br /> class B : public A<br /> {<br /> string* d;<br /> public:<br /> B();<br /> ~B();<br /> virtual string* getName();<br /> virtual void getD();<br /> };<br /> </code></pre><br /> <br /> et<br /> <pre class="code"><code><br /> class C : public A<br /> {<br /> int e;<br /> public:<br /> C();<br /> ~C();<br /> virtual string* getName();<br /> virtual void getE();<br /> <br /> };<br /> </code></pre> <p>Comment puis-je utiliser les op&eacute;rateurs &lt;&lt; et &gt;&gt; pour s&eacute;rialiser mes donn&eacute;es tout en s'assurant que toute<br /> nouvelle classe mod&eacute;lis&eacute;e r&eacute;impl&eacute;mentera les op&eacute;rateurs?</p> <br /> <p>La premi&egrave;re chose qui passe par la t&ecirc;te, c'est de se dire facile, je d&eacute;finis mes op&eacute;rateurs en m&eacute;thodes<br /> abstraites pures et le tour est jou&eacute; . Et bien non, h&eacute;las en C++, les op&eacute;rateurs &gt;&gt; et &lt;&lt; n'appartientent<br /> pas aux classes. Il sont d&eacute;clar&eacute;s en ami . C'est donc implossible d'obliger leurs r&eacute;impl&eacute;mentations.</p> <p>L'astuce consiste &agrave; d&eacute;finir les op&eacute;rateurs &lt;&lt; et &gt;&gt; pour la classe abstraite et d'ajouter des m&eacute;thodes virtuelles pures du genres read(); et write(); . Pour l'illustrer, je vais prendre un exemple: vous avez un programme qui g&egrave;re un parc de v&eacute;hicule: avion, voiture etc...</p> <p>Vous avez une classe abstraite avec une m&eacute;thode pure qui force &agrave; r&eacute;&eacute;crire la fonction de validation du<br /> num&eacute;ro d'immatriculation.</p> <br /><pre class="code"><code><br /> class Vehicule<br /> {<br /> int nb_passagers;<br /> int poids_capacite;<br /> string* immatriculation;<br /> public:<br /> virtual string* getImmatriculation();<br /> virtual bool immatriculationisValid()=0;<br /> virtual int getnb_passagers();<br /> virtual int getPoids();<br /> }; </code></pre> <p>Vous d&eacute;finissez deux classes qui h&eacute;ritent de Vehicule. (Bien s&ucirc;r, ma modelisation reste basique, je vous conseigne de mettre plusieurs niveaux de classes abstraites (Vehicule_Moteur, Vehicule_Mecanique etc). </p> <pre class="code"><code> class Avion : public Vehicule<br /> {<br /> int altitude_croisiere;<br /> string* carburant;<br /> public:<br /> virtual bool immatriculationisValid();<br /> virtual int getAltitude();<br /> virtual string* getCarburant();<br /> };<br /> class Voiture : public Vehicule<br /> {<br /> int kilometrage;<br /> string* carburant;<br /> public:<br /> virtual bool immatriculationisValid();<br /> virtual int getAltitude();<br /> virtual string* getCarburant();<br /> }; </code></pre> <p>Nous nous retrouvons dans le cas du dessus donc maintenant nous allons ajouter la d&eacute;claration des<br /> surcharges d'op&eacute;rateurs dans la classe abstraite ainsi que les fonctions abstraites pures pour la s&eacute;rialisation.</p> <pre class="code"><code> class Vehicule<br /> {<br /> int nb_passagers;<br /> int poids_capacite;<br /> string* immatriculation;<br /> public:<br /> virtual string* getImmatriculation();<br /> virtual bool immatriculationisValid()=0;<br /> virtual int getnb_passagers();<br /> virtual int getPoids();<br /> <br /> //fonctions abstraites pures<br /> virtual void read(istream &amp; in)=0;<br /> virtual void write(ostream &amp; out) const =0;<br /> //surcharges op&eacute;rateurs<br /> friend QDataStream&amp; operator&lt;&lt;(ostream&amp; os,const Vehicule&amp;);<br /> friend QDataStream&amp; operator&gt;&gt;(istream&amp; is,Vehicule&amp;);<br /> }; </code></pre> leur impl&eacute;mentation dans le point cpp: <pre class="code"><code> ostream&amp; operator&lt;&lt;(ostream&amp; os,const Vehicule&amp; c)<br /> {<br /> <br /> c.write(os);//grace au m&eacute;canisme du virtual, il ira chercher la m&eacute;thode write dans la classe fille;<br /> <br /> return os;<br /> }<br /> istream&amp; operator&gt;&gt;(istream&amp; is, Vehicule&amp; c)<br /> {<br /> c.read(is);<br /> return is;<br /> } </code></pre> L'&eacute;tape suivante est de d&eacute;finir les fonctions read et write dans les classes filles: je ne vais vous donner que l'exemple pour la classe voiture.<br /> //le .h<br /> <pre class="code"><code>class Voiture : public Vehicule<br /> {<br /> int kilometrage;<br /> string* carburant;<br /> public:<br /> virtual bool immatriculationisValid();<br /> virtual int getAltitude();<br /> virtual string* getCarburant();<br /> <br /> virtual void read(istream &amp; in);<br /> virtual void write(ostream &amp; out) const;<br /> }; </code></pre><br /> //le cpp<br /> <pre class="code"><code><br /> void Voiture::read(istream &amp; in)<br /> {<br /> in &gt;&gt; kilometrage ;<br /> in &gt;&gt; nb_passagers;<br /> in &gt;&gt; poids_capacite ;<br /> }<br /> void Voiture::write(ostream &amp; out) const<br /> {<br /> out &lt;&lt; kilometrage &lt;&lt; nb_passagers;<br /> }</code></pre><br /> <h3>Liens :</h3> <ul><li><a href="http://renaudguezennec.homelinux.org/accueil,3.html">Contactez-moi</a></li></ul> Sun, 15 Feb 09 17:31:19 +0100 http://renaudguezennec.homelinux.org/ SGNGD <h2>SvgGd is Not GD: SVG Charts for PHP<br /></h2><br /> <br /> <p><a href="prog/Projet/SGNGD/img/Capture.png" rel="lightbox" title="Capture.png"><img class="screen" src="prog/Projet/SGNGD/img/miniature/mini_Capture.png" alt="capture" /></a><span><a href="prog/Projet/SGNGD/img/Capture-1.png" rel="lightbox" title="Capture-1.png"><img class="screen" src="prog/Projet/SGNGD/img/miniature/mini_Capture-1.png" alt="capture" /></a></span><br /> </p> <br /> <br /> <br /> <h4>Description:</h4><span style="font-weight:" bold;="">SGNGD</span> is a PHP library to help you for generating&nbsp; SVG charts.<br />Based-on SVG technology, charts are more efficient. With few code lines, you can create many relevant charts such as:<br /> <ul class="disc"> <br /> <li>Pie Chart</li><br /> <li>Bar Chart</li><br /> <li>Horizontal Bar chart</li><br /> <li>Kiviat Chart</li><br /> <li>Point Cloud Chart</li><br /> <li>Mathematical function plotter</li></ul><br /> This is an embedded example: <br /> <object type="image/svg+xml" width="530" height="400" data="blog/file/test_kiviat.svg"><br /> <img src="mon_image.png" alt="kiviat" /><br /> </object><br /> <h4>Installation:</h4>Extract the archive in a directory of your web site.<br /> <br /> <h4>How to use: (Quick Start)</h4>-Open a new php file.<br />-Include SGNGD: require_once( path_to_SGNGD/Chart.php );<br />-Make a new instance of which chart you want:PieChart or BarChart (others are coming soon). $class = new BarChart();<br />-Add items by calling $class-&gt;AddData( name ,value);<br />-Call $class-&gt;compute().<br />-Define the type of page by call header: header('Content-Type: image/svg xml');<br />and display the chart by calling echo $class-&gt;display();<br />You can manage colors of your chart, the size and few other things.<br />For more details, take a look to the user manual.<br /><br /> Sun, 07 Dec 08 13:03:33 +0100 http://renaudguezennec.homelinux.org/ Utiliser TagLib dans vos applications Comment utiliser la biblioth&egrave;que TagLib dans ses applications C++. Mon, 27 Oct 08 01:10:24 +0100 http://renaudguezennec.homelinux.org/ Am&eacute;lioration GPhpedit <p><b>GPhpedit</b> [<a href="http://fr.wikipedia.org/wiki/GPHPedit">wiki</a>] est une programme simple d'&eacute;dition PHP. Il est beaucoup plus l&eacute;ger que les solutions bas&eacute;es sur Eclipse. Malheuresement, <b>GPhpedit</b> n'est plus maintenu par son auteur. Le manque de certaines fonctions se fait vite sentir. Voici donc un patch, qui ajoute un panneau lat&eacute;ral pour afficher une hi&eacute;rarchie de dossiers dans un arbre.</p> <img class="blog_msg_imgmsg" src="blog/image/Capture.png" alt="capture Gphpedit"/><p class="clearleft"> Ce panneau lat&eacute;ral permet: d'explorer et d'ouvrir le fichier utile d'un site en d&eacute;veloppement. T&eacute;l&eacute;charger le patch : <a href="http://renaudguezennec.homelinux.org/index,3,3-7.html">gphpedit.diff</a>. Pour l'installation, je vous conseille de consulter la documentation de la commande patch. Le patch est &agrave; appliquer sur le dossier racine de GPhpedit. (Apr&egrave;s l'application du patch sur le code source de GPhpedit, vous devez le compiler)</p> <br /><p><a href="blog/image/gphpedit.png" rel="lightbox"><img class="blog_msg_imgmsg" src="blog/image/miniature/mini_gphpedit.png" alt="miniature"/> </a></p> <p class="clearleft"></p> <h3>Liens :</h3><ul><li><a href="http://fr.wikipedia.org/wiki/GPHPedit">wikip&eacute;dia</a></li><li><a href="http://www.gphpedit.org/">Site officiel de GPhpedit</a></li><li><a href="http://man.developpez.com/man1/patch.1.php">Page Man de Patch</a></li><li><a href="http://renaudguezennec.homelinux.org/index,1,3.html">Contactez-moi</a></li></ul> Sun, 27 Jul 08 02:17:42 +0200 http://renaudguezennec.homelinux.org/ PG_DUMP dans un script crontab. Il est souvent utile de pouvoir faire des sauvegardes automatiques de ses bases de donn&eacute;es. <br />Les syst&egrave;mes Linux (et autres syst&egrave;mes alternatifs) fournissent un outil de planification de t&acirc;ches. L'&eacute;criture d'un petit script est souvent bien utile pour sauvegarder toutes les bases.<br />PG_DUMP pose un petit probl&egrave;me pour automatiser le script car il demandera certainement un mot de passe. Il existe plusieurs fa&ccedil;ons d'arranger &ccedil;a. <br />-On peut modifier les .conf du serveur PostgreSQL pour toujours faire confiance aux utilisateurs du serveur. Ainsi le cron d'un utilisateur sp&eacute;cifique pourra faire la sauvegarde. Cette m&eacute;thode ne peut pas &ecirc;tre utilis&eacute; si votre script back-up un serveur distant.<br /><br />-Une autre m&eacute;thode consiste &agrave; exporter la constante PGPASSWORD avec comme valeur le mot de passe.<br /><br />exemple:<br /><pre class="code">#!/bin/sh<br /> export PGPASSWORD=mypassword<br /> pg_dump -f back-up-file.sql -U toto mydatebase</pre><br />Voil&agrave;, en esp&eacute;rant que cela vous aidera. <br /> Sat, 19 Jul 08 12:42:49 +0200 http://renaudguezennec.homelinux.org/ Utiliser Id3lib dans vos applications comment utiliser la bibliothèque id3lib dans ses applications C++. Wed, 25 Jun 08 21:50:46 +0200 http://renaudguezennec.homelinux.org/ Irlande Voil&agrave;, je suis en Irlande et je m'installe petit &agrave; petit. Le programme de ma premi&egrave;re semaine: Dimanche 2 septembre:<br />&nbsp;-D&eacute;collage de l'A&eacute;roport de Marseille Provence &agrave; 11h 15.<br />-Arriv&eacute;e &agrave; Dublin &agrave; 12h30 (heure locale). <br />Ensuite, j'ai attendu le bus que j'ai pris &agrave; 15h30. <br />Je suis arriv&eacute; &agrave; Dundalk. Apr&egrave;s avoir marcher dans la ville sans trouver mon bed and breakfast , j'ai pris un taxis. <br />J'ai enfin pu me reposer vers 17h. <br />J'avais tr&egrave;s faim donc j'ai demand&eacute; au patron du B&amp;B, s'il y avait un restaurant dans le coin. <br />Il ma d&eacute;pos&eacute; en voiture devant un h&ocirc;tel-restaurant. <br />Ce n'&eacute;tait pas top mais bon &ccedil;a se mange quoi. Le patron du B&amp;B m'avait fait un petit plan du coin pour revenir au B&amp;B.<br />&nbsp;Manque de chance, je l'ai perdu au restaurant donc je suis rentr&eacute; &agrave; pied, en faisant appel &agrave; ma m&eacute;moire.<br />&nbsp;J'ai bien failli me perdre. Arriver au B&amp;B, je me suis allong&eacute; dans le lit et j'ai regard&eacute; the fellowship of the ring le lendemain matin, le patron du B&amp;B est prof &agrave; l'universit&eacute; ou je suis, donc il m'a d&eacute;pos&eacute; devant le b&acirc;timent o&ugrave; je loue un appartement en collocation. Donc &agrave; 9h45, j'&eacute;tais dans le bureau pour attendre l'ouverture. A 10 h 15, j'&eacute;tais dans ma chambre et tranquille, je me suis install&eacute;. Puis une colloc est arriv&eacute;e. <br />J'ai la chambre 3 dans l'appartement 23, Je suis parti faire les courses. J'avais besoin de bouffe, un adaptateur &eacute;lectrique, etc. Les cours commencent mardi 11 septembre et vendredi 7, un petit examen d'anglais. <br />Pour finir, un petit commentaire sur la photo: c'est la vue de ma chambre. Mon, 11 Feb 08 01:04:43 +0100 http://renaudguezennec.homelinux.org/ Poulêt au curry. (2 personnes) <h4>Ingr&eacute;dients:</h4> <ul> <li>2 blancs de poulet.</li> <li>1 oignon</li> <li>1 conserve de lait de coco.(environ 300cl)</li> <li>5 poign&eacute;es de riz</li> <li>3 ou 4 cuill&egrave;res &agrave; soupe de curry</li> <li>1 ou 2 cuill&egrave;res &agrave; soupe d'huile d'olive</li></ul> <h3>Pr&eacute;paration:</h3>-D&eacute;couper l'oignon en deux, d&eacute;couper chaque partie en 4 ou 5. Verser l'huile d'olive au fond de la po&ecirc;le. Mettre l'oignon.<br /> -Laisser dorer les oignons &agrave; feu moyen.Pendant ce temps, d&eacute;couper chacun des blancs de poulet en 5 ou 6 morceaux.<br /> -Une fois, les oignons devenus transparents, mettre les morceaux de poulet. Tourner r&eacute;guli&egrave;rement pour que chaque cot&eacute; des morceaux de poulet dore.<br /> Lorsque tous les morceaux sont dor&eacute;s de tous les cot&eacute;s, verser la conserve de lait de coco et soupoudrer le curry au dessus de la po&ecirc;le. Casser tous les grumeaux de curry (s'il a lieu).<br /> Mettre &agrave; feu doux et laisser mijoter pour r&eacute;duire la sauce.<br /> Pendant ce temps, porter &agrave; &eacute;bullition de l'eau puis verser le riz (respecter le temps de cuisson du riz).<br /> Lorsque la sauce &agrave; r&eacute;duit de deux tiers, &eacute;goutter le riz pr&eacute;parer, les assiettes et servir chaux.<br /> Bon app&eacute;tit. Fri, 07 Sep 07 21:22:16 +0200 http://renaudguezennec.homelinux.org/ Écrire un applet Gnome2 ce tutorial décrit la réalisation d'un applet pour Gnome2. Fri, 24 Aug 07 08:47:30 +0200 http://renaudguezennec.homelinux.org/ Projet_Script <h2>Projet Script</h2><br /> <h4>Description:</h4>Ce script a pour but la g&eacute;n&eacute;ration d'un fichier html qui liste le contenu d'un r&eacute;pertoire et ses sous r&eacute;pertoires. Vous avez la possibilit&eacute; d'ajouter un commentaire sur chaque fichier. Le fichier g&eacute;n&eacute;r&eacute; affichera des informations sur le fichier: la taille etc. Il est possible de cliquer sur un fichier ce qui provoque son ouverture. Projet r&eacute;alis&eacute; dans le cadre de la premi&egrave;re ann&eacute;e de DUT. <br /><br /> <h4>Installation:</h4> <ul><li>Copier/coller le script dans un dossier.</li><li>Donner lui les droits d'execution. par la commande "chmod u+x scriptv4.0.sh"</li><li>lancez le par l'instrection "./scriptv4.0.sh</li></ul> <h4>Execution:</h4>Un menu s'affiche, choississez l'action &agrave; effectuer et suivez les instruction qui s'affiche.<br /><br /> Wed, 27 Dec 06 18:01:15 +0100 http://renaudguezennec.homelinux.org/