Ventury Networks’ Blog

“If it walks like a duck and quacks like a duck, I would call it a duck.”

Binary Object Stream Service


VisualWorks propose un Parcel nommé BOSS, pour Binary Object Stream Service. Celui ci permet le stockage d’instances sous la forme d’un fichier binaire. Ce parcel est normalement chargé dans l’image de départ de VW 7.5, mais le cas échéant, il peut être chargé via le parcel manager (”System” -> “Parcel Manager”). Il se trouve dans l’onglet suggestion, et le dossier “Application Developpement”.

Le code suivant permet d’utiliser BOSS :

myWriteStream := 'monFichier.dat' asFilename writeStream.
bos := BinaryObjectStorage onNew: myWriteStream.
"on suppose qu'il existe anObject, une instance de classe quelconque..."
[bos nexPut: anObject] ensure: [bos close].

On pourrait tout aussi bien utiliser le message “nextPutAll: aCollection” pour stocker un ensemble d’instances. La construction [aBlockClosure] ensure: [anAction] retourne la valeur retournée par le premier block, mais, avant cela, évalue le second bloc.

Pour récupérer des instances d’objets, le problème n’est pas plus compliqué :

myReadStream := 'monFichier.dat' asFilename readStream.
bos := BinaryObjectStorage onOldNoScan: myReadStream.
[myObjects := bos contents] ensure: [bos close].

Il est également possible de stocker des définitions de classes, avec le message “nextPutClasses: anArray” (anArray doit contenir les classes à enregistrer). Pour les récupérer depuis la sauvegarde, le message nextClasses fera l’affaire ;-)

BOSS est capable de détecter les changements dans la définition des classes lors du chargement d’instances depuis un fichier BOSS. Ainsi, vous pouvez diffuser un patch contenant les nouvelles classes oou les modifications apportées à votre logiciel, tout en assurant la rétro-compatibilité des sauvegardes des utilisateurs. Il suffit pour cela de définir deux méthodes dans la nouvelle version de la classe : une méthode d’instance nommée “binaryRpresentationVersion”, qui retourne la version de la classe (1, 2, 3… etc), et une méthode “binaryReaderBlockForVersion: oldVersion format: oldFormat” qui se charge de convertir l’anciene instance objet sous sa nouvelle forme. Le reste est fait automatiquement par BOSS.

BOSS est largement décrit dans le guide du développeur d’applications VisualWorks (AppDevGuide.pdf) situé dans le repertoire “doc” de votre installation VisualWorks. Ce billet en est d’ailleurs largement inspiré.

Avec un tel outils, imaginez la quantité de difficultés levées lors du developpement d’applications : sauvegarde aisée des éléments produits par l’applications, et mise à jour facile … Un bonheur.

Je crois (mais je n’en suis pas certain) qu’il est possible d’utiliser BOSS sur autre chose qu’un Stream sur un fichier. Une connexion TCP par exemple ? Je vérifierais, mais je n’ai pas encore en tête “l’application qui tue” d’une telle possibillité. Si vous avez des idées …

Tags :

“on fait le Bilan calmement en se remémorant chaque instant”


2008-300-b.jpgIl est d’usage, en ces périodes d’étrennes, de faire un bilan de l’année passée. l’ensemble des médias, qu’ils soient télévisés, de presse écrite, ou radio, s’emploient à faire une rétrospective des évènements marquants de l’année. Je vais m’essayer à cet exercice, avec je l’avoue, certains partis pris. Voici donc, selon moi, les cinq évènements remarquables de cette année.

  1. Sur la ligne à grande vitesse Est européenne, la SNCF est parvenue à faire rouler un TGV Duplex spécialement préparé à la vitesse de 574,8 Km/h, record du monde sur rail. Ce record s’inscrivait dans le cadre du programme « V150 » visant à dépasser la vitesse de 150 m/sec (soit 540 Km/h). Source : Wikipédia.

  2. La crise politique en Belgique est l’un des évènements les plus inquiétant d’Europe occidentale. La nation Belge est divisée, entre Wallons et Flamands, les uns parlant français, et les autres flamand. En 2007, cette crise s’inscrit dans une durée qui devient inquiétante pour ce pays situé au cœur de l’Europe.

  3. La coupe du monde de rugby a eut lieu en France à la fin de l’été. Ce fut un spectacle fédérateur, et sans aucun doutes plus agréable que le football qui le reste de l’année est, malheureusement, envahissant. Malgré les apparences, le rugby est un sport de non-violents pratiqué par des gentlemen :-)

  4. L’année 2007 a été l’occasion de révéler au grand public un phénomène grandissant et hilarant de la tecktonik. Il s’agit d’une marque, et certains préconisent “danse électronique” comme dénomination. Peu importe. Si vous ne connaissez pas (vous ne perdez rien), “tecktonik” sur youtube vous montrera ces jeunes gens, aux coupes de cheveux improbables, se trémoussant sur une musique répétitive. Moi je trouve ça hilarants, et j’attends avec impatience le moment ou les enfants de ces adeptes découvrirons ces vidéos. C’est encore plus drôle que les “patdèf” et les R5 oranges de nos parents.

  5. Facebook, ou la consécration du rien. Il est de bon ton d’être sur Facebook, et je m’y suis inscrit sous la demande d’un ami. Cela dit, bien que certains soient très enthousiastes face à ce site récemment ouvert au grand public, je doute franchement que les réseaux sociaux virtuels soient d’une qualité comparable aux réelles relations d’amitiés. Vous savez, ces amis que l’on invitait à diner chez soi. Très franchement, je ne suis pas convaincu d’apprécier les bières virtuelles que l’on m’offre par mail.

Pour ce début d’année, je me réjouit de l’interdiction de fumer dans les bars, restaurants, et autre lieux que je ne fréquentais que très peu auparavant. C’est avec un certains plaisir que je pourrais dorénavant aller boire un verre avec des amis, sans risquer de ressortir de là avec des vêtements qui dégagent de la fumée lorsque l’on appuie dessus. J’ai d’ailleurs entendu ce midi sur Europe 1 un quidam fumeur qui, dans un bistro, était ravi du nouvel environnement dans lequel il évoluait. On pouvait, disait-il, sentir les saveurs du café torréfié, et le plat du jour n’était plus seulement visible sur le tableau noir : ses parfums embaumaient l’établissement dans lequel il prenait son café du matin. Hourra, il était temps.

Pour finir, je vous souhaite à tous une belle et heureuse année 2008.

Tags :