Installer graphviz sous Snow Leopard

appleIl y a quelques jours, je signalais que GraphViz ne s’installait pas sous Snow Leopard. Je ne peux pas attendre et je ne souhaite pas installer MacPorts uniquement pour cela.

Téléchargez l’installeur pour Leopard et exécutez-le. A la fin de l’installation, vous devriez avoir un message du type The installer encounter an error that caused the installation to fail. Si vous regardez dans les logs du système vous devriez voir que le problème vient du script de post installation :

PackageKit: Install Failed: PKG: post-install scripts for "com.att.graphviz.cli.pkg"
Error Domain=PKInstallErrorDomain Code=112 UserInfo=0x100189730 "An error occurred while running scripts from the package “graphviz-2.25.20090929.0445.pkg”." {
    NSFilePath = "./postinstall";
    NSLocalizedDescription = "An error occurred while running scripts from the package \U201cgraphviz-2.25.20090929.0445.pkg\U201d.";
    NSURL = "#local.pkg -- file://localhost/Users/greg/Downloads/graphviz-2.25.20090929.0445.pkg";
    PKInstallPackageIdentifier = "com.att.graphviz.cli.pkg";
}

En regardant dans les sources de GraphViz, vous pourrez voir que le script de post-install ne fait que deux choses :

  • Générer le fichier de configuration de GraphViz.
  • Exécuter gv-fc-cache en prenant soin de le faire en mode 64 bits si la plateforme le permet.

Et bien soit, faisons cela :

sudo dot -c
sudo arch -arch x86_64 -arch ppc64 /usr/local/bin/gv-fc-cache

Si vous avez un doute sur les capacités 64 bits de votre machine, exécutez la commande

sysctl -n hw.cpu64bit_capable

Si la réponse est 1, c’est bon, sinon, au lieu d’exécuter gv-fc-cache comme je l’ai indiqué ci-dessus, faite le en 32 bits :

sudo arch -arch i386 -arch ppc /usr/local/bin/gv-fc-cache

Voilà, vous pouvez utiliser GraphViz !

Installer graphviz sous Snow Leopard

Algo::rithmique ? Thème Wordpress

wordpressComme vous pouvez le voir, je viens de changer le thème de ce blog… C’est le moment de dire au revoir à Magazine Basic qui a très joliment décoré ce site depuis 7 mois, mais j’avais envie d’un peu de changement. De plus, je n’avais jamais eu l’occasion de faire de thème en partant de zéro, et je dois dire que c’est une expérience que je ne recommencerai pas de ci tôt tellement c’est c*** ! Entre PHP pour quelque je n’ai pas particulièrement d’affinité et les fonctions de Wordpress parfois plus obscures les unes que les autres, j’ai réussi à obtenir quelque chose de pas trop laid, mais je n’y ai pris aucun plaisir !

Maintenant tout est affaire de gouts, et j’accepte volontiers les critiques !

Retour d’expérience sur Snow Leopard

Tout n'a pas fonctionné out of the box. Bizarrement c'est sur le matériel le plus ancien que j'ai eu le moins de souci (un macbook de 2006).

En même temps je ne m'en sers pas pour bosser.

Problème sur toutes les machines: mon compte stocké en NFS n'était plus monté. En fait la gestion des points de montage a changé dans snow leopard ; j'ai fait un micro-billet là dessus. Une fois re-configuré c'est bon.

Sur le macbookpro j'avais un problème de mise en veille. Capot fermé la machine sortait de veille toute les deux minutes. Résultat la batterie était vidée en quelques heures.

Pour ça j'ai supprimé les fichiers com.apple.AutoWake.plist et com.apple.PowerManagement.plist du dossier /Library/Preferences/SystemConfiguration. Au redémarrage le fichier com.apple.PowerManagement.plist était recréé et la mise en veille fonctionnait de nouveau.

Sur le macpro j'ai eu d'autres soucis. Aucune application XUL (firefox, thunderbird ou miro) ne voulait se lancer. En passant en mode verbeux il semble que ça venait de sqlite. J'ai tenté une réinstallation sans conviction et ça a fonctionné.

J'ai aussi eu pas mal de soucis avec les macports, principalement dû à l'architecture 64bits, pas mal de packages ne fonctionnait pas ou plus.

J'ai fait un dump de tous les packages que j'avais installé dans un fichier plat:

$ port installed > installed_ports

et ensuite j'ai tout désinstallé:

# port -f uninstall installed
# rm -rf /opt/local \
/Applications/MacPorts \
/Applications/DarwinPorts \
/Library/Tcl/macports1.0 \
/Library/Tcl/darwinports1.0 \
/Library/LaunchDaemons/org.macports.* \
/Library/StartupItems/DarwinPortsStartup \
/Library/Receipts/MacPorts*.pkg \
/Library/Receipts/DarwinPorts*.pkg \
~/.macports

Une fois fait, j'ai installé xcode 3.2, macports 1.8.0 et j'ai réinstallé tous les packages précédemment supprimés.

Pour les gems c'est pareil, il faut parfois penser à passer le flag de l'archi (64bits), comme pour le gem postgres:

# env ARCHFLAGS="-arch x86_64" gem install pg

Voilà les deux trois soucis que j'ai rencontré. A part ça ça ronronne et j'ai remarqué qu'on pouvait même installer htop avec port maintenant. Je ne sais pas de quand ça date mais ça donne des trucs sympas sur un macpro :-) :

Les coeurs du mac pro

Note: On peut maintenant s'inscrire par email aux commentaires.

Algo::rithmique - Thème Wordpress

Menu contextuel dans MacOSX

legoJe me suis encore une fois trouvé confronté à une question à laquelle je n’avais jamais réfléchis1 ! La demande concernait la possibilité d’ajouter une entrée dans le menu contextuel de MacOSX. OK, ce n’est peut-être pas très clair. Pour comprendre, ouvrez n’importe quel éditeur de texte et saisissez le texte suivant : Allez voir le site http://algorithmique.net ! Si vous sélectionnez n’importe quel mot de ce texte et que vous faire un clic droit (ou cmd clic), vous verrez apparaitre le menu suivant :

menu001

En l’occurrence, il n’y a rien de particulier dans ce menu. Par contre si vous sélectionnez l’adresse HTTP et que vous redemandez ce menu, vous verrez apparaitre une nouvelle entrée : Open URL

menu002

Et bien c’est cela que l’on souhaite faire. Ajouter une entrée dans ce menu contextuel. Je vous propose deux exemples.

Rechercher dans Wikipedia

Le premier exemple concerne l’ensemble des applications et permet d’ouvrir la page Wikipedia pour un mot sélectionné. Ainsi, si vous sélectionnez le mot algorithmique dans l’exemple précédent, nous voulons voir le menu contextuel suivant :

menu003

Et, en cliquant sur l’entrée Rechercher dans Wikipedia, nous devons nous retrouver sur la page correspondante.

Pour faire cela, nous allons utiliser Automator. Ouvrez ce dernier. Vous constaterez que dans la liste des modèles pour votre processus vous avez une entrée Service. C’est bien de cela dont nous avons besoin. En effet, comme indiqué, les services sont des processus contextuels disponibles dans Mac OS X.

Une fois le modèle Service sélectionné, ajoutez une action Exécuter un shell script. Nous réglons cette action de façon à ce que les données en entrée nous soient passées comme arguments et nous ajoutons le script suivant :

open "http://fr.wikipedia.org/wiki/"$1

Votre flux doit donc ressembler à ceci :

menu004

Il ne reste plus qu’à enregistrer ce service via le menu Fichier > Enregistrer sous…. Nommez le service Rechercher dans Wikipedia et le tour est joué. Vous pouvez tester !

Ouvrir dans TextMate

Dans l’exemple précédent, nous n’avons pas touché aux éléments réceptionnés en conservant texte comme type d’entrée, venant de N’importe quelle application. Dans ce second exemple, je vous propose de rajouter une entrée dans le menu contextuel du Finder (et lui uniquement) afin d’ouvrir les fichiers et/ou dossiers sélectionnés dans (l’excellent) TextMate.

Pour cela nous créons un nouveau service, mais cette fois-ci nous indiquons qu’en entrée nous réceptionnons des fichiers ou dossiers pour le Finder.

Nous ajoutons ensuite une action Exécuter un shell script. Contrairement à ce que nous avons fait précédemment, nous laissons les données en entrée vers stdin et nous ajoutons ceci comme script :

cat | xargs mate

Le flux ressemble à ceci :

menu005

Il ne reste plus qu’à sauvegarder sous le nom Ouvrir dans TextMate et le tour est joué !

menu006

Supprimer ces entrées

Si vous souhaitez enlever ces entrées du menu contextuel, rendez-vous dans ~/Library/Services et mettez à la poubelle les workflow que vous voulez supprimer.

1 j’adore !

Menu contextuel dans MacOSX

Carte heuristique et base de données médicamenteuse

devPour ceux qui s’en souviennent, il y a quelque temps, mon employeur m’avait demandé de développer un outil permettant de montrer les possibilités offertes par les APIs VIDAL. Ce produit a beaucoup évolué aujourd’hui, mais il reste cantonné à montrer les possibilités offertes pour une analyse d’ordonnance, sans rien montrer de la richesse des informations de la base.

Je me suis donc amusé avec un nouveau développement permettant de parcourir la base en montrant les liens entre les différentes informations. Pour cela j’avais plusieurs solutions classiques. Je me suis tourné vers une présentation sous forme de carte heuristique.

Je n’en suis encore qu’au début, mais j’avoue que je trouve le résultat plutôt amusant, si l’on oublie pas que l’objectif et de montrer des liens et non pas d’utiliser l’outil pour faire de la recherche d’informations.

Voici une vidéo du résultat…

Pour générer la carte, j’utilise la librairie javascript js-mindmap. Cela semble suffisant pour le besoin malgré. Il y a cependant un léger problème de sur consommation de CPU. J’attends la réaction de mes collègues pour voir si je dois changer de librairie. J’ai testé deux autres solutions :

  • GraphViz via Ruby/GraphViz. Très efficace, mais beaucoup moins animé.
  • Ma propre librairie utilisant Raphaël. Le rendu est très sympa, mais cela demande encore pas mal de développement.

Côté serveur, pas de mystère, je me base sur Capcode, JRuby et les APIs VIDAL Java.

l’OSDC.fr 2009, j’y serais

Le 2 et 3 Octobre aura lieu en première française, un rassemblement de codeur d'environnement différent, l'OSDC.fr. Cette conférence est organisé par les associations françaises de Ruby (RubyFrance), Python (AFPy) et Perl (Mongueurs de Perl). Mais ce ne seront pas les seuls langage qui seront présenté. On peux ainsi trouver des sujets sur du PHP.

En tout cas je suis très heureux de pouvoir y présenter une petite conférence sur Cucumber. J'espère vous y retrouver.


Article original écrit par Cyril Mougel et publié sur Shiny happy people coding | lien direct vers cet article | Si vous lisez cet article ailleurs que sur Shiny happy people coding, c'est qu'il a été reproduit illégalement et sans autorisation.

Zlib::BufError et repository de gems down