Sortie eZ Object States Filter 1.0

eZ Object States Filter est une extension de type extended attribute filter. Cette extension permet de filtrer sur les object states des objets de contenu lors de la récupération d'un ensemble de nœuds en template avec la fonction fetch( content, list ) et équivalentes ou en PHP. Il s'agit d'une toute petite extension (3 fichiers !) écrite pour un projet perso en cours avec eZ Publish 4.1. Des exemples d'utilisation (template et PHP) sont disponibles sur la page du projet.

Télécharger eZ Object States Filter 1.0

Retour du eZ Camp du 09/04/2009

L'équipe d'eZ France.org a déjà fait un excellent et très complet résumé ! Je vais donc pouvoir me concentrer sur des avis plus personnels par rapport à cet après midi riche en débats :-) En particulier, je tiens à revenir sur deux points purement communautaires.

Contributions externes

Tout d'abord, je suis content de voir surgir à nouveau la question de la contribution externe à eZ Publish et de l'ouverture du développement. Paul Borgermans a annoncé la résurrection de la section spécifications sur ez.no, c'est une super nouvelle ! Je suis toujours inscrit au flux RSS de cette section mais le dernier document date de la sortie de la version 3.9 qui a l'époque avait été surnommée la community release... Idéalement, cette section devrait servir de RFC permettant à chacun de s'exprimer sur les évolutions à venir et pourquoi pas proposer des idées et du code. Un peu comme l'Open Funding mais en moins orienté... funding :-)

Débat autour des sites communautaires

Mon avis sur l'initiative eZ France a déclenché un mini-débat. Tout d'abord je tiens à préciser plusieurs choses :

  • je parle ici en mon nom uniquement (comme d'habitude sur pwet.fr)
  • les initiatives communautaires ne sont pas si nombreuses, ce n'est pas pour descendre celles qui existent !

Donc je le redis, l'initiative est intéressante, elle a le mérite de faire bouger les lignes et sur un plan technique eZ Publish devrait (et devra !) s'internationaliser un peu plus par défaut, personne ne pourra dire que c'est mauvais. En plus, ils intègrent mon extension ezclasslists, je peux pas dire que c'est 100% mauvais :-)

Plus sérieusement, eZ France (et eZ Publish France dans une certaine mesure) est l'exemple type du dilemme qui se pose avec un outil orienté professionnel comme eZ Publish. Comment faire cohabiter au sein d'une communauté ouverte des professionnels qui si ils investissent des ressources veulent un retour (ce qui est légitime) ? Certains peuvent penser que le débat est stérile (voir les commentaires du résumé du eZ France), je pense au contraire qu'il est indispensable si on veut avancer. Pour résumer, à mon avis une certaine neutralité "commerciale" est une condition nécessaire si on veut attirer des contributions de toute part ou plus exactement ne pas poser une barrière à un employé de la société S qui souhaite contribuer à une initiative trop marquée de la société N ou H sans se mettre en défaut vis à vis de son employeur. Dans ce cadre, l'idée d'une convergence d'eZ France, eZ Publish France et Planet eZ Publish.fr sous l'égide d'une association francophone d'utilisateur d'eZ Publish est intéressante. Une association a l'avantage de donner ce cadre "neutre". Je ne me fais pas de soucis pour nos employeurs respectifs, il trouveront bien un moyen de valoriser nos contributions :-)

Au passage, si tout cela se réalise, ça ne veut pas dire que toute contribution doit passer par l'association, chacun reste évidemment libre d'écrire sur ses propres expérimentations, découvertes, trucs sur son blog ou ailleurs. Je parle ici de la réalisation d'un unique site communautaire : des forums (eZ Publish France), un aggrégateur (Planet eZ Publish.fr), des initiatives de localisation (eZ France, traduction de documentation, ...) et tout autre idée partagée par la communauté. Par exemple, faire une espèce d'annuaire organisé des articles en lignes en français sur eZ Publish comme le suggèrait Gauthier (je crois ?) est une très bonne idée complémentaire des fonctionnalités existantes. Ce sujet vous intéresse ? Inscrivez vous au groupe Google ezpublish-france.

Pour finir, on peut aussi prendre exemple sur d'autres communautés/produits orientés professionnels, je pense en particulier à Wikigento site communautaire autour de Magento dont le positionnement est assez proche d'eZ Publish.

Quelques nouveautés d'eZ Publish 4.1

Il n'y a pas que des améliorations de performances dans eZ Publish 4.1. L'annonce de la sortie de la version 4.1 liste les plus grosses nouveautés (stale cache, object states, ...) et d'autres améliorations attendues depuis un bon moment. Je pense en particulier à l'ajout de déclencheurs sur d'autres opérations que l'affichage d'un objet (content/read), la publication (content/publish) ou ceux dédiés au module de boutique. Mais eZ Publish 4.1 apporte aussi d'autres améliorations qui sont passées pour le moment un peu inaperçues comme l'amélioration des content edit handler ou les extensions de type output filter.

Validation avec un content edit handler

Jusqu'à eZ Publish 4.0 un content edit handler permettait uniquement lancer un bout de PHP au moment de la publication d'un contenu. Il s'agit d'un mécanisme apparu dans eZ Publish 3.8 qui permet d'implémenter tout un tas de fonctionnalités comme la mise à jour d'un cache spécifique, la publication à partir d'une date renseignée dans un attribut, la création d'un espace personnel lors de l'ajout d'un utilisateur, ... J'ai toujours vu ce mécanisme comme une sorte d'évènement de workflow post publish en beaucoup plus simple (pas de code de retour, pas de syntaxe alambiquée, pas de possibilité de laisser le travail à script cron...).

Dans eZ Publish 4.1, il est maintenant possible d'implémenter une méthode de validation dans un content edit handler, en fonction du retour de celle-ci, l'objet part en publication, sinon le formulaire affiche le/les messages comme lorsqu'on oublie de remplir un champ obligatoire par exemple. Dans certains cas, ce nouveau mécanisme peut largement simplifier les choses notamment en permettant la vérification de règles syntaxiques supplémentaires sans nécessiter le développement d'un datatype spécifique ce qui est parfois un peu lourd pour juste ajouter une validation simple (validation d'un code postal, d'une longueur minimale d'une ligne de texte, d'un domaine particulier pour un email, ...)

Extension output filter

Il s'agit d'un nouveau type d'extension qui permet d'ajouter un traitement sur le code de la page entière. La documentation dans le SVN de cette nouvelle fonctionnalité donne comme exemple la réécriture des URL des composants de la page en fonction de la position géographique. Pour les validatorophiles, on peut aussi imaginer corriger les éventuels problèmes de validation (X)HTML grâce à un filtre utilisant l'extension php-tidy ou encore remplacer des tags prédéfinis par des éléments générés par un autre système (une version PHP des SSI ou d'ESI simpliste). Bien évidemment comme cette fonctionnalité permet de traiter l'ensemble du code de la page, il faut se méfier des effets néfastes sur le temps de génération des pages.

L'albanelotron, HADOPI, les gus ...

Bon la loi HADOPI (Création et Internet) a été adoptée, pas très drôle mais pas sûr qu'elle soit réellement appliquée entre la débilité intrinsèque du texte, l'opposition de l'Europe... Bref, en attendant, on trouve des trucs marrants comme l'Albanelotron ! Je ne résiste pas à la tentation de citer mes 3 préférées :

Guy Bono, chanteur de U2...

L'adresse IP est une sorte de plaque d'immatriculation des ordinateurs.

Ce sont [la Quadrature du net] cinq gus dans un garage qui fabriquent des adresses IP pour envoyer des mails à la chaîne.

Avec un peu de chance, la loi Hadopi ne sera finalement que 16 gus dans un hémicycle (via Bertrand) :-)

Comparaison de performances entre eZ Publish 4.0.1 et 4.1

C'est la saison des benchmarks autour d'eZ Publish :) Bertrand a fait une intéressante comparaison entre le mode cluster et le mode classique, suivi de près par un article sur ez.no mettant en évidence le gain apporté par le fameux Stale Cache dans la génération du cache de contenu. De mon côté, j'ai adapté les scripts de mon benchmark entre eZ Publish 3.10 et eZ Publish 4 pour comparer cette fois uniquement les performances sur une page en cache de ce site (/blog) avec eZ Publish 4.0.1, eZ Publish 4.1 sans optimisation et eZ Publish 4.1 avec un fichier config.php ; le but étant de déterminer le gain apporté par les différentes améliorations de performances pour un site sur un seul serveur.

Informations techniques

  • Serveur : une Dedibox v1 ancienne génération (processeur Via C7 à 2Ghz avec 1Go de RAM)
  • Logiciels : Apache 2.2.8, PHP 5.2.4 avec le module xcache, MySQL 5.0.51
  • Caractéristique de la page : la page fait les 3 requêtes SQL minimum (session, chargement des langues et détermination de la page concernée)
  • Test : plusieurs séries de 500 requêtes avec un concurrence de 2 réalisées avec l'utilitaire ab sur chacune des installations

Le fichier config.php :

<?php
define( 'EZP_USE_BUNDLED_COMPONENTS', true );
define( 'EZP_INI_FILEMTIME_CHECK', false );
?>

Résultats

Le résultat est plutôt spectaculaire. La simple mise à jour en 4.1 donne un gain de presque 30% dans la distribution d'une page en cache ! Avec la configuration ci-dessus dans le fichier config.php le gain est même de 50% ! Pendant les phases de tests, j'ai également constaté que la charge de la machine est bien plus faible. Comme d'habitude ces chiffres sont à prendre avec des pincettes, ils représentent le gain sur un site bien optimisé (enfin j'espère) sur un serveur bas de gamme. Un test sur un serveur plus haut de gamme serait vraiment intéressant.

Flux RSS des billets

Flux RSS des billets

Rechercher sur pwet.fr

À retenir

Derniers commentaires

Archives

Nuage de tags

Bioutifoul photos

Quelques liens

Licence d'utilisation

Contenu sous Licence Creative Commons By-Sa

Sauf mentions spécifiques, les billets et les photos publiés sur ce site sont placés sous la licence Creative Commons by-sa.

Pour toute utilisation dépassant le cadre de cette licence, merci de me contacter par e-mail.

Login