MathBench 1.0_beta

 Après une journée passée à préparer/commiter/valider/référencer, il ne reste plus qu'à annoncer la sortie de la première version de ma petite appli MathBench.

En gros il s'agit d'un editeur+shell python qui doit se rendre utilse quand on a 3-4 lignes de codes à taper pour tester/vérifier un truc. L'accent est donc mis sur la simplicité et aussi sur la mise à disposition du maximum de documentation possible de la façon la plus efficace (moteur de recherche et interface spéciale intégrée au shell).

Ça utilise (bien sûr) mon autre projet Yapsy (en version 1.6 actuellement) qui s'est pas mal améliorée notamment grâce à un 'nouveau' contributeur robm que je peux remercier chaleureusement du coup.

Le premier plugin pour MathBench intègre pylab à celui-ci et, même si ce n'est pas à tomber par terre, il s'est déjà montré utile.

Python Package Index : Yapsy 1.5

Et voilà maintenant je peux dire sans tricher que j'ai un deuxième projet sourceforge avec la nouvelle version de yapsy, qui est maintenant herbergée indépendamment de mathbench.

Ça a été aussi l'occasion d'utiliser les setuptools et le Python Package Index (( très pratique et visiblement certaines des idées qui y sont implantées sont communes avec yapsy même si les setuptools semblent faire beaucoup plus de trucs par défaut)) :

Python Package Index : Yapsy 1.5

Après une intéressante discution avec Joannes, il se pourrait bien que les évolutions futures de yapsy aillent dans le sens de ce genre de projets qui implémentent le design pattern des injection de dépendance pour construire des application entière à partir d'une série de module.

Ca a l'air très malin comme fonctionnement et cela permet d'ajouter à yapsy l'autre fonctionnalité majeure d'un système de plugin (et que j'avais à l'origine choisi de ne pas implémenter dans yapsy) qui est tout simplement de permettre aux plugins, une fois chargés (( le chargement est ce dont se charge précisément yapsy )), de communiquer entre eux de façon la plus naturelle possible.

Quelques système d'injection de dépendance sont déjà écrits en Python et pourraient éviter de trop réinventer la roue:

À voir...

Rio de Janeiro

Je reviens d'un voyage à Rio avec des sentiments assez mitigés. Le site est magnifique: des plages gigantesques et des paysages superbes que je regrette de ne pas avoir pu mieux explorer (il s'agissait d'un déplacement pour le boulot plutôt qu'une visite touristique).

Malheureusement la ville elle-même est loin d'être un joyau et l'ambiance est un peu gâchée par les "soucis" de sécurité qui visiblement ne sont pas qu'une légende. Le contraste entre quartiers chics et favelas (vues de loin évidemment) est aussi très dérangeant.

Il reste tout de même quelques places et monuments historiques assez jolis et l'on sent bien aussi qu'en passant de l'état de simple touriste à celui de Cariocas il y a moyen de bien profiter de la ville, enfin j'imagine...

Quelques photos:

historical_center_07

Quelques infos:

Rio de Janeiro - Wikipédia

Un peu de musique:

Aquarella do Brasil - A. Barroso

Rédaction...

En ce moment je suis pas mal occupé dans la rédaction d'un mémoire et c'est l'occasion pour moi d'explorer un peu plus de fonctionnalités d'Emacs/AucTeX et certaines limitations aussi.

Du coup, je rajoute des petits bouts de code dans mes fichiers de configurations et en attendant de mettre à jour ceux qui sont à disposition dans la section "code" de ce site, en voici un extrait:

(defun LaTeX-compile ()
  "An interface to `compile'.
It calls `compile' and define the compile command depending on
the presence of a makefile. Takes into account the master-file
system as defined by AucTeX for multiple file documents."
  (interactive)
  (let ((master-name (expand-file-name (TeX-master-file)))
        (makefile-candidate_u 
          (concat
            (file-name-directory 
              (expand-file-name (TeX-master-file))) 
              "Makefile"))
    (makefile-candidate_l 
          (concat 
            (file-name-directory 
             (expand-file-name (TeX-master-file))) 
             "Makefile"))
    (use-tex-command nil)
    )

    (if (not master-name)(error "cannot get master's filename."))

    (cond
     ;; Makefile ?
     ((file-readable-p makefile-candidate_u)
      (set (make-local-variable 'compile-command)
       (concat "cd `dirname " makefile-candidate_u "`; make ref"))
      )

     ;; makefile ?
     ((file-readable-p makefile-candidate_u)
      (set (make-local-variable 'compile-command)
       (concat "cd `dirname " makefile-candidate_u "`; make ref"))
     )

     ;; else
     (t
      (if (and (local-variable-p 'compile-command)
           compile-command)
        (setq use-tex-command t))
      )
     )
     ;; compile
    (if (not use-tex-command)
    (call-interactively 'compile)
      (TeX-command-master)
      )
    )
  )

La fonction que l'on crée ainsi est toute bête en fait, elle permet d'utiliser un Makefile, s'il existe, pour compiler le document courant et si le makefile n'existe pas on lance la commande par défaut (et configurée au niveau de AucTeX).

Grâce à AucTeX justement ça marche comme un charme pour des documents constitué de plusieurs fichiers .tex, où l'on fait juste la supposition que le Makefile (toujours s'il existe) est dans le même répertoire que le document maître.

Très pratique...

Yapsy 1.0.0

Et hop la première release de mon petit module Python. Bon ce n'est certainement pas le plus révolutionnaire des modules, mais la plupart des modules qui proposent ainsi un petit framework pour faire des plugins, ont soit des dépendances démoniaque (certains nécessitent d'installer zope...) soient une syntaxe (que je trouve) chelou. Donc voilà yapsy, un petit module tout simple mais qui fait son job :

Python Package Index : Yapsy 1.0.0

Musées asiatiques

Un buddha du musée Guimet

Dernièrement j'ai testé un petit tour (très partiel) dans la culture asiatique tout en restant sur Paris à travers quelques musées:

  • le Musée Guimet: très grande collection, arrangée de façon parfois un peu bizarre (on saute parfois quelques siècles ou qq milliers de kilomètre sans être prévenus) mais très intéressante et les objets sont magnifiques.
  • le musée Jacquemard-André: avec une expo temporaire (et presque finie) sur les masques de Chines. Là aussi c'est très beau en plus de porter sur un sujet assez rare. Le musée lui même est sans doute l'un de ceux que je préfère dans Paris.
  • le musée Cernuschi: spécialisé sur la Chine essentiellement, il présente une collection très intéressante mais un peu plus à "taille humaine" que le musée Guimet.

Masque de ChinePour être honnête je suis pas allé au Cernuschi dans la foulée (mais qq mois avant), mais bon avec les deux premiers ça faisait un peu beaucoup d'un coup et j'aurais plaisir à poursuivre mon petit parcours plus tard (le temps de digérer). En tout cas l'ensemble est assez agréable à voir d'autant que les musées sont installés dans des bâtiments magnifiques, eux-même situés dans des "quartiers-musée" de Paris (troca, boulevard Haussman, parc Monceau).

Yapsy: Yet Another Plugin SYstem

Cette fois-ci je fais court :) et je me contenterai de quelques mots pour présenter deux petits projets "open source" que je viens de lancer sur sourceforge (( pour ceux qui ne connaissent pas sourceforge c'est un site qui héberge de très nombreux projets open source en leur fournissant gracieusement des serveurs avec pas mal d'outils de développement logiciel )) .

Tout d'abord un projet qui n'est déjà pas très loin d'une version stable:

Yapsy (big icon)

Yapsy: Yet Another Plugin SYstem : quelques classes qui permettent de facilement mettre en place un système de plugin pour une application écrite en Python.

Et ce yapsy est développé dans le cadre du projet MathBench : un projet d'interface graphique qui s'inspire très modestement de Matlab (R) sauf que le langage des scripts est ici Python.

MathBench (icon)

PS: les icônes sont sous license Creative Common Attribution-Share Alike.

Creative Common Attribution-ShareAlike