M'enfin ?!?

Aller au contenu | Aller au menu | Aller à la recherche

samedi 15 mars 2008

Afficher la branche Git courante dans le prompt de ZSH

Je suis tombé sur un tips bien sympa : Show Your GIT Branch Name In Your Prompt. Il y est expliqué comment avoir la branche Git en cours dans son prompt avec Bash.

J'ai adapaté ca pour zsh. Voici un extrait de mon zshrc :

export PS1='%~ $(git_branch)%# '

function git_branch {
  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1) /'
}

setopt PROMPT_SUBST

La seule difficulté fût de se rendre compte qu'il fallait activer une option pour que ca marche, et de savoir quelle était cette option (PROMPT_SUBST en l'occurence).

Ainsi que je suis sous un répertoire normal, j'ai un prompt de la forme ~/Desktop % , et quand je suis dans un répertoire versionné sous Git, ca donne : ~/mon_projet (ma_branche) % . Ce n'est pas grand chose, mais comme il paraît que c'est une bonne pratique de faire des branches sous Git, autant avoir en permance le nom de la branche courante sous les yeux.

PS : j'ai des invitations pour GitHub si ca intéresse des gens.

dimanche 17 février 2008

4ème apéro Ruby

L'association Ruby France organise pour la quatrième fois un apéro Ruby à la cantine. Ce sera l'occasion de discuter autour d'un verre de Ruby et de découvrir la cantine. Il devrait notamment y avoir une présentation de Ruby 1.9 et des lightning talks.

J'y serais et vous ?

Mise à jour : j'ai oublié le lien vers l'annonce officielle.

mardi 12 février 2008

Portrait of a N00b

Steve Yegge, un blogger influent qui travaille chez Google, a posté un article intitulé « Portrait of a N00b ». Comme à son habitude, c'est un très long post où il explique les différences dans la manière de coder (et commenter son code) entre un développeur peu expérimenté et un développeur avec 20 ans d'expérience.

S'en suit une digression très intéressante entre langages à typage statique (Ocaml, Haskell), langages à typage dynamique (Perl, Python, Ruby), et les langages classiques (C++, Java) à typage statique mais qui vous laisse tricher avec les types. On y trouve quelques perles :

If static types are comments, then I think we can conclude that people who rely too much on static types, people who really love the static modeling process, are n00bs.

You can write C++ like straight C code if you like, using buffers and pointers and nary a user-defined type to be found. Or you can spend weeks agonizing over template metaprogramming with your peers, trying to force the type system to do something it's just not powerful enough to express.

Perl, Python and Ruby fail to attract many Java and C++ programmers because, well, they force you to get stuff done.

Mais le plus simple reste d'aller lire l'original : Portrait of a N00b. C'est long, mais ca en vaut largement la lecture. Et si vous avez encore du temps, les autres articles sont aussi des lectures recommandées.

Ai-je précisé que je me retrouve plus dans la peau du dév expérimenté que du N00b, même si c'est un prétentieux, vu que je suis encore vraiment loin d'avoir 20 ans d'expérience ?

mardi 22 janvier 2008

Nouveaux tips pour vim

Voici une nouvelle fournée de tips pour Vim. Pour les retardataires, la première série est toujours disponible par là.

  • CTRL+v reste une valeur sûre : ca active la sélection rectangulaire. Suivie de I, ca permet d'insérer un même texte sur plusieurs lignes. Au contraire, avec x, on peut supprimer une colonne.
  • :Man permet d'afficher une page de man directement dans Vim (avec la coloration syntaxique) ;
  • j'ai rajouté la ligne suivante dans mon vimrc pour pouvoir insérer facilement des Lorem ipsum :
iab lorem Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum. Maecenas adipiscing ante non diam sodales hendrerit.

Voilà, c'est tout pour aujourd'hui.

mardi 4 décembre 2007

J'y serai

Paris on Rails

samedi 1 décembre 2007

Mercurial sur mon MyBook

J'ai installé mercurial sur mon MyBook. Ce n'est pas très compliqué, mais voici quand même la méthode que j'ai utilisée pour ceux qui n'ont pas envie de chercher. La première chose à faire, c'est se connecter en ssh (si sshd n'est activé, vous pouvez le faire grâce à la méthode de Martin Hinner). Ensuite, comme mercurial est en Python, il faut installer Python :

$ cd /tmp
$ wget http://www.python.org/ftp/python/2.5.1/Python-2.5.1.tar.bz2
$ tar xvjf Python-2.5.1.tar.bz2
$ cd Python-2.5.1
$ ./configure --disable-ipv6 --disable-shared --with-cxx=no --with-threads
$ make
$ sudo make install

Puis, on peut passer à l'install de mercurial proprement dit :

$ cd /tmp
$ wget http://www.selenic.com/mercurial/release/mercurial-0.9.5.tar.gz
$ tar xvzf mercurial-0.9.5.tar.gz
$ cd mercurial-0.9.5
$ make
$ sudo make install-bin

Un petit hg -v pour tester, et c'est déjà fini.

IRB, un outil à (re)découvrir

IRB est un outil génial pour tester rapidement un truc en Ruby. C'est une sorte d'interpréteur Ruby qui fonctionne comme un shell : vous tapez une ligne de Ruby, irb l'interprête et vous donne le résultat, vous tapez une autre ligne, irb l'interprête en tenant compte de la première ligne, et ainsi de suite. Voici par exemple ce que cela donne (avec en gras, ce que j'ai tapé) :
>> titi = 2 + 3
> 5
>> toto = titi * 4
> 20
Pour ceux qui veulent en savoir plus, je recommande de lire le chapitre consacré à IRB dans Le Guide (Poignant) de Why's vers Ruby et d'essayer ca dans Try Ruby qui est, en gros, un IRB dans votre navigateur web. Il est possible de configurer IRB via le fichier $HOME/.irbrc : changer le prompt, charger des fichiers, activer l'auto-complétion, etc. Comme d'autres personnes l'ont fait avant moi, je poste mon fichier de conf .irbrc pour que chacun puisse s'en inspirer (et aussi pour le retrouver plus facilement quand je ne suis pas chez moi ;-)
  require "yaml"
require "irb/completion"

IRB.conf[:USE_REALINE] = true
IRB.conf[:PROMPT_MODE] = :SIMPLE

# History with readline
HISTFILE = "~/.irb.hist"
MAXHISTSIZE = 100

# what? (gem install what_methods)
require "what_methods"

# Wirble (gem install wirble)
require "wirble"
Wirble.init
Wirble.colorize

# Just for Rails...
if ENV["RAILS_ENV"]
IRB.conf[:IRB_RC] = Proc.new do
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Base.instance_eval { alias :[] :find }
end
end

lundi 26 novembre 2007

Nouveau disque dur : MyBook World Edition

Je viens de m'acheter un disque dur externe Western Digital MyBook World Edition. La bête doit principalement me servir pour mes sauvegardes, mais avec ses 500 Go, je devrais avoir de la place pour d'autres choses. J'ai choisi ce modèle car je voulais un disque dur branché sur de l'ethernet, pas en usb, et qu'en plus j'avais lu sur http://jeromeandrieux.blogspot.com/... qu'il avait le bon goût de tourner sous linux (les sources du firmware sous licence GPL sont disponibles sur http://support.wdc.com/download/ind...).

Ce que j'ai déjà fait

  1. le brancher
  2. aller sur l'interface web : http://admin:123456@<l'adresse IP du Mybook>
  3. rajouter un utilisateur sur cette interface
  4. activer l'accès ssh grâce à la méthode de Martin Hinner
  5. se logger en ssh dessus avec l'utilisateur créé précédement
  6. désactiver mionet toujours grâce à http://martin.hinner.info/mybook/disable_mionet.php
  7. faire joujou avec l'interface web
  8. et finalement commencer mes sauvegardes à la main (à coups de scp)

Ce qu'il reste à faire

Visiblement, il est possible de faire des choses bien sympathiques comme installer http://vsftpd.beasts.org/ (un serveur FTP bien secure), http://samba.anu.edu.au/rsync/ ou encore http://php.net (en réutilisant le lighttpd de l'interface web) dessus :

Il est également possible de mettre en veille le disque dur d'après http://kyyhkynen.net/stuff/mybook/.

dimanche 18 novembre 2007

Tips pour Vim

Voici quelques trucs pour ViM que j'ai utilisé aujourd'hui :

  • mettre au BufRead,BufNewFile /etc/apache/** setf apache2 dans le fichier $HOME/.vim/ftdetect/apache.vim pour que les fichiers /etc/apache2 soient bien reconnus comme des fichiers de conf d'apache (pour la coloration syntaxique) ;
  • % pour sauter d'une parenthèse ouvrante à la parenthèse fermante qui lui correspond (et vice-versa) : c'est un déplacement classique dans ViM, mais ca fait toujours plaisir quand on a des dizaines de parenthèses qui s'ouvrent et se ferment dans tous les sens ;
  • 248| permet de se déplacer au 248ème caractère de la ligne courante ;
  • gg247<barre d'esspacement> permet de se déplacer au 248ème caractère du fichier (en fait, ca permet de se placer sur le premier caractère, puis d'avancer 247 fois d'un caractère).

Bref, rien d'extraordinaire, mais je suis bien malheureux quand je me retrouve sous un autre éditeur et que je ne peux plus utiliser ces petits trucs.

mardi 23 octobre 2007

Ce qui me manque sous Mac OSX

J'utilise GNU/Linux depuis plusieurs années, mais depuis quelques mois, je suis sous Mac OSX au boulot. Dans l'ensemble, je dois avouer que c'est très joli et facile à utiliser. Mais sur certains points, j'ai trouvé Mac OSX très mal foutu par rapport à ce que l'on peut trouver sous GNU/Linux. Voici une petite liste des trucs qui m'ont le plus géné (et qui me gênent encore) :

#1 - Le clavier

Le clavier de mon mac m'a longtemps dérouté, et encore maintenant, je ne sais pas comment se nomme toutes les touches. Et faire certains caractères est mission impossible si personne ne vous aide la première fois : faut savoir que pour faire un pipe |, il faut une combinaison de 3 touches dont la lettre l. C'est pas marqué sur le clavier, et c'est vraiment pas intuitif.

#2 - L'absence de bureaux virtuels

Par défaut, il n'y a pas de bureaux virtuels sous Mac OSX. Il parait qu'on peut installer des softwares pour faire ca, mais je n'ai pas essayé. Est-ce qu'Apple aurait peur d'être poursuivi à cause du brevet sur les bureaux virtuels [1] ?

#3 - Le Window Manager sous évolué

Je ne comprends pas que le Window Manager soit aussi peu évolué. J'ai peut-être été habitué à des Window Manager très perfectionnés sous GNU/Linux, mais le choc a été dur : je n'ai pas trouvé comment garder une fenêtre au premier plan, comment avoir l'auto-focus, etc. Je ne sais pas pour vous, mais pour moi, ce sont vraiment des fonctions de base.

#4 - La barre de menu

Mais quelle idée d'aller mettre la barre de menu à cet endroit ? Je travaille sur un portable avec un deuxième écran. Pas de chance, la barre de menu ne s'affiche que en haut de l'écran du portable, et pas du tout sur mon écran LCD 20". Mon curseur de souris fait des kilomètres à cause de ce menu mal placé.

#5 - Le copier-coller

Tout le reste, je pense que je peux survivre avec, mais le copier-coller, c'est vraiment le truc qui me mine la vie. Explications : sous GNU/Linux, il suffit de sélectionner du texte pour qu'il soit copié, et un clic avec le bouton du milieu de la souris, c'est collé. Bref, c'est simple, clair, net, efficace. Sous Mac OSX, il faut faire <Touche dont je ne connais pas le nom>-C pour copier et <Touche dont je ne connais pas le nom>-V pou coller. Et là, 100 fois par jour, je me retrouve à souligner du texte pour le copier, puis quand je le colle, je me rends compte que ce n'est pas du tout cela que je voulais coller, et #!@%&?, il faut effacer le texte que je viens de coller, et resélectionner le texte qui m'intéresse, faire <truc>-C, <truc>-V, et tout ca pour un simple copier-coller.

J'ai eu beau chercher sur Internet, je n'ai rien trouvé pour avoir le copier-coller façon UNIX sous Mac OSX. Si quelqu'un a la solution, je suis prêt à lui payer une pinte de bière.

Notes

[1] http://yro.slashdot.org/yro/04/02/25/1346201.shtml

- page 4 de 5 -