Omacronides 6
Après plusieurs semaines passées dans un état lamentable, ou toute requête se terminait par une réponse 404 (même si la page était correctement affichée), voici la nouvelle version du site. Comme toujours, plus de chambardements dans l'arrière-cours qu'en vitrine...
Tout ou partie des informations ci-dessous peuvent être obsolètes. Lire Omacronides 8.
Evolutions de rnb-php
Le principe qui a guidé la restructuration de la librairie reste toujours le même : simplifier le code en « atomisant » les fonctionnalités en autant d'objets indépendants. Cela se traduit par l'apparition :
- D'un module http avec des objets pour manipuler les requêtes et les réponses : si les premières étaient déjà gérées depuis longtemps, la structuration des réponses restait encore interne à certains autres objets. Elle a maintenant gagner son indépendance(1).
- D'un module render : la réponse ne gérant plus la construction du contenu en lui-même, la tâche en revient à des objets dédiés, un par type désiré (html, json, xml, etc.). Le template devient un type particulier de render html, permettant l'utilisation de syntaxe supplémentaire
- D'un module control : des fonctionnalités de contrôle et de dispatch des requêtes HTTP qui étaient jusque là éparpillées entre les objets CMS et Service.
L'autre ligne directrice de cette évolution, apparue en cours de route, à consister à réduire la nécessité de créer des classes héritant des objets de la librairie pour implémenter de nouvelles fonctionnalités ou modifier les comportements initiaux. Elle a dés lors induit un changement de design : ainsi, on passe parfois d'une stratégie « est un » à une stratégie « a un ». Cela a été le cas pour la gestion des réponses HTTP mais aussi :
- Pour le Stxmanager : même si l'objet obéissait déjà à une structure « a un », les modifications ont consisté à harmoniser et à optimiser les API.
- Pour FlatDB : il n'est plus besoin d'avoir à créer une nouvelle implémentation pour chaque type de document géré. La classe est par ailleurs devenu (« est un ») une implémentation de Col.
Enfin, comme toujours, la réécriture a été l'occasion de corriger des bugs (en évitant d'en rajouter d'autres)
Evolutions du site
Pour ce qui est du site en lui-même, pas grand chose de changer, si ce n'est que toutes les modifications apportées à rnb-php m'ont permis de réduire le nombre de classes créées d'environ 30%. La nouvelle stratégie mise en place me permet enfin d'envisager la mise en place d'une « bibliothèque », qui avait fait son apparition furtivement il y a quelques mois, voir d'un outil de prises de notes (je n'aurai plus à utiliser les services de Gougeule).
J'ai par ailleurs pu mettre en place un système satisfaisant pour la présentation des démonstrations du labo. Je vais pouvoir les réactiver petit à petit (certaines le sont déjà).
Enfin, avec l'évolution de la librairie javascript rnb, quelques petites fonctionnalités supplémentaires viennent agrémenter certaines pages.
A venir
Côté développement, une tendance claire se dessine : la convergence progressive de la structure et des fonctionnalités des 3 libraires que je maintiens : rnb-js en javascript, rnb-php en PHP et rnb-py en python. L'objectif final : effectuer tout mon travail avec des outils que je pourrais écrire avec les 3 ; le choix se ferait alors plus par goût ou par les impératifs du projet plutôt que par les limitations des librairies(2).
Côté contenu, j'espère enfin avoir plus de temps à y consacrer au cours de l'année 2011, pour revenir à des choses plus simples. Je me rappelle de certaines période (avant l'existence du site) au j'avais le temps d'écrire ; je veux dire, de véritablement écrire, des débuts de nouvelles, des plans de romans, des textes d'humeur ou de vulgarisation scientifique. Aujourd'hui, la plus grande partie passée devant un clavier d'ordinateur est consacrée à la programmation. Pas que cela soit déplaisant, non, mais parfois construire des outils pour gérer / manipuler des choses que l'on a pas/plus le temps d'écrire, c'est frustrant.
Notes
- 1
C'est au cours du développement de ce module que je me suis rendu compte qu'une extension PHP faisait grosso modo la même chose, en plus poussé évidemment.
- 2
L'écriture de données sur le disque dur en javascript reste tout de même une limitation redoutable, sauf à envisager de contourner les systèmes de sécurité des navigateurs web, et donc d'envisager une utilisation purement locale.