<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
	<channel>
		<title>tfe -  tfeserver homepage </title>
		<description>Blog sur Perl, et le developpement Web en general</description>
		<link>http://tfeserver.fr</link>
		<generator>Mod Perl2</generator>

		<item>
			<link>http://tfeserver.fr/news/184-Travailler%20libre%3F</link>
			<pubDate>Sat, 22 Nov 2008 22:30:24 GMT</pubDate>
			<title>Travailler libre?</title>
			<description><![CDATA[Petites questions ouvertes, à ceux qui veulent bien participer...<br /><br />Les
logiciels libres sont à peu près tout ce que j'utilise dans ma vie
quotidienne privée. Je prends un réel plaisir à les utiliser et à
essayer d'en créer moi-même.<br />Sur ma vie professionnelle, je n'ai pour l'instant pas eu la chance de les promouvoir, de quelque manière que ce soit.<br /><br />Le
domaine de la création et maintenance de sites internet est très axé
sur les utilisateurs. Nous nous devons donc d'utiliser les même outils
que nos utilisateurs pour vérifier la visibilité et l'accessibilité de
nos différents produits.<br />L'obligation de tester les pages sur Internet Explorer par exemple, oblige à:<br /><ul><li>Avoir comme système d'exploitation principal <span style="font-style: italic;">Windows</span></li><li>Avoir un outils de virtualisation avec un <span style="font-style: italic;">Windows</span> installé, ce qui pour ma vision de choses, rime au même.</li></ul>Ceci
évoqué, il est donc impossible de ne pas avoir un logiciel propriétaire
sous la main, voir de travailler la majeure partis du temps dessus.<br />Certes
nous avons le choix des éditeurs de texte, mais au final des problèmes
subsistent lorsqu'en ensemble de développeurs n'utilisent pas le même
éditeur de texte:<br /><ul><li>Tabulations ne valant pas le même nombre d'espaces</li><li>Encodage par défaut lors de la création de fichiers: utf/iso-8859-15 <br /></li><li>Automatisation de créations de commentaires, etc...</li></ul>Pour
les éditeurs de texte, on peut/doit prendre le temps de le configurer
pour qu'il soit utilisable de la même manière que le logiciel
propriétaire utilisé par la majorité... mais cela en vaut-il vraiment la peine?<br /><br />Les questions posés sont donc:<br /><ul><li>Peut-on réellement se passer des solutions <span style="font-style: italic;">Microsoft</span> en développant du Web?</li><li>Devrais-je essayer de convertir mes collègues à mon éditeur libre (<span style="font-style: italic;">gvim</span> en l'occurrence)?</li><li>Dois-je
tout simplement me plier aux "exigences du métier", et me dire qu'au
final, je fais ce qu'on me dit de faire au boulot, et ce que je veux
faire chez moi?</li></ul><br />]]></description>
		</item>
		<item>
			<link>http://tfeserver.fr/news/183-Mesure%20de%20bon%20code</link>
			<pubDate>Sat, 22 Nov 2008 13:49:06 GMT</pubDate>
			<title>Mesure de bon code</title>
			<description><![CDATA[<img src="http://www.osnews.com/images/comics/wtfm.jpg" alt="Comment mesurer un bon code?">
]]></description>
		</item>
		<item>
			<link>http://tfeserver.fr/news/182-Dessiner%20en%20%C3%A9tant%20gaucher%3F</link>
			<pubDate>Sun, 16 Nov 2008 16:04:22 GMT</pubDate>
			<title>Dessiner en étant gaucher?</title>
			<description><![CDATA[J'ai décidé aujourd'hui d'essayer de reproduire un tableau de chez moi, à l'aide du logiciel The gimp,&nbsp; cela pour 2 raisons:<br /><ul><li>Enfin savoir utiliser the gimp: ne pas savoir utiliser un logiciel de traitement d'image est une lacune lorsque l'on travaille dans le développement de sites web</li><li>Essayer de ne pas perdre mes quelques leçons de peinture que j'avais pris il y a quelques années.</li></ul>Le tableau en question est le suivant:<br />
<a href="/download/images/gimp/tableau.png"><img src="/download/images/gimp/.min_tableau.png" alt="tableau"></a><br /><br />Le premier problème auquel je suis confronté: j'écris et dessiner habituellement de la main gauche, mais utilise la souris de la main droite.<br /><br />Dur problème, je me demande si il ne serait pas temps de me placer la souris à la main gauche pour pouvoir être plus précis et plus rapide dans mes mouvements? (Si il y a des gauchers qui me lisent, j'aimerais des retours sur ce point)<br /><br />Malgré tout j'ai pu commencer une esquisse:<br />
<a href="/download/images/gimp/07.png"><img src="/download/images/gimp/.min_07.png" alt="esquisse"></a><br />Si la motivation reste intacte, j'essaierai de parvenir à un rendu correct d'ici quelques semaines... (oui je sais, c'est pas rapide, mais il faut bien lire les tutoriaux...)<br /><br />NdR: Dessin d'origine L.Blanc<br />]]></description>
		</item>
		<item>
			<link>http://tfeserver.fr/news/181-Regex%20recursive%20php</link>
			<pubDate>Fri, 14 Nov 2008 20:39:36 GMT</pubDate>
			<title>Regex recursive php</title>
			<description><![CDATA[Dans certains cas bien concrets il est très utile de faire appel à la récursivité dans les expressions régulières.<br />Un exemple des plus&nbsp; courants et la vérification de parenthèses: une parenthèse ouvrant doit trouver une parenthèse fermante.<br /><br />Pour résoudre ce type de problème,une expression régulière classique est impossible en php (en Perl il serait possible d'imbriquer du code dans la regex pour satisfaire nos besoins, mais c'est un autre débat).<br /><br /><h5>Expression régulière récursive en PHP (?R)<br /></h5>Pour faire bref et concis, voici un exemple de regex classique vérifiant 1 mot englobé dans une parenthèse:<br /><pre>$regex= "/\([^\(\)]*\)/";</pre><br />Explication de l'expression régulière:<br />Nous avons tout d'abord:<br /><ul><li>\(&nbsp; parenthèse ouvrante</li><li>[^\(\)]*&nbsp;&nbsp; lots de caractère différent des parenthèse ouvrantes et fermantes</li><li>\) parenthèse fermante</li></ul><br />Cette expression régulière marchera parfaitement pour des chaines du type "(mon mot)" , ou bien la chaine "()".<br />Le problème est que nous devons permettre également des mots contenants eux mêmes des parenthèses, et c'est là ou ça se complique.<br /><br />La récursivité d'une expression régulière en PHP est introduite par l'élément <span style="font-weight: bold;">(?R)</span>. Cet élément sera alors remplacé par l'ensemble de l'expression régulière.<br /><pre>$regex="/\((?:[^\(\)]*|(?R))\)/";</pre><br />Explication de l'expression régulière:<br /><ul><li>\( parenthèse ouvrante</li><li>(?: début de parenthèse pour grouper des éléments</li><li>[^\(\)]*|(?R) on permets un mot sans parenthèses ou bien une liste de mots entre parenthèses valides (récursivité)</li><li>) Fin de groupe</li><li>\) fin de parenthèse</li></ul>Cette expression régulière, un peu plus élaborée permettra de vérifier des listes de mots du type "(mon (mot))"&nbsp; ou bien "((mon ) mot)".<br /><br />Plus d'informations et d'exemples sur <a href="http://www.skdevelopment.com/php-regular-expressions.php">http://www.skdevelopment.com/php-regular-expressions.php</a><br />]]></description>
		</item>
		<item>
			<link>http://tfeserver.fr/news/180-Backup%20et%20restauration%20de%20configuration%20%28%2Fetc%29%20avec%20svn%20%28subversion%29</link>
			<pubDate>Sun, 26 Oct 2008 15:18:43 GMT</pubDate>
			<title>Backup et restauration de configuration (/etc) avec svn (subversion)</title>
			<description><![CDATA[Bien que de nombreux tutoriels sont déjà <a href="http://www.google.com/search?q=backup+svn+etc">présents sur internet</a>,
j'ai décidé d'en écrire un aujourd'hui résumant les étapes à suivre
pour monter un système de backup en utilisant subversion (svn).<br /><br /><h5>Étape 1: identification des fichiers à sauvegarder</h5><br />SVN
est un système de gestion de versions, permettant de sauvegarder des
fichiers par modifications. On peut ainsi obtenir différentes versions
d'un fichier, à un instant donné.<br />Par défaut les fichiers de
configurations se situent dans /etc, mais il se peut que pour vos
besoins personnels, vous ayez à sauvegarder égallement /usr/local/etc,
ou les fichiers de configuration de votre /home par exemple.<br /><br /><h5>Étape 2: création d'un repository</h5><br />Après avoir installé svn sur votre système, nous allons créer un repository du nom de "backup".<br /><pre>$ svnadmin create /var/opt/svn/backup</pre><br />Cette commande va crée le dossier /var/opt/svn/backup, ainsi que les sous-dossiers "conf", "db", "format" et "locks".<br />Utilisant
subversion en local sur notre machine, nous n'aurons pas besoin ici de
configurer le serveur. Aucun besoin donc de modifier le fichier de
configuration conf/svnserve.conf.<br />Aucun besoin non plus de lance le serveur "svnserve".<br /><br /><h5>Étape 3: création du working directory</h5>Le working directory sera le dossier à sauvegarder. Ici pour l'exemple nous prendrons "/etc".<br /><pre>$ cd /etc<br />$ svn co file:///var/opt/svn/backup .<br />Revisión obtenida: 0<br /></pre>Notre <span style="font-style: italic;">repository</span> étant vide cela nous a juste crée un dossier .svn a la racine du dossier /etc.<br /><br /><h5>Étape 3: ajout des dossiers et fichiers de configuration</h5>Nous allons par la suite ajouter les fichiers et dossiers au <span style="font-style: italic;">repository</span>, pour qu'ils soient pris&nbsp; en compte par svn.<br />On peut égallement spécifier uniquement les fichiers/dossiers à sauvegarder.<br /><pre>$ cd /etc<br />$ svn add * <br />ou<br />$ svn add -N apache2 &amp;&amp; svn add -apache2/conf<br /></pre>Des dizaines de lignes apparaissent alors, vous indiquant les dossiers et fichiers ajoutés. <br />Pour valider les modifications, <span style="font-style: italic;">commit</span> suffit:<br /><pre>$ cd /etc<br />$ svn commit<br /></pre>
Votre éditeur de texte apparaît alors, vous demandant d'entrer un
message. Entrez le texte de votre choix (du genre "Fichiers initiaux"),
enregistrez les modifications et sortez.<br /><br />
<pre>$ svn commit<br />Transmitiendo contenido de archivos .................<br />Commit de la revisión 1.<br /></pre>Vous remarquez par la suite que dans chaque sous dossier de votre arborescence s'est crée un dossier .svn.<br />Votre système de backup est presque prêt.<br /><h5>Étape 4: ignorer certains fichiers<br /></h5>Dans le cas ou vous ne voulez sauvegarder que certains fichiers, il faut spécifier à SVN de ne pas traiter les autres éléments. <br /><pre>$ cd /etc<br />$ svn propedit svn:ignore .<br /></pre>Votre éditeur de texte s'ouvre alors. Vous devez entre un nom de dossier/fichier par ligne.<br />Pour vérifier que vous n'avez rien oublié:<br /><pre>$ cd /etc<br />$ svn status <br /></pre>Vous ne devez alors aucun ligne commençant par "?".<br /><h5>Étape 5: auto-mise à jour du backup</h5>SVN va détecter pour chaque fichier si des modifications ont eu lieue, et vous permettre de modifier votre sauvegarde.<br /><pre>$ svn status<br />M      resolv.conf<br /></pre>Nous remarquons que svn a détecté un changement au niveau du fichier resolv.conf: le "M" indique que ce fichier a été modifié.<br />Nous pouvons alors auto-accepter ces modifications via un <span style="font-style: italic;">commit</span>.<br /><h5>Étape 6: monitoring des modifications</h5>Afin de vérifier les modifications de votre système, je vous propose un petit script:<br /><pre>#!/bin/sh

# Variables
#SVNPATH="/usr/local/etc /etc"
SVNBIN=/usr/local/subversion1.4.6/bin/svn
SVNADMINBIN=/usr/local/subversion1.4.6/bin/svnadmin
SVNLOOK=/usr/local/subversion1.4.6/bin/svnlook
SVNREP_PATH=/var/opt/svn/backup/
BACKUP=/var/backup/backup/svn.bz2
SVNPATH="/etc /usr/local"
SVNLOG="/var/log/backupsvn.log"

#Check svn status
for currentpath in $SVNPATH 
do
	COUNT=`$SVNBIN status $currentpath|egrep -c -v ^[MAD]`

	if [ $COUNT -gt 0 ]
	then
		echo "(ERREUR?): $COUNT fichiers/dossiers differents de (Modifie, Ajoute, Supprime) dans $currentpath... verifier a la main le repertoire! "|mail votre@mail.com -s "Update configuration $currentpath"
		echo "`date`: $COUNT modifications dans $currentpath" &gt;&gt; $SVNLOG
	else

		COUNT=`$SVNBIN status $currentpath|wc -l`
		if [ $COUNT -gt 0 ]
		then
			echo "`date`: Commit des modifications: $COUNT modifications aportees" &gt;&gt; $SVNLOG
			$SVNBIN commit $currentpath -m "Update `date`" &gt;&gt; $SVNLOG
			$SVNADMINBIN dump $SVNREP_PATH | bzip2 -c -9 &gt; $BACKUP
			chmod 400 $BACKUP

			LASTREV=`$SVNLOOK youngest $SVNREP_PATH`

			# Envoi de l'email
			echo "Modifications rencontrees dans $currentpath:
			
	Liste des modifiations:

`$SVNLOOK changed $SVNREP_PATH -r $LASTREV`
			
	Liste detaillee des diferences:

`$SVNBIN diff $currentpath -r $(($LASTREV - 1)) --diff-cmd /usr/bin/diff -x "-y --suppress-common-lines"`
			"|mail votre@mail.com -s "Update configuration $currentpath"
		else
			echo "`date`: Aucune modification dans $currentpath" &gt;&gt; $SVNLOG
		fi
	fi
done</pre>Vous pouvez alors mettre ce script dans votre cron. Ce script
auto-valide les modifications de fichiers, mais vous avise de
modifications autres dans le répertoire (ajout de fichiers, ajout de
dossiers, conflits, etc...)<br /><h5>Récuperation de la sauvegarde (au besoin)<br /></h5>Comme une sauvegarde n'est rien si elle n'est pas externalisée, voici la commande pour récupérer l'image du svn.<br /><pre>$ <code>svnadmin <b style="color: black; background-color: rgb(153, 255, 153);">dump</b> /var/opt/svn/backup | bzip2 -c -9 &gt;repos_svn.bz2</code><br /><br /></pre>Vous
récupérerez alors un fichier compressé contenant l'ensemble des
versions des fichiers, que vous pouvez externaliser comme bon vous
semble.<br /><br />Pour récupérer la sauvegarde après un crash par exemple:<br /><pre>$ bunzip2 repos_svn.bz2 | svn load /var/opt/svn/backup<br /></pre>
En espérant que vous n'ayez pas à utiliser la récupération. Ce n'est jamais très bon signe lorsque l'on doit l'utiliser :)<br /><br /><br />]]></description>
		</item>
		<item>
			<link>http://tfeserver.fr/news/178-Humeur%20du%20moment</link>
			<pubDate>Fri, 17 Oct 2008 17:36:22 GMT</pubDate>
			<title>Humeur du moment</title>
			<description><![CDATA[<p>Humour ?</p>
<img src="/dl/images/programmer1.jpg" alt="Look, i am a programmer" />]]></description>
		</item>
		<item>
			<link>http://tfeserver.fr/news/177-Syst%C3%A8me%20mon%C3%A9taire</link>
			<pubDate>Sat, 11 Oct 2008 22:49:17 GMT</pubDate>
			<title>Système monétaire</title>
			<description><![CDATA[Si comme moi, vous découvrez cette semaine comment fonctionne l'économie de cette planète, il n'est pas trop tard.<br />Un petit résumé est disponible sur video.<br /><a href="http://vimeo.com/1711304">http://vimeo.com/1711304</a>]]></description>
		</item>
		<item>
			<link>http://tfeserver.fr/news/176-Parque%20de%20Cab%C3%A1rceno</link>
			<pubDate>Mon, 29 Sep 2008 22:31:08 GMT</pubDate>
			<title>Parque de Cabárceno</title>
			<description><![CDATA[Je rentre d'un week end à Cabárceno (Nord de l'Espagne), et une fois
n'est pas coutume, je vous présente quelques fotos de ce site.<br /><br />Tout
d'abord qu'est ce que Cabárceno? Il s'agit un parc naturel&nbsp; à découvrir
en voiture, avec pas moins de 20Kms de routes. Sur ce parcours, vous
pouvez vous arrêter et découvrir divers types d'animaux.<br /><br />
<img src="/download/Cabarceno/.min_dscf3033.jpg" alt="test" /><br /><br />Arrivé
sur place, l'entrée coûte 18 euros. On nous fournis alors un dépliant
très complet avec un plan du site, ainsi qu'un CD audio expliquant au
fil du parcours, les différents éléments à regarder.<br /><br />
<img src="/download/Cabarceno/.min_dscf3044.jpg" alt="Peligro!" /><br /><br />Parmi les plus spectaculaire, je retiens donc: éléphants, tigres, ours, jaguar, hippopotames.<br />Le meilleur moment: lorsque l'on voit les animaux sans clôtures passer à côté de la voiture (sur certains passages uniquement).<br /><br />Vous trouverez <a href="/download/Cabarceno">l'ensembe des images</a> dans la section download du site.<br /><br />
<img src="/download/Cabarceno/.min_dscf3032.jpg" alt="Elefant" />
Vous trouverez plus d'informations sur le <a href="http://www.parquedecabarceno.com">site officiel</a>.]]></description>
		</item>
		<item>
			<link>http://tfeserver.fr/news/175-Avenir%20de%20la%20wii%20prometeur</link>
			<pubDate>Thu, 4 Sep 2008 20:56:34 GMT</pubDate>
			<title>Avenir de la wii prometeur</title>
			<description><![CDATA[Pas de doute, avec la wii on peut vraiment faire des<a href="http://www.cs.cmu.edu/%7Ejohnny/projects/wii/"> trucs incroyables</a>.<br />Va faloir penser à investir dans une wii prochainement :)<br /><br />]]></description>
		</item>
		<item>
			<link>http://tfeserver.fr/news/174-Mon%20essaie%20de%20Google%20Chrome</link>
			<pubDate>Wed, 3 Sep 2008 08:33:18 GMT</pubDate>
			<title>Mon essaie de Google Chrome</title>
			<description><![CDATA[<p>Voila le resultat de mon essaie de Google Chrome sur Windows XP:</p>
<p><img src="/dl/images/chrome.jpg" alt="Bug google chrome" /></p>
<p>Merci de votre lecture.</p>]]></description>
		</item>
	</channel>
</rss>
