URL: https://linuxfr.org/users/epeios/journaux/epeios-organizer-le-commencement Title: 'Epeios organizer' : le commencement Authors: Claude SIMON Date: 2016年06月30日T16:02:11+02:00 License: CC By-SA Tags: epeios, c++, xsl, xml et html5 Score: 5 # Introduction # *Epeios organizer* est développé pour répondre à deux objectifs. Le premier objectif est la mise à disposition d'un logiciel libre qui comprendra, à terme, des fonctionnalités de prise de notes, d'agenda, de carnet d'adresses, etc. mais avec de notables différences avec l'existant. Par rapport à ce premier objectif, le logiciel est, pour l'instant, embryonnaire. Je ne vais donc pas m'attarder sur ses fonctionnalités, car elles feront l'objet de publications au fur et à mesure de leur développement. Le second objet de ce logiciel, et le principal sujet de ce journal, s'inscrit dans la continuité de ce [journal-ci](/users/epeios/journaux/de-l-utilisation-des-technologies-web-dans-une-application-native), qui, lui-même, s'inscrit dans une démarche de développement d'un *framework* qui vise à faciliter le développement de logiciels (potentiellement libres) de qualité. Ce journal détaille certaines particularités de ce *framework* qui sont mises en œuvre dans l'application *Epeios organizer*. # Liens L'ensemble des sources du logiciel, et les binaires correspondants pour *Windows*, peuvent être téléchargés à l'adresse [http://q37.info/download/computing/apps/orgnzq/](http://q37.info/download/computing/apps/orgnzq/) . Les sources peuvent aussi être consultés directement à l'adresse : - [http://hg.savannah.gnu.org/hgweb/epeios/file/tip/apps/orgnzq](http://hg.savannah.gnu.org/hgweb/epeios/file/tip/apps/orgnzq) pour l'application proprement dite, - [http://hg.savannah.gnu.org/hgweb/epeios/file/tip/tools/xdhcefq](http://hg.savannah.gnu.org/hgweb/epeios/file/tip/tools/xdhcefq) pour l’utilitaire prenant en charge la technologie *XDHTML* en tant qu'application native, - [http://hg.savannah.gnu.org/hgweb/epeios/file/tip/stable](http://hg.savannah.gnu.org/hgweb/epeios/file/tip/stable) pour le *framework*. La documentation est peu fournie pour l'instant du fait de la jeunesse du logiciel. Voici néanmoins quelques adresses : - pour la compilation : [http://q37.info/computing/epeios/compilation/](http://q37.info/computing/epeios/compilation/), - pour la mise en place de l'environnement d'exécution de *CEF* : [http://q37.info/computing/epeios/tools/xdhcefq/](http://q37.info/computing/epeios/tools/xdhcefq/). # *XML*, *XSL(T)* et *HTML5* # Pour faciliter la personnalisation de l'interface du logiciel sans avoir à intervenir sur le code de l'application proprement dit, l'interface s'appuie sur du *HTML5* dont le code est produit en appliquant une transformation *XSL* sur un flux *XML* produit par le logiciel. Le fichier *XSL* utilisé pour la transformation est aisément éditable par l'utilisateur, ce qui lui permet de modifier à volonté et l’apparence, et la disposition des différents éléments de l'interface. Un exemple d'un tel fichier *XSL* est visible à l'adresse [http://hg.savannah.gnu.org/hgweb/epeios/file/c4cce94393a0/apps/orgnzq/frontend/XDHTML/XSL/FieldsLayout.xsl](http://hg.savannah.gnu.org/hgweb/epeios/file/c4cce94393a0/apps/orgnzq/frontend/XDHTML/XSL/FieldsLayout.xsl) # *Backend/frontend* # La partie dédiée à l'interface est déportée dans un composant appelé *frontend*, et la partie traitement dans un composant dénommé *backend*. Ces composants sont totalement indépendants et communiquent à l'aide d'un protocole maison. Ce protocole est conçu pour pouvoir fournir les caractéristiques du *backend* (les objets pris en charge ainsi que leurs caractéristiques), caractéristiques qui sont sauvées dans un fichier *XML*. L'*API* *C++* peut alors être généré en appliquant sur ce fichier *XML* une transformation *XSL* s'appuyant sur un fichier au format du même nom. Cela permet d'automatiser la mise à jour de cette *API* suite à une modification du *backend*, mais ouvre également ouvre la possibilité de générer l'*API* dans un autre langage, en s'appuyant sur un autre fichier *XSL*. Ci-dessous, vous trouverez les adresse des ces différents fichiers : - le fichier *XML* correspondant au *backend* de l'application *Epeios organizer* : [http://hg.savannah.gnu.org/hgweb/epeios/file/3a5c361be1a0/apps/orgnzq/frontend/frdapi.xml](http://hg.savannah.gnu.org/hgweb/epeios/file/3a5c361be1a0/apps/orgnzq/frontend/frdapi.xml), - le fichier *XSL* utilisé pour la transformation : [http://hg.savannah.gnu.org/hgweb/epeios/file/3a5c361be1a0/stable/frd4cpp.xsl](http://hg.savannah.gnu.org/hgweb/epeios/file/3a5c361be1a0/stable/frd4cpp.xsl), - et le *header* *C++* résultant : [http://hg.savannah.gnu.org/hgweb/epeios/file/3a5c361be1a0/apps/orgnzq/frontend/frdapi.h](http://hg.savannah.gnu.org/hgweb/epeios/file/3a5c361be1a0/apps/orgnzq/frontend/frdapi.h). La manière dont sont implémentées les interactions *backend*/*frontend* permet de lancer l'application dans un contexte mono-utilisateur, dans lequel le *backend* est directement chargé par le *frontend*, les échanges ayant lieu via de la mémoire partagée, ou dans un contexte multi-utilisateurs, dans lequel le *backend* est lancé en tant que *daemon*, les *frontends* communiquant alors avec ce dernier via une connexion réseau. # *Plugin*s # Pour faciliter au maximum l'adaptation du logiciel aux besoins de ses utilisateurs, un maximum de fonctionnalités est déporté dans des *plugins*. D'une part, il est plus facile d'adapter un logiciel si ce dernier à prévu des mécanismes pour cela, et, d'autre part, le développement d’un *plugin* permet de n'avoir à prendre en compte qu'une partie réduite du code source du logiciel, et non pas l'intégralité (compilation plus rapide...). Ainsi, l’authentification, le stockage des données, et chacun des types de champs est pris en charge par un *plugin* dédié ; cela offre virtuellement une infinité de possibilités d’adaptation du logiciel. # *Epeios organizer* # Quelques mots sur les (rares) fonctionnalités présentes dans ce logiciel. Comme déjà indiqué, ces fonctionnalités sont très rudimentaires, ce logiciel servant surtout, dans un premier temps, à valider certaines technologies détaillées ci-dessus. Lors de la connexion, lorsqu'un utilisateur utilise un identifiant existant, il n'est authentifié que lorsque mot de passe fournit correspond au mot de passe associé à l'identifiant. Lorsque l'identifiant fournit ne correspond à aucun identifiant existant, alors un nouveau compte est crée, associé avec le mot de passe saisit à ce moment-là. Une fois authentifié, l'utilisateur peut alors créer des enregistrements, avec des champs *mono* (composés d'une et une seul entrée), ou *multi* (composés d'une ou plusieurs entrées). Le seul type de champ à ce jour existant est le type texte. L'ordre des champs, et l'ordre des entrées au sein d'un champ peut être modifié en recourant au *drag & drop*. Une entrée dont on efface le contenu est supprimée. Un champ dont on efface toutes le entrées et supprimé. Un enregistrement dont on efface tous les champs est supprimé. L'ensemble des données est actuellement uniquement stocké en *RAM* ; lorsque l'application est coupée, tout le contenu est perdu. On peut constater que les capacités du logiciel en l'état sont très limités, mais ces capacités évolueront bien entendu au fur et à mesure, entre autres, de l'amélioration des *plugins*, disponibles et par la mise à disposition de *plugins* plus performants. # Lancement Par défaut, l'application est configurée pour être utilisée en mode mono-utilisateur, c'est-à-dire que le *backend* est directement chargé par le *frontend*. ## Sous *Windows*, à partir du *package* binaire Pour un lancement à partir du *package* binaire, se placer dans `frontend\XDHTML`, et lancer `xdhcefq\xdhcefq.exe -m=orgnzqxdh`, puis cliquez sur `OK` dans les deux première pages. Ce *package* embarque *CEF* ; nul besoin de le télécharger. Si l'on veut basculer en mode multi-utilisateurs, il faut au préalable lancer le *backend*, en se plaçant dans `processing\backend`, et en lançant `tool\dmnzq\dmnzq.exe dmnzq.xprj`. Relancer alors le *frontend* comme indiqué ci-dessus, mais, à la seconde page, sélectionner `Moteur de traitement local` avant de cliquer sur `OK`. ## Sous les autres systèmes, à partir du *package* source Pour un lancement à partir du *package* source, il faut compiler l'ensemble des sources. Pour ce faire, il faut installer *CEF* comme indiqué à la page dont le lien est donné ci-dessus. Ensuite, à condition que vous ayez installé l'environnement de développement *C++* adéquat, ainsi que la commande `make`, il suffit de lancer cette commande à la racine de l'archive, puis suivre les instructions de cette même page pour le lancement. # Et ensuite ? # La version Web de ce logiciel est la prochaine étape ; un seul et même code sera alors utilisé, et pour la version native, et pour la version *Web*, (et ultérieurement probablement également pour les versions mobiles). Et cela vaudra également pour tous les autres logiciels qui seront développés en s'appuyant sur le même *framework*. Cette version *Web* fera probablement l'objet d'un prochain journal, avec une démonstration accessible en ligne. Bien entendu, en parallèle, les fonctionnalités de ce logiciel seront améliorées et de nouvelles seront développées. Sinon, il y a bien évidemment la documentation à étoffer, le *packaging* à améliorer, ainsi que son *design*, mais, comme expliqué ci-dessus, pour ce dernier point, cela peut être aisément réalisé par l'utilisateur pour peu qu'il ai quelques connaissances en *HTML5* et *XSL*.

AltStyle によって変換されたページ (->オリジナル) /