<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TheGlu's Blog &#187; programmation</title>
	<atom:link href="http://blog.theglu.org/index.php/tag/programmation/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.theglu.org</link>
	<description>Mon blog, sur les logiciels libres, arch, ubuntu, linux en général, ce que je programme, et autre !</description>
	<lastBuildDate>Wed, 28 Apr 2010 21:55:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Dévérouiller son pc avec son téléphone portable grâce à un qrcode (sisi)</title>
		<link>http://blog.theglu.org/index.php/2008/08/31/deverouiller-son-pc-avec-son-telephone-portable-grace-a-un-qrcode-sisi/</link>
		<comments>http://blog.theglu.org/index.php/2008/08/31/deverouiller-son-pc-avec-son-telephone-portable-grace-a-un-qrcode-sisi/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 14:49:36 +0000</pubDate>
		<dc:creator>The_Glu</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[authentification]]></category>
		<category><![CDATA[bidouille]]></category>
		<category><![CDATA[bricollage]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pam]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[qrcode]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[webcam]]></category>

		<guid isPermaLink="false">http://blog.theglu.org/?p=115</guid>
		<description><![CDATA[Oui c&#8217;est un gros billet avec pleins de phrases compliquées. Pour ceux qui veulent lire en travers sautez à la partie Principe de fonctionnement directement  
Avertissements
Tout le système que je vais décrire par après c&#8217;est de la bidouille. Si vous voulez faire fonctionner ça sur votre machine il vous faudra forcément trifouiller dans le [...]]]></description>
			<content:encoded><![CDATA[<p>Oui c&#8217;est un gros billet avec pleins de phrases compliquées. Pour ceux qui veulent lire en travers sautez à la partie <em>Principe de fonctionnement</em> directement <img src='http://blog.theglu.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Avertissements</strong></p>
<p>Tout le système que je vais décrire par après c&#8217;est de la bidouille. Si vous voulez faire fonctionner ça sur votre machine il vous faudra forcément trifouiller dans le code (surtout si vous voulez un truc qui soit sécurisé vu que les exécutables ont tous le même &#8216;mot de passe&#8217;). De plus ce système n&#8217;est peut-être pas inviolable (on ne peut pas penser à tout <img src='http://blog.theglu.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), mais en tout cas (à mon avis) c&#8217;est quand même sûr.</p>
<p>Faire les manipulations décrites dans ce billet peut donc ouvrir des failles de sécurité, causer divers problèmes sur votre pc, donc suivez les instructions / jouez avec les programmes que si vous savez ce que vous faites ! Vous êtes prévenus. Na.</p>
<p>Tout le système ainsi que le billet n&#8217;est pas vraiment <em>user-firendly</em>. Je sais mais c&#8217;est un peu dur de faire simple <img src='http://blog.theglu.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Le système marche sous linux, n&#8217;importe quelle distribution. Les paquets requis sont au moins disponibles sous ubuntu, au pire vous pouvez installer les dépendances à la main, sans utiliser votre gestionnaire de paquets.</p>
<p><strong>S&#8217;authentifier sur son pc</strong></p>
<p>Il existe pleins de manières différentes de s&#8217;authentifier sur son pc, notamment la plus basique, le mot de passe. Mais ce n&#8217;est pas très rigolo ! J&#8217;ai donc cherché un moyen plus sympa de m&#8217;authentifier sur mon pc.</p>
<p>Déjà, il y a la solution que l&#8217;on trouve sur bon nombre de portable, le <em>lecteur d&#8217;empreintes digitales</em>. Mais j&#8217;en ai pas sur le mien (de lecteur).</p>
<p>On peut aussi s&#8217;authentifier avec une <em>clé usb </em>(<a href="http://pamusb.org/">pam_usb</a>). Mais bon je ne trouve pas ça super sécurisé, sachant qu&#8217;il suffit de pas beaucoup de temps pour juste lire les données de la clé et savoir quelles sont les informations à fournir pour faire une &#8216;fausse clé&#8217;. Surtout que c&#8217;est fait pour aller se brancher partout ces bébêtes et on n&#8217;est pas toujours sûr du pc sur lequel on va se brancher&#8230;</p>
<p>Il y a aussi l&#8217;authentification par <em>bluetooth</em> (<a href="http://pam.0xdef.net/">pam_blue</a>). Alors, non seulement ce système utilise inutilement de la batterie (faut bien laisser le bluetooth allumé sur le périphérique qui sert à s&#8217;authentifier), mais ensuite c&#8217;est aussi sécurisé que d&#8217;avoir son mot de passe avec un postit à côté de l&#8217;écran (et écrit en gros caractères).  Tout ce qui est radio c&#8217;est le mal, c&#8217;est interceptable aussi facilement que bonjour !</p>
<p>Il y a toutes les techniques d&#8217;identification avec <em>la voix</em> et la <em>reconnaissance du visage</em>. Le problème c&#8217;est que c&#8217;est très dépendant de l&#8217;environnement (des gens qui hurlent autour de vous / un fond pas normal et hop ça ne marche plus) et je n&#8217;ai pas envie de sourire à ma webcam pendant 15 minutes ou hurler une phrase aléatoire à mon pc pendant le même laps de temps.</p>
<p>Il y a aussi la technique de l&#8217;<em>interrupteur à clé dans une boite de biscuit</em> que <a href="http://blog.theglu.org/index.php/2007/12/08/un-peu-de-bricolage-comment-verrouiller-son-pc-avec-un-interrupteur-a-cle/">je vous avais déjà présenté</a>. Malheureusement j&#8217;ai plus de port imprimante sur mon pc et c&#8217;est aussi sécurisé qu&#8217;un mot de passe à une lettre (suffit de cour-circuiter les fils&#8230;).</p>
<p>Toutes ces techniques ont un élément commun : on essaie d&#8217;authentifier quelque chose d&#8217;unique et de personnel dont on remarque généralement vite la perte (un périphérique bluetooth (généralement un téléphone portable), une clé usb, un doigt ou encore son cerveau qui connais le mot de passe). Le truc serait d&#8217;arriver à un système permettant d&#8217;identifier à coup sûr un objet sans pouvoir le falsifier.</p>
<p>J&#8217;ai une webcam sur mon pc. Il existe un moyen de transiter des informations par l&#8217;image, les qrcodes. J&#8217;ai donc eu l&#8217;idée de m&#8217;en servir pour faire &#8216;transiter&#8217; une information unique, permettant à coup sur d&#8217;identifier mon téléphone portable :]</p>
<p><strong>Les qrcodes</strong></p>
<p><a href="http://blog.theglu.org/wp-content/qrcode2.png"><img class="size-full wp-image-116 alignleft" style="float: left; margin-right: 5px" title="Un qrcode avec l\'url de mon blog" src="http://blog.theglu.org/wp-content/qrcode2.png" alt="L\'url de mon blog qrencodée" width="155" height="155" /></a>Déjà un qrcode c&#8217;est quoi ? La <a href="http://fr.wikipedia.org/wiki/Code_QR">wikipedia</a> nous dit ceci :</p>
<p><em>Le <strong>code QR</strong> ou </em><em><strong>QR Code</strong> (en anglais) est un <span class="mw-redirect">code-barres</span> en 2 dimensions (code matrice) pouvant stocker jusqu&#8217;à 7089 caractères numériques, 4296 caractères alphanumériques (contrairement au code-barre &laquo;&nbsp;traditionnel&nbsp;&raquo; qui lui ne peut stocker que de 10 à 13 caractères) ou 2953 octets . Il a l&#8217;avantage de pouvoir stocker beaucoup d&#8217;informations tout en étant petit et rapide à scanner. Ainsi, le sigle « QR » dérive de « Quick Response » car le contenu peut être décodé rapidement.</em></p>
<p><em>Le code QR a été crée par l&#8217;entreprise japonaise <span class="new">Denso-Wave</span> en 1994. Le code QR est très utilisé au Japon ; c&#8217;est actuellement le code à deux dimensions le plus populaire au Japon.</em></p>
<p><em>Le standard japonais pour les codes QR, <span class="mw-redirect">JIS</span> X 0510, a été publié en 1999, et la norme ISO corr</em><em>espondante, ISO/IEC 18004, a été approuvée en juin 2000.</em></p>
<p>Un article sympa sur Clubic aussi si ça vous intéresse de voir comment les gens s&#8217;en servent : <a href="http://www.clubic.com/actualite-81170-live-japon-qr-code-publicites-subliminales.html">Live Japon : du QR Code aux publicités subliminales.</a></p>
<p>Si vous aussi vous avez envie de les lires avec votre portable je vous conseille <a href="http://reader.kaywa.com/">ce lecteur</a> (en plus c&#8217;est une société suisse alors bon ^^).</p>
<p><strong>Principe de fonctionnement</strong></p>
<p>Le but est de se servir de qrcodes pour faire passer un mot de passe unique, généré par un objet que l&#8217;on garde généralement toujours sur soi, un téléphone portable dans notre cas. Le téléphone affiche le qrcode et le pc prend une photo à l&#8217;aide de sa webcam. Il décode le qrcode et si celui-ci est valide il déverrouille le pc.</p>
<p>Évidemment, il ne faut pas que les données transitées par le qrcode soient toujours les mêmes, parque sinon il suffirait d&#8217;obtenir une fois les données (qui serait une simple chaine de texte) pour s&#8217;authentifier sur votre pc&#8230;<br />
J&#8217;ai donc utilisé une technique consistant à obtenir un code d&#8217;authentification qui varie avec le temps. De cette manière, obtenir les données du qrcode à un instant T ne permet pas de se logger à un instant T+1, ce qui augmente le niveau de sécurité.</p>
<p>Le code d&#8217;authentification est créé ainsi :</p>
<ul>
<li>On prend la date et l&#8217;heure actuelle (heure GMT)</li>
<li>On rajoute une chaine commue (une sorte de mot de passe)</li>
<li>On fait la somme md5 des deux éléments précédents</li>
</ul>
<p>Exemple : Il est minuit 28, le 30 aout 2008 et ma chaine commue est <em>mysupersecrectstring</em>. On crée le code d&#8217;authentification comme suit : <em>200808292228mysupersecrectstring</em> (notez que l&#8217;on recule de deux heures pour être à l&#8217;heure GMT (deux car c&#8217;est l&#8217;heure d&#8217;été)) et on calcule le md5 de cette chaine qui est <em>bd76299ff48d23743b8c4a7cb85a2c74</em>. C&#8217;est notre code d&#8217;identification, une sorte de mot de passe qui change toutes les minutes et qu&#8217;on n&#8217;a pas besoin de retenir.<br />
Il est impossible (normalement) de revenir à la chaine commune depuis le md5, même en sachant l&#8217;heure qu&#8217;il est !</p>
<p>Du côté du pc, il faut lire le code et regarder qu&#8217;il corresponde. Mais il y a un problème : il faudrait que le téléphone portable et le pc soient synchronisés à la seconde près, de plus se trouver aux alentours de 00:00:59 quand on génère le code et à 00:01:12 quand on lit le code pose un problème, car la minute aura changé et donc le code d&#8217;authentification aura changé. Pour résoudre ces problèmes, le pc va accepter 5 codes d&#8217;authentification : celui pour la minute en cours, ceux des deux minutes précédentes et deux des deux minutes suivantes. Ainsi, même avec une minute de décalage entre le téléphone portable et le pc, on parviendra toujours à s&#8217;identifier !</p>
<p><strong>Réalisation pratique</strong></p>
<p>Il y avait trois choses à faire fonctionner : Capturer une image de ma webcam en ligne de commande (figurez vous que c&#8217;est compliqué&#8230;), être capable de lire un éventuel qrcode dans cette image et savoir générer un qrcode sur mon téléphone portable.</p>
<p>Déjà pour capturer une image c&#8217;est très compliqué. Il existe bon nombre de programmes avec une interface graphique qui savent le faire, mais là le but était de faire ça de manière automatique. Après de longues recherches, j&#8217;ai fini par trouvé uvccapture qui parvenait enfin à faire ce que je voulais. Je me suis servi de son code source et je l&#8217;ai modifié de manière à être capable de prendre une image quand mon téléphone portable est visible, mais pas encore surexposé (uvccapture est normalement capable de demander à la webcam une exposition particulière, mais avec la mienne ça ne marche pas, elle se règle toute seule&#8230;), après un temps X (dépendant aussi de l&#8217;initialisation de la webcam, etc.). J&#8217;ai fait le ménage dans le code pour garder que le nécessaire et on a notre exécutable qui prend une photo et la sauve sous 2snap.jpg (et aussi une image plus sombre sous 1snap.jpg, mais pour l&#8217;instant je ne l&#8217;utilise pas).</p>
<p>Ensuite, décoder un qrcode dans cette image. Le problème a  été de trouver une libraire avec une licence libre et facilement réutilisable. La seule que j&#8217;ai fini par trouver est PyQrCodec, qui fait appel à une autre en C qui utilise OpenCV (cf les liens plus bas). Le truc plante de temps en temps au décodage et n&#8217;est pas capable de reconnaitre tous les qrcodes, mais ce n&#8217;est pas un problème vu que l&#8217;on va s&#8217;occuper aussi de la génération du dit qrcode il suffira de faire quelque chose de compatible.<br />
J&#8217;ai implémenté toute la logique du système (génération des md5, déverrouillage de l&#8217;écran de veille) dans le script en python (vu que c&#8217;est le plus facilement modifiable).</p>
<p>Enfin il faut générer un qrcode. Ça à l&#8217;aire vachement sympa ces images en noir et blanc avec des carrés partout, mais en fait c&#8217;est super compliqué à faire (c&#8217;est pleins de maths compliqués). Après beaucoup de recherche j&#8217;ai fini par tomber sur une source en php capable d&#8217;en générer et qui sont lisibles par le décodeur (voir dans les liens plus bas). J&#8217;ai donc profité de cette source pour la réadapter en java (meilleure manière faire tourner quelque chose sur un téléphone portable à mon avis), ça prend du temps et j&#8217;ai sauté quelques parties mais ça a fini par fonctionner (en tout cas je n&#8217;ai pas rencontré de problèmes jusqu&#8217;à maintenant&#8230;). Le programme est un peut lent (~5 pour se lancer) (hors java) et il faudrait peut-être faire un peu d&#8217;optimisation (je n&#8217;ai pas tout récrit à la manière java et certaines parties ne sont pas très intelligentes, par exemple bosser avec des strings au lieu de faire tout avec des tableaux d&#8217;int (chose que j&#8217;ai faite quand j&#8217;étais obligé)) mais ça marche.</p>
<p>Et donc on a trois programmes qui font ce qu&#8217;ils doivent faire (c&#8217;est quand même sympa tous ces langages, du C, du python, du php et du java pour 3 programme pour ce système&#8230;) et il faut juste les mettre ensemble !</p>
<p><strong>Et ça marche ?</strong></p>
<p>Oui. (Ba tiens x]) Il faut en moyenne 5s pour que le code soit lu et reconnu si je tiens mon téléphone portable à 15cm de la webcam. Qu&#8217;il fasse nuit ou jour cela fonctionne, le système n&#8217;est donc pas perturbé par l&#8217;environnement !</p>
<p>Il faut encore que je trouve un moyen de le lancer automatiquement avant que l&#8217;écran de veille s&#8217;active (parce qu&#8217;à l&#8217;heure actuelle il désactive l&#8217;écran de veille) en évitant de changer toutes les entrées dans mes raccourcis :p</p>
<p><strong>Les sources &amp; exécutables</strong></p>
<p>Bon, il y a pleins de langages différents et de licences différentes vu que j&#8217;ai récupéré du code de pleins d&#8217;endroits différentes, mais c&#8217;est normal. J&#8217;ai gardé les licences d&#8217;où le code provenais, j&#8217;ai mit la partie en java que j&#8217;ai réécrite en MPL/GPL/LGPL.</p>
<p>Alors oui ce n&#8217;est pas du très beau code et ce n&#8217;est pas commenté, mais c&#8217;est juste pour faire mumuse, si j&#8217;ai le temps je ferais quelque chose de clean.</p>
<p><em>Les exécutables (le mot de passe utilisé est  : </em>mysupersecrectstring<em> )</em></p>
<ul>
<li><a href="http://blog.theglu.org/wp-content/decodeur-qrauthtar.gz">Le décodeur sur le pc</a> (en python, LGPL)</li>
<li><a href="http://blog.theglu.org/wp-content/captureimage">Le programme pour capturer les images de la webcam</a> (en C, GPL)</li>
<li><a href="http://blog.theglu.org/wp-content/tel-qrauthtar.gz">Le programme qui génère le qrcode sur le téléphone portable</a> (en java, MPL/GPL/LGPL)</li>
</ul>
<p>Notez qu&#8217;il vous faudra PyQrCodec (voir les liens) d&#8217;installé pour le décodeur. Suivez les instructions sur le site dans les liens, toutes les dépendances requises sont dans les dépôts d&#8217;ubuntu.</p>
<p>Pour le programme de capture de la webcam aussi, il vous faudra v4l2 d&#8217;installé, mais normalement c&#8217;est le cas.</p>
<p><em>Les sources :</em></p>
<ul>
<li>Évidemment pas de source pour le décodeur sur le pc vu que c&#8217;est du python et que c&#8217;est déjà une source.</li>
<li><a href="http://blog.theglu.org/wp-content/captureimage-sourcetar.gz">La source du programme qui capture les images de la webcam</a> (en C, GPL)</li>
<li><a href="http://blog.theglu.org/wp-content/tel-qrauth-sourcetar.gz">Le projet netbeans</a> (il faut le paquet mobiliy installé) qui génère le qrcode sur le téléphone portable (en java, MPL/GPL/LGPL).</li>
</ul>
<p>À l&#8217;heure actuelle (programme et source), cela ne devrait fonctionner que si vous avez un matériel parfaitement compatible (taille de la webcam, même taille d&#8217;écran pour le téléphone portable (il faut une &#8217;surface utile&#8217; de 235&#215;235 au moins)), mais rien de vous empêche de jouer avec le code source <img src='http://blog.theglu.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Pour lancer le programme mettez captureimage dans le même dossier. Faites un <em>touch data.tmp</em> et lancez <em>python QrAuth.py</em>. PyQrcodec doit être dans le path (si il est installé correctement normalement c&#8217;est bon, au pire copiez son dossier dans le dossier avec QrAuth.py (après compilation bien évidemment)). Attention ! <strong>Pour arrêter le programme il faut soit arriver à vous authentifier, soit appuyer sur ctrl-c jusqu&#8217;à ce qu&#8217;il s&#8217;arrête (ce qu&#8217;il ne fait pas tout le temps..).</strong> Ou fermer le terminal.<strong> </strong>Effectivement faudrait faire quelque chose de plus mieux bien sur ce point mais bon <img src='http://blog.theglu.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Normalement ça marche. Normalement.</p>
<p>Si vous avez une webcam qui fonctionne autrement vous pouvez modifier le code python pour capturer une image autrement et faire fonctionner le système quand même !</p>
<p><strong>Les choses qu&#8217;il faudrait améliorer</strong></p>
<p>L&#8217;ensemble n&#8217;est évidemment pas parfait et terminé, ça reste de la bidouille. Il faudrait exemple faire un peu de ménage dans le programme qui génère des qrcodes, il y a beaucoup de fichiers de définition qui ne servent probablement à rien. De plus, il serait beaucoup plus pratique d&#8217;arriver à prendre et analyser la présence d&#8217;un qrcode devant la webcam en permanence, mais pour cela il faudrait résoudre le problème de la luminosité. Notez aussi que le décodeur sur le pc est en deux parties et les informations entre les deux scripts sont échangés à l&#8217;aide d&#8217;un fichier&#8230; Ce n&#8217;est pas très intelligent, mais le problème est que la demande de décodage d&#8217;un qrcode fait de temps en temps planter le programme python qui s&#8217;arrête, d&#8217;où la séparation entre les deux programmes. Et l&#8217;information est passé à l&#8217;aide d&#8217;un fichier parque je n&#8217;avais pas envie de m&#8217;embêter à récupérer la sortie standard du deuxième processus, mais normalement il faudrait faire comme ça.</p>
<p>Un autre point serait aussi de pouvoir utiliser des fichiers de configuration ou des paramètres pour éviter par exemple de devoir recompiler le programme lorsque la webcam change de &#8216;fichier&#8217; (c&#8217;est pas un fichier mais c&#8217;est comme tel) /dev, ou lorsque l&#8217;on veut changer le mot de passe.</p>
<p>De plus il faudrait arriver à utiliser la librairie qui décode les qrcode non pas en python,  mais directement en c, lors de la capture de la webcam, pour éviter d&#8217;avoir à utiliser un langage de plus, malheureusement je n&#8217;ai pas réussi à compiler la dite libraire directement en C.</p>
<p><strong>Liens</strong></p>
<ul>
<li>Les qrcodes sur la wikipedia : <a href="http://en.wikipedia.org/wiki/QR_Code">Anglais</a> <a href="http://fr.wikipedia.org/wiki/Code_QR">Français</a></li>
<li><a href="http://qrcode.kaywa.com/">Un générateur de qrcode en ligne</a></li>
<li><a href="http://reader.kaywa.com/">Un lecteur de qrcode pour téléphones portable [kaywa reader]</a></li>
<li><a href="http://www.jaxo-systems.com/download/?lang=fr_FR#">Un lecteur de qrcode pour pc en java [barcapture]</a></li>
<li><a href="http://staticwave.ca/source/uvccapture/">Uvccapture</a> (utilisé comme base pour la capture d&#8217;images depuis la webcam)</li>
<li><a href="http://www.pedemonte.eu/pyqr/index.py/pyqrhome">PyQrCodec</a> (utilisé comme décodeur de qrcode sur le pc)</li>
<li><a href="http://trac.koka-in.org/libdecodeqr">libdecodeqr</a> (pour PyQrCodec (fournit avec))</li>
<li><a href="http://sourceforge.net/projects/opencvlibrary/">OpenCV</a> (pour libdecodeqr)</li>
<li><a href="http://www.swetake.com/qr/php/qr_php.html">Un générateur de qrcode en php</a> (utilisé comme base pour le générateur sur le téléphone portable) (site en japonais, utilisé comme exemple pour la génération du qrcode en java) (y&#8217;a pleins d&#8217;autres scripts sympa en rapport (cgi notamment) disponibles ainsi qu&#8217;une mini explication sur comment ça fonctionne (en anglais donc))</li>
</ul>
<hr />Tout ça pour ça, effectivement&#8230; Il m&#8217;a quand même fallu 3 jours pour arriver à quelque chose qui marche x].</p>
<p>Sinon pour conclure une image qui n&#8217;a rien à voir, mais que j&#8217;aime vachement bien et que je peux m&#8217;empêcher de vous monter : <a href="http://omen2501.deviantart.com/art/Rain-67116328">C&#8217;est par ici</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theglu.org/index.php/2008/08/31/deverouiller-son-pc-avec-son-telephone-portable-grace-a-un-qrcode-sisi/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Komodo Edit : Adieu eclipse !</title>
		<link>http://blog.theglu.org/index.php/2007/04/22/komodo-edit-adieu-eclipse/</link>
		<comments>http://blog.theglu.org/index.php/2007/04/22/komodo-edit-adieu-eclipse/#comments</comments>
		<pubDate>Sun, 22 Apr 2007 12:30:00 +0000</pubDate>
		<dc:creator>The_Glu</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[amd64]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Logiciels]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.theglu.org/index.php/?p=63</guid>
		<description><![CDATA[Cet article fait suite à l&#8217;article &#8216;web&#8217; de Daniel Chetboul paru sur le planet, et le programme présenté étant génial, j&#8217;ai décidé de vous en parler un peu plus.
Introduction
Dans une autre dimension, j&#8217;utilisais PsPad comme éditeur de texte pour développer (en PHP). Léger, indentation, auto-complétion (mais basique, par rapport à une liste de fonctions prédéfinie) [...]]]></description>
			<content:encoded><![CDATA[<p><em>Cet article fait suite à l&#8217;article &#8216;web&#8217; de Daniel Chetboul paru sur le planet, et le programme présenté étant génial, j&#8217;ai décidé de vous en parler un peu plus.</em></p>
<h4>Introduction</h4>
<p>Dans une autre dimension, j&#8217;utilisais <a href="http://www.pspad.com/fr/">PsPad</a> comme éditeur de texte pour développer (en PHP). Léger, indentation, auto-complétion (mais basique, par rapport à une liste de fonctions prédéfinie) et gestion de projet. Quand je suis passé sous linux, Quanta+ remplissait aussi la même fonction à quelques détails près, et j&#8217;étais content,</p>
<p>Puis, grâce à Lilian, j&#8217;ai découvert Eclipse, avec des fonctionnalités géniales, tels que l&#8217;auto-complétion<sup>[<a href="#pnote-85-1" id="rev-pnote-85-1">1</a>]</sup> sur les fonctions des classes et les simples fonctions (avec prise en compte des commentaires). De plus, il inclut tout un système de plugins pour entendre ses fonctionnalités (PHP, svn). Mais à la longue, on se rend compte qu&#8217;Eclipse&#8230;. c&#8217;est lourd. Très lourd. Trop lourd. Et je ne parle pas de travail avec un lecteur réseau distant (ssh) : 15 minutes pour ouvrir un projet. Malheureusement, les fonctionnalités sont bien, et on ne peut pas trop s&#8217;en passer une fois que l&#8217;on voit ce que l&#8217;on peut faire..</p>
<h4>Komodo</h4>
<p>Et je découvris donc sur le planet&#8230; komodo. La différence saute tout de suite aux yeux: c&#8217;est léger, et ça fait la même chose, et même plus.</p>
<p>Le programme est en XUL (voir liens, mais c&#8217;est une technologie assez intéressante, notamment utilisée pour firefox et ses plugins, que j&#8217;ai rencontrée lors du développement de <a href="http://firegpg.tuxfamily.org">firegpg</a>), disponible sur toutes les plates-formes (XUL y aide), et disponible en deux versions (une gratuite, une payante, évidemment avec plus de fonctionnalités).</p>
<p>On retrouve dans la version de base (Komodo EDIT)</p>
<ul>
<li>Gestion de projets (plusieurs même, c&#8217;est un peu le but)</li>
<li>Support (complet) du PHP, Javascript, HTML, Css, Python, Ruby, Tcl, XML <strong>MAIS PAS</strong> du Java (ça ne fait pas tout mais bon)</li>
<li>Support (basique) d&#8217;un bon nombre de fichiers (environ 50), par exemple SQL, Pascal, bash, etc.</li>
<li>Support de libraires (par exemple Rails pour le Ruby)</li>
<li>Coloration du code, indentation du code</li>
<li>Recherche dans les fichiers du projet</li>
<li>Interaction avec d&#8217;autres programmes dans le cadre du projet (par exemple une console)</li>
<li>Gestion de serveurs distants</li>
<li>Extensible avec des thèmes et plugins (aucun n&#8217;existe pour le moment, mais c&#8217;est possible)</li>
<li>Gestionnaire de raccourcis claviers bien développé (peut par exemple se baser sur Vi ou Emacs)</li>
<li>Et pleins d&#8217;autres choses&#8230;</li>
</ul>
<p>Malheureusement disponible qu&#8217;en version complète (et à 295$) (Komodo IDE) :</p>
<ul>
<li>Travail de groupe (SVN, CVS, &#8230;)</li>
<li>Débugage</li>
<li>Inspecteur HTML, DOMViewer, explorateur de code (fonctions, classes)</li>
<li>Créateur d&#8217;expressions régulières</li>
</ul>
<p>(Basé sur leur site web, je n&#8217;ai pas testé)</p>
<p>Le programme à néanmoins quelques défauts :</p>
<ul>
<li>Propriétaire. (Remarquons que les développeurs semble se servir beaucoup de l&#8217;open source, c&#8217;est bien)</li>
<li>En anglais</li>
</ul>
<p>La différence entre eclipse et komodo question légèreté est flagrante (sans parler de l&#8217;utilisation du CPU) : 50Mo contre 200Mo de mémoire résidante et 187Mo conte 760Mo en mémoire virtuelle.</p>
<h4>Installation sur ubuntu</h4>
<p>L&#8217;installation sur ubuntu est théoriquement très simple. Normalement, vous ne devriez pas avoir à installer question librairies et nouveaux programmes, mais si cela ne fonctionnerait pas, installez libstdc++6, libstdc++5, xorg-x11-deprecated-libs.</p>
<p>Pour l&#8217;installation, il vous suffit de faire :</p>
<p><code>cd /tmp</code><br />
<code>wget http://downloads.activestate.com/Komodo/Linux/4.0/Komodo-Edit-4.0.3-278227-linux-libcpp6-x86.tar.gz</code><br />
<code>tar xvf Komodo-Edit-4.0.3-278227-linux-libcpp6-x86.tar.gz</code><br />
<code>cd Komodo-Edit-4.0.3-278227-linux-libcpp6-x86/</code><br />
<code>sudo ./install.sh</code></p>
<p>Si tout c&#8217;est bien passé, Komodo est apparu dans le menu (Sous développement), ou vous pouvez le lancer en tapant <code>/opt/Komodo-Edit-4.0/bin/komodo</code> dans un terminal.</p>
<p>Si vous êtes avec un noyau 64 bits, ça peut ne pas fonctionner (je n&#8217;ai pas rencontré de problèmes personnellement), dans ce cas :</p>
<ul>
<li>Installez les librairies 32 bit : <code>sudo apt-get install ia32-libs lib32asound2 lib32ncurses5 ia32-libs-sdl ia32-libs-gtk gsfonts gsfonts-x11 linux32</code>. Réessayez de lancer komodo. Si ça ne marche pas, continuez.</li>
<li>Créez un fichier /etc/pango32/pangorc, et entrez le texte suivant :</li>
</ul>
<pre>[Pango] ModuleFiles=/etc/pango32/pango.modules [PangoX] AliasFiles=/etc/pango/pangox.aliases</pre>
<ul>
<li>Avant de lancer komodo dans un terminal, tapez <code>export GTK_PATH=/usr/lib32/gtk-2.0/</code> et <code>export PANGO_RC_FILE=/etc/pango32/pangorc</code>, puis lancez komodo, cela devrait fonctionner. Pour éviter de taper trois commandes à chaque fois, vous pouvez créer un petit script shell.</li>
</ul>
<p>(<a href="http://blogs.activestate.com/jeffg/2005/11/howoto_komodo_3.html">Source</a>)</p>
<h4>Quelques captures</h4>
<p><a href="/public/komodo-css.png"><img src="/public/./.komodo-css_m.jpg" alt="Komodo - Css" /></a><br />
Édition d&#8217;un fichier (une CSS).</p>
<p><a href="/public/komodo-recherche.png"><img src="/public/./.komodo-recherche_m.jpg" alt="Komodo-recherche sur le projet" /></a><br />
Une recherche sur tout le projet.</p>
<p><a href="/public/komodo-navigateur.png"><img src="/public/./.komodo-navigateur_m.jpg" alt="Komodo-navigateur intégré." /></a><br />
Un navigateur est intégré ! Très pratique afin d&#8217;éviter de switcher entre deux fenêtres !</p>
<p><a href="/public/komodo-aide.png"><img src="/public/./.komodo-aide_m.jpg" alt="komodo-Aide bien faite." /></a><br />
L&#8217;index de l&#8217;aide de komodo, extrêmement bien faite, avec tutoriels et tout et tout !</p>
<h4>Quelques Liens</h4>
<p><a href="http://www.activestate.com/products/komodo_edit/">Le site de komodo (en)</a> | <a href="http://www.activestate.com/products/komodo_edit/features.plex">La liste complète des fonctions de komodo (en)</a> | <a href="http://www.activestate.com/products/komodo_edit/edit_vs_ide.plex">Les différences entre komodo IDE et Edit</a> | <a href="http://fr.wikipedia.org/wiki/XML-based_User_interface_Language">Xul sur la wikipedia</a></p>
<p class="footnotes">
<h4>Notes</h4>
<p>[<a href="#rev-pnote-85-1" id="pnote-85-1">1</a>] Quelqu&#8217;un connait le mot en français ?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theglu.org/index.php/2007/04/22/komodo-edit-adieu-eclipse/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>FireGPG : Une extension firefox pour utiliser plus facilement gpg avec firefox, ainsi qu&#8217;avec gmail (et 50 ème billet en plus !)</title>
		<link>http://blog.theglu.org/index.php/2007/03/11/firegpg-une-extension-firefox-pour-utiliser-plus-facilement-gpg-avec-firefox-ainsi-quavec-gmail-et-50-eme-billet-en-plus/</link>
		<comments>http://blog.theglu.org/index.php/2007/03/11/firegpg-une-extension-firefox-pour-utiliser-plus-facilement-gpg-avec-firefox-ainsi-quavec-gmail-et-50-eme-billet-en-plus/#comments</comments>
		<pubDate>Sun, 11 Mar 2007 17:20:00 +0000</pubDate>
		<dc:creator>The_Glu</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[firegpg]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[logiciel libre]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.theglu.org/index.php/?p=56</guid>
		<description><![CDATA[Pour mon 50 ème billet[1], je vais vous parler d&#8217;un truc (en partie donc) programmé par moi-même : Une extension firefox qui vous permettra d&#8217;utiliser plus rapidement et facilement gpg avec firefox ! Parce que la ligne de commande, malheureusement y&#8217;a pas tout le monde qui aime, et devoir à chaque fois du copier/coller dans [...]]]></description>
			<content:encoded><![CDATA[<p>Pour mon 50 ème billet<sup>[<a href="#pnote-70-1" id="rev-pnote-70-1">1</a>]</sup>, je vais vous parler d&#8217;un truc (en partie donc) programmé par moi-même : Une extension firefox qui vous permettra d&#8217;utiliser plus rapidement et facilement gpg avec firefox ! Parce que la ligne de commande, <del>malheureusement</del> y&#8217;a pas tout le monde qui aime, et devoir à chaque fois du copier/coller dans un autre programme, tel que kgpg, c&#8217;est quand même lassant à la longue. Évidemment, des plugins existent pour les différents programme de lecture de mails, mais pour FireFox, il n&#8217;y a étonnamment rien <del>sauf un plugin qui sauvegarde les clés sur leur propres serveurs, bonjour la sécurité</del>. Alors <a href="http://asher256.tuxfamily.org/">Asher</a> et moi on l&#8217;a programmé ! Il utilise les programmes présents sur le disque (en l&#8217;occurrence, gpg) et peut même être utilisé sous windows (avec <a href="http://winpt.sourceforge.net/fr/">WinPT</a>). De plus, il intègre quelques boutons supplémentaires pour faciliter son utilisation avec gmail ! Elle n&#8217;est pas belle la vie ?</p>
<p><em>C&#8217;est quoi gpg ?</em> <a href="http://doc.ubuntu-fr.org/gnupg?s=gpg">Le wiki d&#8217;ubuntu-fr</a> l&#8217;explique assez bien, et vous donne même le mode d&#8217;emploi pour l&#8217;installation et l&#8217;utilisation !</p>
<p>Pour l&#8217;installer le plugin sur ubuntu, c&#8217;est très simple :</p>
<ul>
<li>Premièrement, vous devez installer les programmes nécessaires, tels que gpg, et un gestionnaire de clé si vous êtes allergiques à la ligne de commande. Pour ce faire, installez les paquets correspondants, c&#8217;est à dire <code>gnupg</code>, et par exemple <code>kgpg</code>.</li>
<li>Deuxièmement, générez votre clé privée : Soit avec votre interface graphique, soit en tapant <code>gpg --gen-key</code> dans un terminal.</li>
<li>Troisièmement , installez le plugin firefox, en <a href="http://firegpg.tuxfamily.org/index.php?page=install&amp;lang=fr">vous rendant sur ce lien</a>, et cliquant sur le gros bouton <em>Download FireGPG</em>. Autorisez le site à installer des plugins (c.f la barre d&#8217;état en haut), recliquez sur le gros bouton, et relancez firefox !</li>
<li>Normalement, et si tout s&#8217;est bien passé. vous ne devriez pas avoir de message d&#8217;erreur lors que l&#8217;utilisation d&#8217;une commande au bol (par exemple crypter), qui vous signale que FireGPG ne trouve pas gpg. Vous pouvez vous rendre dans les options de FireGPG (un menu spécifique est apparu dans le menu Outils, et celui de votre touche droite), et sélectionner votre clé précédemment générée !</li>
</ul>
<p>À ce stade, l&#8217;utilisation est très simple : sélectionnez le texte sur lequel vous désirez effectuer une opération, et sélectionnez l&#8217;opération avec le menu (Signer, Vérifier, Crypter, Décrypter et Importer une Clé sont disponibles !) Si votre sélection est dans un élément modifiable, la sélection sera remplacée, sinon une nouvelle fenêtre s&#8217;ouvrira !</p>
<p>Maintenant vous n&#8217;avez plus d&#8217;excuse : Signer vous mails ! Ainsi on sera que vous être vraiment l&#8217;expéditeur ! Cryptez les mails confidentiels, qui contiennent des mots de passes ! Un mail est très facilement interceptable, et falsifiable&#8230; <img src="/phpmv2/phpmyvisites.php?url=http%3A//theglu.tuxfamily.org/public/ipb.gif&amp;id=1&amp;pagename=FILE:PLUGIN" alt="" /></p>
<p>Si par hasard vous tomberiez sur un site qui ne fonctionne pas avec FireGPG, signalez le-nous ! <strong>Le plugin reste en version beta et peut ne pas fonctionner dans tous les cas.</strong></p>
<p><a href="http://firegpg.tuxfamily.org">Site officiel</a> <a href="http://asher256.tuxfamily.org/index.php?2007/03/12/209-firegpg-une-nouvelle-extension-firefox-pour-utiliser-aisement-gpg">L&#8217;annonce sur le blog d&#8217;Asher</a></p>
<div class="footnotes">
<h4>Notes</h4>
<p>[<a href="#rev-pnote-70-1" id="pnote-70-1">1</a>] Hé oui, ça aussi fait longtemps que je n&#8217;ai pas posté de billets comme Asher, pour la simple est bonne raison que j&#8217;étais très occuper à développer avec lui cette extension firefox <img src='http://blog.theglu.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Mais voila, je suis quand même arrivé au 50 ème, avec presque 300 commentaires, et 4 mois !</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.theglu.org/index.php/2007/03/11/firegpg-une-extension-firefox-pour-utiliser-plus-facilement-gpg-avec-firefox-ainsi-quavec-gmail-et-50-eme-billet-en-plus/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>Changer régulièrement son fond d&#8217;écran (gnome) grâce à un script python !</title>
		<link>http://blog.theglu.org/index.php/2007/02/02/changer-regulierement-son-fond-decran-gnome-grace-a-un-script-python/</link>
		<comments>http://blog.theglu.org/index.php/2007/02/02/changer-regulierement-son-fond-decran-gnome-grace-a-un-script-python/#comments</comments>
		<pubDate>Fri, 02 Feb 2007 17:30:00 +0000</pubDate>
		<dc:creator>The_Glu</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[logiciel libre]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.theglu.org/index.php/?p=43</guid>
		<description><![CDATA[Un truc qui me manquait, vue que j&#8217;ai trouvé plusieurs potentiels fonds d&#8217;écran pour&#8230; mon fond d&#8217;écran, c&#8217;était la possibilité d&#8217;en mettre plusieurs, qui changent de manière automatique toutes les X secondes. (Ça n&#8217;existe pas en natif dans Gnome, au contraire de KDE), ça permet d&#8217;éviter de faire un choix  . Après n&#8217;avoir trouvé [...]]]></description>
			<content:encoded><![CDATA[<p>Un truc qui me manquait, vue que j&#8217;ai trouvé plusieurs potentiels fonds d&#8217;écran pour&#8230; mon fond d&#8217;écran, c&#8217;était la possibilité d&#8217;en mettre plusieurs, qui changent de manière automatique toutes les X secondes. (Ça n&#8217;existe pas en natif dans Gnome, au contraire de KDE), ça permet d&#8217;éviter de faire un choix <img src='http://blog.theglu.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Après n&#8217;avoir trouvé que <a href="http://linuxfr.org/forums/10/3240.html">ça</a> d&#8217;intéressant, je me suis dit que c&#8217;était plus simple de le faire moi-même et en profiter pour découvrir le python ! (Au final c&#8217;est pas compliqué, sauf que c&#8217;est un langage de tabulés<sup>[<a href="#pnote-53-1" id="rev-pnote-53-1">1</a>]</sup> <img src='http://blog.theglu.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p>
<p>Voila le script :</p>
<pre> #!/usr/bin/python # coding=UTF-8 # ######################################################################################################### # Changeur de font d'écran à intervalles réguliers pour GNOME, Version 1.0				# # 													# # Par Maximilien Cuony [maxi_the_glu@bluewin.ch][http://theglu.tuxfamily.org]				# #													# # Basé sur un script de guix77 [http://linuxfr.org/comments/465267.html#465267]				# ######################################################################################################### ## Importation des librairies nécessaires import os, re, time, random, commands, sys, StringIO from getopt import GetoptError, gnu_getopt ## Configurations par default : #Dossier des images Path_images = os.path.expanduser(&quot;~&quot;) + &quot;/&quot; + &quot;fondsdecran/&quot; # extensions a chercher File_Match = re.compile('[{png}{jpeg}{swg}{jpg}{gif}]$') # Nombre de secondes avant de changer une image Secondes = 60 ## Fonctions # Récupération de la liste des images disponibles def Dir_Contents(Item=&quot;&quot;): 	Final_List = [] 	if Item == '': return ('') 	elif os.path.isdir(Item): 		List = os.listdir(Item) 		for Item2 in List: 			Item3 = Item + &quot;/&quot; + Item2 			Temp_List = Dir_Contents(Item=Item3) 			for Item4 in Temp_List: Final_List.append(Item4) 	elif os.path.isfile(Item): 		if File_Match.search(Item): return([Item]) 		else: return([]) 	return (Final_List) # Fin de Dir_Contents # Affichage de l'aide def Show_Help(): 	print &quot;Ceci est un programme pour changer de fond d'écran GNOME à intervalles réguliers&quot; 	print &quot;&quot; 	print &quot;Vous pouvez lancer le script sans arguments, et il utilisera les variables par défaut (&quot; + Path_images + &quot; comme dossier de recherche et changement de l'image toute les &quot; + `Secondes` + &quot; secondes),&quot; 	print &quot;Ou se servir des paramètres --sec SECONDES ou -s SECONDES pour changer le fond toutes les SECONDES secondes, ainsi que --path DOSSIER ou -p DOSSIER pour définir le dossier de recherche des images.&quot; 	print &quot;&quot; 	print &quot;Par Maximilien Cuony [maxi_the_glu@bluewin.ch][http://theglu.tuxfamily.org], basé sur un travail de  guix77 [http://linuxfr.org/comments/465267.html#465267]&quot; # Fin de Dir_Contents ## Gestion des arguments try: 	args = sys.argv[1:]         optlist = gnu_getopt(args, 'hs:p:', ['sec=', 'help', 'path=']) except GetoptError: 	print &quot;&quot; # Les options for option, value in optlist[0]: 	if option in [&quot;-h&quot;, &quot;--help&quot;]: 	        Show_Help() 	        sys.exit(0) 	elif option in [&quot;-s&quot;, &quot;--sec&quot;]: 		Secondes = int(value) 	elif option in [&quot;-p&quot;, &quot;--path&quot;]: 		Path_images = value ## Préparation # Récupération de la liste des images disponibles avec la fonction List = Dir_Contents(Path_images) if len(List) == 0: 	print &quot;Erreur: aucun fichier image trouvé dans &quot;+Path_images 	sys.exit(1) # Amélioration du système de hasard Secs = int(time.strftime('%S')) * int(time.strftime('%H')) * int(time.strftime('%M')) for i in range(0,Secs): random.random() # Boucle principale (qui ne se termine jamais) while 1: 	# obtenir aléatoirement un fichier 	Position = random.randint(0,len(List) - 1) 	Fichier = (List[Position]) 	# Modification du fond 	guix = &quot;gconftool-2 -t string -s /desktop/gnome/background/picture_filename '&quot; + str(Fichier) + &quot;'&quot; 	commands.getstatusoutput(guix) 	# On attend un moment 	time.sleep(Secondes) # Fin de la boucle (qui va recommencer) </pre>
<p>(Oui, ce n&#8217;est pas vraiment très beau, mais je début en python je vous rappelle. Ne vous inquiétez pas, le programme n&#8217;est pas dangereux <img src='http://blog.theglu.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .)</p>
<p>Comment l&#8217;utiliser ? C&#8217;est pas très compliqué, d&#8217;abord il vous faut récupérer le script sur votre ordinateur : Sélectionnez le programme plus haut EN ENTIER, et copiez le dans votre presse-papier. Ouvrez un éditeur de texte (par exemple gedit), copiez-y le texte, et sauvegardez le fichier avec un nom tel que <code>changefond.py</code> dans votre dossier personnel (par exemple aussi). Rendez-vous dans le dossier ou le fichier a été sauvé avec nautilus, cliquez avec la touche droite dessus, et sélectionnez <em>Propriétés</em>. De là, cliquez sur l&#8217;onglet <em>Permissions</em>, et cochez la case <em>Autoriser l&#8217;exécution de fichier comme un programme</em>. Votre programme est maintenant exécutable !</p>
<p>Maintenant il s&#8217;agit de faire un dossier ou vos fonds seront stockés : par défaut, il s&#8217;agit du dossier <em>fondsdecran</em> dans votre dossier personnel, mais ne paniquez pas: cela est très facilement modifiable ! Déplacez ou copiez donc toutes vos images dans un seul dossier.</p>
<p>Après, il s&#8217;agit de lancer le script au démarrage : les menus <em>Système/Préférences/Sessions</em> et l&#8217;onglet <em>Programmes au démarrage</em> vous permettront de le faire : Cliquez sur <em>Ajouter</em>, et entrez le texte suivant :<br />
<code>/chemin/vers/le/script/nomduscript.py --sec nombredesecondes --path /dossier/des/images</code><br />
Si vous désirez un changement d&#8217;images toutes les 60 secondes, pas besoin d&#8217;entrer le <code>--sec nombredesecondes</code>, et si les images à mettre en fond d&#8217;écran dans <em>/home/votrelogin/fondsdecran</em> <code>--path /dossier/des/images</code> est inutile ! Validez, et à votre prochaine connexion<sup>[<a href="#pnote-53-2" id="rev-pnote-53-2">2</a>]</sup>, votre fond d&#8217;écran changera tout seul toutes les <code>nombredesecondes</code> secondes !</p>
<p>Remarque: vous pouvez aussi tester le programme en ligne de commande, en tapant exactement la même commande que vous avez entré pour le démarrage afin de vérifier que tout est fonctionnel !</p>
<div class="footnotes">
<h4>Notes</h4>
<p>[<a href="#rev-pnote-53-1" id="pnote-53-1">1</a>] En fait, la structure visuelle, tels que les tabulations et les retours à la lignes permettent de définir les parties du programme.</p>
<p>[<a href="#rev-pnote-53-2" id="pnote-53-2">2</a>] Vous pouvez aussi appuyer sur Alt-F2, et entrer la même commande afin d&#8217;éviter la déconnection</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.theglu.org/index.php/2007/02/02/changer-regulierement-son-fond-decran-gnome-grace-a-un-script-python/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Mise à jour de MonCanard.org</title>
		<link>http://blog.theglu.org/index.php/2006/11/16/mise-a-jour-de-moncanardorg/</link>
		<comments>http://blog.theglu.org/index.php/2006/11/16/mise-a-jour-de-moncanardorg/#comments</comments>
		<pubDate>Thu, 16 Nov 2006 19:11:00 +0000</pubDate>
		<dc:creator>The_Glu</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[moncanard.org]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[sites personnels]]></category>

		<guid isPermaLink="false">http://blog.theglu.org/index.php/?p=11</guid>
		<description><![CDATA[MonCanard.org a été mis à jour, voici la liste des modifications :

Interaction avec le blog de développement.
Mise en place des courses pseudo-aléatoires
Suppression des comptes qui ne sont pas validés.
Résolution du problème des \&#8217; dans les news.

Interaction avec le blog de développement.
Dorénavant, les nouvelles sur le développement de MonCanard.org, techniques, ou n&#8217;ayant pas un rapport avec [...]]]></description>
			<content:encoded><![CDATA[<h3><a href="http://www.moncanard.org" hreflang="fr">MonCanard.org</a> a été mis à jour, voici la liste des modifications :</h3>
<ul>
<li>Interaction avec le blog de développement.</li>
<li>Mise en place des courses pseudo-aléatoires</li>
<li>Suppression des comptes qui ne sont pas validés.</li>
<li>Résolution du problème des \&#8217; dans les news.</li>
</ul>
<h4>Interaction avec le blog de développement.</h4>
<p>Dorénavant, les nouvelles sur le développement de MonCanard.org, techniques, ou n&#8217;ayant pas un rapport avec le côté RP du jeu seront administrées à partir du blog du développeur  (celui-la donc), et affichées dans cette zone. Un cache est en place, les billets sont donc en retard d&#8217;une heure au maximum.</p>
<h4>Mise en place des courses pseudo-aléatoires</h4>
<p>Il à été reproché au courses d&#8217;êtres trop répétitives, dorénavant elles seront choisies aléatoirement parmis un choix de 10 courses. La programmation de courses vraiment aléatoires avec des obstacles différents viendrons plus tard. Le nombre de places est aussi aléatoires.</p>
<h4>Suppression des comptes qui ne sont pas validés.</h4>
<p>Dorénavant, tous les comptes n&#8217;étant pas validés, ou n&#8217;ayant pas initialisés leur premiers canards seront supprimées à la mise à jour. Cela va faire descendre de beaucoup les statistiques, mais c&#8217;est pas vraiment grave.</p>
<h4>Résolution du problème des \&#8217; dans les news.</h4>
<p>Tout le monde à pu remarqué que les &#8216; étaient affichées comme des \&#8217; dans les news, et que c&#8217;était franchement pas beau. Le problème est maintenant résolu !</p>
<p>Vous avez des idées pour <a href="http://www.moncanard.org" hreflang="fr">MonCanard.org</a> ? Envoyez vos idées sur <a href="http://www.moncanard.org/forum/upload/" hreflang="fr">le forum</a> !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theglu.org/index.php/2006/11/16/mise-a-jour-de-moncanardorg/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Présentation de MonCanard.Org</title>
		<link>http://blog.theglu.org/index.php/2006/11/10/presentation-de-moncanardorg/</link>
		<comments>http://blog.theglu.org/index.php/2006/11/10/presentation-de-moncanardorg/#comments</comments>
		<pubDate>Fri, 10 Nov 2006 15:38:00 +0000</pubDate>
		<dc:creator>The_Glu</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[moncanard.org]]></category>
		<category><![CDATA[programmation]]></category>
		<category><![CDATA[sites personnels]]></category>

		<guid isPermaLink="false">http://blog.theglu.org/index.php/?p=5</guid>
		<description><![CDATA[MonCanard.Org est un jeu d&#8217;élevage programmé par moi-même, disponible à l&#8217;adresse http://www.moncanard.org.
Le but du jeu est simple: il s&#8217;agit de nourrir ses canards chaque jour, et de les voir évoluer, puis de les revendre au final ! La reproduction permettant au passage d&#8217;en avoir de plus en plus&#8230;
Le jeu est tout neuf, et ne comporte [...]]]></description>
			<content:encoded><![CDATA[<p>MonCanard.Org est un jeu d&#8217;élevage programmé par moi-même, disponible à l&#8217;adresse <a href="http://www.moncanard.org" hreflang="fr">http://www.moncanard.org</a>.</p>
<p>Le but du jeu est simple: il s&#8217;agit de nourrir ses canards chaque jour, et de les voir évoluer, puis de les revendre au final ! La reproduction permettant au passage d&#8217;en avoir de plus en plus&#8230;</p>
<p>Le jeu est tout neuf, et ne comporte quelque utilisateur pour le moment, mais semble évoluer dans le bon sens !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theglu.org/index.php/2006/11/10/presentation-de-moncanardorg/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

