Introspectable properties in C++

 I'm working on a C++ project on my free time, and there's one thing I miss about this language : introspection.

The case is quite common : I want to access my object's properties dynamically, for example when I need to serialize or deserialize them. Being a great fan of Objective-C, I basically wanted to access my attributes as Objective-C Key Value Coding compliant properties :

object.getValueForKey("key");
object.setValueForKey("key", value);

I also wanted to keep this access method independent from the internal representation of the property (which basically means that I just want to provide a getter and setter method).

Obviously no such mecanism exists in C++, and the goal was to build a generic solution that could be applied to all my objects.

 

Continuer la lecture

Conceptoire 2.0

Même si je ne met que très occasionnellement à jour ce site, j'ai passé un peu de temps à faire une refonte à la fois graphique et technique :

  • Mise en place en back-office d'un editeur de texte riche (fck editor).
    (peut-être que ça m'encouragera à publier plus souvent !)
  • Passage à Rails 2.1.1.
    Le passage à Rails 2 s'était un peu fait dans l'urgence, et pas mal de choses marchaient mal.
  • Passage d'ERB à HAML pour le moteur de rendu des vues (partiel, il reste un peu d'erb mais Rails permet une cohabitation facile).
  • Utilisation de SASS pour écrire mon CSS.
    En particulier pratique pour écrire un layout flexible décrit en "em" au lieu d'un layout fixe en pixels ou en points.
    Essayez d'augmenter ou de réduire la taille du texte pour voir !
  • CSS3 !
    Les utilisateurs d'Internet Explorer sont définitivement laissés à la porte. Ce site est l'occasion pour moi de regarder ce qu'il se fait de beau au niveau des nouveaux standards. Je dois dire que c'est assez génial.

Navigateurs conseillés : Safari 3 ou 4 beta, Chrome ou Firefox 3. Opera devrait être ok, je vais vérifier ça sous peu.

 

Configuring a NSToolbar

Introduced with Leopard was Interface Builder 3 (IB3), which finally included support to include NSToolbar design in nib (or xib – the new trendy format) files.

Yes. But.

Following Apple documentation, I added a NSToolbar instance to my document window, and customized it with some NSToolbarItems. As expected, it works great, my toolbar items have custom icons and calls the specified action.

The problem occurred as I wanted to make some of these items “selectable” – meaning they would have a mode-selection behavior. The thing is IB3 doesn’t provide a way to set this property in its interface. The way to do this is to specify a delegate for the toolbar and override

- (NSArray *)toolbarSelectableItemIdentifiers: (NSToolbar *)toolbar;

The name of this method is pretty much self explanatory, but I hadn’t specified any item identifiers for my custom toolbar items in IB, because this essential property is nowhere to be found ! Looking at the xib file directly in a text editor, it looks like IB generates a hash-code for each custom toolbar item to use as its identifier. This makes it impossible (or at least darn difficult) to programmatically retrieve or use these items.

In the end I had to configure manually my toolbar’s content by loading a plist file which did more or less the work of the xib file : hold the configuration of my toolbar, but allowing me to specify which items were selectable. And it works great, except that I can’t visualize the content of my toolbar at design-time.

Now I have one more question to ask the Apple engineers at WWDC ;-)

You can read some code on the full-post.

Continuer la lecture

Appels Google Maps en Cocoa

Ce post est le premier d’une série dans laquelle je présenterais quelques trucs utiles (et parfois triviaux) que j’implémente en Cocoa pour ma prochaine appli (si elle voit le jour).

L’idée de base est de présenter un petit bout de code pour faire quelque chose.

Dans le cas présent, récupérer une carte statique Google Maps représentant le monde dans un objet NSImage.

Le code est dans la suite du post.

Continuer la lecture

Il y a quelque chose dans l'Air

Aujourd’hui c’était un jour de Keynote. Si vous me connaissez vous savez que ça rime avec un rituel très codifié qui consiste à dire à tout le monde pendant la journée d’aller voir le site d’Apple à 20h, ils auront des surprises (en général c’est le commun des mortels qui reconnaît le plus les innovations apportées par Apple … les personnes qui commencent a regarder les specs pures vont dire des bêtises comme se plaindre du manque d’une carte graphique sur le MacBook Air).

Donc aujourd’hui jour de Keynote, en rentrant de cours j’ai bien pris le soin de ne pas ouvrir de page internet liée a Apple (à part bien sûr la page spoil-free de MacRumors, qui est faites pour les gens comme moi voulant regarder la vidéo sans lire les annonces), ou mon lecteur de flux RSS, ou encore MSN, AIM, GTalk … bref l’idée c’était d’être coupé du monde.

Donc j’ai bossé un peu … je suis allé faire les courses, puis j’ai écumé le site de Canal+ pour regarder les différentes très bonne vidéos de leurs émissions quotidienne (je suis un grand fan de La météo de Louise).

Et enfin le lien magique est apparu. 1h30 de Keynote, et si elle n’est pas la meilleure de ces dernières années (même plus de “One more thing”, je pense que Steeve à dû se lasser) est tout de même riche en annonces.

Continuer la lecture

Java Enterprise Edition

Cet article fait partie d’une chaîne de posts multi-blog “Ras le bol de JEE” décidé un beau lundi matin avec plusieurs collègues.

Nyko de bananapps

JC qui n’a pas encore écrit le sien

Continuer la lecture

Paris on Rails 2007 : Outils, Internationalisation et Vues

Par un hasard malheureux, un de mes amis qui devait assister a la conférence Paris on Rails 2007 à eu un malheureux accident (le sport c'est mal) et histoire de ne pas gâcher m'a refilé sa place (Mat c'est un peu pour toi que j'écrit ce résumé ... et beaucoup parce que ça rajoute du contenu à ce site tout vide).
Vu que je songeais à y assister mais avait été découragé par la date (un lundi), j'ai vite réservé les billets de TGV (après avoir mis en ordre quelques travaux urgents). J'ai essayé dans ce post de résumer quelques points particulièrement interessants de cette journée.

Dans cette première partie, j'aborde les sessions techniques, par opposition aux sessions "marché", ou "retours utilisateurs"

Continuer la lecture

De retour !

Deux mois ...
Deux mois sans internet (en tout cas chez moi ... mais on ne peut pas faire grand chose en TP à la fac). Je dois dire que ça a été dur et déprimant.

La suite contient quelques réflexion sur l'état d'esprit dans lequel j'ai été pendant cette période.

Continuer la lecture

Les Routes et Rails

Au moment de concevoir ce site, j'ai souhaité conserver une hiérarchie de page classique du type /projets/conceptoire.com/sous-section/...
Ce qui suit présente ce qui a posé problème, et ce qui a fini par marcher.

Continuer la lecture

Bonnes résolutions

Allons-y, essayons de faire quelque chose avec ce blog. Je vais essayer de noter des articles pendant la semaine et de les mettres en ligne dés que je suis connecté au réseau de la fac. À coté de ça, je vais tenter de poster dans la section projets, ça sera toujours plus interressant que ma petite vie de déconnecté. Du coté ADSL, il y a toujours une intervention de technicien programmée pour trouver ce qui empeche mon modem de se synchroniser (le modem va bien ... quelqu'un a du se prendre les pieds dans un fil entre mon appartement et le central). J'ai plus beaucoup d'espoir d'avoir une connexion internet avant la fin de l'année.