Skip to content


Bête et méchant

Un petit uniligne faux dans la plupart des cas pour extraire les urls des cibles des liens présents dans une page hml.

perl -ne "/2007-2008/ && /href=\"(.*pdf)\"/ && print \"http://www.google.fr/\".\$1, \"\n\""

Ici on ne prend que les urls qui contiennent 2007-2008, qui se terminent par pdf et on rajoute une une url de base avant si on doit traiter des liens relatifs.

Je répète, c’est crade, c’est faux, et c’est laid mais ça marchouille à peu près.

N’empêche, c’est rapide à faire.

Posted in Eau chaude, Perl.

Livres dans le domaine publique

Comment trouver des livres en texte intégral, qu’ils soient libres ou que les auteurs aient décidé de les publier sous une licence acceptable ?

Voici un liste non-exhaustive :

Posted in Escabeau.

Théorème

Notons miroir la fonction miroir (par exemple, au mot 46498 elle fait correspondre le mot 89464)

Il existe une base telle que si p est premier et si P est son codage dans cette base alors l’entier codé par miroir(P) est premier.

Preuve :
En unaire ça marche.

Posted in Eau chaude.

Dokuwiki : un wiki simple

Vous êtes à la bourre (comme d’habitude quoi), il vous faut un site internet pour hier. Évidemment un site où plusieurs personnes vont contribuer. Vous pensez à un wiki ? Bien, mais lequel choisir ?

On peut déjà réduire pour le cas le plus classique : vous ne contrôlez pas le serveur, vous n’avez que du php à votre disposition.

Mais ça fait encore plein de choix ça. Si en plus vous n’avez pas envie de vous embêter avec une base de donnée, dokuwiki est fait pour vous.

Tous les articles sont stockés dans de simple fichiers (évidemment, il faut le droit d’écriture pour le serveur http) donc pas de base de données, il y a une gestion des ACL (bien mieux faite, ou du moins bien plus simple à utiliser que celle de mediawiki) ce qui est pratique pour mélanger site web publique et site pour développeurs.

Les plugins sont nombreux, on peut les installer directement par l’interface web (pratique si on ne veut pas subir encore un fois un client ftp) : par exemple pour afficher du latex ou du graphviz (même si il faut un latex sur la machine dans ce cas). Il peut être transformé en blog grâce au système de templates prodigieusement puissant.

Si on veut vraiment être un bourrin et utiliser ça à grande échelle on peut même utiliser un ldap pour la gestion des comptes
utilisateurs.

Toutes les pages sont mises en cache pour éviter de passer des plombes à les recompiler à chaque fois.

Des reproches ? Ça a quand même l’air un peut lent, mais c’est peut-être la faute free. Et je n’ai toujours pas réussi à lui faire afficher des images en svg.

Mais bon, c’est chouette quand même.

Quelques liens ?
http://wiki.splitbrain.org/wiki%3ADokuWiki pour la doc
http://www.splitbrain.org/projects/dokuwiki pour télécharger
http://wiki.splitbrain.org/wiki%3Aplugins pour la liste des plugins
http://wiki.splitbrain.org/wiki%3Atpl%3Atemplates pour les templates

En plus les sources sont gérées sous darcs :)

Posted in Escabeau.

La même chose en shell

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

Posted in Vrac.

Barre de progression en Matlab/Octave

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.

Posted in Eau chaude.

Ne pas réinventer la roue

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.

Posted in Roue.

Astrologie

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.

Posted in Vrac.