Base web, Framework : Badawok 6.0

Ça y est, la 6ème version refactorisée de ma base web est sortie sous le premier nom de Badawok.

Quelles sont les changements majeurs ?

Le système est Orienté Objet jusqu’à la moelle. Le procédural a été découpé en méthode d’un objet Badawok, ce qui ne change absolument rien au déroulement des opérations, juste la manière.

Le système n’appelle plus un module qui se débrouille mais le nouveau routeur cible directement une méthode de ce module, ce qui découpe de manière plus claire les modules (pages/système).

Les fonctions globales ont étés encapsulée par des objets : traduction, authentification (maintenant inclus d’office), templates réparti entre Badawok et la gestion individuelle des pages.

Certaines parties ont juste été affinée, autant en profiter. Tel que la classe existante de stockage ou la configuration globale.

Badawok bénéficie d’un installateur permettant de l’avoir en externals en versionning. Ainsi on peut le mettre facilement à jour et gérer sois-même la mise à jour des fichiers modifiés sans impacter d’office votre projet. Le but étant qu’on ne touche qu’au coeur de Badawok sans impacter le projet. Sauf si on refactorise pour un mieux et que cela rende incompatible tout projet de version antérieur, normal.

Typiquement l’utilisation reste la même, bien qu’éclaircie et plus facile à maîtriser. Badawok, c’est la base web frameworkée en mieux ! 🙂

La flexibilité et les auto-adaptations ont été améliorées, ce qui correspond mieux à l’idée type que nous désirons suivre, tel que le courant web moderne/à venir.

Dernier changement majeur est bien celui des urls. Le fichier pourra surement devenir un .htaccess standard au lieu de la version propre que nous avions mise au point, cependant une config apache personnelle (vhost) reste nécessaire. Nous restons dans une idée « pour développeur/sysadmin », avoir la main sur l’ensemble de son projet. Ceci impacte directement la manière de faire reconnaître les urls dans un idée multilingue mais augmente la facilité de rajouter ou modifier ces urls. Au lieu de les avoir en dur, elle se calcul par le nouveau routeur qui cherchera inversement le mot clef qui donnera les éléments à contacter automatiquement, avec fallback bien entendu.

Cette version est en cours de debug, finitions. Rien de tel qu’un projet réel pour le mettre à l’épreuve.

Tech aura bientôt une page consacrée au suivi de Badawok. Affaire à suivre 🙂 .

Base web deviendra framework

La base web de daaboo.net qui est actuellement à la version 5.0 va passer à la 5.2 et devenir un framework, modeste mais bien 🙂 !

Pourquoi 5.2 et pas 6.0 si ce changement de type annonce une refactorisation importante ?

La base de cette base web sans nom fait exactement ce qu’elle est censé faire, càd interpréter l’url demandée, fournir les modules et rendre un résultat.

Cependant on en apprend tous les jours et il est bon de se remettre en question. Du coup des revues de mécanismes me semble une bonne chose, sans changer les fonctionnalités. Ainsi il me semble plus approprié de faire une 5.2 (incluant la 5.1 qui n’a pas été déclarée comme tel).

Côté versionnage cette version prendra son indépendance, elle pourra, je l’espère devenir une externals à part entière. Beaucoup plus facile de faire des mises à jours du coeur. Ceci entraînera l’apparition d’un installateur.

Côté concret de ce qui va changer, les actions ne seront plus un gros switch du constructeur mais un revue objet de la méthodologie.

Des détails comme la dépendance yml mieux gérée, une maj des js et de quelques aidant divers. LE tout accompagné d’un petit nettoyage générale.

On pourrait y voir un aboutissement plus mûr de cette base web pour développeur, moins de chipotage interne pour la mise en place et encore plus rapidement dans le concret du projet.

Cette 5.2 sera utilisée pour le site terragusto.be actuellement en préparation 🙂 !

Solmetra uploader et swfobject 2

Voici ma mise à jour vers swfobject 2 de l’uploader de Solmetra.

HTML :

<div id="uploader"></div>

Javascript :

var flashvars = {
  language: "fr",
  baseurl: "/",
  uploadurl: "upload.php",
  config: "swf/uploader.xml",
  instance: "uploader",
  allowed: "",
  disallowed: "php,php3,php4,php5",
  verifyupload: "true",
  configXml: "",
  maxsize: "2097152",
  hijackForm: "yes",
  externalErrorHandler: "SolmetraUploader.broadcastError",
  externalEventHandler: "SolmetraUploader.broadcastEvent"
};

var params = {
  menu: "false",
  allowFullScreen: "false",
  allowScriptAccess: "always",
  wmode: "transparent"
};

swfobject.embedSWF("swf/uploader.swf", "uploader", "500", "50", "8", "expressInstall.swf", flashvars, params, {});

Bon codage.

Nahyan, on ne tue pas une idée

Une semaine bloqué dans mon travail m’a donné l’occasion de jouer avec canvas la balise HTML5 et javascript.

J’ai conçus un petit test abordant divers principe pour une base de jeu.

http://killan.daaboo.net/nahyan/test/, le code est dans la source, profitez-en. (Firefox et Chrome, contrôle via les flèches du clavier)

Les principes abordés sont :

– élaborer une grille, au final codé en JSON. L’affichage tiens compte de l’ordre pour la profondeur,
– chaque élément de la grille est un objet graphique (objet Image) avec paramètres,
– un personnage se déplace sur la grille,
– des éléments de la grille sont animé via la technique des sprites.

Outre l’aspect rudimentaire du graphisme la base est là, un personnage se déplaçant dans un monde.

Voilà donc la seule différence avec l’ancien Nahyan, la profondeur du jeu reste inchangé et tout aussi permise, on y gagne en technique, maitrise et temps de développement. Qui sait qu’un jour Bethesda décide de prendre notre projet pour faire celui que j’espérais faire naître 🙂 .

Dans un premier temps je réunis les anciens membres et vais continuer mes tests et implémentations de fonctionnalités, tout en sachant qu’une fois le projet démarré il me faudra recommencer de meilleure manière.

Développer une éditeur de zones et fixer les modalités de fonctionnement du « moteur ».

Des idées d’optimisation sont déjà élaborées ainsi que le système de construction (objets et bâtiments). Le compositing de l’équipement des persos ainsi que le terrain « vivant » ont également étés adaptés.

Donc il me reste à attendre la prochaine (première) réunion pour cette version et avancer sur le développement du système.

714_g

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.

Comitards.be lancé !

Ça y est, c’est fait ! Le site comitards.be a été lancé ce mercredi 24 novembre lors de sa soirée de lancement qui se déroulait à L’Imprévu.

En arrivant chaque comité recevait un pack contenant un dossier de presse résumant la présentation et des flyers pour le comité. Chaque personne recevait également un flyers et un autocollant.

Les comitards sont arrivés, merci Adelein pour les cotillons 😉 et Aurélien et Jérémie pour leur feux de Bengale.

Une fois tout le monde assis, activation en direct du site et début de la présentation, suivis par une démo et les questions.

Enfin, on dégage un peu les chaises et le bar que tenait la Famille du Band Bleu proposait de finir la soirée par une guindaille de circonstance.

Le Petit Torè a fait un interview, article prévu pour février !

La soirée s’est très bien passée, un publique attentif et intéressés, une bonne ambiance, que du bonheur.

Les photos sont disponibles sur le site de la Famille du Band Bleu : http://famille.bandbleu.be/photos/fbb/cat%C3%A9gorie/36#titre

Lendemain, outre un mal de crâne réglementaire : des mails, et pas qu’un peu ! Des félicitations, remerciements, encouragement, des informations à ajouter, des erreurs à corriger, des propositions d’aide.

Mais aussi des chiffres. En un peu plus de 24h, il y a déjà +200 inscrits, +1000 visites et +24000 pages vues !!!

Un lancement rassurant, prometteur et très bien accueilli.

comitards.be prêt

Le site comitards.be est un réseau historique folklorique voulant contenir tous les acteurs du folklore.

D’abord la guindaille Liégeoise, Wallonie/Bruxelles, ensuite l’Europe. Je remercie d’ailleurs tous les intervenants m’aidant quant à l’ajout d’informations.

Ce projet a débuté il y a 2 ans sous la forme d’un réseau social pour la guindaille active, 1 an après le concept a été revu pour intégrer le côté historique et encyclopédique. Enfin, il y a 1 mois le code a été forgé.

D’abord dans une première version simple (fiche de membre/infos, parrains/filleuls, recherche, titres de guindailles et anecdotes).

Ensuite l’encyclopédie à pris place, permettant d’utiliser les informations contenues mais non accessible directement. Également la génération des oripeaux en image.

Puis, les études ont été ajoutées permettant ainsi de rajouter une couche globale sur le site.

Enfin, la traduction du site pour permettre sa diffusion à plus grande échelle.

Le tout basé sur la toutes dernière base web de daaboo qui a pris une version durant ce projet.

D’ici un mois, un lancement sous forme d’event conférence guindaille aura lieu afin de faire connaitre ce nouveau site.

C’est pour bientôt !

[BaB] Envoyer les éclaireurs avant les troupes

Je n’ai pas réussi comme j’aurais souhaité clôturer mes DVDs. Les sites, eux, oui. On fera autrement.

Be a Buzz se prépare à sortir des papiers et de ma tête pour se concrétiser en code et installations diverses.

Le terrain se met en place, les pions sont prêt à bouger.

Fozzgog devine ce que vous pensez

http://fozzgog.be/devine/

Via l’adresse ci-dessus, vous pourrez tester le petit jeu de devinette. Ce même script est appelé par des ztamps pour nabaztag et fait parlé mon lapin ‘Fozzgog’.

Le principe est simple, il connait des éléments, ayant chacun des qualificatifs et par déduction il va deviner ce à quoi vous pensez à l’aide de 2 ztamps (ou boutons sur le site) ‘oui’ et ‘non’ + la possibilité de ‘recommencer’.

Actuellement il ne connait pas grand chose mais on peut lui enseigné, mais de peur qu’on lui apprenne des bêtises je n’offrirais pas cette possibilité. Du moins pour le moment 🙂

Il me reste juste un design sympa à faire et la version web sera finie.

Pour la version nabaztag je pense utiliser les lumières et les oreilles pour plus d’interactivité. A suivre 😉 .

Killan dans la meuse

Mercredi passé nous avons été sélectionné pour le concours « une idée en or » du groupe sudpresse avec notre projet Be@Buzz et nous sommes paru dans La Meuse page 4 !

09-06-03-lameuse-bab

Aujourd’hui nous passions devant un jury de 2 personnes au Cercle de Wallonie à Namur pour exposer notre projet et répondre à des questions. En gros est-ce viable, réalisable et sommes nous capable de le réaliser.

LA nouvelle est tombé le soir même, nous avons été sélectionné avec 9 autres candidats !