Sortie de Cutelyst 1.3

Cutelyst est un framework Web qui se base sur Qt en C++. Ses concepts sont très proches de ceux utilisés par Qt pour les interfaces graphiques, mais du côté Web. La version 1.3 apporte deux améliorations importantes. La première concerne la validation des entrées : adresse électronique, adresse IP, fichier JSON, date, etc. Les validateurs utilisés peuvent être partagées entre les différents fils d’exécution de l’application : il n’en faut qu’une instance pour servir un nombre illimité de clients.

static Validator v({ new ValidatorRequired(QStringLiteral("username") });
if (v.validate(c,Validator::FillStashOnError)) {
    // …
}

La deuxième amélioration concerne plutôt la performance. Jusqu’à la version précédente, Cutelyst ne communiquait avec le serveur Web (Apache, NGINX, etc.) que par uWSGI. Cependant, le protocole uWSGI a un défaut de conception relativement gênant : la communication n’est pas gardée entre le serveur Web et l’application ; ainsi, lorsque le client effectue une nouvelle requête, la connexion HTTP est conservée jusqu’au serveur Web, mais pas jusqu’à l’application. FastCGI, au contraire, n’a pas cette limitation et est accepté par bon nombre de serveurs Web.

L’impact est important : là où uWSGI ne pouvait gérer que 30 000 requêtes par seconde avec NGINX, la simple transition vers FastCGI permet de gérer jusque 42 000 requêtes par seconde. Après d’autres optimisations de plus petite ampleur (comme la manière de gérer les en-têtes HTTP dans Cutelyst), le total monte même à 80 000 requêtes par seconde.

Source : Cutelyst 1.3.0 released.

Voir le code source.

DocBook 5.1 : assemblage de documents et sujets

DocBook sert à écrire des documents, comme des livres (d’où son nom), mais principalement de la documentation pour des projets informatiques. Ses objectifs sont donc similaires à ceux de Markdown ou reStructuredText, mais avec une structure et de la sémantique : DocBook est un vocabulaire XML qui définit une pléthore de balises pour capturer le sens du texte. Ainsi, une section est clairement délimitée par un début et une fin (et non implicitement, avec le titre suivant) ; DocBook ne permet pas de mettre du texte en italique, car il peut distinguer entre une mise en évidence (le cas le plus fréquent), un mot dans une langue étrangère (ce qui peut aider un traducteur) ou un titre de livre (afin de générer un lien vers ce livre). Ce format est par exemple utilisé pour la documentation de RedHat.

La version 5.1 du schéma propose deux grandes évolutions. La première facilite la création de documentation modulaire, obtenue en assemblant des documents et en définissant des liens entre eux. Ainsi, si une entreprise vend plusieurs produits très similaires, elle pourra définir un ensemble de documents qui couvre l’entièreté des fonctionnalités de toutes ces variantes ; ensuite, selon le produit, elle pourra en assembler un sous-ensemble.

Le profilage vient à la rescousse si quelques éléments d’un document doivent évoluer d’un produit à l’autre : toutes les variantes peuvent être définies dans un même fichier, simplement marquées comme étant spécifiques à un produit ou l’autre.

La deuxième nouveauté majeure est l’apparition de la notion de sujet. Jusqu’à la version 5.0, toute la hiérarchie d’une documentation DocBook était nommée comme dans un livre : des sections, des chapitres, des livres, des groupes de livres ; les articles étaient prévus pour des documents seuls ; par exemple, il est impossible de définir une section au niveau d’un livre (cela n’aurait pas de sens), mais juste dans un chapitre (ou un article). Avec l’avènement des assemblages, ces notions n’avaient plus beaucoup d’intérêt. Les sujets peuvent s’imbriquer les uns dans les autres sans restriction.

Voir la norme OASIS DocBook 5.1. Tutoriel sur l’assemblage et les sujets.

Sortie de Cutelyst 0.11

Qt est principalement prévu pour le développement d’interfaces graphiques, il n’empêche que ses fonctionnalités sont suffisamment générales et découplées les unes par rapport aux autres pour implémenter une couche de développement Web complète comme Cutelyst. Ainsi, il devient très facile de partager du code métier entre une application mobile, une application traditionnelle de bureau et un site Web, le tout dans la sphère Qt.

Au niveau des améliorations principales, les classes d’envoi de courriels View::Email peuvent s’enchaîner avec d’autres vues, notamment avec Grantlee, ce qui permet d’utiliser les mêmes outils que pour les pages affichées. Au niveau de Utils::Sql, la compatibilité avec les classes du module Qt SQL est améliorée, avec des fonctions pour sérialiser des QSqlQuery en QVariantList, ainsi que la gestion des requêtes préparées.

De manière générale, la version de Qt minimale est maintenant la 5.5, ce qui permet de nettoyer une partie du code, notamment pour la lecture de fichiers JSON. Cette nouvelle version de Cutelyst n’apporte cependant pas d’amélioration notable au niveau de la performance pour les tests exécutés par rapport aux résultats de Cutelyst 0.10, même si les changements du côté de QString dans Qt 5.6 auraient pu apporter beaucoup. Les conclusions devraient être différentes pour des applications bien plus lourdes que celles essayées (notamment avec Grantlee et des requêtes SQL).

Source : Cutelyst 0.11.0 released!

Sortie de Cutelyst 0.10

Cutelyst est une brique logicielle basée sur Qt et fournissant des fonctionnalités facilitant le développement Web, en utilisant donc le langage C++. Son avantage principal est la possibilité de partager du code avec des applications natives et mobiles, particulièrement si elles sont développées avec Qt (ou au moins en C++). Son développement a débuté fin 2013 et a directement montré que Catalyst avait de meilleures performances, tant en utilisation de mémoire que de temps jusqu’au premier octet envoyé au client, une caractéristique partagée par beaucoup de frameworks Web C++.

Cette nouvelle version apporte la gestion des vues JSON, très utiles pour développer des API. Cette fonctionnalité est fortement intégrée avec la classe QJson de Qt, pour en faciliter l’utilisation et exploiter le code existant.

Le module Cutelyst::Core a été séparé en plusieurs parties : il ne contient plus que les fondations de la bibliothèque, c’est-à-dire les parties Context, Request et Response et leurs dépendances. Par exemple, la gestion des sessions est maintenant disponible dans une extension, Cutelyst::Plugin::Session, qui ne fait plus doublon pour ceux qui préfèrent utiliser leur propre implémentation. De même, les actions ne sont plus intégrées d’office, elles sont maintenant chargées au besoin.

La prochaine version, numérotée 0.11, devrait exiger Qt 5.5 (au lieu de Qt 5.4 actuellement), mais aussi apporter une manière déclarative (au sens de QML) pour définir les applications.

Source : Cutelyst 0.10.0 released!

Sortie de Joomla! 3.0

Voilà qui est fait, six mois après la sortie de Joomla! 2.5 : la version 3.

Tout d’abord, un mot sur le release cycle : la version 2.5 est une LTS (long term support), pas la 3.0. Cette dernière permet de casser pas mal de choses et ne sera donc pas supportée à long terme : il faudra attendre la 3.5 pour cela (au rythme d’une version mineure tous les six mois). La 2.5 sera supportée jusqu’à la sortie de la 3.5, au moins : il est toujours sûr de l’utiliser, elle sera toujours supportée… mais ne verra pas d’évolution technique. Avec la sortie de cette version 3.0, par contre, c’est le support de la vieillissante 1.5 qui est arrêté.
La migration de la 2.5 vers la 3.0 devrait se passer sans heurts, sauf en cas d’utilisation extensive d’extensions (quelques modifications ont été apportées à la Joomla! Platform, ce qui rend les extensions incompatibles en partie mais facilement corrigeables).

Quelques choses ont été cassées avec cette version : d’un côté, la compatibilité avec PHP 5.2 (dont le support a été arrêté fin 2010), seul PHP 5.3.1 et supérieurs sont supportés (de même, MySQL 5.0 n’est plus supporté – cette version n’est d’ailleurs plus maintenue depuis belle lurette) ; de l’autre, l’interface d’administration, entièrement repensée, suite aux recherches du groupe JUX.

Dans les nouveautés, on compte l’intégration de Boostrap, le framework JavaScript de Twitter ; il est utilisé pour deux designs dits responsive (l’un pour la partie utilisateur, l’autre pour les administrateurs), optimisés pour les mobiles. L’installation a été simplifiée, elle se déroule maintenant en trois étapes tout en supportant PostgreSQL. Un nouveau module de statistiques est aussi disponible.

Également, des tests unitaires ont été introduits pour le CMS.

Au niveau des statistiques de cette version : 34 nouvelles fonctionnalités (dont 15 ont été intégrées dans les versions 2.5.1 à 2.5.7) et 491 bogues.

Sources : http://www.joomla.org/announcements/release-news/5464-joomla-3-0-0-released.html et http://www.joomla.org/about-joomla/technical-requirements.html

What is Dart?, by Kathy Walrath, Seth Ladd (O’Reilly Media)

What is Dart?

Kathy Walrath and Seth Ladd, members of Google’s developer relations team, show in this essay why Google Dart is a language to be considered (in a near future) for all your Web applications: First of all, they answer why a new language is required, the most important question in this matter, what JavaScript is good for… and what it lacks. After that brief introduction, they move on to the real language (what it looks like, how you can use it, what libraries are already available – for example, Box2D, the physics engine behind the well-known mobile game Angry Bird -, where you can use it – and the idiosyncrasies of the server VM).

Continue reading “What is Dart?, by Kathy Walrath, Seth Ladd (O’Reilly Media)”