Journal 'Epeios organizer' : l'interface Web

Posté par (page perso) . Licence CC by-sa
5
24
juil.
2016

Sommaire

Introduction

Ce journal fait suite à celui-ci. Conformément à ce qui y était annoncé, l'application en elle-même n'a pas évolué ; elle est toujours aussi rudimentaire (à l'image de ce journal). Seule l'interface Web a été développée, en s'appuyant sur ce qui a été développé pour la version native.

Liens

L'ensemble des sources du logiciel (compilables sous GNU/Linux), et les binaires correspondants pour Windows (XP SP3 et supérieurs), peuvent être téléchargés à l'adresse 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 pour l'application proprement dite,
- 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/tools/xdhbrwq pour l’utilitaire prenant en charge la technologie XDHTML en tant qu'application Web,
- http://hg.savannah.gnu.org/hgweb/epeios/file/tip/stable pour le framework.

Interface Web et native

Comme annoncé, c'est un seul et même code, C++ qui plus est, qui est utilisé, et pour l'interface native, et pour l'interface Web. Le cœur de l'application est constitué d'une bibliothèque dynamique qui est prise en charge par l'utilitaire xdhcefq pour l'interface native, et l'utilitaire xdhbrwq pour l'interface Web (ce dernier étant, de ce fait, une sorte de CGI). Ces deux utilitaires ne sont pas propres à cette application, mais sont communs à toute application basée sur la technologie XDHTML.

L'interface WEB devrait fonctionner avec la plupart des navigateurs Web graphique modernes, à la notable exception de Microsoft Edge ; peut-être un bug de ce dernier, mais je n'ai pas encore eu le temps d'approfondir.

GNU/Linux

Compilation

Le packaging a été amélioré pour GNU/Linux. En supposant que g++ et make soient installés :

  • télécharger et décompresser les sources de l'application situés à : http://q37.info/download/computing/apps/orgnzq/,
  • télécharger et décompresser la version de CEF de la branche 2704 correspondant à votre architecture (Linux 32bit ou Linux 64bit) située à http://cefbuilds.com/,
  • créer une variable d'environnement nommée CEF pointant sur la racine du package de CEF (export CEF=<path to>/cef_binary_3.2704...),
  • se placer à la racine du package de l’application et lancer la commande make.

Lancement de l'interface native

Pour lancer l'interface native, se placer dans frontend et lancer xdhcefq/xdhcefq -m=XDHTML/orgnzqxdh.

Lancement du backend comme daemon

Pour lancer le backend en mode daemon, se placer dans processing, et lancer dmnzq/tool/dmnzq backend/dmnzq.xprj. Vous pouvez alors, dans l'interface native, sélectionner Moteur de traitement local pour se connecter à ce backend.

Lancement de l'interface Web

Dans le répertoire frontend/xdhbrwq, il y a un répertoire htdocs dont il faut placer le contenu à un endroit qui soit accessible à votre serveur httpd.

Pour lancer la CGI, se placer dans le répertoire frontend et lancer xdhbrwq/xdhbrwq XDHTML/orgnzqxdh. Puis ouvrir un navigateur WEB et saisir l'adresse correspondant au fichier orgnzq.html du répertoire htdocs mentionné ci-dessus. Remplir les champs, et sélectionner localhost à la place de q37.

Windows

Les binaires fournis sont destinés à Windows XP SP3 et supérieurs.

Prendre à l'adresse http://q37.info/download/computing/apps/orgnzq/ et désarchiver le package correspondant aux binaires Windows. Une fois chargé et désarchivé, suivre les instructions données dans le chapitre GNU/Linux (sauf ceux relatifs à la compilation). Selon la version de Windows, les / (slash) devront peut-être être remplacés par des \ (backslash).

Autres systèmes d'exploitation

Pour les systèmes d'exploitation POSIX pour lesquels il n'y a pas de version de CEF, il n'est possible que de lancer le backend et la CGI. Suivre les instructions concernant GNU/Linux, en ignorant tout ce qui concerne CEF. La compilation de l'utilitaire xdhcefq, qui intervient en dernier, échouera naturellement, mais tout le reste devrait être compilé et pouvoir être lancé en suivant les instructions dans la section consacrée à GNU/Linux.

Pour la version OS X, c'est toujours aussi compliqué, mais je travaille à améliorer la procédure. En attendant, suivre les indications du précédent journal.

Démonstration en ligne

Il y a une démonstration en ligne de la version Web accessible à http://q37.info/xdh/orgnzq.html. Par ailleurs, vous pouvez vous connecter directement sur le backend utilisé par cette version Web à partir de l'interface native en sélectionnant Moteur de traitement sur q37.info à la première page.

La démonstration tourne sur un serveur placé derrière une box ADSL. De ce fait, l'application peut manquer de réactivité.

Et ensuite ?

Avant d'ajouter de nouvelles fonctionnalités, et afin de tester plus avant le système de plugins, de nouveaux types de champs, ainsi que de nouvelles possibilités de stockage (dans des fichiers ; le système actuel ne stockant que dans la RAM étant d'un intérêt limité) vont être développés.

Par ailleurs, quelques tests réalisés avec une brique internet que l'on m'a prêtée montre que la CGI et le backend tournent parfaitement sur ce genre de matériel. J'envisage donc de faire tourner la démo sur un matériel similaire, mais un peu plus costaud, pour que la compilation soit plus rapide (et ainsi éviter d'avoir à recourir à la compilation croisée). Et, puisque cela fonctionne sans problème sur une architecture ARM 32 bits, autant se frotter à une architecture ARM 64 bits, comme celle de l'ODROID-C2, ou du futur Banana Pi BPI-M64

  • # c'est bien gentil

    Posté par . Évalué à 8.

    mais ça fait quoi ?

    • [^] # Re: c'est bien gentil

      Posté par (page perso) . Évalué à 6.

      En l'état, pas grand chose ; on peut créer des fiches avec des champs textes, et réorganiser les champs d'une fiche, ainsi que les entrées d'un champs, par drag & drop, et c'est à peu prés tout. Des fonctionnalités seront ajoutées petit à petit, et feront l'objet de publications ici même.

      En attendant, cette application fait office de proof of concept. Elle permet d'étudier la faisabilité, entre autres :
      - de coder entièrement et uniquement en C++ une interface basée sur des technos Web,
      - d'utiliser un seul et même code (C++) pour l'interface Web et pour l'interface native d'une application,
      - d'offrir la possibilité de modifier entièrement l'apparence d'une application sans avoir à intervenir sur son code source, uniquement en modifiant des fichiers XSL.

      Développeur freelance.

      • [^] # Re: c'est bien gentil

        Posté par . Évalué à 4.

        Il faut aller lire le journal précédent pour comprendre ce que fait l'application.

        J'ai eu la même réaction : "ce journal me parle d'une application sans expliquer ce qu'elle fait (à part le lien vers le journal précédent)".

        Un rappel n'aurait pas été de trop. Aurait même été un minimum. Erreur de communication.

      • [^] # Re: c'est bien gentil

        Posté par (page perso) . Évalué à 1.

        J'ai oublié de préciser que l'on peut :
        - modifier le contenu d'une fiche en cliquant sur l'entrée qui lui correspond dans la liste,
        - modifier le contenu d'un champ en cliquant sur son libellé,
        - modifier le contenu d'une entrée d'un champ multi en cliquant sur son contenu.

        Accessoirement, on peut également afficher un A propos… avec Ctrl+Shift-A. Sur certains navigateurs, cela provoque l'affichage d'une nouvelle page ; il faut alors revenir sur la page de l'application. Je n'ai pas (encore) trouvé de combinaison de touches qui fonctionnent pour tous les navigateurs, ou (mieux) le moyen d'inhiber le comportement par défaut du navigateur…

        Développeur freelance.

  • # xdhbrwq/xdhbrwq XDHTML/orgnzqxdh

    Posté par . Évalué à 6.

    Toujours aussi surprenants tes noms de programmes :)

    • [^] # Re: xdhbrwq/xdhbrwq XDHTML/orgnzqxdh

      Posté par . Évalué à 2.

      Il n'y a pas que cela, je ne suis pas un expert en C++, mais lorsqu'on regarde le code, cela semble assez incompréhensible. C'est à cause de mes lacunes en C++, ou vous aussi vous n'y comprenez rien ?

      De toute manière, après avoir lu le premier journal censé expliqué les fonctionnalités du logiciel, j'ai l'impression qu'il s'agit d'un gros truc crytpique. S'agit-il d'un troll ?

      Personnellement, je ne passerai pas des plombes à poser des questions sur l'application…

      • [^] # Re: xdhbrwq/xdhbrwq XDHTML/orgnzqxdh

        Posté par . Évalué à 5.

        Oui, le code est imbittable, parce que ça n'est pas vraiment du C++, c'est plein de macros qui définissent un nouveau dialecte, et quand on mit le code, ça ne respecte pas la grammaire du langage.

        Ceci dit, non, ça n'est pas non plus un pur troll, puisque l'auteur du journal semble comprendre sa technologie et même arriver à en vivre. D'ailleurs, dans le journal précédent, certaines discussions techniques semblaient confirmer que plusieurs personnes comprenaient le principe.

        Pour moi, c'est de l'informatique abstraite: tu as des trucs qui font des surcouches à une autre techno qui modifie du code dans un autre langage qui va te générer du HTML qu'il va falloir lire avec un navigateur, tu as besoin d'un quadricoeur avec 4Go de RAM rien que pour un "Hello Word", mais soi-disant ça accélère le développement. Je ne comprend pas l'utilité d'une telle complexité, mais je dois être dépassé…

        • [^] # Re: xdhbrwq/xdhbrwq XDHTML/orgnzqxdh

          Posté par (page perso) . Évalué à 4. Dernière modification le 26/07/16 à 10:17.

          Oui, le code est imbittable, parce que ça n'est pas vraiment du C++, c'est plein de macros qui définissent un nouveau dialecte, et quand on mit le code, ça ne respecte pas la grammaire du langage.

          Quelles macros ? Les seules que je tape régulièrement, ce sont qRH, qRB, qRR…, et leurs consœurs qRFwk(), qRGnr()…; qui sont dédiées à la gestion d'erreurs ; algorithmiquement, elles ne sont pas significatives, et elles ne sont pas nécessaires à la compréhension du code, sauf quand celui-ci s'occupe de la gestion des erreurs, évidemment. Quant aux autres macros, elles existent juste pour m'éviter d'avoir à taper du code dont j'ai fréquemment besoin, mais elles ne constituent certainement pas un nouveau dialecte.
          Si l'on m'indique quelles macros posent problème, je détaillerais volontiers leurs usages…

          Ceci dit, non, ça n'est pas non plus un pur troll, puisque l'auteur du journal semble comprendre sa technologie et même arriver à en vivre. D'ailleurs, dans le journal précédent, certaines discussions techniques semblaient confirmer que plusieurs personnes comprenaient le principe.

          Pour moi, c'est de l'informatique abstraite: tu as des trucs qui font des surcouches à une autre techno qui modifie du code dans un autre langage qui va te générer du HTML qu'il va falloir lire avec un navigateur, tu as besoin d'un quadricœur avec 4Go de RAM rien que pour un "Hello Word", mais soi-disant ça accélère le développement. Je ne comprend pas l'utilité d'une telle complexité, mais je dois être dépassé…

          Ce n'est de loin pas de l'informatique abstraite : la preuve, il y a une démonstration accessible en ligne qui montre que c'est au contraire tout à fait concret. Quand à cette histoire de surcouche avec HTML, je n'ai pas trop compris. Cela concerne peut-être ce que j'ai décris dans ce journal.

          Pour ce qui est d'avoir besoin d'un quadricœur avec 4GO de RAM, il y a un package disponible avec les binaires Windows destinés à du XP SP3 et supérieur, et un autre pour du GNU/Linux compatible IA-32 ou AMD64 natif. Ces packages sont relativement simple à déployer (mais je concède que c'est améliorable), et je suis preneur de tout retour sur leur mise en œuvre.
          Soit dit en passant, comme je l'ai signalé, la CGI et le backend tournent sans problèmes sur une brique internet, à savoir une architecture ARM 32 bits dual-core à 1 GHz avec 512 Mo de RAM. Pour ceux qui disposent d'un matériel similaire tournant sous GNU/Linux, ils peuvent le vérifier ; je décris la procédure dans le journal. Et enfin, il y a la démonstration en ligne ; là aussi, je suis preneur de tout retour sur les ressources nécessaires et les éventuels problèmes rencontrés en fonction du navigateur utilisé.

          Développeur freelance.

  • # bug...

    Posté par . Évalué à 6. Dernière modification le 24/07/16 à 23:31.

    j'ai voulu testé la demo.

    je rentre un login/pass (johndoe/johndoe)
    ca me dit que je n'ai pas de fiche et me propose d'en ajouter une => OK
    je cliques sur nouveau, ca me dit qu'il n'y a pas de champs et me propose d'en ajouter => OK
    je cree UN champ, texte / mono, je valide
    ca m'affiche alors la fiche avec un seul champs,

    et quand je cliques sur nouveau, pour ajouter un 2e champs, ca m'envoie l'erreur suivante :
    24/07/2016 23:26:33 GNR error : frdinstc.h(306)

    je viens de faire l'essai avec texte / multi et ca semble fonctionner.

    et il n'y a pas d'option de deconnexion.

    • [^] # Re: bug...

      Posté par (page perso) . Évalué à 2.

      Merci pour le signalement.

      Le bug est corrigé, mais il faudra attendre le déploiement de la prochaine version de l'application pour profiter de la correction.

      Quand à l'option de déconnexion, elle est absente parce que je ne me suis pas encore pris le temps de l'implémenter…

      Développeur freelance.

      • [^] # Re: bug...

        Posté par (page perso) . Évalué à 2.

        Bon, j'ai finalement profité d'une baisse momentanée d'activité sur le serveur pour rapidement mettre la version corrigée en place…

        Développeur freelance.

  • # Documentation

    Posté par . Évalué à 4.

    À un moment, il faut se poser et écrire de la documentation, avec des schémas, de petits exemples (pas des projets complets). Plus le projet est complexe, plus il en faudra.
    Il faut expliquer très progressivement les notions, sans assommer le lecteur en alignant dix acronymes inconnus dans la même phrase. Il faudrait aussi que ça reste un peu concret et palpable tout le long, pour éviter qu'on ne comprenne réellement qu'à la fin.
    Et il faut faire relire ladite documentation par d'autres personnes, souvent, pour être sûr que cela reste compréhensible pour quelqu'un d'extérieur.
    Il vous faudrait au moins une sorte de tutoriel.

    Ne le prenez pas mal, mais là, c'est franchement imbitable.

    • [^] # Re: Documentation

      Posté par (page perso) . Évalué à 2.

      J'en suis parfaitement conscient. Ce n'est pas de la mauvaise volonté, c'est que je ne suis vraiment pas doué pour rédiger des documentations, ou pour communiquer sur mes projets de manière générale, comme le montre d'ailleurs les journaux que j'ai publiés, ainsi que le contenu de mon site Web.
      Par ailleurs, ce genre d'application me permet d'améliorer le framework sur lequel il s'appuie, et que j'utilise, en tant que développeur freelance, pour les développements que je réalise pour mes clients. Donc, tout le travail de codage réalisé pour cette application me permet de proposer à mes clients du code de meilleur qualité et développé plus rapidement, ce qui est bénéfique, notamment financièrement, et pour moi, et pour le client. Par contre, tous les à-coté de ce genre de projet, comme la rédaction de documentation, sont, du point de vue financier, une pure perte de temps.
      Ceci dit (ou plutôt écrit), cela ne m'empêche pas d'essayer de communiquer tant bien que mal sur mes projets, justement en publiant ce genre de journaux, dont certains commentaires contiennent d'intéressantes pistes d'améliorations. Ainsi, j'ai travaillé, suite au dernier journal, à l'amélioration du packaging de l'application, ce qui facilite son déploiement sous GNU/Linux et Windows (pour OS X, c'est loin d'être encore ça). J'ai prévu, en plus d'améliorer l'application, de mettre l'accent sur la documentation pour le prochain journal. Mais cela sera forcément très incomplet, vu l'ampleur de la tâche, mais il faut un début à tout.

      Développeur freelance.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.