Archives de catégorie : Informatique

OCaml : Parser les arguments d’un programme avec le module Arg

English version here

Aujourd’hui, du fonctionnel, car je refais un peu d’Objective Caml ces temps-ci…

OCaml possède un assez grand nombre de modules dans sa bibliothèque standard, servant à faire un peu tout et n’importe quoi. Dans la suite, on va voir en vitesse comment utiliser le module Arg pour déclarer et gérer les paramètres optionnels d’un programme.

Un des logos sexy d’OCaml que la plupart des autres langages lui envient

Continuer la lecture de OCaml : Parser les arguments d’un programme avec le module Arg

Python: Mémo pour les reptiles étourdis

Aujourd’hui nous allons parler de quelques spécifités propres au langage Python. Comme je travaille pas mal avec Python en ce moment, je découvre (ou redécouvre) des particularités pas toujours évidentes (surtout quand on jongle entre plusieurs langages en même temps), alors je me propose de faire, ici même, un mémo sur les quelques trucs bien pratiques à savoir (et retenir) en Python, ainsi que quelques faux amis qui m’ont parfois fait arracher quelques cheveux…

Continuer la lecture de Python: Mémo pour les reptiles étourdis

Installer la bibliothèque Google Test sur Ubuntu

Hello,

aujourd’hui j’ai voulu essayer d’installer la bibliothèque de tests unitaires produite par Google, googletest.

J’ai donc installé l’archive disponible sur leur page Google Code, et ai tenté de lancer la version Makefile de l’installation (étant sur Ubuntu)…

Et là, quelle ne fut pas ma surprise en voyant une flopée d’erreurs sortir de g++:

/home/baron_a/gtest-1.6.0/make/../include/gtest/internal/gtest-port.h:1379: undefined reference to `pthread_setspecific’
collect2: error: ld returned 1 exit status

Heureusement, cela semble être un problème bien connu et la résolution est simple: dans le Makefile de gtest il faut remplacer dans la (les?) ligne(s):

sample1_unittest : sample1.o sample1_unittest.o gtest_main.a
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@

l’option -lpthread par l’option -pthread (retirer le petit L au début, quoi, en gros), et voilà ça fonctionne ! \o/ Je me demande si ils le corrigeront un jour… Notez d’ailleurs qu’il y a d’autres moyens d’installation fournis, comme un CMakeLists.txt pour utiliser CMake.

J’ai également vu qu’il y avait un paquet nommé libgtest-dev dans Aptitude, mais je ne l’ai pas installé pour essayer.

For the World Is Hollow and I Have Touched the Skype (Ubuntu 13.04)

(Pour le coup, ce n’est pas vraiment la faute d’Ubuntu)

Aujourd’hui, un nouveau billet dans la catégorie « les petits problèmes de la vie de tous les jours sous Ubuntu »…

Cette fois-ci avec Skype, le célèbre logiciel de messagerie instantanée. J’ai d’abord eu des difficultés pour l’installer sur Ubuntu 13.04, pour ensuite me rendre compte que les notifications marchaient pas. Comment résoudre ces problèmes ? La réponse dans la suite !

Continuer la lecture de For the World Is Hollow and I Have Touched the Skype (Ubuntu 13.04)

« E: Encountered a section with no Package: header »

Aujourd’ hui encore, j’ ai eu affaire à une « Ubunturie« , comprendre, un truc qui se casse tout seul et qui du coup se met à afficher des gros messages d’erreur rouges un peu partout sans qu’on puisse faire grand chose à part envoyer un rapport d’erreur (oui, Rhythmbox et son process rhythmbox-metadata qui crash à chaque fois qu’on importe des nouveaux morceaux, c’est aussi de toi que je parle !).

Bon là c’est pas Rhythmbox mais Apt ou aptitude, le gestionnaire de mises à jour d’Ubuntu, historiquement hérité de Debian.

Continuer la lecture de « E: Encountered a section with no Package: header »

« Je crois que j’ai perdu le (sans) fil… »

Bon, en ce moment j’utilise Ubuntu. Pourquoi ? Un peu par la force des choses, et parce que je vais bientôt peut-être me lancer dans des activités d’initiation à Linux, et que dans ces cas-là, Ubuntu me semble incontournable (encore que ça se discute de plus en plus), et que depuis la dernière fois que j’y ai touché, ça a sacrément changé.

Bon, bref le problème de ce soir ne se situe pas là. Aujourd’hui encore, Ubuntu semble pâtir de problèmes logiciels, matériels, ou les deux, assez hallucinants pour une distribution qui se veut ouvertement très grand public, je trouve.

Continuer la lecture de « Je crois que j’ai perdu le (sans) fil… »

Vérifier si une commande contient du texte ou pas en LaTeX

En ce moment, pour les besoins de mon projet de fin d’études, nous sommes en train de construire un template LaTeX afin d’avoir un truc modulable et facilement réutilisable pour tous les documents et rendus que nous avons à fournir aux professeurs niveau suivi.

Dans ce template LaTeX, il est pour le moment possible d’inclure dans le header de chaque page (fait avec le paquet fancyhdr au passage, peut-être que je ferai un autre article dessus) le logo du projet, et le logo d’un partenaire (dans notre cas, le LabEIP, instance d’Epitech nous suivant sur notre projet de fin d’études, l’EIP).

Inclure une image en LaTeX est relativement facile :

[cc lang= »latex »]

\newcommand{\PartnerLogo}{logo_eip.png}

\includegraphics[height=35pt]{\PartnerLogo}

[/cc]

Les problèmes arrivent lorsqu’on n’a pas de logo à mettre, ou qu’on n’a pas encore l’image, etc… tout en voulant conserver notre template et le garder le plus réutilisable possible, car la commande \includegraphics râle si on lui passe une chaîne vide.

[cc lang= »latex »]

\newcommand{\PartnerLogo}{}

\includegraphics[height=35pt]{\PartnerLogo} %% ça ne marche pas !

[/cc]

Une solution est d’utiliser le paquet etoolbox: il contient la commande \ifdefempty permettant de savoir si le résultat d’une commande est une chaîne de caractères vide ou pas, et de faire une action appropriée le cas échéant.

En pratique, ça s’utilise comme ça :

[cc lang= »latex »]

\ifdefempty{\PartnerLogo}
{} %% si aucun fichier n’est spécifié, on ne fait rien
{
\includegraphics[height=35pt]{\PartnerLogo} %% sinon, on affiche l’image
}

[/cc]

Et voilà, maintenant je peux aussi facilement utiliser mon template pour un projet où je n’ai pas de logo à mettre 😉

zsh: command not found: virtualenv

Je me refais une petite installation Linux en ce moment.

Au moment d’installer virtualenv, ce paquet très pratique pour Python, je suis resté sur le cul en ne voyant pas la commande « virtualenv » s’auto-compléter dans le terminal, et en voyant ça s’afficher si j’essaye quand même de la taper :

zsh: command not found: virtualenv

Enfer et damnation ! Comment cela se peut-il, je viens de l’installer ?

En fait la raison est plutôt bête, étant donné que je l’ai installé avec l’option –user de pip (non, ceci n’est pas un article sponsorisé par Sam&Max…), il est allé s’installer dans ~/.local/bin, plutôt que dans les dossiers généraux du système (pour qu’il ne soit installé que pour mon utilisateur), et mon PATH ne contenait pas (encore) ce dossier.

À partir de là la solution est triviale : il suffit de rajouter 2 petites lignes dans son .zshrc (ou le fichier de config du shell qu’on utilise, en gros)…

[cc lang= »bash »]

PATH=PATH:~/.local/bin

export PATH # il se peut que la syntaxe soit différente pour les shells utilisant setenv (tcsh, etc.)

[/cc]

puis de relancer la config du shell…

[cc lang= »bash »]

source ~/.zshrc

[/cc]

et pouf youplaboum ça y est ça fonctionne !

Mais c’est con comme problème…

« Ah… Ok … »

Parfois, je trouve que certaines choses sont vraiment débiles…

Débarquant récemment sur une Fedora toute fraîche (et oui, j’ai fini par mettre ma Debian à la retraite), je tente de lire un DVD commercial lambda sous VLC et… oups, ça ne marche pas !

Cascade d’erreurs comme quoi le média ne peut pas être lu.

Un problème classique sur Linux : les DVD du commerce sont chiffrés et dans la grande majorité des cas, une distribution Linux ne propose pas de base le paquet permettant de les décoder.

Bref, installation de ce fameux paquet, répondant au doux nom de libdvdcss.

Ça ne marche pas.

Passage par divers dépôts pour installer à peu près tous les codecs de la création…

Ça ne marche toujours pas.

Mon salut est venu au détour d’un forum technique… Le device utilisé par défaut par VLC pour la lecture des DVD est « /dev/dvd », visible comme entrée par défaut de la liste labelisée « Disc device » dans le menu « Open Disc ». J’ai changé cette entrée pour la dernière de la liste, « /dev/sr0 » (qui désigne, en effet, le lecteur CD également) et… Paf, ça marche.

Je crois que plusieurs images sont nécessaires pour exprimer mon sentiment à ce moment-là…

 

 

Ah, ça va mieux après !