~bohwaz/blog/

Avec de vrais morceaux de 2.0 !

PHP IP utils: Normalize IPv6 address, generate random IPv4 or v6 address and more

I've published some PHP functions useful for IP stuff on KD2 SVN : http://svn.kd2.org/svn/misc/libs/tools/ip_utils.php

The first one, normalize_ipv6 is used to get a normalized notation of an IPv6 (following the RFC), eg. ::1 will be transformed in 0000:0000:0000:0000:0000:0000:0000:0001 and 2001:db8:85a3::8a2e:370:7334 in 2001:0db8:85a3:0000:0000:8a2e:0370:7334. It's useful for storing or parsing IPv6 addresses.

Then the other functions are useful for making your visitors more anonymous than usual or do some fun stuff. get_random_ip will return a random IP, either IPv4 or IPv6 depending on the arguments you're passing. You can also generate a unique random IP address from an existing one.

From that you can use the filter_remote_client function, it will replace automatically IP addresses by anonymous ones in all $_SERVER headers. A simple example:

_SERVER remote client IPs unfiltered:
[REMOTE_ADDR] => 2001:e05a:2439:5460:10c:e4ff:fe30:6481
[HTTP_X_FORWARDED_FOR] => 8.8.8.8

_SERVER remote client IPs filtered:
[REMOTE_ADDR] => ebd1:2901:58d6:150f:6b5c:0841:e6e1:37f0
[HTTP_X_FORWARDED_FOR] => 173.196.178.203

You'll always get the same values for the same original adresses. If you put this in a prepend_file of your php.ini, your PHP applications will never know the true IP address of the client but that won't matter to them, they will still get valid IP addresses and as long as the real client IP address won't change, the fake one won't change either.

Re-use this code as long as you want, it's under the do what the fuck you want public license.

Note: here's more ideas on how to store IPv6 addresses and other stuff.

Le Bien Public, toujours aussi sérieux.

Relevé dans le Bien Public du vendredi 14 mai 2010, en page 3, à propos de la marée noire et son coût pour BP : « (...) la marée lui avait coûté 450 millions de dollars, soit 530 millions d'euros ».

Même pas capable de faire une conversion correcte... N'importe quel site vous donnera la conversion correcte, qui à ce jour est de 366 millions d'euros. Je soupçonne le journal d'avoir multiplié le nombre en dollars par le taux de l'euro au lieu de diviser...

Une erreur qui pourtant saute aux yeux et n'aurait jamais dû être publiée.

Ogg Vorbis, un format impopulaire ?

Jamendo, dans le cadre de sa politique de réduction des coûts après s'être plantés complètement financièrement, a décidé de supprimer le support d'Ogg Vorbis sur son site. Arguant du fait que Vorbis n'est pas populaire, que personne ne télécharger les fichiers au format Ogg Vorbis et que ça coûte trop cher à maintenir. Mais est-ce vraiment une surprise quand on connaît la démarche de Jamendo vis à vis de ce format. Alors qu'on peux télécharger les albums en MP3 directement, pour le Ogg Vorbis on ne peux les télécharger que via BitTorrent, une technologie qui n'est pas accessible aux néophytes, sans compter que le téléchargement d'un album peut mettre plusieurs semaines, là où en MP3 il ne faut que quelques minutes. Est-ce vraiment le format qui n'est pas populaire ou le fait qu'il soit quasiment impossible de télécharger un album en Vorbis chez eux ?

Du coup ils proposent à la "communauté" d'héberger eux-même les albums en Ogg Vorbis sur leurs propres serveurs (je rappelle au besoin que Jamendo est une société commerciale privée, alors bon la "communauté" voilà quoi), et on peut constater le coût phénoménal que doit représenter le support d'Ogg Vorbis pour eux en voyant la quantité de données. En effet cela représente 1,2To de données. Soit à peu près un serveur bas de gamme... On constate tout de suite que le problème n'est pas technique ni financier mais simplement un choix politique de leur part.

Quand au succès du format, pour situer, sur Altermusique.org le MP3 représente 39% des téléchargements d'albums, FLAC 34% et Ogg Vorbis 27%. Ce n'est donc pas le format le plus populaire pour le téléchargement d'album et ça se comprends aisément, car le MP3 est le plus connu et utilisé (et lisible sur tous les baladeurs), et on préfère toujours télécharger un album en FLAC pour avoir la meilleure qualité possible, mais le Ogg Vorbis avec près de 30% des téléchargements est loin d'être insignifiant quand même ! Mais encore faut-il le mettre en avant et ne pas saborder son utilisation qui décourage les gens à l'utiliser...

Le Bien Public persiste et signe : Flickr, banque d'image libres de droit ?

J'avais déjà signalé en janvier l'utilisation abusive d'une photo publiée dans le Bien Public sans indication de la licence ni de l'auteur, simplement la mention "Photo Flickr". Un mois et plusieurs messages de l'auteur à la rédaction plus tard, toujours pas de réponse à l'auteur de la photo qui attends encore un dédommagement pour la publication de sa photo.

Et aujourd'hui le journal choisit simplement de continuer dans cette voie de non-respect des droits d'auteur et publie de nouveau une photo prise sur Flickr sans respecter sa licence. C'est dans l'édition du 12 février 2010 que le quotidien régional publie en page 2 une photo du groupe ANT - CETE de l'Ouest :

Calcul de coût électrique

Il est parfois utile de savoir combien va coûter un appareil électrique qu'on va utiliser. Par exemple : puis-je me permettre de laisser cette imprimante en veille sans me fatiguer à l'éteindre ? Pour ça il faut d'abord mesurer la consommation électrique de l'appareil, en watts, à l'aide d'un petit appareil qui se branche sur la prise (perso j'ai acheté le mien à 15 euros). Ensuite on relève le coût du kWh selon son abonnement EDF (voir ici), et on utilise le petit calculateur ci-dessous. Oui le site d'EDF a aussi un outil dans ce but mais il demande de rentrer son nom et adresse email, sympa hein...

En l'occurence ici mon watt-mètre m'a coûté deux fois plus cher que de laisser mon imprimante en veille :-)

MàJ : le calcul ne fonctionne plus, il existe désormais cette page pour calculer le prix de sa consommation électrique sur différents opérateurs : Comparateur de tarifs d'électricité.

Scanner et archiver ses papiers

Il y a certains papiers qu'il est utile d'archiver (et sauvegarder/répliquer !) électroniquement, typiquement les fiches de paie, les factures de produits de valeurs, les notices et manuels de produits, etc. Et le mieux pour l'archivage, c'est le PDF non ? Mais bon c'est un peu fastidieux de scanner des dizaines de documents dans un logiciel graphique pas vraiment prévu pour, faut faire plein de clics, et ne parlons même pas de la transformation en PDF. La solution ? COmme d'habitude c'est la ligne de commande, oui cette bonne vieille CLI, si décriée, si haïe par les fanboys apple et windows, est pourtant l'outil le plus simple et le plus puissant à notre disposition !

Pour commencer il vous faut évidemment un scanner configuré et fonctionnel et avoir installé les packages sane-utils et imagemagick.

Scanner une page

Ici nous scannons en 150 dpi :

$ scanimage -v -p --resolution 150 > scan.pnm

OK on a maintenant une image au format PNM. Cool mais bon c'est pas vraiment un format très reconnu ni répandu, et pour l'archivage ça prends beaucoup de place vu que c'est une compression sans perte. On va donc le passer en Jpeg :

$ convert scan.pnm scan.jpg

Convertir en PDF

$ convert scan.jpg scan.pdf

Et oui c'est aussi simple que ça. Et mettre plusieurs pages dans le PDF ? Aussi simple :

$ convert scan1.jpg scan2.jpg scan3.jpg scan.pdf

Archivage assisté

Maintenant ça serait bien d'automatiser tout ça grâce à un beau script bash que voici, à recopier dans un fichier sans oublier ensuite de faire un chmod +x sur ce fichier.

Installer imprimante/scanner Samsung SCX-4300 sous Debian/Ubuntu (et partager en réseau)

(Mis à jour mai 2016, le nom du paquet pour le scanner a changé.)

Je viens de m'offrir une petite imprimante multifonction laser monochrome Samsung SCX-4300. Voici comment l'installer en deux coups de cuillère à pot sous Debian/Ubuntu :

Pour l'imprimante

$ sudo apt-get install cups splix

Attention il faut utiliser les paquets de Debian squeeze (6) au minimum pour splix. (Mise à jour 2016 : la version courante de Debian est la 8, donc c'est par défaut maintenant.)

Branchez l'imprimante, allumez-la, allez sur http://localhost:631/ avec votre navigateur, onglet "Administration", "Find New Printers", cochez Samsung SCX-4300, ensuite suivez l'assistant et pour le driver choisissez vers la fin de la liste "Samsung SCX-4300 Series" (si vous avez un cups de lenny, un peu vieux donc, et que SCX-4300 n'apparaît pas, vous pouvez prendre SCX-4200 à la place). Et c'est bon, vous pouvez imprimer :)

Pour le scanner

Il faut d'abord ajouter le repository des drivers Samsung à votre /etc/apt/sources.list :

deb http://www.bchemnet.com/suldr/ debian extra

Ensuite :

$ sudo apt-get install suld-driver-4.00.36 xsane

Et voilà, testez avec scanimage -L pour voir si votre scanner apparaît.

S'il n'apparaît pas, vous devez rajouter cela dans /etc/sane.d/xerox_mfp.conf :

#Samsumg SCX 4300
usb 0x04e8 0x342e

Bonus : partager l'imprimante en réseau

Basiquement il suffit de cocher la case "Partager cette imprimante" (Share this printer) quand vous ajoutez l'imprimante dans CUPS (ou quand vous la modifiez), mais si vous voulez ajouter l'imprimante sur une machine qui n'est pas locale (votre serveur local par exemple, comme dans mon cas) vous allez devoir modifier votre /etc/cups/cupsd.conf.

Remplacez ceci :

Listen localhost:631

Par cela :

Listen *:631

Enfin remplacez les lignes suivantes du fichier par ceci :

# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all                     
BrowseAddress @LOCAL

# Default authentication type, when authentication is required...
DefaultAuthType Basic

# Restrict access to the server...
<Location />
 Order allow,deny
 Allow @LOCAL
</Location>

# Restrict access to the admin pages...
<Location /admin>
 Order allow,deny
 Allow @LOCAL
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
 AuthType Default
 Require user @SYSTEM
 Order allow,deny
 Allow @LOCAL
</Location>

Finissez par un :

$ sudo invoke-rc.d cups restart

Bonus : partager le scanner en réseau

Au lieu d'installer xsane à l'installation du scanner, installez sane-utils (n'oubliez pas le package du driver samsung). Ensuite éditez /etc/default/saned et mettez RUN=yes au lieu de RUN=no. Editez ensuite /etc/sane.d/saned.conf et rajoutez les adresses IP qui doivent être autorisées à accéder au scanner. Pour autoriser par exemple toutes les adresses en 192.168.1.* (c'est mon réseau local) mettez 192.168.168.1.0/24. Pour IPv6 des exemples sont fournis au début du fichier.

Lancez saned :

$ sudo invoke-rc.d saned start

Sur chaque machine qui voudra accéder au scanner, il suffira de rajouter l'ip de la machine ayant le scanner branché en bas de /etc/sane.d/net.conf.

MàJ février 2012 : le repository pour le scanner a changé et rajouté une manip à faire pour que le scanner soit reconnu par SANE.

Séparer son historique bash par machine

Si comme moi vous avez votre home en NFS (ou Samba ou SSHFS, peu importe) et que vous vous connectez souvent au serveur hôte de fichiers en ssh, vous êtes peut-être comme moi énervé de retrouver dans votre session ssh les commandes que vous veniez de taper dans votre session X. Et bon lancer gimp ou xmms dans un screen via ssh sur un serveur de fichiers c'est pas des masses utile. La solution est d'avoir un fichier d'historique distinct pour chaque machine. C'est très simple il suffit de rajouter cela dans votre ~/.bashrc :

export HISTFILE="$HOME/.bash_history_`hostname`"

Notes rapides... ↓