Articles

Affichage des articles du 2011

Using maildirs on Ubuntu [en/fr]

Among all the operations that I do not so frequently, there's the one consisting in setting up system-wide maildirs. As I always forget how to redefine this pesky MAIL variable set by default to /var/mail/username, I've decided to blog about it to record the solution:

If you're directed to  /etc/login.defs  forget about it, just read the comments in it that points you to /etc/pam.d/* files.

The change to do are in

/etc/pam.d/su:
#session    optional   pam_mail.so  nopen session    optional   pam_mail.so dir=~/Maildir nopen
/etc/pam.d/sshd:
#session    optional     pam_mail.so standard noenv # [1]
session    optional     pam_mail.so dir=~/Maildir standard

/etc/pam.d/login:
#session    optional   pam_mail.so standard
session    optional     pam_mail.so dir=~/Maildir standard

I used to call my maildirs folder simply 'Mail' but as most software expect them to be called 'Maildir' by default. I now follow the 'Maildir' name convention to avoid redefining the …

Gitolite / Mercurial server

Lately I installed 2 similar tools : gitolite and mercurial-server.
The 2 tools achieve the same goal, managing a central repository handling remote virtual users and differ mainly on the dscm they target (as their name imply).


As a matter of taste, I tend to prefer git (and so gitolite) beccause of its wider users base and architecture's simplicity.

But mercurial has roughly the same potential, and depending on your context you might prefer (or 'have to' in my case) to work with it.

But before discussing their benefits, let's detail how to install step-by-step :

For gitolite

#apt-get install gitolite


The following NEW packages will be installed:
  git gitolite libcurl3-gnutls liberror-perl rsync

A gitolite or git user will be created in the process, for the rest of the document I assume this user to be 'gitolite'.
(this is the case on debian and ubuntu)

Some people prefer to create a gitolite admin dedicated user, but I prefer to reuse and existing user :

su -  noc

This u…

Why I use gitolite

Whereas github is great for hosting your public repositories, as soon as you want to use many private remote repositories you should consider other options.

First because it's going to cost you some money and because it's always a good idea to avoid scatter your private stuffs on external server (Yes I know, as a google minion I'm not a good example...)

Among the many options to hosts your remote git repo, I've found gitolite to be the best one to suit my needs, let me explain why :

* I firmly believe in the KISS principle, and the fact that you don't need to use another daemon (it just uses sshd) is very appealing to me. (Other solutions often requiring to setup an apache/Webdav vhosts, git-daemon or whatever)

* Fine-grained access control : gitolite really shines in this aspect
   In addition to the usual  read/write/read&write gitolite provides access  to 'non-fast forward push', branches creation/deletion, write deny and extends the targe…

Module::Build rocks!!!

Yes I know, this module is already four years old and I'm probably the last Perl coder still using ExtUtils::MakeMaker for his modules.

Some experienced friends of mine already told me about it.
(Hello Maddingue, better later than never...)
I knew that I had to use it, but until today I didn't...

For those of you who haven't see the light, here are some reasons why you should switch to it:

_ It's easy (and you should be lazy) => make2build from Module::Build::Convert made the conversion a breeze without requiring to read any doc (ok I've read the doc anyway, but it's beccause I'm curious...)

_ It's powerful (and you should be impatient) => Build testcover and you have a complete test coverage provided out of the box!
(this feature alone is a killer to me, I know you can achieve the same with EU::MM but it is provided by default with Module::Build)

_ It's the state of the art (and you should be hubristic): using tool of the past without any goo…

Un geste pourtant simple

Une fois n'est pas coutume je ne parlerai pas informatique ou productivité.

C'est aujourd'hui la journée mondiale du don de sang.
J'ai longtemps hésité à en parler;  que dire que vous n'ayez déjà lu/entendu maintes fois :

* Les hôpitaux manquent de sang.
* Donner son sang *sauve de vies*
* Quelque soit votre emploi du temps il y a un moyen de donner près de chez soi.
(Ils travaillent même le Samedi dans la plupart des villes)
* C'est sur à 100%

Plutôt que d'essayer de vous convaincre d'une manière abstraite, allez jeter un œil sur le Blog de mon ami Loïc et sa femme Célia ("Deux expats à Seattle") :
Loïc est un ami, expatrié à Seattle, qui a découvert là bas qu'il était atteint d'une leucémie, il décrit dans son blog avec beaucoup d'humour et d'honnêteté son combat au jour le jour.

Il ne doit sa survie qu'aux donneurs de sang, et sa guérison ne se fera qu'à travers un don de moelle osseuse.

Tout ce que nous avons à fair…

Un peu d'ordre

Après la discipline je parle d'ordre, ceux qui ne me connaissent pas doivent se poser des questions...
(et ceux qui me connaissent encore plus :-) )

Alors je vais rassurer tout le monde : Je vais commencer petit, sur mon ordinateur, dans mon répertoire .vim

Avant ma crise mon répertoire .vim ressemblait à ça :
drwxr-xr-x 4 arnaud arnaud 4096 2011-05-19 23:30 after
drwxr-xr-x 4 arnaud arnaud 4096 2011-05-19 23:30 autoload
drwxr-xr-x 2 arnaud arnaud 4096 2011-05-19 23:30 bin
drwxr-xr-x 2 arnaud arnaud 4096 2011-05-19 23:43 colors
drwxr-xr-x 2 arnaud arnaud 4096 2011-05-19 23:30 compiler
drwxr-xr-x 2 arnaud arnaud 4096 2011-05-19 23:43 doc
drwxr-xr-x 3 arnaud arnaud 4096 2011-05-19 23:30 ftplugin
drwxr-xr-x 2 arnaud arnaud 4096 2011-05-19 23:43 indent
drwxr-xr-x 2 arnaud arnaud 4096 2011-05-19 23:43 keymap
drwxr-xr-x 2 arnaud arnaud 4096 2011-05-19 23:43 lang
drwxr-xr-x 2 arnaud arnaud 4096 2011-05-19 23:30 nerdtree_plugin
drwxr-xr-x 2 arnaud arnaud 4096 2011-05-19 23:43 plugin
drwxr-xr-x 2 arnau…

Journée mondiale IPv6

"Le 8 juin 2011 l'Internet Society (ISOC) organise une journée mondiale IPv6 pendant laquelle les fournisseurs et les sites sont encouragés à tester la technologie à grande échelle. Google, Facebook, Yahoo!, Akamai et Limelight Networks ont annoncé leur participation à cet événement." -- Wikipedia

C'est aujourd'hui !!!

Pour célébrer l’événement, j'ai décidé de configurer un tunnel IPv6 pour participer moi aussi au "test à grande échelle".

Vous n'aurez probablement pas besoin des opérations suivantes, mais si comme moi vous avez désactivé IPv6 il va falloir réactiver en modifiant les lignes suivantes (pour désactiver appliquez l'opération inverse) :

/etc/hosts
# The following lines are desirable for IPv6 capable hosts ::1     ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
/etc/modprobe.d/blacklist.conf
# Uncomment to disable IPv6 #blacklist ipv6
/etc/r…

CPAN modules you love to hate (or the contrary)

If one thing starts to bother me in the Perl universe, it's all the dependencies which force you to pull half of the CPAN each time you try to install a major module.

Don't get me wrong: I love Perl, I love CPAN, I love modules and I definitively love code reuse BUT may be we start doing it the wrong way.

Let's think why we need code reuse:
1) Because we're lazy ( as every good Perl programmer :-) ) and don't want to
rewrite an existing wheel (if a good one already exist)
2) Because it reduces the code size by factorizing common parts

The factorizing aspect is especially important to me:
_ Common parts (modules) are more tested as more users eventually use them
_ Code is easier to maintain (smaller, less heterogeneous...)
_ It forces us to think about the API, which eases enhancements
_ ...

Now if I look at the dependency mess on CPAN, I realize that what's is bothering me is not the numerous dependencies,  but rather that most of them void/lesser the benefits …

Da Cloud made eZ...

Petit coup de coeur du moment : Dotcloud
Ce site offre gratuitement (le temps de la beta) un accès à une infrastructure scalable, sa force c'est principalement son extrême simplicité  :
(j'ai déjà dit que c'était gratuit en beta ?)


D'abord s'inscrire sur le site en laissant son adresse email, pour recevoir un code d'accès...
Une fois ce code reçu, on finit l'inscription et récupère la clef d'API qui se trouve dans 'settings', cette clef sera demandée à la première utilisation de dotcloud.

On installe le client python (nul n'est parfait ;-) )
sudo easy_install dotcloud

On crée une application (je l'appelle easylearn)
dotcloud create easylearn

On affiche la liste des types de services disponible
dotcloud deploy -h

Pour déloyer un service Perl (ici appellé www)
dotcloud deploy -t perl easylearn.www

Et un service base de données (nommé dans ce cas db)
dotcloud deploy -t mysql easylearn.db

Notez que j'aurais pu nommer les services frontoff…

Un peu de discipline...

"La discipline peut remplacer bien des qualités, aucune qualité ne peut remplacer la discipline..."

Le constat s'impose, "entraîné" par différents projets (dont un déménagement en Septembre en Thaïlande) j'ai tendance à partir un peu dans tous les sens...

Du coup je néglige certaines autres qui faisaient parties de ma "routine".

Je me rends compte par exemple que ce blog est "à l'abandon", comme différents aspects de mon réseau d'ordinateurs, et (j'ai honte à l'avouer) mon réseau relationnel....

Le temps est venu d'y remettre bon ordre.
Il est temps de réintroduire un peu de discipline, et je vais commencer par ce blog, en m'astreignant à plus de régularité.

"La discipline est un corset plus sûr que la bonne volonté."