[BaB] Jour 1 – rien ne va plus !

Que dire de cette première journée de travail sur BaB ?

L’index de la base a été complètement désossé, il n’en reste pas grand chose. Principalement dû au fait qu’une classe d’environnement a pris le relai, elle fait office d’initialisateur de contexte et de conteneur des infos récupérées.

Une classe spécifique a été créée également, permettant de n’éditer qu’un seul fichier pour rendre compatible la base avec ses besoins. Ceci en complément du fichier de config principal écris en YAML.

Le reste de l’existant a été adapté aux nouvelles classes, méthode de fonctionnement et stockage des infos.

D’un autre côté, les domaines ont étés dépannés, une erreur dans l’ip au milieu du fichier zone ça n’aide pas.

La class d’environnement doit encore être remaniée pour les différentes utilisations possibles. Ceci au niveau de la config au niveau du sous domaine.

En fait il y a plusieurs niveau de configuration :

– la nouvelle configurant la base web
– celle du contexte (dev, prod) principalement au niveau de la connexion db.
– celle du sous-domaine choisi pour le module et contenu par défaut à afficher en plus des styles et javascripts souhaités.

C’est cette dernière config qui doit être revue et rendue spécifique.

Programme de la suite

– finir la class env
– finir le debug de la prog aveugle du jour
– installer couchdb sur le premier serveur db + outils
– sessions sous couchdb
– si j’ai le temps commencer à préparer la classe spécifique outre les sessions.


t+=9h=9h;

Une histoire de base web

Depuis que j’ai découvert les langages dynamiques facilitant grandement la gestion de sites web, je me suis mis a développer une mécanique d’assemblage de mes pages.

Pour ceux qui ne le savent pas, si on a un site avec un certain design et différent contenus, on ne copie/colle pas la page total en différent exemplaire, on la coupe pour séparer la partie changeante du reste constant.

La première base

C’est ainsi que j’ai développé mon premier constructeur (const) plus ou moins vers début 2000. L’index servant avec une iframe à cacher le changement d’url, paaaas bien mais c’était la foire à l’époque.

Le constructeur cherchait une partie de page à inclure au corps constant en fonction de la demande.

Techniquement vous aviez sous la racine ‘/’ un répertoire ‘/inc’ contenant les pages ‘/inc/pages’. Facile donc, si je demande monsite.be/const.php?p=accueil il ira me chercher ‘/inc/pages/accueil.inc.php’.

En fonction de la complexité du site le constructeur était complété par des blocs pré-fait à assembler tel des légos. (système d’authentification, sous-menu, multilinguisme, …)

Cette base a durer des années. Évidemment, elle a été corrigée, aménagée etc quelques fois. Ce sont les plus gros projets de l’époque (mesdocuments.be, mizamis.be, daaboo.net et sites clients) qui amenèrent des remises en question de la technique, la sécurité, les détails et de la flexibilité.

Un framework ?

Non, ce n’est pas un framework, c’est avant ça, car cette base est destinée aux développeurs.

Cette base est volontairement codée pour avoir un minimum d’appels et renvoyer l’information le plus vite possible. Évidemment cela rend sa manipulation et sa maintenance au fil du temps plus ardue, ce que j’ai rencontré assez souvent entre 2 versions proches et fort différentes.

Le remaniement

Fin 2009, il n’y a donc pas si longtemps, j’ai refondu cette base. Cela n’était pas le but à priori car elle fonctionnait bien et était suffisamment flexible. Je l’ai quand même remise en cause, regroupé mes expériences, fait des concessions au niveau de la maintenance et je l’ai amenée un peu plus sur le chemin du framework, pour la partie objet, toujours en n’en étant pas un.

Le système de parties de pages par include a été revu en un système de modules via les objets.

Ainsi :

  • l’index est le constructeur (comme dans les dernières versions).
  • l’index prépare le contexte pour servir la page demandée en un seul endroit au lieu de plusieurs (trop d’appels).
  • ce n’est plus l’index via un corps qui s’occupe d’afficher les pages mais un module bien précis, ainsi le système peut faire autre chose qu’afficher des pages (ajax, traitement différents, …)
  • la sécurité est décentralisée dans un module
  • enfin, il y a toute une séries de détails de l’ancienne vers la nouvelle version mais trop technique pour lister ça ici 🙂

Cette nouvelle version vient avec une manière de faire les sites, je parle d’HTML5, CSS2-3, javascript et AJAX, URL Rewriting et REST ainsi que différents fallback et parties non-intrusives. C’est l’ensemble qui révolutionne l’ancienne base web plus encore.

En gros maintenant si vous demandez la page accueil monsite.be/accueil l’index appellera le module d’affichage de page qui cherchera si le fichier de config de la page existe et ensuite utilisera ce fichier pour traduire le contenu du template visé dans la langue demandée (via des clefs de traduction et une base de données), évidemment si vous avez l’accès.

Si cette page est plus complexe et demande de préparer des données (liste, catalogue, …) ou d’en recevoir (formulaire) la page accueil sera un module complet. Une fois prêt il appellera le module d’affichage et le reste sera le même, cependant, dans le template il y aura une partie codée pour l’affichage des données.

L’évolution

De nouveaux projets ont utilisés cette base web remaniée (comitards.be et sites clients), nous sommes plus ou moins à la 4ème version majeure (depuis que j’ai commencé les bases web).

Suite à cela, il y a eu des corrections, des finitions et des améliorations (de petite à moyenne importance) mais certaines plus importantes naissent suite aux idées de possibilités ou d’observations, selon les besoins ou cas particuliers.

Ainsi cette base web, qui n’a toujours pas de nom, est sur le point de passer en v5 ‘1er jet’.

Cette fois on rend configurable l’index pour ne plus devoir y toucher du tout (déjà moins qu’avant), on va ajouter un module d’environnement comme le projet ‘Be a Buzz’ nous a montré la nécessité et certains modules vont être remanié, partiellement déplacé, classé ou adapté à la config.

Plus en détail

Prenons le cas qui est à l’origine de la réflexion. La plupart de nos sites moyens utilisent une base de données MySQL mais Be a Buzz non, lui il veut jouer avec du CouchDB. Un client pourrait également demander une base de données autre que MySQL, le cas est donc général.

De plus, la plupart des sites sont mono-serveur mais Be a Buzz est sur un parc de 6 serveurs, il y a donc des notions différentes à avoir pour développer un site dans un cas ou dans l’autre. Cela affecte notamment les sessions.

Ensuite, la base web gère les sous-domaine de votre domaine mais ne connait rien à la gestion multi-domaine. De plus un sous-domaine x.beabuzz.be peut pointer vers votre site avant que votre domaine soit actif. Cela vise une partie de l’aiguillage de config ainsi que le VHOST.

Actuellement les traductions se font via une tables ainsi que pour les authentifications. Si on a pas de base de données cela devient problématique. De plus via notre futur nouveau système d’édition la base de données ne sera plus utilisée pour cela, du moins plus dans les mêmes proportions.

Ainsi, à la vue de tout cela, une bonne partie de l’index devra être réécris et certaines parties devront devenir objet pour plus de facilité. À cela s’ajoutera un fichier de configuration de la base web. C’est la classe d’environnement (nouveau) qui s’occupera de définir le comment la base web réagit à tel ou tel événement qui ne peut être décrit dans le fichier de config.

Aussi le module d’affichage de contenu devra s’allier avec l’environnement ou être hérité, cela reste à voir, tout n’a pas encore de solution.

Au final j’espère obtenir encore et toujours mieux qu’avant. Nous serons vite fixé avec le développement de Be a Buzz.

[BaB] Top départ

Be a Buzz, pour ceux qui ne le savent pas encore est un projet en préparation depuis presque une année visant à développer un système de construction de site web, via un site, sans besoin de connaissance préalable.

Dès demain le développement commence après cette année de recherches et tests.

Plusieurs sites finis ont permis la finalisation de la pré-base, notamment comitards.be, celle-ci sera remaniée de manière plus flexible et configurable, tel une distribution, au vu du projet différent Be a Buzz. Ainsi la même base pourra servir pour un site dit ‘simple’ ou ‘complexe’ comme pour Be a Buzz.

Qu’est-ce que la base web ?

Il s’agit de la couche programmée de mes sites. Un gestionnaire, un aiguillage, un assembleur, constructeur de page, autant de noms pour illustrer son but : fournir une page selon la demande. Il ne s’agit ici que de la mécanique générale, pas du fonctionnement de chaque page.

Le principe est simple : selon une demande, contacter les ‘parties’ concernées, assembler le résultat et fournir la page construite.

Je vais écrire un article historique tiens.

La différence entre la version actuelle de la base et celle à venir ?

Principalement le côté configurable ainsi que le côté ‘contexte’ d’utilisation. Évidemment une kyrielle d’améliorations prévues seront intégrées.

Comment tout va se dérouler ?

Dans un premier temps je vais remanier la base web : la désassembler, nettoyer, la rendre configurable puis la rassembler.

Ensuite, la configurer spécifiquement pour Be a Buzz et coder les modules requis pour finir la mise en place de la base web (module d’environnement principalement).

Enfin, le développement proprement dit de Be a Buzz commencera. Je commencerais par les sous-domaines de gestion (mini buzz), nécessaires à l’activation du premier Buzz.

Ce blog retracera les avancements du projet jour après jour, tel une historisation de mes aventures durant le développement.