Il n’y a pas que des langages pourris dans la vie, il y aussi des langages pourris (mais très pratiques).
function progressmeter_init {
echo -ne "\33[s";
}
function progressmeter {
echo -ne "\33[u";
echo -ne "\33[s";
printf "%5.2f%%" $(( 100 * $1 / $2 ));
}
Attention, echo attend des valeurs en octal, donc 027=0o33
Si vous n’avez jamais entendu parler de Matlab, vous avez vraiment de la chance, ça veut dire que vous n’avez jamais eu à faire de calculs bourrins avec des matrices.
J’ai dû pas mal m’en servir ces derniers temps (en fait c’était Octave, qui est aussi mal mais en mieux parceque libre), et je me suis dis que ce serait sympa d’avoir un indicateur de progression lors des calculs.
Le fichier progressmeter.m
function progressmeter(k, all)
printf("%c[u", 027);
printf("%c[s", 027);
printf("%5.2f%%", 100*k/all);
end
Et le fichier progressmeter_init.m
function progressmeter_init()
printf("%c[s", 027);
end
Il faut commencer par appeler progressmeter_init() pour sauvegarder la position du curseur, puis il suffit à chaque étape d’appeler progressmeter(i, n) pour afficher le pourcentage d’avancement de l’étape i sur un nombre n d’étapes au total.
Ça utilise les caractères de contrôles \27c[s qui sauvegarde la position du curseur et \27c[u qui la restaure.
La pire perte de temps qu’on puisse imaginer en informatique est de réécrire quelque chose qui existe déjà.
Bien sûr, il y des cas où on n’a pas le choix : le programme qui fait ce qu’on veut est propriétaire, il a été codé comme un porc, il est écrit en Fortran (ce cas rentre dans l’une des deux catégories précédentes). Mais la plupart du temps ce qu’on veut faire a déjà été fait et la seule difficulté est de le retrouver dans les méandres du nain Ternet.
Pour ça, google est souvent un très mauvais outil : vous avez déjà cherché un truc du genre “c super truc que vous ne voulez pas refaire” ? Essayez, pour voir…
(Bon, d’accord, dans ce cas particulier, c’est plutôt la faute du langage qui a un nom pourri, enfin bon, passons).
Par contre, il existe toute sorte d’outils pratique pour faire ce genre de chose. Je parlerai bientôt de CPAN, CTAN, The Caml Hump, n’hésitez pas à en suggérer d’autres.
Malgré le titre qui parle de réification du futur, ce blog n’a pas vocation à prédire l’avenir, quoique…
Le but est plutôt de parler de trucs de geeks, de glorifier (ou pas) des langages comme Perl ou OCaml, de dire du mal de C++ et de se moquer gentiment de Python.
Si ce que je dis ne vous plait pas, laissez un commentaire ou consultez google pour un trouver un site qui vous convienne.