<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planet ALDIL</title>
	<link>http://planet.aldil.org/</link>
	<language>en</language>
	<description>Planet ALDIL - http://planet.aldil.org/</description>

<item>
	<title>Alexandre De Dommelin - Laotseu: Strong Authentication for OpenID : Yubikey integration in SimpleID</title>
	<guid>http://blog.tuxz.net/12 at http://blog.tuxz.net</guid>
	<link>http://blog.tuxz.net/content/strong-authentication-openid-yubikey-integration-simpleid</link>
	<description>&lt;div class=&quot;field field-type-text field-field-introtext&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;p&gt;In a previous article, I've described a way to &lt;a href=&quot;http://blog.tuxz.net/content/openid-how-setup-your-own-identity-server-using-simpleid&quot;&gt;setup an OpenID&amp;nbsp;provider using SimpleID&lt;/a&gt;. Its only major drawback was the lack of support for any strong authentication ... since today. I've patched and released a version with Yubikey One-Time Password support.&lt;/p&gt;
        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This version is based on the latest released version available on the official SimpleID&amp;nbsp;website: 0.7.1 and also include patches to work correctly with PHP&amp;nbsp;5.3.1.&lt;br /&gt;
I will contact the author to see if he's interested in this feature and if he wants these patches to be included in the official SimpleID&amp;nbsp;tree, but if for any reason they would not be accepted, i'll keep my git repository up-to-date with any future release.&lt;/p&gt;
&lt;p&gt;More interesting than a long blahblah here is the git repository : &lt;a href=&quot;http://github.com/adedommelin/simpleid-yubikey&quot; title=&quot;http://github.com/adedommelin/simpleid-yubikey&quot;&gt;http://github.com/adedommelin/simpleid-yubikey&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Please take 2&amp;nbsp;minutes to read the small README&amp;nbsp;as it explains how to associate your key to your OpenID Identity.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
	<pubDate>ven, 19 mar 2010 22:59:49 +0000</pubDate>
</item>
<item>
	<title>Encolpe DEGOUTE: L’ALDIL en 2010</title>
	<guid>http://encolpe.wordpress.com/?p=404</guid>
	<link></link>
	<description>Après ce silence radio depuis quelques semaines je reprends le chemin du blog. Pour l&amp;#8217;instant j&amp;#8217;arrive à continuer de contribuer à la rubrique hebdomadaire de l&amp;#8217;AFPY en parrallèle à mes fonctions de président de l&amp;#8217;ALDIL. Les deux me prenant beaucoup de temps j&amp;#8217;ai dû laisser tomber l&amp;#8217;arbitrage de hockey sur glace qui me tenait à [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=encolpe.wordpress.com&amp;amp;blog=1743175&amp;amp;post=404&amp;amp;subd=encolpe&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</description>
	<pubDate>jeu, 18 mar 2010 23:40:20 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: How to quickly setup Two-Factor SSH authentication using Yubikey</title>
	<guid>http://blog.tuxz.net/11 at http://blog.tuxz.net</guid>
	<link>http://blog.tuxz.net/content/how-quickly-setup-two-factor-ssh-authentication-using-yubikey</link>
	<description>&lt;div class=&quot;field field-type-text field-field-introtext&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;p&gt;Thanks to the Geneva Application Security Forum, I'm now a proud owner of a Yubikey. This small USB token acts as an OTP&amp;nbsp;(One-Time Password) generator. I'll present you a quick solution to use it within OpenSSH&amp;nbsp;for Two-Factor (T-FA) authentication.&lt;/p&gt;
        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;What is Two-Factor authentication ?&lt;/h2&gt;
&lt;p&gt;An authentication factor is a piece of information and process used to authenticate or verify the identity of a person or other entity requesting access under security constraints. Two-factor authentication (T-FA) or (2FA) is a system wherein two different factors are used in conjunction to authenticate. Using two factors as opposed to one factor generally delivers a higher level of authentication assurance. Two-factor authentication typically is a signing-on process where a person proves his or her identity with two of the three methods: &amp;quot;something you know&amp;quot; (e.g., password or PIN), &amp;quot;something you have&amp;quot; (e.g.,smartcard or token), or &amp;quot;something you are&amp;quot; (e.g., fingerprint or iris scan).&lt;/p&gt;
&lt;h2&gt;How does the Yubikey work ?&lt;/h2&gt;
&lt;p&gt;A Yubikey is a small USB HID&amp;nbsp;device which is seen as a generic keyboard (no driver needed) with a small button. Each time the button is pressed it generates a one-time password secured using AES-128 encryption and ModHex encoding. For more details, you can have a look at this &lt;a href=&quot;http://www.linuxjournal.com/magazine/yubikey-one-time-password-authentication&quot;&gt;detailed article&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;How to integrate a Yubikey in the SSH login process ?&lt;/h2&gt;
&lt;p&gt;There is various solutions available, one of them is to use the a PAM&amp;nbsp;module, but it's still in development and users reports some crashes, so it doesn't sound a very good solution to me at this time.&lt;br /&gt;
The other solution (the one I'll present in this article) was to develop a script which will be invoked at each login, before giving a shell to the user, which will check the OTP.&lt;/p&gt;
&lt;h2&gt;Ok ... ok ! But how can I&amp;nbsp;use it with my OpenSSH&amp;nbsp;server ?&lt;/h2&gt;
&lt;p&gt;Here is the way my solution works : I've added a group called &amp;quot;yubikey&amp;quot; on the system. The SSH&amp;nbsp;server will execute the authentication script for all the members of this group on each login (this is done using the sshd_config Match directive). The script will ask the user to generate an OTP using his Yubikey, check if this key is authorized for this user, parsing ~/.ssh/trusted_yubikeys then proceed to the validation of the password. If everything is fine the script gives the user his shell.&lt;br /&gt;
Here are all the steps in detail :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Create the group :&lt;/strong&gt;&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;python&quot;&gt;
$ groupadd yubikey&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Add your user inside the group :&lt;/strong&gt;&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;python&quot;&gt;
$ adduser mon_user yubikey&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Specify the trusted keys for this user : &lt;/strong&gt;&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;python&quot;&gt;
$ cd /home/mon_user/.ssh
$ echo &amp;quot;yubikeyid&amp;quot; &amp;gt;&amp;gt; trusted_yubikeys&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Create the script in /usr/local/bin/yubikey.sh : &lt;/strong&gt;&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;python&quot;&gt;
#!/bin/bash
#
# (c) 2010 Alexandre De Dommelin
#
# This program is free software. It comes without any warranty, to
# the extent permitted by applicable law. You can redistribute it
# and/or modify it under the terms of the Do What The Fuck You Want
# To Public License, Version 2, as published by Sam Hocevar. See
# &lt;a href=&quot;http://sam.zoy.org/wtfpl/COPYING&quot; title=&quot;http://sam.zoy.org/wtfpl/COPYING&quot;&gt;http://sam.zoy.org/wtfpl/COPYING&lt;/a&gt; for more details.
#

YUBICO_API_ID=&amp;quot;XXXX&amp;quot;
TRUSTED_KEYS_FILE=&amp;quot;$HOME/.ssh/trusted_yubikeys&amp;quot;
STD=&amp;quot;\\033[0;39m&amp;quot;
OK=&amp;quot;\\033[1;32m[i]$STD&amp;quot;
ERR=&amp;quot;\\033[1;31m[e]$STD&amp;quot;

##################################################
## Disconnect clients trying to exit the script ##
##################################################

trap disconnect INT
disconnect() {
  sleep 1
  kill -9 $PPID
  exit 1
}


echo &amp;quot;&amp;quot;
echo &amp;quot;** One-Time Password Validation Step **&amp;quot;
echo &amp;quot;&amp;quot;
echo -n &amp;quot;Please provide Yubi OTP then enter Ctrl-d: &amp;quot;
OTP=`tr -c -d a-z &amp;lt; /dev/tty`
KEY_ID=${OTP:0:12}


####################################
## Get user-trusted yubikeys list ##
####################################

if [ ! -f $TRUSTED_KEYS_FILE ]
then
  echo -e &amp;quot;$ERR Unable to find trusted keys list&amp;quot;
  disconnect
else
  TRUSTED_KEYS=`cat $TRUSTED_KEYS_FILE`
fi



#######################################
## Iterate through trusted keys list ##
#######################################

for trusted in ${TRUSTED_KEYS[@]}
do
  if [ $KEY_ID = $trusted ]
  then
    echo -e &amp;quot;$OK Found key in $TRUSTED_KEYS_FILE - validating OTP now ...&amp;quot;

    if wget &amp;quot;https://api.yubico.com/wsapi/verify?id=$YUBICO_API_ID&amp;amp;otp=$OTP&amp;quot; -O - 2&amp;gt; /dev/null | grep &amp;quot;status=OK&amp;quot; &amp;gt; /dev/null
    then
      echo -e &amp;quot;$OK OTP validated&amp;quot;
      exec `grep &amp;quot;^$(whoami)&amp;quot; /etc/passwd | cut -d &amp;quot;:&amp;quot; -f 7`
    else
      echo -e &amp;quot;$ERR Unable to validate generated OTP&amp;quot; &amp;gt; /dev/stderr
      sleep 1
      disconnect
    fi
  fi
done

echo -e &amp;quot;$ERR Key not trusted&amp;quot; &amp;gt; /dev/stderr
disconnect&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Give it the right permissions :&lt;/strong&gt;&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;python&quot;&gt;
$ chmod 755 /usr/local/bin/yubikey.sh&lt;/pre&gt;&lt;p&gt;&lt;strong&gt; Configure /etc/ssh/sshd_config with this parameters :&lt;/strong&gt;&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;python&quot;&gt;
Match group yubikey
        ForceCommand /usr/local/bin/yubikey.sh
&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Then restart SSH server :&lt;/strong&gt;&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;python&quot;&gt;
$ /etc/init.d/ssh restart&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Important notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Keep an active SSH session during your tests :-)&lt;/li&gt;
&lt;li&gt;You have to put your API ID in YUBICO_API_ID inside the script. API ID can be obtained at api.yubico.com&lt;/li&gt;
&lt;li&gt;Make sure that ~/.ssh/trusted_keys is readable by the matching user&lt;/li&gt;
&lt;li&gt;Of course, you can use your own validation server, just adapt the script accordingly&lt;/li&gt;
&lt;li&gt;I'm not responsible of what you do, this script works for me, but it comes with no warranty, if your dog die tomorrow or anything else like that don't blame me&lt;/li&gt;
&lt;li&gt;Updated versions will be commited to &lt;a href=&quot;http://www.github.com/adedommelin&quot;&gt;my Github repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>mer, 17 mar 2010 19:58:59 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: Medor v0.1 : How to protect your session using RFID tags</title>
	<guid>http://blog.tuxz.net/10 at http://blog.tuxz.net</guid>
	<link>http://blog.tuxz.net/content/medor-v01-how-protect-your-session-using-rfid-tags</link>
	<description>&lt;div class=&quot;field field-type-text field-field-introtext&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;p&gt;As my RFID&amp;nbsp;reader works now, i've written &amp;quot;Medor&amp;quot; a small solution to protect my desktop session.&lt;/p&gt;
        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The idea is quite simple, at work I&amp;nbsp;often leave my computer for meetings ... and don't want to have to xlock / unlock my session.&lt;br /&gt;
On login, I start ssh-agent with all my different keys (Work &amp;amp; Personnal), so leaving a terminal open with them loaded looks dangerous to me. Medor checks every 5&amp;nbsp;seconds if my keys with my RFID&amp;nbsp;tag are present, if they aren't the screen is locked to prevent somebody to use my session. When my keys are back, the session is unlocked.&lt;br /&gt;
There's another protection, if Medor detects that the RFID&amp;nbsp;reader is no longer available (somebody tried to unplug it), the screen is locked, all keys in my ssh-agent are removed and a XMPP message is sent to my cell phone.&lt;/p&gt;
&lt;p&gt;Medor use the RFIDIOT library to access the RFID reader, have a look at my &lt;a href=&quot;http://blog.tuxz.net/content/how-use-touchatag-rfid-usb-reader-debian-gnulinux&quot;&gt;previous article to know how to use it on Debian GNU/Linux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here are the 2&amp;nbsp;main scripts (up-to-date release will be available on &lt;a href=&quot;http://github.com/adedommelin/&quot;&gt;my github&lt;/a&gt; under dotfiles/openbox/bin/Medor)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Medor.sh&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;bash&quot;&gt;
#!/bin/bash
#
# Medor v0.1
# Alex &amp;quot;laotseu&amp;quot; DE DOMMELIN - &lt;a href=&quot;http://blog.tuxz.net&quot; title=&quot;http://blog.tuxz.net&quot;&gt;http://blog.tuxz.net&lt;/a&gt;
#
# This program is free software. It comes without any warranty, to
# the extent permitted by applicable law. You can redistribute it
# and/or modify it under the terms of the Do What The Fuck You Want
# To Public License, Version 2, as published by Sam Hocevar. See
# &lt;a href=&quot;http://sam.zoy.org/wtfpl/COPYING&quot; title=&quot;http://sam.zoy.org/wtfpl/COPYING&quot;&gt;http://sam.zoy.org/wtfpl/COPYING&lt;/a&gt; for more details.
#

RFID_ID=&amp;quot;MYTAGID&amp;quot;
CHECK_TAG_SCRIPT=&amp;quot;/home/laotseu/.config/openbox/bin/Medor/python-rfid/checkTag.py&amp;quot;
SCREENLOCK=&amp;quot;xlock&amp;quot;
SCREENLOCK_OPTS=&amp;quot;-mode blank&amp;quot;
XMPP_ALERT=&amp;quot;/home/laotseu/.config/openbox/bin/Medor/xmpp_alert.py&amp;quot;



function protect() {
  (ssh-agent -k &amp;gt; /dev/null 2&amp;gt;&amp;amp;1)
  ($XMPP_ALERT &amp;quot;$(date) Security Alert : RFID reader unplugged&amp;quot; &amp;gt; /dev/null 2&amp;gt;&amp;amp;1)
  lock;
}

function lock() {
  ($SCREENLOCK $SCREENLOCK_OPTS &amp;amp;)
}

function unlock() {
  (/usr/bin/killall -9 $SCREENLOCK)
}



## Main Loop ##

ALERT_SENT=0
while [ 42 ];
do
  TAG=`$CHECK_TAG_SCRIPT 2&amp;gt;/dev/null`

  case $? in
    ############################
    ## Reader not present :-( ##
    ############################
    1 )
      if [ $ALERT_SENT -eq 0 ];
      then
        protect;
        ALERT_SENT=1
      fi;
    ;;


    #################################
    ## No tag present, lock screen ##
    #################################
    255 )
      (/bin/pidof $SCREENLOCK &amp;gt; /dev/null 2&amp;gt;&amp;amp;1)
      if [ $? -eq 1 ];
      then
        lock;
      fi;
    ;;


    #############################################
    ## Tag present, check if allowed to unlock ##
    #############################################
    0 )
      if [ &amp;quot;$TAG&amp;quot; == &amp;quot;$RFID_ID&amp;quot; ];
      then
        (/bin/pidof $SCREENLOCK &amp;gt; /dev/null 2&amp;gt;&amp;amp;1)
        if [ $? -eq 0 ];
        then
          unlock;
          ALERT_SENT=0
        fi;
      else
        (/bin/pidof $SCREENLOCK &amp;gt; /dev/null 2&amp;gt;&amp;amp;1)
        if [ $? -eq 1 ];
        then
          lock;
        fi;
      fi;
      ;;
  esac

  sleep 3
done;
&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;checkTag.py&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;python&quot;&gt;
#!/usr/bin/python

import RFIDIOtconfig
import os

try:
  card = RFIDIOtconfig.card
except:
  os._exit(1)

if card.select():
  print &amp;quot;%s&amp;quot; % card.uid
else:
  os._exit(-1)
&lt;/pre&gt;</description>
	<pubDate>sam, 06 fév 2010 09:55:24 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: How to use Touchatag RFID USB reader on Debian GNU/Linux</title>
	<guid>http://blog.tuxz.net/9 at http://blog.tuxz.net</guid>
	<link>http://blog.tuxz.net/content/how-use-touchatag-rfid-usb-reader-debian-gnulinux</link>
	<description>&lt;div class=&quot;field field-type-text field-field-introtext&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;p&gt;I've bougth a few month ago a Touchatag RFID reader, a cheap USB&amp;nbsp;device. It's reported to work on Windows / MacOS but not GNU/Linux. Here's a solution to use it on Debian.&lt;/p&gt;
        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;You need to install some packages :&lt;br /&gt;
&lt;em&gt; apt-get install python-pyscard pcscd pcsc-tools python-pycryptopp python-serial python-crypto&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Then download the latest release of RFIDIOT (RFID IO&amp;nbsp;Tools) &lt;a href=&quot;http://rfidiot.org/#Where&quot;&gt;here&lt;/a&gt; and simply extract it.&lt;/p&gt;
&lt;p&gt;Plug-in the reader and start pcsc_scan, you should see something like that :&lt;/p&gt;
&lt;pre name=&quot;code&quot;&gt;
&lt;em&gt;found one&lt;br /&gt;Scanning present readers&lt;br /&gt;0: ACS ACR 38U-CCID 00 00 &lt;/em&gt;
&lt;/pre&gt;&lt;p&gt;The &amp;quot;0:&amp;quot; is the reader id, so ctrl+c out of pcsc_scan, edit RFIDIOtconfig.py, jump down to the readernum= directive, and change that to the correct id given by pcsc_scan.&lt;/p&gt;
&lt;p&gt;You should now be able to test your reader using one of the contributed script such as multiselect.py.&lt;/p&gt;</description>
	<pubDate>ven, 05 fév 2010 23:29:13 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: Regular expressions : Email validation</title>
	<guid>http://blog.tuxz.net/8 at http://blog.tuxz.net</guid>
	<link>http://blog.tuxz.net/content/regular-expressions-email-validation</link>
	<description>&lt;div class=&quot;field field-type-text field-field-introtext&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;p&gt;Working on various web projects, there's a very well known problem : find a good regular expression (regexp) to check the validity of user submitted email addresses.&lt;/p&gt;
        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://fightingforalostcause.net/misc/2006/compare-email-regex.php&quot;&gt;This website&lt;/a&gt; has compiled various regular expressions which try to resolve this problem. The editor's idea is great, using a set of valid/invalid emails, and a simple unit test, he can provide a good comparison of some of the most used regexps.&lt;/p&gt;
&lt;p&gt;His philosophy is great : &amp;quot;It's better to accept a few invalid addresses than reject any valid ones, so I'm looking for 0 false-positives and as few false-negatives as possible.&amp;quot;&lt;br /&gt;
But I've noticed 2 problems :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;His &amp;quot;best&amp;quot; regexp doesn't work in JavaScript (JS doesn't support advanced features like negative lookbehind ...)&lt;/li&gt;
&lt;li&gt;The method used to validate IP addresses is not correct (doesn't take care of 0-255 range)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So i've decided to improve an existant one, adding an other test criteria : also check the &amp;quot;real&amp;quot; validity of the IP address. The following work is based on the G. Arluison's improved version of Warren Gaebel's regex.&lt;/p&gt;
&lt;p&gt;Here are my solutions :&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=&quot;code&quot;&gt;

/^[-a-z0-9~!$%^&amp;amp;*_=+}{\'?]+(\.[-a-z0-9~!$%^&amp;amp;*_=+}{\'?]+)*@([a-z0-9]([-a-z0-9_]?[a-z0-9])*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z]{2})|([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})(\.([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})){3})(:[0-9]{1,5})?$/i&lt;/pre&gt;&lt;p&gt;This one works very well (found 18/18 valid  mails + deep IP address check, and found 19/20 invalid mails - there is a problem checking global length)&lt;/p&gt;
&lt;p&gt;There's just a small problem, each time a new TLD &amp;gt; 2 chars will be added, you'll need to append it to the list in the regex, if you want a more generic solution, you can use this variant (note that this version will not check if the TLD really exists) :&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=&quot;code&quot;&gt;
/^[-a-z0-9~!$%^&amp;amp;*_=+}{\'?]+(\.[-a-z0-9~!$%^&amp;amp;*_=+}{\'?]+)*@([a-z0-9]([-a-z0-9_]?[a-z0-9])*(\.[-a-z0-9_]+)*\.([a-z]{2,6})|([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})(\.([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})){3})(:[0-9]{1,5})?$/i&lt;/pre&gt;&lt;p&gt;
Those 2 solutions should be usable in all languages providing PCRE (Perl Compatible Regular Expressions), on server &amp;amp; client side (such as Javascript, PHP, Perl, Python, Ruby etc...)&lt;/p&gt;</description>
	<pubDate>jeu, 21 jan 2010 20:41:17 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: OpenID : How to setup your own identity server using SimpleID</title>
	<guid>http://blog.tuxz.net/7 at http://blog.tuxz.net</guid>
	<link>http://blog.tuxz.net/content/openid-how-setup-your-own-identity-server-using-simpleid</link>
	<description>&lt;div class=&quot;field field-type-text field-field-introtext&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;p&gt;OpenID is a way to provide a single digital identity across the Internet. Instead of creating multiple accounts, remember the login/password couples on all the website you visit, you can use a single OpenID identity if this type of authentication is supported by the target website.&lt;/p&gt;
        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;An OpenID is in the form of a unique URL, and is authenticated by the user's 'OpenID provider' (that is, the entity hosting their OpenID URL).The OpenID protocol does not rely on a central authority to authenticate a user's identity. Since neither the OpenID protocol nor Web sites requiring identification may mandate a specific type of authentication, non-standard forms of authentication can be used, such as smart cards, biometrics, or ordinary passwords.&lt;/p&gt;
&lt;p&gt;While you can create an identity on various providers websites (it's possible you already have one see &lt;a href=&quot;http://openid.net/get-an-openid/&quot;&gt;Get an Openid&lt;/a&gt;) you may want to host your own identity server.&lt;/p&gt;
&lt;p&gt;There are a lot of identities servers, in various languages (PHP, Ruby, Python, Java...) i've decided to use &lt;a href=&quot;http://simpleid.sourceforge.net/&quot;&gt;SimpleID&lt;/a&gt; a lightweight PHP-based solution which doesn't rely on any database. Here is an overview of these features :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Support for OpenID 1.1 and 2.0&lt;/li&gt;
&lt;li&gt;Support for Simple Registration Extension 1.0 and 1.1 draft&lt;/li&gt;
&lt;li&gt;Multiple identities support&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Start by downloading the archive at &lt;a href=&quot;http://sourceforge.net/projects/simpleid/files/&quot;&gt;Sourceforge&lt;/a&gt;, extract it then move the cache, identities, www folders to your webserver.&lt;br /&gt;
Configure your Web Server (apache, lighttpd...) by adding a new virtualhost pointing to the &amp;quot;www&amp;quot; folder. For standard use, you don't need to setup any rewrite rule or anything else. &lt;br /&gt;
Rename config.default.inc to config.inc, then edit this file to put correct paths for the different needed folders&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Add an Identity&lt;/h2&gt;
&lt;p&gt;Create an identity file called &amp;quot;yournickname.identity&amp;quot; in the identities folder, your apache/lighttpd user must have read access to this file.&lt;/p&gt;
&lt;pre class=&quot;php&quot; name=&quot;code&quot;&gt;
identity=http://vhost.yourdomain.tld
pass=3408cad97ec7f9c09775da84048ecc0
[sreg]
nickname=your_nickname
email=yourmail@domain.tld
administrator=1
fullname=John Doe
dob=1957-01-02
gender=M
postcode=1234
country=ch
language=en
timezone=Europe/Zurich
&lt;/pre&gt;&lt;p&gt;
As for the &amp;quot;pass&amp;quot; line, you have to put the MD5&amp;nbsp;Hash of your password.&lt;/p&gt;
&lt;p&gt;That's all, you can now login to SimpleID&amp;nbsp;using your new identity, and use this identity to login in various websites.&lt;/p&gt;</description>
	<pubDate>sam, 16 jan 2010 15:38:09 +0000</pubDate>
</item>
<item>
	<title>Frédéric Logier - fredix: RMS à Lyon</title>
	<guid>http://frederic.logier.org/?p=146</guid>
	<link></link>
	<description>Après presque 12 ans d&amp;#8217;utilisation de logiciel libre, je viens enfin de rencontrer le gourou de tous les GNU/Linuxiens, RMS bien sûr. Cette rencontre a été organisée par L&amp;#8217;ALDIL et L&amp;#8217;université Lyon2 (http://www.colibre.org/module-Actus-display-sid-84.html ) donc merci beaucoup à eux.
J&amp;#8217;avais bien sûr visionné des vidéos de ses conférences et lu quelques comptes rendus, aussi ai-je eu [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=frederic.logier.org&amp;amp;blog=3098224&amp;amp;post=146&amp;amp;subd=fredix&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</description>
	<pubDate>jeu, 14 jan 2010 01:19:03 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: Python GTalk client</title>
	<guid>http://blog.tuxz.net/6 at http://blog.tuxz.net</guid>
	<link>http://blog.tuxz.net/content/python-gtalk-client</link>
	<description>&lt;div class=&quot;field field-type-text field-field-introtext&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;p&gt;Python snippet to send XMPP&amp;nbsp;messages using talk.google.com&lt;/p&gt;
        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;pre class=&quot;python&quot; name=&quot;code&quot;&gt;
#!/usr/bin/python
import xmpp

user = 'your_login'
pwd = 'your_password'

cnx = xmpp.Client('gmail.com')
cnx.connect( server=('talk.google.com',5223) )
cnx.auth( user,pwd,'python xmpp bot' )

cnx.send( xmpp.Message( &amp;quot;contact@domain.tld&amp;quot; ,&amp;quot;message&amp;quot; ) )
&lt;/pre&gt;</description>
	<pubDate>mar, 12 jan 2010 20:57:13 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: Notifications irssi distant grâce à libnotify</title>
	<guid>http://blog.tuxz.net/5 at http://blog.tuxz.net</guid>
	<link>http://blog.tuxz.net/content/notifications-irssi-distant-gr%C3%A2ce-%C3%A0-libnotify</link>
	<description>&lt;div class=&quot;field field-type-text field-field-introtext&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;p&gt;Voici une solution pour afficher des notifications locales lors de la r&amp;eacute;ception de messages dans votre irssi distant (sans X forwarding)...&lt;/p&gt;
        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Ne souhaitant pas mettre en place une solution n&amp;eacute;cessitant l'installation de paquets relatifs &amp;agrave; X sur mon serveur, je me suis tourn&amp;eacute; vers une solution utilisant un script perl int&amp;eacute;gr&amp;eacute; &amp;agrave; irssi et d'un autre script sur le poste client qui se chargera d'afficher les notifications sur le bureau en les r&amp;eacute;cup&amp;eacute;rant via SSH&lt;/p&gt;
&lt;h2&gt;Configuration cot&amp;eacute; serveur&lt;/h2&gt;
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;
use strict;
use Irssi;

sub priv_msg {
        my ($server,$msg,$nick,$address,$target) = @_;
        filewrite($nick.&amp;quot; &amp;quot; .$msg );
}

sub hilight {
    my ($dest, $text, $stripped) = @_;
    if ($dest-&amp;gt;{level} &amp;amp; MSGLEVEL_HILIGHT) {
        filewrite($dest-&amp;gt;{target}. &amp;quot; &amp;quot; .$stripped );
    }
}

sub filewrite {
        my ($text) = @_;
        open(FILE,&amp;quot;&amp;gt;&amp;gt;$ENV{HOME}/.irssi/notifications_log&amp;quot;);
        print FILE $text . &amp;quot;\n&amp;quot;;
        close (FILE);
}

Irssi::signal_add_last(&amp;quot;message private&amp;quot;, &amp;quot;priv_msg&amp;quot;);
Irssi::signal_add_last(&amp;quot;print text&amp;quot;, &amp;quot;hilight&amp;quot;);
&lt;/pre&gt;&lt;p&gt;Ce bout de code logguera vos messages priv&amp;eacute;s dans le fichier ~/.irssi/notifications_log&lt;br /&gt;
C'est fini pour le serveur, passons &amp;agrave; la suite.&lt;/p&gt;
&lt;h2&gt;Configuration c&amp;ocirc;t&amp;eacute; client&lt;/h2&gt;
&lt;p&gt;Tout d'abord, commencez par installer le paquet libnotify-bin (en tout cas il s'appelle comme ca sous debian, il fournit le binaire notify-send) Copiez/collez le code ci-dessous dans un fichier que vous placerez dans votre repertoire de scripts persos favoris (~/bin dans mon cas)&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;
#!/bin/sh
ssh &lt;a href=&quot;mailto:user@host.tld&quot;&gt;user@host.tld&lt;/a&gt; tail -F -n1 ~/.irssi/notifications_log | while read heading message
do notify-send -i gtk-dialog-info -t 300000 -- &amp;quot;${heading}&amp;quot; &amp;quot;${message}&amp;quot;
done
&lt;/pre&gt;&lt;p&gt;Pensez &amp;agrave; mettre votre login / adresse serveur &amp;agrave; la place de &amp;quot;user@host.tld&amp;quot;, le bit d'execution sur le script, puis rajoutez une ligne dans votre ~/.xinitrc pour qu'il soit lanc&amp;eacute; automatiquement lors de votre connexion.&lt;/p&gt;</description>
	<pubDate>mar, 12 jan 2010 19:12:40 +0000</pubDate>
</item>
<item>
	<title>NemyNet: Ma liste de Noël</title>
	<guid>http://blog.nemy.net/blogs/460@http://blog.nemy.net/blogs/</guid>
	<link>http://blog.nemy.net/blogs/index.php/2009/11/14/ma-liste-de-noel?blog=5</link>
	<description>&lt;p&gt;Bonjour&lt;/p&gt;

&lt;p&gt;Pour no&amp;#235;l avec Fran&amp;#231;ois on d&amp;#233;sire un r&amp;#233;cepteur TNT pour satellite.&lt;br /&gt;
Mais sinon j'ai mis &amp;#224; jour ma liste chez amazon. &lt;br /&gt;
A savoir que j'ai une pr&amp;#233;f&amp;#233;rence pour les deux DVD mais en version collector ;o)&lt;/p&gt;

&lt;p&gt;Voici l'url : &lt;a href=&quot;http://www.amazon.fr/gp/registry/1KGVKLC8RZ5ZC&quot; target=&quot;_blank&quot;&gt;liste de Karine&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://blog.nemy.net/blogs/index.php/2009/11/14/ma-liste-de-noel?blog=5&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
	<pubDate>sam, 14 nov 2009 12:53:34 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Les professionnels</title>
	<guid>http://jdll.org/edition-2009/les-professionnels/les-professionnels</guid>
	<link>http://jdll.org/edition-2009/les-professionnels/les-professionnels</link>
	<pubDate>sam, 24 oct 2009 16:33:27 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: De 2009 à 2010</title>
	<guid>http://jdll.org/archives/invariable/participez</guid>
	<link>http://jdll.org/archives/invariable/participez</link>
	<pubDate>lun, 19 oct 2009 21:06:05 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Les 15 et 16 octobre 2010 : 12e JDLL</title>
	<guid>http://jdll.org/archives/invariable/banner</guid>
	<link>http://jdll.org/archives/invariable/banner</link>
	<description>Les 11e Journées Du Logiciel Libre : c'est fini ! Satisfaction générale des participants. Noter la 12e édition sur l'agenda 2010...</description>
	<pubDate>dim, 18 oct 2009 07:18:26 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Infos pratiques</title>
	<guid>http://jdll.org/archives/invariable/enlight</guid>
	<link>http://jdll.org/archives/invariable/enlight</link>
	<description>Image 2010 ? Édition 2009 !</description>
	<pubDate>dim, 18 oct 2009 07:14:56 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Les associations</title>
	<guid>http://jdll.org/edition-2009/les-associations/les-associations</guid>
	<link>http://jdll.org/edition-2009/les-associations/les-associations</link>
	<pubDate>mer, 14 oct 2009 20:09:23 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Conférences 2008 enregistrées en vidéo !</title>
	<guid>http://jdll.org/archives/Edition_2008/les-conferences-seront-enregistrees-en-video</guid>
	<link>http://jdll.org/archives/Edition_2008/les-conferences-seront-enregistrees-en-video</link>
	<description>L'association ViVé, école de vidéo participative de Grigny, a enregistré des conférences des JDLL 2008.</description>
	<pubDate>dim, 11 oct 2009 17:28:21 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Bienvenue :</title>
	<guid>http://jdll.org/front-page</guid>
	<link>http://jdll.org/front-page</link>
	<description>Les Journées Du Logiciel Libre !</description>
	<pubDate>dim, 11 oct 2009 17:23:14 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: Vim : Conserver la position du curseur entre sessions</title>
	<guid>http://blog.tuxz.net/3 at http://blog.tuxz.net</guid>
	<link>http://blog.tuxz.net/content/vim-conserver-la-position-du-curseur-entre-sessions</link>
	<description>&lt;div class=&quot;field field-type-text field-field-introtext&quot;&gt;
    &lt;div class=&quot;field-items&quot;&gt;
            &lt;div class=&quot;field-item odd&quot;&gt;
                    &lt;p&gt;Voila une solution pour replacer automatiquement le curseur la o&amp;ugrave; vous vous trouviez lors de la derni&amp;egrave;re &amp;eacute;dition d'un fichier.&lt;/p&gt;
        &lt;/div&gt;
        &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Rajouter cette ligne dans votre ~/.vimrc :&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;php&quot;&gt;
autocmd BufReadPost * if line(&amp;quot;'\&amp;quot;&amp;quot;) &amp;amp;&amp;amp; line(&amp;quot;'\&amp;quot;&amp;quot;) &amp;lt;= line(&amp;quot;$&amp;quot;) 
| exe &amp;quot;normal `\&amp;quot;&amp;quot; | endif
&lt;/pre&gt;</description>
	<pubDate>sam, 10 oct 2009 13:32:10 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Framakey Ubuntu-fr</title>
	<guid>http://jdll.org/edition-2009/les-conferences/framakey-ubuntu-fr-remix</guid>
	<link>http://jdll.org/edition-2009/les-conferences/framakey-ubuntu-fr-remix</link>
	<description>Cette clé répond a un fort besoin (nomadisme, LiveUSB, dépannage, etc) et soulève des questions (travail inter-assoc', intéropérabilité, virtualisation, etc)</description>
	<pubDate>jeu, 08 oct 2009 19:09:18 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Dossier de presse JDLL 2009</title>
	<guid>http://jdll.org/presse-edition-2009-des-journees-du-logiciel-libre/dossier-de-presse-jdll-2009</guid>
	<link>http://jdll.org/presse-edition-2009-des-journees-du-logiciel-libre/dossier-de-presse-jdll-2009</link>
	<description>Dossier de presse présentant les 11ème JDLL</description>
	<pubDate>dim, 04 oct 2009 00:47:11 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Kit promo JDLL2009</title>
	<guid>http://jdll.org/presse-edition-2009-des-journees-du-logiciel-libre/kit-promo-jdll2009</guid>
	<link>http://jdll.org/presse-edition-2009-des-journees-du-logiciel-libre/kit-promo-jdll2009</link>
	<description>Tout le matériel de promotion des JDLL 2009 : bannières, affiches, flyers, communiqué et dossier de presse (avec les sources pour les visuels)</description>
	<pubDate>dim, 04 oct 2009 00:46:08 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Le programme est publié !</title>
	<guid>http://jdll.org/edition-2009/news_item.2009-08-02.7732695976</guid>
	<link>http://jdll.org/edition-2009/news_item.2009-08-02.7732695976</link>
	<description>Le programme est en ligne. Pour les conférenciers : nous pouvons créer une page à leur intention pour y décrire plus précisément la conférence, le conférencier. Envoyer la matière à l'adresse de contact déjà employée.</description>
	<pubDate>lun, 28 sep 2009 07:31:43 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: La Poule ou l'Oeuf</title>
	<guid>http://jdll.org/edition-2009/les-conferences/la-poule-ou-l-oeuf</guid>
	<link>http://jdll.org/edition-2009/les-conferences/la-poule-ou-l-oeuf</link>
	<description>Gestion/rédaction/publication de livres et collections : thèses, cours, monographies, rapports, manuels techniques...</description>
	<pubDate>lun, 28 sep 2009 07:14:19 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: LemonLDAP::NG</title>
	<guid>http://jdll.org/edition-2009/les-conferences/lemonldap-ng</guid>
	<link>http://jdll.org/edition-2009/les-conferences/lemonldap-ng</link>
	<description>Mécanismes d'authentification unique</description>
	<pubDate>lun, 28 sep 2009 07:06:56 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Loi Hadopi et contrôle du NET</title>
	<guid>http://jdll.org/edition-2009/les-conferences/loi-hadopi-et-controle-du-net</guid>
	<link>http://jdll.org/edition-2009/les-conferences/loi-hadopi-et-controle-du-net</link>
	<description>Les enjeux autour de ces lois.</description>
	<pubDate>lun, 28 sep 2009 07:05:02 +0000</pubDate>
</item>
<item>
	<title>Stéphane Salès - stephs: ebusiness.info, Franck Prime .. Sourions un peu</title>
	<guid>urn:md5:847ec56ee37d57c725ae566fedac447f</guid>
	<link>http://blog.alio.fr/?post/2009/09/25/ebusiness.info%2C-Franck-Prime-..-Sourions-un-peu</link>
	<description>&lt;p&gt;Si comme moi vous avez déjà eu des soucis avec ebusiness.info et/ou Franck Prime, la suite vous fera sourire&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.buzzinessman.com/les-blacklistes-ebusiness-info-boycot-des-salons-e-commerce-paris-co/2009/09/24/comment-page-1/#comment-1227&quot;&gt;Les blacklistés ebusiness.info, boycot des salons e-commerce paris &amp;amp; co. Buzzinessman, blog e-commerce&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>ven, 25 sep 2009 11:02:00 +0000</pubDate>
</item>
<item>
	<title>NemyNet: C'est en route</title>
	<guid>http://blog.nemy.net/blogs/459@http://blog.nemy.net/blogs/</guid>
	<link>http://blog.nemy.net/blogs/index.php/2009/09/24/c-est-en-route?blog=5</link>
	<description>&lt;p&gt;Je vais arr&amp;#234;ter le 3*8 ce qui implique la perte de 1/3 de mon salaire.&lt;/p&gt;

&lt;p&gt;Il va falloir des &amp;#233;conomies.&lt;/p&gt;

&lt;p&gt;Premi&amp;#232;res actions&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;R&amp;#233;duire mon abonnement chez sfr sans pour autant me r&amp;#233;engager pour 24 mois.&lt;br /&gt;
&lt;strong&gt;&amp;#201;conomie faite &amp;#224; peut pr&amp;#232;s 20 euros/mois&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;R&amp;#233;duire note abonnement canal sat avant son arret fin janvier.&lt;br /&gt;
&lt;strong&gt;&amp;#201;conomie faite &amp;#224; peut pr&amp;#232;s 14 euros/mois&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;j'ai d&amp;#233;cid&amp;#233; d'arr&amp;#234;ter de consommer de l'eau gazeuse.&lt;br /&gt;
&lt;strong&gt;&amp;#201;conomie estim&amp;#233;e &amp;#224; peut pr&amp;#232;s 15 euros/mois&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Fran&amp;#231;ois vas arr&amp;#234;ter le coca cola light.&lt;br /&gt;
&lt;strong&gt;&amp;#201;conomie estim&amp;#233;e &amp;#224; peut pr&amp;#232;s 30 euros/mois&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Avec c'est premi&amp;#232;re r&amp;#233;solutions on estime faire une &amp;#233;conomie de 79 euros/mois.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://blog.nemy.net/blogs/index.php/2009/09/24/c-est-en-route?blog=5&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
	<pubDate>jeu, 24 sep 2009 15:11:11 +0000</pubDate>
</item>
<item>
	<title>NemyNet: Et les passages pietons c'est pour qui ?</title>
	<guid>http://blog.nemy.net/blogs/458@http://blog.nemy.net/blogs/</guid>
	<link>http://blog.nemy.net/blogs/index.php/2009/09/18/et-les-passages-pietons-c-est-pour-qui?blog=5</link>
	<description>&lt;p&gt;Juste quelques mots contre tout ces parents qui traversent avec leurs enfants en dehors des passages pi&amp;#233;tons ...&lt;br /&gt;
Apr&amp;#232;s qu'ils ne viennent pas pleurer en cas d'accident, la pr&amp;#233;vention ce n'est pas que pour la grippe.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://blog.nemy.net/blogs/index.php/2009/09/18/et-les-passages-pietons-c-est-pour-qui?blog=5&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
	<pubDate>ven, 18 sep 2009 14:53:20 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: WiKimedia</title>
	<guid>http://jdll.org/edition-2009/les-conferences/wikimedia</guid>
	<link>http://jdll.org/edition-2009/les-conferences/wikimedia</link>
	<description>La connaissance partagée à travers les outils du WEB de type WiKi.</description>
	<pubDate>mer, 16 sep 2009 11:50:25 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: WEBnapperon par Erasme</title>
	<guid>http://jdll.org/edition-2009/les-conferences/webnapperon-par-erasme</guid>
	<link>http://jdll.org/edition-2009/les-conferences/webnapperon-par-erasme</link>
	<description>&quot;WEBnapperon&quot; - L'internet des objets pour les personnes dépendantes et handicapées. ou -Comment partager les richesses du Web avec nos anciens, sans leur imposer les contraintes de l'ordinateur.</description>
	<pubDate>mer, 16 sep 2009 11:46:26 +0000</pubDate>
</item>
<item>
	<title>Dup: Python - suite</title>
	<guid>http://blog.delhomme.org/index.php/2009/09/01/165-python-suite</guid>
	<link>http://blog.delhomme.org/index.php/2009/09/01/165-python-suite</link>
	<description>Je continue d'apprendre python et je vous livre quelques unes de mes impressions après 1 mois&amp;nbsp;:


Le coup de structurer le programme avec l'indentation, c'est vraiment pas mal. Les fonctions se limitent au strict nécessaire, il n'y a pas de fioritures type {} ou BEGIN END. Finalement on se...</description>
	<pubDate>mar, 01 sep 2009 21:21:24 +0000</pubDate>
</item>
<item>
	<title>Dup: Python</title>
	<guid>http://blog.delhomme.org/index.php/2009/08/06/164-python</guid>
	<link>http://blog.delhomme.org/index.php/2009/08/06/164-python</link>
	<description>Hop,


Ça fait presque une semaine que je me suis mis a apprendre le python. Je ne le parle pas encore couramment, mais ça ne saurait tarder.


Je fais encore de très nombreuses erreurs de syntaxes notamment les &quot;:&quot; après les fonctions, après les &quot;if&quot;, &quot;else&quot; et autres &quot;while&quot;. Peu d'erreurs...</description>
	<pubDate>jeu, 06 aoû 2009 20:09:16 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Les conférences</title>
	<guid>http://jdll.org/edition-2009/les-conferences/les-conferences</guid>
	<link>http://jdll.org/edition-2009/les-conferences/les-conferences</link>
	<pubDate>jeu, 30 jui 2009 10:54:32 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: Routeur bluewin et dyndns</title>
	<guid>http://blog.tuxz.net/archives/2009/07/14/routeur_bluewin_et_dyndns/</guid>
	<link>http://blog.tuxz.net/archives/2009/07/14/routeur_bluewin_et_dyndns/</link>
	<description>&lt;p&gt;
&amp;lt;my life&amp;gt;Habitant maintenant en suisse, j'ai du me resigner a quitter free, et ses supers offres, pour passer chez un provider d'ici : Swisscom&amp;lt;/my life&amp;gt;
&lt;br /&gt;&lt;br /&gt;Ayant besoin d'un moyen pour joindre mes machines a la maison, j'ai farfouille un peu sur la maniere de configurer dyndns sur ce petit routeur, voila la solution : &lt;br /&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Creer un compte chez dyndns (non s&amp;eacute;rieux ?)&lt;/li&gt;
&lt;li&gt;Se connecter en telnet sur le routeur (ip par defaut: 192.168.1.1, login admin, voir pour le mdp dans votre compte client swisscom)&lt;/li&gt;
&lt;li&gt;$ configure&lt;/li&gt;
&lt;li&gt;$ set dyn&lt;/li&gt;
&lt;li&gt;rentrer vos information de login chez dyndns, pour &quot;option&quot; saisir &quot;dyndns.org&quot;&lt;/li&gt;
&lt;li&gt;$ save&lt;/li&gt;
&lt;/ul&gt;
Et voila c'est fini, votre routeur contactera dyndns a chaque fois qu'il changera d'IP pour leur communiquer.
&lt;/p&gt;</description>
	<pubDate>mar, 14 jui 2009 21:31:58 +0000</pubDate>
</item>
<item>
	<title>Dup: HADOPI et droits voisins...</title>
	<guid>http://blog.delhomme.org/index.php/2009/07/08/163-hadopi-et-droits-voisins</guid>
	<link>http://blog.delhomme.org/index.php/2009/07/08/163-hadopi-et-droits-voisins</link>
	<description>Pas si charmants que ça...</description>
	<pubDate>mer, 08 jui 2009 20:21:02 +0000</pubDate>
</item>
<item>
	<title>Dup: Heraia - 0.1.0</title>
	<guid>http://blog.delhomme.org/index.php/2009/07/01/162-heraia-010</guid>
	<link>http://blog.delhomme.org/index.php/2009/07/01/162-heraia-010</link>
	<description>No real major changes but&amp;nbsp;:


filesize is now displayed in main window
hability to open multiple files via &quot;File&quot; menu
log now scrolls down automatically
stat window now remembers last used directory (when saving images) and has overwrite confirmation





What's next&amp;nbsp;?


I will try to...</description>
	<pubDate>mer, 01 jui 2009 00:00:39 +0000</pubDate>
</item>
<item>
	<title>Journées du Logiciel Libre: Les journées du logiciel libre 2009</title>
	<guid>http://jdll.org/edition-2009/les-journees-du-logiciel-libre-2007</guid>
	<link>http://jdll.org/edition-2009/les-journees-du-logiciel-libre-2007</link>
	<description>La réflexion commence. Vous pouvez nous aider à choisir un thème et à le concrétiser.</description>
	<pubDate>jeu, 18 jun 2009 07:30:26 +0000</pubDate>
</item>
<item>
	<title>Toady: Workshop on the Analysis of System Logs</title>
	<guid>urn:md5:7e0cd8d37b8d308e49de70aa6bcd25d6</guid>
	<link>http://www.gscore.org/blog/index.php/post/2009/06/11/Workshop-on-the-Analysis-of-System-Logs</link>
	<description>&lt;p&gt;Just a reminder, we are approaching the June 29th deadline for WASL, &lt;a href=&quot;http://www.systemloganalysis.com/&quot; hreflang=&quot;en&quot;&gt;http://www.systemloganalysis.com/&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>jeu, 11 jun 2009 19:41:00 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: Notifications depuis irssi distant grace a libnotify</title>
	<guid>http://blog.tuxz.net/archives/2009/06/09/notifications_depuis_irssi_distant_grace_a_libnotify/</guid>
	<link>http://blog.tuxz.net/archives/2009/06/09/notifications_depuis_irssi_distant_grace_a_libnotify/</link>
	<description>&lt;p&gt;
Il existe plusieurs solutions pour afficher des notifications locales lorsque vous recevez des messages sur votre irssi distant.&lt;br /&gt;
Ne souhaitant pas mettre en place une solution necessitant l'installation de paquets relatifs à X sur mon serveur, je me suis tourn&amp;eacute; vers une solution utilisant un petit script perl int&amp;amp;eagr&amp;eacute; &amp;agrave; irssi et d'un autre petit script sur le poste client qui se chargera d'afficher les notifications sur le bureau.&lt;br /&gt;

&lt;h2&gt;Configuration c&amp;ocirc;t&amp;eacute; serveur&lt;/h2&gt;
Copiez/collez le code ci-dessous dans un fichier qui sera plac&amp;eacute; dans le repertoire ~/.irssi/scripts/autorun/
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
use strict;
use Irssi;

sub priv_msg {
        my ($server,$msg,$nick,$address,$target) = @_;
        filewrite($nick.&quot; &quot; .$msg );
}

sub hilight {
    my ($dest, $text, $stripped) = @_;
    if ($dest-&gt;{level} &amp;amp; MSGLEVEL_HILIGHT) {
        filewrite($dest-&gt;{target}. &quot; &quot; .$stripped );
    }
}

sub filewrite {
        my ($text) = @_;
        open(FILE,&quot;&gt;&gt;$ENV{HOME}/.irssi/notifications_log&quot;);
        print FILE $text . &quot;\n&quot;;
        close (FILE);
}

Irssi::signal_add_last(&quot;message private&quot;, &quot;priv_msg&quot;);
Irssi::signal_add_last(&quot;print text&quot;, &quot;hilight&quot;);
&lt;/code&gt;&lt;/pre&gt;

Ce bout de code logguera vos messages priv&amp;eacute;s dans le fichier ~/.irssi/notifications_log&lt;br /&gt;
C'est fini pour le serveur, passons &amp;agrave; la suite.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Configuration c&amp;ocirc;t&amp;eacute; client&lt;/h2&gt;
Tout d'abord, commencez par installer le paquet libnotify-bin (en tout cas il s'appelle comme ca sous debian, il fournit le binaire notify-send)
Copiez/collez le code ci-dessous dans un fichier que vous placerez dans votre repertoire de scripts persos favoris (~/bin dans mon cas)
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
#!/bin/sh
ssh user@host.tld tail -F -n1 ~/.irssi/notifications_log | while read heading message
do notify-send -i gtk-dialog-info -t 300000 -- &quot;${heading}&quot; &quot;${message}&quot;
done
&lt;/code&gt;&lt;/pre&gt; 
&lt;br /&gt;
Pensez &amp;agrave; mettre votre login / adresse serveur &amp;agrave; la place de &quot;user@host.tld&quot;, le bit d'execution sur le script, puis rajoutez une ligne dans votre ~/.xinitrc pour qu'il soit lanc&amp;eacute; automatiquement lors de votre connexion.
&lt;br /&gt;&lt;br /&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
Relancez votre irssi, lancez le script sur votre client et attendez qu'un ami vous parle (ou alors envoyez-vous vous meme un message avec un autre client si vous n'avez pas d'amis).&lt;br /&gt;
Dernier point, il est quand meme largement conseillé d'avoir votre clef ssh de pos&amp;eacute;e sur votre serveur et de prevoir un mécanisme de saisie de votre passphrase AVANT d'appeler votre script client.
&lt;/p&gt;</description>
	<pubDate>mar, 09 jun 2009 21:45:35 +0000</pubDate>
</item>
<item>
	<title>Toady: Eicar 2009 slides available</title>
	<guid>urn:md5:bd6c6f4bc768d0c4875e9cf442ea93b2</guid>
	<link>http://www.gscore.org/blog/index.php/post/2009/05/25/Eicar-2009-slides-available</link>
	<description>&lt;p&gt;You can find the slides for the lecture &lt;a href=&quot;http://psaade.free.fr/&quot; hreflang=&quot;en&quot;&gt;Philippe&lt;/a&gt; and I gave at &lt;a href=&quot;http://www.eicar.org/conference/&quot; hreflang=&quot;en&quot;&gt;Eicar&lt;/a&gt; for &lt;a href=&quot;http://www.wallinfire.net/files/eicar2009-slides.pdf&quot; hreflang=&quot;en&quot;&gt;download&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Enjoy! (feedback greatly appreciated)&lt;/p&gt;</description>
	<pubDate>lun, 25 mai 2009 21:59:00 +0000</pubDate>
</item>
<item>
	<title>Dup: Heraia - 0.0.9</title>
	<guid>http://blog.delhomme.org/index.php/2009/05/19/161-heraia-009</guid>
	<link>http://blog.delhomme.org/index.php/2009/05/19/161-heraia-009</link>
	<description>Heraia - 0.0.9 is out since 19 may 2009&amp;nbsp;!</description>
	<pubDate>mar, 19 mai 2009 21:10:41 +0000</pubDate>
</item>
<item>
	<title>Toady: Eicar 2009 paper available</title>
	<guid>urn:md5:d39b059d8ea91057757bb650623dda38</guid>
	<link>http://www.gscore.org/blog/index.php/post/2009/05/15/Eicar-2009-paper-available</link>
	<description>The paper Philippe and I wrote for Eicar is now available for download.
&lt;br /&gt;&lt;br /&gt;&lt;div align=&quot;center&quot;&gt;&lt;strong&gt;Applied Parallel Coordinates for Logs and Network Traffic Attack Analysis (Best paper award)&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;By looking on how computer security issues are handled today, dealing with numerous and unknown events is not easy. Events need to be normalized, abnormal behaviors must be described and known attacks are usually signatures.&lt;br /&gt;Parallel coordinates plot oﬀers a new way to deal with such a vast amount of events and event types: instead of working with an alert system, an image is generated so that issues can be visualized.&lt;br /&gt;By simply looking at this image, one can see line patterns with particular color, thickness, frequency, or convergence behavior that gives evidence of subtle data correlation.&lt;br /&gt;This paper ﬁrst starts with the mathematical theory needed to understand the power of such a system and later introduces the Picviz software which implements part of it.&lt;br /&gt;Picviz dissects acquired data into a graph description language to make a parallel coordinate picture of it. Its architecture and features are covered with examples of how it can be used to discover security related issues.&lt;br /&gt;&lt;br /&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://www.wallinfire.net/files/eicar2009-tricaud_saade.pdf&quot;&gt;Dowload here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
	<pubDate>ven, 15 mai 2009 18:17:00 +0000</pubDate>
</item>
<item>
	<title>Stéphane Salès - stephs: Bourreau-TF1 : Le cabinet d'Albanel voulait bien la tête de l'employé</title>
	<guid>urn:md5:43d5e8953540192a848b1970835da9d2</guid>
	<link>http://blog.alio.fr/?post/2009/05/13/Bourreau-TF1-%3A-Le-cabinet-d-Albanel-voulait-bien-la-t%C3%AAte-de-l-employ%C3%A9</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.numerama.com/magazine/12889-Bourreau-TF1-Le-cabinet-d-Albanel-voulait-bien-la-tete-de-l-http://www.numerama.com/magazine/12889-Bourreau-TF1-Le-cabinet-d-Albanel-voulait-bien-la-tete-de-l-employe.html&quot;&gt;Bourreau-TF1&amp;nbsp;: Le cabinet d'Albanel voulait bien la tête de l'employé&amp;nbsp;! - Numerama&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;Le Canard Enchaîné daté de ce mercredi a pu mettre la main sur le mail envoyé par le cabinet de Christine Albanel à la direction de TF1. Il est accablant pour la ministre&amp;nbsp;:&lt;/p&gt;
&lt;p&gt;
&quot;Bonjour,
Jean-Michel, vous avez des salariés qui, manifestement, aiment tirer contre leur camp.
Cordialement&quot;&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;Pour rappel&amp;nbsp;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Interrogée hier à l'occasion des questions au gouvernement, Christine Albanel avait indiqué que l'e-mail avait été envoyé à TF1 &quot;sans aucune demande de sanction, mais pour information&quot;. Une drôle de manière d'informer.&lt;/p&gt;&lt;/blockquote&gt;</description>
	<pubDate>mar, 12 mai 2009 22:00:00 +0000</pubDate>
</item>
<item>
	<title>Toady: Prague</title>
	<guid>urn:md5:ef55e3da69d9c14ef63885963e052386</guid>
	<link>http://www.gscore.org/blog/index.php/post/2009/04/30/Pragues</link>
	<description>&lt;p&gt;I am in Prague until next Monday. Between city tours, Picviz hacking, slides writing for Eicar and working on my Picviz paper for the Journal of Computer Virology let's meet up!&lt;/p&gt;


&lt;p&gt;just drop me an email.&lt;/p&gt;</description>
	<pubDate>jeu, 30 avr 2009 20:59:00 +0000</pubDate>
</item>
<item>
	<title>Stéphane Salès - stephs: Lionel Tardy première victime de la riposte graduée</title>
	<guid>urn:md5:3f1a07aac208cbad72ef68736a49119a</guid>
	<link>http://blog.alio.fr/?post/2009/04/29/Lionel-Tardy-premi%C3%A8re-victime-de-le-riposte-gradu%C3%A9e</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://tardy.hautetfort.com/archive/2009/04/29/lionel-tardy-premiere-victime-de-le-riposte-graduee.html&quot;&gt;Lionel Tardy première victime de la riposte graduée ...&amp;nbsp;: Lionel TARDY&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;Sachant que l'examen en seconde lecture du projet de loi Création et Internet (Hadopi) reprenait aujourd'hui, je m'étais inscrit (par précaution) dès la semaine dernière auprès du groupe UMP pour intervenir lors de la DG (Discussion Générale) de cet après-midi.&lt;/p&gt;
&lt;p&gt;
N'ayant pas de nouvelle du groupe, je me suis rapproché du service de la séance en fin de matinée, qui m'a appris que ma demande n'avais pas été retenue par le groupe UMP, faute de temps de parole suffisant (20 minutes au total).&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;UPDATE&amp;nbsp;: &lt;a href=&quot;http://www.numerama.com/magazine/12789-Christian-Vanneste-et-Lionel-Tardy-prives-de-micro-contre-l-Hadopi.html&quot;&gt;Christian vanneste a eu droit aux mêmes égards&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>mar, 28 avr 2009 22:00:00 +0000</pubDate>
</item>
<item>
	<title>Stéphane Salès - stephs: Députés Godillots</title>
	<guid>urn:md5:5e594bde97b29dbc6cb3ec75dcda3cde</guid>
	<link>http://blog.alio.fr/?post/2009/04/29/D%C3%A9put%C3%A9s-Godillots</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.deputesgodillots.info/&quot;&gt;:: Députés Godillots&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;DeputesGodillots.info est un site communautaire qui vise à recenser les pratiques godillotes de certains députés de la majorité afin de permettre au président du groupe UMP de réaliser sa promesse de mettre fin à la notion de parlement godillot.&lt;/p&gt;&lt;/blockquote&gt;</description>
	<pubDate>mar, 28 avr 2009 22:00:00 +0000</pubDate>
</item>
<item>
	<title>Toady: Picviz selected for Google Summer Of Code (GSOC)!</title>
	<guid>urn:md5:618c054e4a5108c32dede840a751305d</guid>
	<link>http://www.gscore.org/blog/index.php/post/2009/04/20/Picviz-selected-for-Google-Summer-Of-Code-GSOC</link>
	<description>&lt;p&gt;The honeynet project had several projects, 8 in total. They were all carefully chosen and I had the honor to have Picviz as one of those projects.&lt;/p&gt;


&lt;p&gt;I really believe parallel coordinates will greatly improve the data analysis area, and it seemed I was not the only one to think so.&lt;/p&gt;


&lt;p&gt;You can &lt;a href=&quot;http://socghop.appspot.com/org/home/google/gsoc2009/honeynet&quot; hreflang=&quot;en&quot;&gt;check out some very cool projects that also got selected&lt;/a&gt;. This is a great opportunity for us, even though we had really hard time to reject other great projects.&lt;/p&gt;


&lt;p&gt;Anyway, because they will work intensively in Python, I completely rewrote the bindings, and &lt;a href=&quot;http://www.wallinfire.net/picviz/wiki/PythonBindings&quot; hreflang=&quot;en&quot;&gt;I even documented it&lt;/a&gt;!&lt;/p&gt;


&lt;p&gt;Ah, I forgot, do you know that sometime challenges that some people do &lt;a href=&quot;http://communaute.sstic.org/ChallengeSSTIC2009&quot; hreflang=&quot;fr&quot;&gt;in some Chinese restaurants&lt;/a&gt; can be found simply using 'strings' and reading the enigma in the end of a binary?&lt;/p&gt;</description>
	<pubDate>lun, 20 avr 2009 20:07:00 +0000</pubDate>
</item>
<item>
	<title>Toady: Random stuff</title>
	<guid>urn:md5:8e6c68b81ca39ea096f3dce9a465840c</guid>
	<link>http://www.gscore.org/blog/index.php/post/2009/04/17/Random-stuff</link>
	<description>&lt;p&gt;It's been a while I haven't blogged. There we go... quite some random late things&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://www.raffy.ch/&quot;&gt;Raffy&lt;/a&gt; &lt;a hreflang=&quot;en&quot; href=&quot;http://twitter.com/zrlram/status/1446428549&quot;&gt;started his company&lt;/a&gt;, &lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;PixlCloud. If you need someone reliable and who get things done in the computer &lt;a hreflang=&quot;en&quot; href=&quot;http://www.secviz.org/&quot;&gt;security visualization&lt;/a&gt; area, go find him!&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://www.honeynet.org&quot;&gt;The honeynet project&lt;/a&gt; released a &lt;a hreflang=&quot;en&quot; href=&quot;http://www.honeynet.org/papers/conficker/&quot;&gt;KYE (Know Your Enemy) paper on the Conficker&lt;/a&gt; virus. Our &lt;a hreflang=&quot;en&quot; href=&quot;http://www.honeynor.no/2009/03/31/using-nmap-to-scan-for-conficker/&quot;&gt;Norwegian friends explain to us&lt;/a&gt; how you can get and use nmap to detect if Conficker is around on your network. I visited customers recently who were deeply infected. Being able to isolate machines with nmap was great. The Girafe folks from germany&lt;a hreflang=&quot;en&quot; href=&quot;http://four.cs.uni-bonn.de/uploads/media/scs2.zip&quot;&gt; released a simple conficker scanner (SCS)&lt;/a&gt;, grab version 2 and test with it also. Their output is actually easier to read. The virus uses &lt;a hreflang=&quot;en&quot; href=&quot;http://en.wikipedia.org/wiki/MD6&quot;&gt;the new MD6 algorithm&lt;/a&gt; to hash its updates. It would be the first known and public implementation of this algorithm.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://ip-link.wikidot.com/tutorial&quot;&gt;IP link&lt;/a&gt; can now export into the Picviz Graph Description Language! &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://www.wallinfire.net/picviz&quot;&gt;Picviz&lt;/a&gt; can now reorder axes on the fly in the &lt;strong&gt;axes&lt;/strong&gt; section. You can even hide or add an already existing axis several times. This is one of the key feature I designed the language this way and never actually really used it.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;&lt;a hreflang=&quot;en&quot; href=&quot;http://twitter.com/tricaud&quot;&gt;I've got a twitter account now&lt;/a&gt;! I am web 3000 ready!&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;status-body&quot;&gt;&lt;span class=&quot;entry-content&quot;&gt;Picviz Python bindings are being rewritten, a lot of cool stuff will finally happen on the GUI in the next following weeks!&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;</description>
	<pubDate>ven, 17 avr 2009 21:59:00 +0000</pubDate>
</item>
<item>
	<title>Stéphane Salès - stephs: 10 000 artistes .. ou pas</title>
	<guid>urn:md5:64fd3eb086e94c3c8791de1e5a262843</guid>
	<link>http://blog.alio.fr/?post/2009/04/16/10-000-artistes-..-ou-pas</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.lexpress.fr/actualite/high-tech/hadopi-couacs-autour-de-la-petition-des-10-000-artistes_754193.html&quot;&gt;Hadopi: couacs autour de la pétition des 10 000 artistes - l'Express&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;Sur les 10 000 signataires, le collectif a relevé plusieurs incohérences.&lt;/p&gt;
&lt;p&gt;
- Des centaines d'employés des maisons de disques (EMI, Universal...) et leurs représentants (Sacem, Snep...) qui n'ont pas de rapport direct avec les artistes ont signé la pétition. Ils représentent une part importante du total des signataires.&lt;/p&gt;
&lt;p&gt;
- Des artistes ouvertement hostiles au projet de loi figurent dans la liste, comme Marc Cerrone.&lt;/p&gt;
&lt;p&gt;
- Nicola Sirkis du groupe Indochine affirme sur son site Internet ne pas avoir signé cette pétition alors qu'il est listé dans les 10 000 signataires&lt;/p&gt;&lt;/blockquote&gt;</description>
	<pubDate>mer, 15 avr 2009 22:00:00 +0000</pubDate>
</item>
<item>
	<title>Stéphane Salès - stephs: Manifestation contre HADOPI : samedi 25 Avril</title>
	<guid>urn:md5:f6b5ba696e9c098a45ea82adb867b04a</guid>
	<link>http://blog.alio.fr/?post/2009/04/14/Manifestation-contre-HADOPI-%3A-samedi-25-Avril</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://blog.alio.fr/?post/2009/04/14/16 jours pour sauver la démocratie sur Internet&amp;nbsp;: organisons une manifestation, le plus grand défi de ces dernières années&quot;&gt;Manifestation contre HADOPI&amp;nbsp;: samedi 25 Avril &lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;La loi HADOPI, votée le 2 Avril 2009, rejetée par les Députés le 9 Avril 2009, réintroduite par la porte des cabinets le 28 Avril 2009 comprend des dispositifs liberticides&amp;nbsp;:&lt;/p&gt;
&lt;p&gt;
* Le réseau Internet français &lt;strong&gt;sera mis sur écoute&lt;/strong&gt;, façon Big-Brother.&lt;/p&gt;
&lt;p&gt;
* Des &lt;strong&gt;logiciels mouchards payants&lt;/strong&gt; seront disponibles pour prouver la bonne foi des internautes.&lt;/p&gt;
&lt;p&gt;
* Il revient à chaque individu &lt;strong&gt;la charge de la preuve&lt;/strong&gt; qu'il respecte la loi, en contradiction avec les principes de droit établis depuis 200 ans.&lt;/p&gt;
&lt;p&gt;
L'impensable est arrivé, ouvrant la voie à une régression des libertés publiques. Cette régression montre que les libertés ne sont jamais acquises et qu'il faut toujours être vigilant à les défendre. Pour vous en convaincre, regardez &lt;a href=&quot;http://www.manifestation-contre-hadopi.com/videos&quot; hreflang=&quot;fr&quot;&gt;les vidéos des discussions de la loi HADOPI à l'Assemblée Nationale&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;
Nous organisons une manifestation unitaire des opposants à la loi HADOPI le 25 Avril 2009 à 14 heures, place Edouard Herriot à Paris. Des manifestations sont en cours d'organisation à Lyon et à Marseille. Nous n'avons que 16 jours pour boucler le projet. Les manifestations seront organisées avec le plus grand soin.&lt;/p&gt;&lt;/blockquote&gt;</description>
	<pubDate>lun, 13 avr 2009 22:00:00 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: SQL : Selectionner le premier/dernier/plus grand resultat de chaque groupe</title>
	<guid>http://blog.tuxz.net/archives/2009/04/11/sql__selectionner_le_premierdernierplus_grand_resultat_de_chaque_groupe/</guid>
	<link>http://blog.tuxz.net/archives/2009/04/11/sql__selectionner_le_premierdernierplus_grand_resultat_de_chaque_groupe/</link>
	<description>&lt;p&gt;
Afin d'illuster mes propos, je vais utiliser un exemple avec une table &quot;fruits&quot; contenant quelques enregistrements :
&lt;br /&gt;
&lt;pre&gt;
+--------+------------+-------+
| type   | variete    | prix  |
+--------+------------+-------+
| pomme  | gala       |  2.79 | 
| pomme  | fuji       |  0.24 | 
| pomme  | Borowitsky |  2.87 | 
| orange | valencia   |  3.59 | 
| orange | navel      |  9.36 | 
| poire  | bradford   |  6.05 | 
| poire  | bartlett   |  2.14 | 
| cerise | bing       |  2.55 | 
| cerise | chelan     |  6.33 | 
+--------+------------+-------+
&lt;/pre&gt; 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;S&amp;eacute;lectionner une entr&amp;eacute;e extreme dans chaque groupe&lt;/h2&gt;
&lt;br /&gt;
Il est courant de vouloir selectionner dans une table le log le plus r&amp;eacute;cent pour chaque programme, ou quelque chose dans le style. Si l'on essaie d'appliquer ce type de probl&amp;egrave;me &amp;agrave; notre table de fruits, nous pourrions par exemple vouloir trouver, pour chaque type la vari&amp;eacute;t&amp;eacute; la moins ch&amp;egrave;re.&lt;br /&gt;
Voici ce que nous souhaitons obtenir : &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
+--------+----------+-------+
| type   | variete  | prix  |
+--------+----------+-------+
| pomme  | fuji     |  0.24 | 
| orange | valencia |  3.59 | 
| poire  | bartlett |  2.14 | 
| cerise | bing     |  2.55 | 
+--------+----------+-------+ 
&lt;/pre&gt;
&lt;br /&gt;
Il existe quelques solutions &amp;agrave; ce probl&amp;egrave;me. Toutes fonctionnent en 2 temps : trouver le prix desir&amp;eacute;, puis selectionner le reste des donn&amp;eacute;es en ce basant sur ce r&amp;eacute;sultat.&lt;br /&gt;
Une solution courante est appell&amp;eacute; &quot;auto-jointure&quot;. L'&amp;eacute;tape 1 est de grouper les fruits par type, et d'en choisir le prix minimum :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
&lt;code&gt;SELECT type, MIN(prix ) AS minprix 
FROM fruits
GROUP BY type;
&lt;/code&gt;
+--------+----------+
| type   | minprix  |
+--------+----------+
| pomme  |     0.24 | 
| cerise |     2.55 | 
| orange |     3.59 | 
| poire  |     2.14 | 
+--------+----------+
&lt;/pre&gt;
&lt;br /&gt;
L'&amp;eacute;tape 2 est de selectionner le reste des lignes en faisant une auto-jointure sur la table fruits. Comme notre premiere requete est group&amp;eacute; il est n&amp;eacute;cessaire de l'int&amp;eacute;grer dans une sous-requete afin de faire notre jointure sur la table de base non-group&amp;eacute;e : 
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
&lt;code&gt;SELECT f.type, f.variete, f.prix 
FROM (
   SELECT type, MIN(prix ) AS minprix 
   FROM fruits GROUP BY type
) as x INNER JOIN fruits AS f ON f.type = x.type AND f.prix  = x.minprix ;
&lt;/code&gt;
+--------+----------+-------+
| type   | variete  | prix  |
+--------+----------+-------+
| pomme  | fuji     |  0.24 | 
| cerise | bing     |  2.55 | 
| orange | valencia |  3.59 | 
| poire  | bartlett |  2.14 | 
+--------+----------+-------+
&lt;/pre&gt;
&lt;br /&gt;
Une autre solution, plus lisible mais potentiellement plus lente est d'utiliser une requete imbriqu&amp;eacute;e :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
&lt;code class=&quot;sql&quot;&gt;SELECT type, variete, prix 
FROM fruits
WHERE prix  = (SELECT MIN(prix ) FROM fruits AS f WHERE f.type = fruits.type);
&lt;/code&gt;
+--------+----------+-------+
| type   | variete  | prix  |
+--------+----------+-------+
| pomme  | fuji     |  0.24 | 
| orange | valencia |  3.59 | 
| poire  | bartlett |  2.14 | 
| cerise | bing     |  2.55 | 
+--------+----------+-------+
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Selectionner les N entr&amp;eacute;es extremes de chaque groupe&lt;/h2&gt;
&lt;br /&gt;
Ce probl&amp;eacute;me est plus compliqu&amp;eacute; que le premier &amp;agrave; r&amp;eacute;soudre. Sortir un seul enregistrement est relativement simple grace aux fonctions MIN(), MAX() ... mais il est impossible de les utiliser dans notre cas dans le sens ou ces fonctions ne peuvent renvoyer qu'une seule valeur.&lt;br /&gt;
Disons que nous souhaitons trouver les 2 vari&amp;eacute;t&amp;eacute;s les moins ch&amp;egrave;s de chaque type : &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
&lt;code&gt;SELECT type, variete, prix 
FROM fruits
WHERE (
   SELECT COUNT(*) FROM fruits AS f
   WHERE f.type = fruits.type AND f.prix  &amp;lt; fruits.prix 
) &amp;lt;= 2;
&lt;/code&gt;
+--------+----------+-------+
| type   | variete  | prix  |
+--------+----------+-------+
| pomme  | gala     |  2.79 | 
| pomme  | fuji     |  0.24 | 
| orange | valencia |  3.59 | 
| orange | navel    |  9.36 | 
| poire  | bradford |  6.05 | 
| poire  | bartlett |  2.14 | 
| cerise | bing     |  2.55 | 
| cerise | chelan   |  6.33 | 
+--------+----------+-------+
&lt;/pre&gt;
&lt;br /&gt;
Cette requete peut être expliqu&amp;eacute;e comme cela : &quot;Selectionner la vari&amp;eacute;t&amp;eacute; de chaque type ou la vari&amp;eacute;t&amp;eacute; n'est pas plus ch&amp;egrave;re que la 2&amp;egrave;me moins ch&amp;egrave;me de chaque type&quot; (ouf !).
&lt;br /&gt;
Cette mani&amp;egrave;re de faire est relativement propre dans le sens ou il est possible de faire varier le nombre d'entr&amp;eacute;es a selectionner facilement. En revanche au niveau performances, ce n'est pas vraiment le top, l'utilisation d'algo quadratique devient assez lourd lorsque le nombre d'enregistrements devient important, surtout si les index ne sont pas ou mal d&amp;eacute;finis.Existe-t-il une ou plusieurs solutions plus optimis&amp;eacute;es ?
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;L'UNION fait la force&lt;/h2&gt;
&lt;br /&gt;
Si votre table dispose d'un index (type,prix ) et qu'il y a beaucoup plus d'enregistrements &amp;agrave; eliminer qu'&amp;agrave; recuperer pour chaque groupe, une methode plus efficace (surtout sur MySQL) est de splitter les differentes requetes, de poser une limite sur chacunes d'entres elles puis d'utiliser UNION pour les remettre ensemble. Voici un exemple :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
&lt;code&gt;(SELECT * FROM fruits WHERE type = 'pomme' ORDER BY prix  LIMIT 2)
UNION ALL
(SELECT * FROM fruits WHERE type = 'orange' ORDER BY prix  LIMIT 2)
UNION ALL
(SELECT * FROM fruits WHERE type = 'poire' ORDER BY prix  LIMIT 2)
UNION ALL
(SELECT * FROM fruits WHERE type = 'cerise' ORDER BY prix  LIMIT 2)
&lt;/code&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.mysqlperformanceblog.com/2006/08/10/using-union-to-implement-loose-index-scan-to-mysql/&quot;&gt;Paul Zaitev a fait une description approfondie de cette technique&lt;/a&gt;, je vous conseille de le lire si vous voulez en savoir plus sur cette derni&amp;egrave;re.
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Petite solution sp&amp;eacute;cifique &amp;agrave; MySQL utilisant des variables&lt;/h2&gt;
Une autre solution, sp&amp;eacute;cifique &amp;agrave; MySQL, dans le cas ou vous souhaitez r&amp;eacute;cuperer un plus grand nombre d'enregistrements, est de passer par des variables : &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
&lt;code&gt;set @num := 0, @type := '';

SELECT type, variete, prix 
FROM (
   SELECT type, variete, prix ,
      @num := if(@type = type, @num + 1, 1) AS row_number,
      @type := type AS dummy
  FROM fruits
  ORDER BY type, prix 
) AS x WHERE x.row_number &amp;lt;= 2;
&lt;/code&gt;
&lt;/pre&gt;
Cette requete s'effectue au final en 2 passes, la sous-requetes construisant implicitement une table remplie avec les donn&amp;eacute;es sur lesquelles on applique tour &amp;agrave; tour la clause WHERE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;br /&gt;
Nous avons fait un tour rapide de quelques solutions au probl&amp;egrave;me qui est de pouvoir recuperer &quot;les valeurs extremes de chaque groupe&quot; et &amp;eacute;galement de pouvoir selectionner les N extremes resultats de chaque groupe.&lt;br /&gt;
La plupart des techniques sont applicables sur divers SGBD, meme si la derniere solution est MySQL-Specifique. Cet article est inspir&amp;eacute; de techniques d&amp;eacute;crites par B. Schwartz avec son autorisation expresse.

&lt;/p&gt;</description>
	<pubDate>ven, 10 avr 2009 23:09:41 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: Customizer les pages 404 sous lighttpd</title>
	<guid>http://blog.tuxz.net/archives/2009/04/10/customizer_les_pages_404_sous_lighttpd/</guid>
	<link>http://blog.tuxz.net/archives/2009/04/10/customizer_les_pages_404_sous_lighttpd/</link>
	<description>&lt;p&gt;
Apr&amp;egrave;s etre tomb&amp;eacute; sur un &lt;a href=&quot;http://www.code-web.org/post/2009/04/04/Google-s-attaque-a-vos-page-d-erreur&quot;&gt;article&lt;/a&gt; traitant des nouvelles fonctionnalit&amp;eacute;s de la derni&amp;egrave;re version de la Google Toolbar, j'ai pris conscience de la n&amp;eacute;c&amp;eacute;ssit&amp;eacute; de mettre en place des pages 404 personnalis&amp;eacute;es.&lt;br /&gt;
En effet toutes les pages pesant moins de 512 octets seront remplac&amp;eacute;es par une page Google contenant un champ de recherche qui risque de rediriger votre traffic sur un autre site.&lt;br /&gt;&lt;br /&gt;
Assez blablat&amp;eacute; passons &amp;agrave; la customization de vos pages, la proc&amp;eacute;dure est tres simple : &lt;br /&gt;
&lt;br /&gt;
Editer le fichier de conf de lighttpd : 
&lt;br /&gt;
&lt;code&gt;
# vim /etc/lighttpd/lighttpd.conf
&lt;/code&gt;
&lt;br /&gt;
Rajoutez la ligne suivante : 
&lt;code&gt;
server.error-handler-404 = “/404-handler.html” &lt;br /&gt;
&lt;/code&gt;
&lt;i&gt;NB : il est bien sur possible de remplacer la page HTML par une page PHP, Perl ... &lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Il ne reste plus qu'a créer une page 404-handler.html a la racine du serveur puis de relancer lighttpd
&lt;code&gt;
# /etc/init.d/lighttpd restart
&lt;/code&gt;

&lt;p&gt;&lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>ven, 10 avr 2009 09:50:09 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: Desactiver console.log quand firebug n'est pas disponible</title>
	<guid>http://blog.tuxz.net/archives/2009/04/09/desactiver_console_log_quand_firebug_nest_pas_disponible/</guid>
	<link>http://blog.tuxz.net/archives/2009/04/09/desactiver_console_log_quand_firebug_nest_pas_disponible/</link>
	<description>&lt;p&gt;
Je trouve la fonction &lt;i&gt;console.log()&lt;/i&gt; très pratique pour debugger sans avoir recours &amp;agrave; des &lt;i&gt;alert()&lt;/i&gt; &amp;agrave; tout va. Le probl&amp;egrave;me c'est qu'il est tr&amp;egrave;s facile d'oublier un appel &amp;agrave; cette fonction quelque part dans le code, r&amp;eacute;sultat tous les browsers ne disposant pas de firebug install&amp;eacute; planteront lors de l'execution. Voil&amp;agrave; une solution permettant de bypasser ce probl&amp;egrave;me :&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;
&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
        if (typeof console != &quot;object&quot;) {
                var console = {
                        'log':function() {}
                };
        }
&amp;lt;/script&amp;gt;
&lt;/code&gt;
&lt;/pre&gt;
&lt;br /&gt;
Bien entendu, c'est une solution de contournement et il est preferable de supprimer tous les appels &amp;agrave; &lt;i&gt;console.log()&lt;/i&gt; une fois le dev termin&amp;eacute;
&lt;/p&gt;</description>
	<pubDate>jeu, 09 avr 2009 06:53:45 +0000</pubDate>
</item>
<item>
	<title>Stéphane Salès - stephs: Hadopi rejeté : la vidéo</title>
	<guid>urn:md5:77b3ce3d6fafc523f06981b567d52e62</guid>
	<link>http://blog.alio.fr/?post/2009/04/09/Hadopi-rejet%C3%A9-%3A-la-vid%C3%A9o</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://tf1.lci.fr/infos/high-tech/0,,4356528,00-le-coup-de-theatre-a-l-assemblee-en-images-.html&quot;&gt; Le coup de théâtre à l'Assemblée en images -  LCI&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;le texte .. est re-je-té&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;sous les applaudissements des députés de l'opposition&lt;/em&gt;&lt;/p&gt;</description>
	<pubDate>mer, 08 avr 2009 22:00:00 +0000</pubDate>
</item>
<item>
	<title>Stéphane Salès - stephs: CP April : HADOPI - projet de loi inadapté, inacceptable, inapplicable, d'ores et déjà dépassé</title>
	<guid>urn:md5:452cfb9c93b956d36a52c45e8fee3d55</guid>
	<link>http://blog.alio.fr/?post/2009/04/03/CP-April-%3A-HADOPI-projet-de-loi-inadapt%C3%A9%2C-inacceptable%2C-inapplicable%2C-d-ores-et-d%C3%A9j%C3%A0-d%C3%A9pass%C3%A9</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://blog.alio.fr/?post/2009/04/03/April&quot;&gt;HADOPI - projet de loi inadapté, inacceptable, inapplicable, d'ores et déjà dépassé &lt;/a&gt;&lt;/p&gt;



&lt;blockquote&gt;&lt;p&gt;L'April dénonce le vote du projet de loi HADOPI qui contient des dispositions qu'il était impensable de voir écrites un jour noir sur blanc tant elles sont extrémistes. Non content de se positionner de façon unilatérale en faveur d'une centralisation de l'information sur Internet, ce projet de loi instaure en plus de nouvelles discriminations contre le logiciel libre.&lt;/p&gt;
&lt;p&gt;
L'Assemblée nationale a adopté 1 le projet de loi HADOPI mettant en place une procédure disproportionnée de répression massive à l'encontre des internautes qui échangent des \u0153uvres sans autorisation. Le projet de loi ne propose rien pour favoriser la mise à disposition du public d'offres commerciales attractives de musique et de films.&lt;/p&gt;
&lt;p&gt;
La ministre de la Culture Christine Albanel, le rapporteur Franck Riester et presque tous les députés UMP ont validé de nouvelles discriminations à l'encontre du Logiciel Libre. Malgré la mobilisation des employeurs du Libre contre HADOPI 2, ils ont refusé tout encadrement des mouchards filtrants que les abonnés devront installer pour garantir leur sécurité juridique. Ils se sont également opposés à toute mesure favorable à l'interopérabilité et à la libre concurrence, et ont persisté à limiter le droit moral de divulgation des auteurs de logiciels libres 3.&lt;/p&gt;&lt;/blockquote&gt;</description>
	<pubDate>jeu, 02 avr 2009 22:00:00 +0000</pubDate>
</item>
<item>
	<title>Stéphane Salès - stephs: A peine votée, Hadopi pose des problèmes</title>
	<guid>urn:md5:d9521ab9cf2ad118b6c066888a2685cc</guid>
	<link>http://blog.alio.fr/?post/2009/04/03/A-peine-vot%C3%A9e%2C-Hadopi-pose-des-probl%C3%A8mes</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.lefigaro.fr/medias/2009/04/02/04002-20090402ARTFIG00587-a-peine-votee-hadopi-pose-des-problemes-.php&quot;&gt;A peine votée, Hadopi pose des problèmes - Le Figaro&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;«L'État n'a pas à faire peser financièrement sur les opérateurs les coûts d'une mission d'intérêt général étrangère à l'activité de ces mêmes opérateurs», a réagi jeudi la fédération française des télécoms. Un principe consacré par une décision du Conseil constitutionnel du 28 décembre 2000. «Il reviendra donc à l'État d'assumer les coûts très lourds afférents à la mise en oeuvre de l'ensemble du dispositif», poursuit la fédération. La facture sera lourde&amp;nbsp;: à elle seule, la refonte des systèmes informatiques et de facturation nécessaires pour couper l'accès des abonnés, se chiffre déjà à 70 millions d'euros&amp;nbsp;!&lt;/p&gt;&lt;/blockquote&gt;


&lt;blockquote&gt;&lt;p&gt;«Est-ce aux consommateurs de sauver une industrie en déclin parce qu'elle n'a pas su s'adapter à la nouvelle donne technologique et élaborer un nouveau modèle économique ?», s'interroge l'association de défense des consommateurs Adeic. Et de dresser une longue liste à la Prévert des taxes déjà collectées et reversées aux ayants droit&amp;nbsp;: taxes sur les CD, RW et DVD&amp;nbsp;; taxes sur les mémoires et disques durs intégrés à un téléviseur&amp;nbsp;; taxes sur les clés USB&amp;nbsp;; taxes sur les téléphones mobiles multimédias&amp;nbsp;; taxes sur les cartes mémoires etc.&lt;/p&gt;&lt;/blockquote&gt;</description>
	<pubDate>jeu, 02 avr 2009 22:00:00 +0000</pubDate>
</item>
<item>
	<title>Stéphane Salès - stephs: No comment</title>
	<guid>urn:md5:417b411e4b6c9332a21654428a6cc519</guid>
	<link>http://blog.alio.fr/?post/2009/04/02/No-comment</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.20minutes.fr/article/317213/High-Tech-Hadopi-la-suspension-de-la-connexion-Internet-est-confirmee-par-les-deputes.php&quot;&gt;Hadopi: la suspension de la connexion Internet est confirmée par les députés sur 20minutes.fr&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;Marc Le Fur, député UMP: «Nous nous battons tous pour que nos communes rurales ait un accès Internet et nous allons le supprimer pour certaines familles.»&lt;/p&gt;
&lt;p&gt;
Réponse de Franck Riester: «L'internaute sanctionné pourra se rendre chez son voisin grâce à la solidarité des campagnes.»&lt;/p&gt;&lt;/blockquote&gt;</description>
	<pubDate>mer, 01 avr 2009 22:00:00 +0000</pubDate>
</item>
<item>
	<title>Alexandre De Dommelin - Laotseu: Email validation using Regular Expression</title>
	<guid>http://blog.tuxz.net/archives/2009/03/27/email_validation_using_regular_expression/</guid>
	<link>http://blog.tuxz.net/archives/2009/03/27/email_validation_using_regular_expression/</link>
	<description>&lt;p&gt;
Working on various web projects, there's a very well known problem : find a good regular expression (regexp) to check the validity of user submitted email addresses.&lt;br /&gt;
&lt;a href=&quot;http://fightingforalostcause.net/misc/2006/compare-email-regex.php&quot;&gt;This website&lt;/a&gt; has compiled various regular expressions which try to resolve this problem. His idea is great, using a set of valid/invalid emails, and a simple unit test, he can provide a good comparison of some of the most used regexps.&lt;br /&gt;
&lt;br /&gt;  
His philosophy is &lt;b&gt;great&lt;/b&gt; : &quot;It's my philosophy that it's better to accept a few invalid addresses than reject any valid ones, so I'm shooting for 0 false-positives and as few false-negatives as possible.&quot;&lt;br /&gt;
But I've noticed 2 problems :
&lt;ul&gt;
&lt;li&gt;His &quot;best&quot; regexp doesn't work in javascript (JS doesn't support advanced features like negative lookbehind ...)&lt;/li&gt;
&lt;li&gt;The method used to validate IP addresses is not correct (doesn't take care of 0-255 range)&lt;/li&gt;
&lt;/ul&gt;
So i've decided to improve an existant one, adding an other test criteria : also check the &quot;real&quot; validity of the IP address. The following work is based on Warren Gaebel's regex, including improvement proposed by G. Arluison.&lt;br /&gt;
&lt;br /&gt;
Here's my solution :&lt;/p&gt; 
&lt;code&gt;
/^[-a-z0-9~!$%^&amp;amp;*_=+}{\'?]+(\.[-a-z0-9~!$%^&amp;amp;*_=+}{\'?]+)*@([a-z0-9]([-a-z0-9_]?[a-z0-9])*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z]{2})|([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})(\.([1]?\d{1,2}|2[0-4]{1}\d{1}|25[0-5]{1})){3})(:[0-9]{1,5})?$/i
&lt;/code&gt; 
&lt;p&gt;&lt;strong&gt;Here are the results :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Should be &lt;b&gt;Valid&lt;/b&gt;:&lt;/p&gt;
&lt;table&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;l3tt3rsAndNumb3rs@domain.com&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;

            &lt;td&gt;has-dash@domain.com&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;hasApostrophe.o'leary@domain.org&lt;/td&gt;
            

            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;uncommonTLD@domain.museum&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;

        &lt;tr&gt;
            &lt;td&gt;uncommonTLD@domain.travel&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;uncommonTLD@domain.mobi&lt;/td&gt;

            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;countryCodeTLD@domain.uk&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;

        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;lettersInDomain@911.com&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;

            &lt;td&gt;underscore_inLocal@domain.net&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;IPInsteadOfDomain@127.0.0.1&lt;/td&gt;
            

            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;IPAndPort@127.0.0.1:25&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;

        &lt;tr&gt;
            &lt;td&gt;subdomain@sub.domain.com&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;local@dash-inDomain.com&lt;/td&gt;

            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;dot.inLocal@foo.com&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;

        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;a@singleLetterLocal.org&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;

            &lt;td&gt;singleLetterDomain@x.org&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;amp;*=?^+{}'~@validCharsInLocal.net&lt;/td&gt;
            

            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Should be &lt;strong&gt;NOT Valid&lt;/strong&gt; :&lt;/p&gt;
&lt;table&gt;
    &lt;tbody&gt;

        &lt;tr&gt;
            &lt;td&gt;missingDomain@.com&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;@missingLocal.org&lt;/td&gt;

            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;missingatSign.net&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;

        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;missingDot@com&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;

            &lt;td&gt;two@@signs.com&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;colonButNoPort@127.0.0.1:&lt;/td&gt;
            

            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&amp;nbsp;&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;WrongIpAddr@256.10.12.154&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;someone-else@127.0.0.1.26&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;.localStartsWithDot@domain.com&lt;/td&gt;

            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;localEndsWithDot.@domain.com&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;

        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;two..consecutiveDots@domain.com&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;

            &lt;td&gt;domainStartsWithDash@-domain.com&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;domainEndsWithDash@domain-.com&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;TLDDoesntExist@domain.moc&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;

        &lt;tr&gt;
            &lt;td&gt;numbersInTLD@domain.c0m&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;missingTLD@domain.&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;! &amp;quot;#$%(),/;&amp;lt;&amp;gt;[]`|@invalidCharsInLocal.org&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;invalidCharsInDomain@! &amp;quot;#$%(),/;&amp;lt;&amp;gt;_[]`|.org&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/fail.gif&quot; alt=&quot;Not Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;local@SecondLevelDomainNamesAreInvalidIfTheyAreLongerThan64Charactersss.org&lt;/td&gt;
            
            &lt;td&gt;&lt;img src=&quot;http://blog.tuxz.net/styles/images/success.gif&quot; alt=&quot;Valid&quot; /&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;
Results : &lt;br /&gt;
Valid : &lt;strong&gt;18/18&lt;/strong&gt;&lt;br /&gt;
Invalid : &lt;strong&gt;19/20&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
I'm very happy with this solution for a lot of points : it is a portable one (usable on client-side via JS, or server side with languages providing PCRE functions), it does deep TLD and IP address check. If you want to add an other TLD (more than 2 chars long), just append it to the list.&lt;br /&gt;
&lt;br /&gt;
I'm working on a solution to check the length of the address. Based on the RFC, an email should be composed like that : &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Local part : max 64 chars&lt;/li&gt;
&lt;li&gt;Domain part : max 255 chars&lt;/li&gt;
&lt;/ul&gt;
In sum, an email address can be 320 characters long at most.&lt;br /&gt;
&lt;br /&gt;

If you want to test it, here comes a small PHP script using the preg_match() function : &lt;a href=&quot;http://blog.tuxz.net/files/test_email.php.txt&quot;&gt;test_email.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
To be continued ... :-)
&lt;/p&gt;</description>
	<pubDate>ven, 27 mar 2009 21:45:24 +0000</pubDate>
</item>
<item>
	<title>Stéphane Salès - stephs: Frederic lefebvre et le comique de répétition</title>
	<guid>urn:md5:df83debe3a1b141467451bd29eab14b4</guid>
	<link>http://blog.alio.fr/?post/2009/03/27/Frederic-lefebvre-et-le-comique-de-r%C3%A9p%C3%A9tition</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://blog.alio.fr/?post/2009/03/27/Eco89&quot;&gt;Piratage&amp;nbsp;: Frédéric Lefebvre ne fait pas peur à BeeMotion &lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Frédéric Lefebvre prévoit il sa reconversion en comique&amp;nbsp;? Je ne vois pas d'autres explications. (voir par exemple &lt;a href=&quot;http://blog.alio.fr/?post/2009/02/18/%C2%AB-Il-vaut-mieux-fermer-sa-geule-et-avoir-l-air-d-un-con-plut%C3%B4t-que-de-l-ouvrir-...-%C2%BB&quot;&gt;ce billet sur le sujet&lt;/a&gt; pour vous faire une idée de l'ampleur du &quot;piratage industriel&quot; de Beemotion.&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;Un mois après, Frédéric Lefebvre a tenu promesse. Comme l'ont repéré PCInpact et Numerama, le député a déposé auprès du président de l'Assemblée nationale une proposition de résolution en vue de créer une commission d'enquête «&amp;nbsp;de trente membres ». Objectif&amp;nbsp;:&lt;/p&gt;
&lt;p&gt;
«&amp;nbsp;Faire toute la lumière sur les circonstances exactes qui ont amené à la participation volontaire ou non de six acteurs du Net, à cette entreprise de piratage industriel, dont l'exploitant était BeeMotion.fr, et s'attacher à identifier les points sur lesquels il faudra éventuellement modifier la législation pour éviter qu'une telle affaire ne puisse se reproduire.&amp;nbsp;»&lt;/p&gt;&lt;/blockquote&gt;


&lt;blockquote&gt;&lt;p&gt;Romain rejette les accusations de «&amp;nbsp;piratage industriel&amp;nbsp;» lancées par Frédéric Lefebvre&amp;nbsp;:&lt;/p&gt;
&lt;p&gt;
«&amp;nbsp;J'ai un peu l'impression qu'il ne sait pas trop de quoi il parle. Par exemple, il accuse Free ou Google alors que ce n'est pas trop de leur ressort. Mais après tout, il est plus haut placé que moi...&amp;nbsp;»&lt;/p&gt;&lt;/blockquote&gt;</description>
	<pubDate>jeu, 26 mar 2009 23:00:00 +0000</pubDate>
</item>

</channel>
</rss>
