Wed 26 September 2012
By Mathieu Agopian
• Tags:
bash
screen
ssh
vim
Le pair-programming fait partie des bonnes pratiques du développement, ce
n'est plus à prouver : il permet de produire un code de meilleure qualité,
mieux pensé et construit.
On entend souvent dire qu'il est (deux fois) moins productif, vu qu'on est deux
à produire un seul morceau de code, mais dans la pratique, il permet au
contraire d'éviter des pièges ou bugs qui auraient pris un temps fou à
résoudre.
Un autre avantage est de pouvoir mettre le pied à l'étrier d'un autre
développeur sur son code, tout en douceur et efficacement. Ou encore de
partager la paternité, la connaissance et l'expertise sur une base de code,
entre plusieurs développeurs.
Et d'une manière générale, c'est tellement plus sympathique et agréable de
pouvoir réfléchir à deux, discuter, échanger, se conseiller mutuellement !
Bref, comme je le disais, les mérites du pair-programming ne sont plus à
prouver.
Mais comment en profiter quand on travaille à distance ? Je pense par
exemple aux personnes en télé-travail, ou qui veulent participer à des sprints
à distance.
Tu l'as deviné (facile, c'est dans le titre), grâce à VIM (ou tout autre
éditeur en ligne de commande, comme par exemple l'autre dont on ne saurait
prononcer le nom), le logiciel screen, tout ça sur SSH.
Je te fais ici un résumé de ce qui a été très bien expliqué dans un article
du blog de Siyelo, adapté, simplifié et automatisé à ma sauce.
Installer un serveur SSH
Pour ça, tu es bien gentil, mais je pense que tu vas y arriver tout seul comme
un grand.
Si nécessaire, pour que ton collègue distant puisse se connecter en local,
rajoute donc une règle de redirection sur ton routeur/ta box , par exemple du
port externe 22222, en TCP, vers le port 22 de l'adresse IP de ton
ordinateur.
Note
Il existe un logiciel très pratique pour gérer ses règles de
redirection sans avoir à se connecter à l'interface de sa box :
portmapper (Korben en parle d'ailleurs très bien).
Installer screen
Là encore, rien de bien compliqué.
screen permet de multiplexer plusieurs shells. C'est aussi lui qui va
rendre possible de se connecter à plusieurs sur un seul et même shell,
celui par exemple qui lancera l'éditeur. Cela permet donc dans la pratique de
pouvoir éditer un fichier à plusieurs, et de voir instantanément toutes les
modifications.
Utiliser
Lance un screen sur l'utilisateur pair en mode détaché :
sudo -u pair screen -d -m -S pairprog # -S nomme la session
Connecte toi au screen de cet utilisateur :
screen -x pair/pairprog
# une fois connecté au screen
vim
# créer une nouvelle fenêtre dans le screen : <ctrl-a c>
# passer à la fenêtre suivante : <ctrl-a n>
# passer à la fenêtre précédente : <ctrl-a p>
# passer à la fenêtre 1 : <ctrl-a 1>
# détruire la fenêtre courante : <ctrl-a k> ou <ctrl-d>
Si tu es un vrai bon fainéant comme moi, tu aura bien sûr sauté sur l'occasion
d'en faire un alias dans ton ~/.bashrc.
Indique l'utilisateur pair et son mot de passe, ton adresse IP et le port
de connexion SSH à ton collègue pour qu'il puisse te rejoindre :
ssh pair@<ip de ta box> -p 22222
screen -x pairprog # alias pair='screen -x pairprog'
Petite astuce de sioux, pour que l'utilisateur distant n'ai même pas besoin de
se connecter manuellement au screen (ni même à lancer l'alias), à rajouter
au ~/.bashrc de l'utilisateur pair
export TERM=xterm-256color # compatibility with screen
if [ ${SSH_CLIENT:+x} ]
clear
echo "Welcome to the pair-programming session"
echo -n "Press Enter to continue..." && read
screen -x pairprog # pairprog est le nom de la session
fi
La variable d'environnement SSH_CLIENT est testée pour que la petite astuce
ne soit utilisée que lors d'une connexion ssh, et non à chaque lancement d'un
shell.
Enfin, pour pouvoir dialoguer plus facilement, j'utilise un logiciel de voix
sur IP (ou tout bêtement le téléphone). C'est nettement plus pratique pour
faciliter la communication !
Il ne me reste plus qu'à te souhaiter de te coupler avec un de tes pair, de
vivre heureux, et d'avoir plein de belles lignes de codes !