Login

Inheritance-aware dictionnary

Written on 2008-11-14 11:21.

In our framework we are using a dictionnary that stores the views available for a model. But what happens if you still want to provide a view for a subclass of a model ?

Of course there is still the default view created through introspection but they are only good-looking for very simple models. Thus, in this case, we decided to provide the view from the inherited parent.

Here is the code for an inheritance-aware dictionnary class.

class ClassDict(dict):
   """A dictionnary subclass that uses classes as keys
   >>> class A(object): pass
   >>> class B(object): pass
   >>> class C(B): pass
   >>> class D(A, C): pass
   >>> class E(D, B): pass
   >>> a = A(); b = B(); c = C(); d = D(); e = E()
   >>> test = ClassDict()
   >>> test[A] = 'A'
   >>> test[D]
   'A'
   >>> try:
   ...    test[b]
   ... except KeyError:
   ...    print 'Yep'
   Yep
   >>> test[B] = 'B'
   >>> test[E]
   'A'
   >>> test[C]
   'B'
   >>> test[c]
   'B'
   >>> del test[A]
   >>> test[d]
   'B'
   """
   def __getitem__(self, key):
       if not isinstance(key, type):
           key = key.__class__
       found = False
       for class_key in key.__mro__:
           try:
               val = super(ClassDict, self).__getitem__(class_key)
               found = True
               break
           except KeyError:
               pass
       if found:
           return val
       raise KeyError
   def __setitem__(self, key, value):
       if not isinstance(key, type):
           key = key.__class__
       super(ClassDict, self).__setitem__(key, value)

This kind of dictionnary will only accept new-style classes, moreover if you use an instance as a key, it will use as the key the class of this instance.

Elbow @ AB

Written on 2008-11-14 08:37.

Hier soir, j'ai eu l'occasion de revoir Elbow, la première fois ils faisaient la seconde partie d'Ann Pierlé au Cirque Royal c'était pour la tournée Cast of Thousands, très grand concert ce jour là même dans une ambience légèrement cosy due à l'heure tardive.

Arrivée à 19h45 avec Julie et Noël, on se prend une bière et paf le concert peut commencer. Encore une fois la voix de Guy Garvey est sublime et en plus il a un petit côté "Pote sympa avec lequel aller boire des pintes" qui se confirme définitivement. Il y a eu beaucoup d'interaction avec le public : un Happy Birthday pour sa copine, une histoire sur le public de Manchester, la mise en place d'un rappel qui a de la gueule (le public a repris Bohemian Rhapsody bien que je sentais mieux le Hit me baby one more time).

Niveau musical, si je ne partais pas convaincu par le dernier album (je suis dans mon trip électro/post-rock depuis un bon bout de temps maintenant), c'est bon je suis reparti pour un tour. Ma seule déception, on a pas eu Grace under pressure qui aurait terminé magnifiquement ce concert.

Ce concert entre dans mon top 5 niveau ambiance, c'était clairement excellent.

Phrase from nearest book meme

Written on 2008-11-13 07:57.

Meme from Kees:

  1. Grab the nearest book
  2. Open it to page 56
  3. Find the fifth sentence
  4. Post this sentence on your blog along with these instructions
  5. Don't dig your favourite book, the cool or intellectual one: the closest.

« On va en manger tous les deux, d'accord ? » - Pandore menacée, Peter F. Hamilton

The Big Bang Theory

Written on 2008-11-07 09:26.

Ça doit être mon côté geek mais j'aime vraiment beaucoup cette série. Il parait que j'ai quelques tiques sheldonesques.

We are moving faster now ...

Written on 2008-11-06 15:05.

A few weeks ago we reached a nice milestone in the development of our own web application framework : openhexperience., and I did not even think to blog about it.

But first let me introduce openhexperience. This framework is constructed from the experience we have gathered once we were working at Tiny. There we worked on TinyERP (now OpenERP), but we did not want to make the same mistakes that we thought were made in this piece of software. So we decided to rewrite it from the ground up using all the nice goodies the python ecosystem provides and if necessary create the missing pieces.

Gaëtan worked on elixir (a thin layer on top of SQLAlchemy) so that we have an abstracted and easy to use layer on top of the database world. I created relatorio and now we can generate pretty reports. We are using genshi to generate the xml views that are sent to the client. The glue between all the components being a cherrypy server with a custom dispatcher so that we can access the resources in a REST way. To handle translations we opted for the UNIX approach of using gettext, this was made easy by babel and the translator filter of genshi. To all the contributors of all those projects, I have to give a big kudo : your code is a great source of inspiration.

To build our client, we choose the AJAX framework qooxdoo to have a cross-OS, easily deployable solution.

And as I said earlier we reached a nice milestone quite recently because for the first time, we began to mix all the pieces together and so here is the first screenshot:

The openhexperience client running in midori and connecting to the server

For now, we still have a lot of work to do to reach a releasable state (some crucial features are yet to be done or integrated, there is no documentation yet, there are not nearly enough showcase modules, etc.), but it begins to look good and we are quite satisfied with the choices we did so far.

If you ever want to try out our framework the sources are available in our mercurial repository.

Retour aux sources : openttd

Written on 2008-09-26 06:34.

linuxfr en a parlé, je l'ai testé ! OpenTTD est la ré-écriture, sous GPL, de Transport Tycoon Deluxe.

OpenTTD c'est aussi, au delà d'un nom barbare, une véritable invitation à la glande : qu'est-ce que j'ai pu perdre comme temps à résoudre des problèmes de signalisations ces derniers jours !

Je me console en me disant que quelque part, c'est un peu comme un problème d'accès concurrent à des ressources limitées et que donc je fais de la programmation.

Heureusement qu'il ne se reproduit pas

Written on 2008-09-13 18:15.

Je viens de lire dans La Libre, un compte-rendu d'une conférence de Benoit XVI lors de sa visite en France. Elle contient la perle suivante

Une culture purement positiviste qui renverrait dans le domaine subjectif, comme non scientifique, la question de Dieu serait une capitulation de la raison, le renoncement à ses possibilités les plus élevées et donc un échec de l'humanisme dont les conséquences ne pourraient être que graves.

Je suis assez heureux qu'un pape se rende compte que la question de Dieu est scientifique. Car en effet, plus la science avance plus elle prouve que Dieu est une hypothèse inutile.

Je suis bien plus chiffoné par sa référence à l'humanisme, en quoi refuser de s'intéresser à dieu est-il un échec de l'humanisme ? Ne peut-on se tamponner le caribou de ce genre de question et néanmoins placer l'humain au centre de ses préoccupations ?

Mais le pire est la seconde citation:

ce qui a fondé la culture de l'Europe, la recherche de Dieu et la disponibilité à l'écouter demeurent aujourd'hui encore le fondement de toute culture véritable.

C'est à dire qu'une société qui ne cherche pas dieu et sa disponibilité à l'écouter, une société a-religieuse en somme, ne peut créer de culture véritable. Et là, je tique ! C'est de l'intolérance à l'état pur: d'après lui uniquement les religions peuvent créer les conditions nécessaires à l'émergence de Lascaux, Picasso ou de Battles.

Et tout ça dans le pays de la laïcité positive qui se veut ouverte, tolérante et respectueuse. Tout le contraire de Joseph quoi !

Nom d'une pipe en bois !

Written on 2008-09-12 14:06.

List of programming languages I know

Written on 2008-09-09 22:20.

I will follow Corey's example and make the ordered list of the programming languages I learned in the past 15 years

  1. LOGO
  2. QBASIC
  3. pascal
  4. C
  5. scheme
  6. Java
  7. lisp
  8. prolog
  9. shell
  10. python
  11. VBScript
  12. javascript
  13. erlang

I am still deeply in love with every functional languages I learned. I was in fact directed to Python (circa 2001) by some guy in a Scheme usenet group telling me that if I wanted a more market-friendly language but still elegant I should learn Python.

LinuxFR a dix ans

Written on 2008-09-09 08:20.

Dix ans d'informations sur le libre, de trolls (sur le TCE, sur Mono, sur les licences, sur SUSE, sur ...) et toujours cette communauté bien sympa.

C'est bien simple, linuxfr n'existerait pas qu'il faudrait l'inventer.

Pages :