GSP : votre langage Server Pages

Posté par  . Modéré par Val.
Étiquettes :
0
6
juin
2001
GNU
Je me lance dans le developpement GPL. Suite à l'écriture laborieuse d'un CGI après de longues semaines de développement en JSP, j'ai eu envie de pouvoir écrire une application CGI aussi facilement (ou presque) qu'en JSP ou PHP.
J'ai pour cela bricolé un préprocesseur qui génere le source du CGI (langage au choix) à partir de page html contenant du code inséré dans des tags <% %>.
J'attends vos commentaires et vos suggestions.

Aller plus loin

  • # Voui

    Posté par  (site web personnel) . Évalué à 1.

    Ça a l'air pas mal modulable au niveau langages, ton truc...

    J'en profite pour poser une petite question qui pourra paraître con mais je n'y connais pas grand chose en production web : imaginons que j'aie un programme C (par exemple) tournant en permanence qui fais des trucs intéressants par ailleurs, et que je veuille qu'il serve ses données sur le web sous forme de HTML. La production de HTML en soi ne pose pas de gros problèmes, mais c'est la diffusion qui en est :
    - je ne peux pas faire de CGI, car le CGI est exécuté à chaque fois ;
    - le PHP et assimilés, ça m'impose de réécrire le programme ;
    - j'avais pensé directement servir les pages, mais ça pose problème si je veux inclure des images dedans.

    Quelqu'un aurait-il une idée sur la façon de faire ça (avec gsp ou autre chose) ?
    • [^] # Re: Voui

      Posté par  . Évalué à 0.

      FastCGI ?
    • [^] # Re: Voui

      Posté par  . Évalué à 0.

      Qu'entends tu par "tournant en permanence mais faisant des trucs par ailleurs" ? Est-ce que cela veut dire qu'il ne fait pas que servir des pages webs ? Si oui que fait il d'autre ?
      Comme solution, je te propose FastCGI (c'est vieux mais ca permet de ne pas être pénalisé par une nouvelle exécution à chaque requête).
      Sinon, je ne vois pas où est le problème des images quand tu dis que tu "pense à servir directement les pages". D'ailleurs qu'entends tu par servir directement les pages ? Ecrire les documents Web périodiquement sous forme de fichier statique et que le serveur web les mette à disposition comme des ressources statiques ? Je pense que cela pourrait être une solution également.
      Autre chose, tu peux aussi utiliser les Servlets ou les JSPs (enfin une technologie basée sur la plateforme J2EE) et utiliser JNI (Java Native Interface) pour faire appel à ton code écrit en C.
      En bref, il y a beaucoup de solutions possibles pour un problème général. Le mieux serait que tu précises plus ta situation. Je pense aussi que si tu veux servir des ressources sur le web, tu seras peut-être amené à étendre cette application, et à re-chercher une "bidouille" pour améliorer ton programme écrit en code natif. Dans ce cas là peut-être faudrait-il prendre le temps de tout recoder en utilisant une technologie appropriée (qui dépend encore une fois de ce que tu veux faire).

      A bientôt.
      • [^] # Re: Voui

        Posté par  (site web personnel) . Évalué à 1.

        Bon alors je précise ma situation :

        J'ai écrit un client pour un protocole un peu particulier qu'on utilise dans mon école (vous inquiétez pas, tout ça est GPL et sera bientôt sur freshmeat), qui marche un peu comme les news mais de façon centralisée et plus "instantanée".

        Pour des raisons bassement techniques indépendantes du code, le serveur ne peut pas servir de pages web, mais j'aimerais quand même réaliser une passerelle. Pour cela, je peux récupérer le code de mon client, qui contient un cache bien pratique et des fonctions simplifiées, il n'y aurait plus (principalement) qu'à générer du HTML au lieu d'afficher à l'écran. Zou, j'économise plein de boulot.

        Je voudrais donc que ce programme tourne en permanence mais qu'il puisse diffuser des choses de façon dynamique (la génération de pages statiques me paraît complètement irréaliste). Et avant de commencer tout ça, j'aimerais savoir ce qui serait réaliste sur la façon de le faire.
        • [^] # Re: Voui

          Posté par  (site web personnel) . Évalué à 1.

          la génération de pages statiques me paraît complètement irréaliste

          Et pourquoi pas ? Quand tu recuperes des news tu regeneres la page et puis voila, non ?
          • [^] # Re: Voui

            Posté par  (site web personnel) . Évalué à 1.

            C'est sûr que la solution est tentante, mais ça impliquerait de rénégérer les pages plus souvent qu'elles ne seraient lues !
            • [^] # Re: Voui

              Posté par  . Évalué à 0.

              euh, ton daemon genere un fichier a chaque modif
              php ou autre le parse.
              le HTML est mis a jour uniquement lors des requetes.
              non? j'ai rien compris?

              flemme de m'authentifier
              • [^] # Re: Voui

                Posté par  . Évalué à 0.

                > flemme de m'authentifier
                Dommage, j'voulais t'envoyer un mail pour savoir de quel daemon tu parlais ?
                ca m'interesse au plus haut point
                • [^] # Re: Voui

                  Posté par  . Évalué à 0.

                  ben ton programme qui tourne en boucle, a la louche c'est un demon...

                  après c'est a toi de voir si le nombre de lectures du fichier html est suffisament important
                  pour generer a la volée le fichier html ou pas.

                  mailto:lefg@wanadoo.fr
            • [^] # Re: Voui

              Posté par  . Évalué à 0.

              A priori, tes pages sont plus souvent lues qu'écrites, donc tu gagnes à générer les pages lors de l'écriture de la news.
        • [^] # Re: Voui

          Posté par  . Évalué à 0.

          Si j'ai bien compris ton serveur recoit des donnees, les stocke et les sert aux clients qui les demandent. Si tu stockes ces donnees dans un emplacement qu'un "cgi" (c, shell, JSP, PHP) peux acceder alors ce "cgi" peut les recuperer et generer les pages Web adequates. Tu peux alors envisager un fichier avec un format defini que tu parses ensuite ou une base de donnees ou alors meme un fichier XML. Ce dernier te permet alors la generation des pages Web en utilisant XSL. L'avantage de ce dernier est que tu peux adapter le resultat selon le client qui demande les infos. Par exemple un client graphique pourrait recuperer le XML et ensuite afficher tout cela, un navigateur obtiendrait une page Web, un telephone Wap une page WML...

          Voila, ce n'est qu'une idee.
          • [^] # Re: Voui

            Posté par  (site web personnel) . Évalué à 1.

            Par exemple un client graphique pourrait recuperer le XML et ensuite afficher tout cela, un navigateur obtiendrait une page Web, un telephone Wap une page WML...

            Pour faire ce genre de choses je pensais plutôt utiliser du templating, on peut avec le même code fabriquer n'importe quel format de fichier (c'est la vision de DaCode avec ses thèmes).

            Le problème avec ta solution c'est que si quelqu'un demande par web un message d'il y a 6 mois, il faut que je lui donne, et je ne vais pas stocker sur le disque tous les message au format XML, j'ai peur que ça prenne trop de place. C'est là que l'utilité du code de cache que j'ai en C se ferait sentir.

            J'ai regardé FastCGI, ça pourrait bien être une solution au problème (même si ça a l'air un peu vieillot).
            • [^] # Re: Voui

              Posté par  . Évalué à 0.

              j'ai vu ça :

              module Apache qui permet de faire du script C++ dans une page HTML grace a l'interpréteur C++ ROOT

              http://d-000631-pp.dhcp.fnal.gov/~onuchin/Carrot/(...)
            • [^] # Re: Voui

              Posté par  (site web personnel) . Évalué à 1.

              Argl, d'après Debian, FastCGI est non libre. Certains termes de la licence me semblent en effet litigieux :
              http://www.fastcgi.com/cgi-bin/cvsweb/mod_fastcgi/docs/LICENSE.TERM(...)

              En gros les versions modifiées de FastCGI ne peuvent pas servir à autre chose qu'à faire tourner des CGI.
            • [^] # Re: Voui

              Posté par  . Évalué à 1.

              Pour ca il existe les archives :

              Tu archives tous les messages datant de plus de xxx jours en les compressant(si ton format c'est 1 message=1 fichier alors il faut penser a regrouper tous les fichiers dans 1 seul aussi, genre tar).

              Ensuite ton cgi ira chercher le message dans l'archive quand c'est demande, ce sera plus lent que pour les autres messages, mais vu que les vieux messages sont beaucoup moins accedes que les recents, tu ne perds rien et tu gagnes en place disque, d'autre part tu peux imaginer un systeme de cache: quand tu decompresse une archive pour extraire un message, tu peux mettre dans un repertoire temporaire d'autres messages que tu auras decompresse en meme temps, ce qui evite d'avoir a decompresser l'archive une 2eme fois.
        • [^] # Re: Voui

          Posté par  . Évalué à 0.

          Une applete ? non ?

          Elle se charge sur le client et elle vat
          chercher les données à afficher sur le serveur.
    • [^] # Re: Voui

      Posté par  . Évalué à 1.

      Il faudrait peut être rendre GSP encore un peu plus souple pour répondre à ton besoin. Je reflechis à une option qui aurait pour effet de ne produire qu'une simple procedure dans un fichier séparé spécialisée dans l'affichage d'une page. Cela te permettrait d'avoir toute liberté pour l'intégrer au mieux dans ton programme existant.
      L'autre solution serait de perfectionner ton programme pour le rendre "interrogeable" par un autre (en bref ecrire un serveur dont le CGI généré par GSP serait un client).
      • [^] # Re: Voui

        Posté par  (site web personnel) . Évalué à 1.

        Oui donc en fait GSP pourrait me simplifier la tâcha au niveau du templating. Reste que ça m'oblige à faire un serveur et un non un module d'Apache. Donc si je veux mettre des images, il faudra qu'elles soient sur un autre serveur.
  • # Accès aux bases de données ?

    Posté par  . Évalué à 0.

    Comment le cgi produit pourra-t-il gérer les accès aux différentes bases de données ?
    • [^] # Re: Accès aux bases de données ?

      Posté par  . Évalué à 1.

      En utilisant l'api disponible à cet effet dans le langage choisi. GSP n'est qu'un preprocesseur, si vous l'utilisez pour generer un programme perl, il faut ecrire dans la page gsp ce qui serait ecrit en perl pour acceder à la base. GSP apporte seulement un peu plus de souplesse pour l'edition du code html par rapport à un CGI classique.
  • # Desole mais ... ca sert a quoi ???

    Posté par  . Évalué à 0.

    Pourquoi reconstruire la roue quand quelqu'un la deja inventé ?

    Pourquoi pas essayer de construire un chariot ;)

    Je m'explique ... pourquoi ne pas utiliser les architectures de pages dynamiques pour faire fonctionner ta technologie ... le principe serait de beneficier par exemple :

    de la performance de PHP,
    de la monté en charge et de l'ergonomie de JSP,

    A reflechir ...

    Sinon, brut de decoffrage : t'as rien d'autre à faire qu'a reconsturire la roue ... si tu t'ennuie je peux te trouver des idées de trucs novateurs ;)

    La maladie de l'opensource : le YetAnotherSameToolThatWantsToSaveTheWorldButWillFail !! :o)

    Eureusement qu'il y a tux ... et duke :)
    • [^] # Re: Desole mais ... ca sert a quoi ???

      Posté par  . Évalué à 0.

      Mouef... je connais qu'un contre exemple à cette pathologie: GIMP ... le seul logiciel qui veut faire comme le grand (photoshop) et qui a réussit.
      • [^] # Re: Desole mais ... ca sert a quoi ???

        Posté par  . Évalué à 0.

        Lol gimp aussi bien que photoshop ... huhu, t'en as d'autres des aussi marrantes ? :)
        • [^] # Re: Desole mais ... ca sert a quoi ???

          Posté par  . Évalué à 0.

          Et toi t'en a d'autres des arguments ?
          • [^] # Re: Desole mais ... ca sert a quoi ???

            Posté par  . Évalué à 0.

            oui, l'expérience. GIMP peut beaucoup mais quand même... Il faudra déjà pour concurrencer photoshop qu'il arrête d'afficher des fenêtres baladeuses un peu n'importe où. ceci dit l'objectif, on le sent est proche .
            • [^] # Re: Desole mais ... ca sert a quoi ???

              Posté par  (site web personnel) . Évalué à 1.

              Il faut arrêter les fenêtres baladeuses si on veut imiter Photoshop...

              Je suis d'accord que Photoshop reste au dessus en terme de fonctionnalités. Tu aurais pu trouver autre chose qu'une critique sur l'interface... (perso, je préfère la façon du GIMP)
            • [^] # Re: Desole mais ... ca sert a quoi ???

              Posté par  . Évalué à 1.

              Une fois placée les fen^etres restent. Je ne vois pas trop le fameuse ballade.

              Il faut savoir ranger son bureau, s'approprier de l'outil. Ce sur que cette approche n'a pas été transmis par les softs proprio (qui eux aiment fonctionnement standard, recette simplificatrice, m^eme au prix d'usine à gaz) et que c'est un point d'excellence des logiciels libres.

              philou

              ps: L'experience n'est pas un argument en soi, mais un capital pouvant nous donner idées et exemples.
              • [^] # pffff...

                Posté par  (site web personnel) . Évalué à 1.

                l'utilisateur lambda (un graphiste pub par ex), lui au contraire c'est l'aspect "tout les logiciels fonctionnent pareil" qui l'intéresse.

                Critique souvent entendue (que ce soit sur gimp ou sur linux en général) :
                "j'ai pas envie de perdre du temps à tout réapprendre..."

                Cela t'énerve ? bah temp pis, c'est comme ça !
                l'utilisateur de base, il n'aime pas être surpris.

                J'ai installé gimp sur le poste d'un collègue qui bosse sur Photoshop, Illustrator et XPress (oui, oui, sous windows :().
                première réaction : "c'est quoi cette interface de naze ?"
                deuxième réaction (au bout de 2 ou 3 jours) : "ça a l'air correct, mais l'interface est chiante, je retourne à toshop".

                bienvenue dans la vie réelle... (pour ma part j'utilise gimp :) (mal, mais je l'utilise :))

                Pour l'utilisateur lamba, le logiciel libre c'est un abominable fouilli avec des logiciels qui sont pas foutu d'avoir un standard dans l'interface.

                Pour nous, c'est un magnifique "super-marché" où on peut choisir le logiciel qui nous plaît.

                Camarade, choisis ton camp !
            • [^] # Re: Desole mais ... ca sert a quoi ???

              Posté par  . Évalué à 0.

              oui, l'expérience. GIMP peut beaucoup mais quand même... Il faudra déjà pour concurrencer photoshop qu'il arrête d'afficher des fenêtres baladeuses un peu n'importe où. ceci dit l'objectif, on le sent est proche .

              bein utilise un window manager tel que ION,
              et tes fenetres ne pourront plus se ballader ...
              na.

              *ion* arachaize grave.
          • [^] # Re: Desole mais ... ca sert a quoi ???

            Posté par  . Évalué à -1.

            On peut voir sur cette page...
            http://www.gimp.org/~tml/gimp/win32/(...)

            ...la phrase suivante:
            "[...]But it is not a Photoshop killer (for real Photoshop users, that is), Photoshop has lots of features that the GIMP lacks."

            Même si j'aime beaucoup The GIMP, il est clair qu'il n'arrive pas encore à la cheville de Photoshop. Ca viendra, mais pour le moment, Photoshop reste, AMHA, le meilleur soft de cette catégorie.

            --
            NOTE: Clarifions tout de suite la situation. CE POST N'EST PAS UN TROLL
          • [^] # Re: Desole mais ... ca sert a quoi ???

            Posté par  . Évalué à 0.

            ben gimp ne gère pas la quadrichromie - indispensable pour un usage professionel
    • [^] # Re: Desole mais ... ca sert a quoi ???

      Posté par  . Évalué à 1.

      Effectivement face à JSP et PHP, ça ne tient pas la route. Cependant, quelques fois un simple CGI est plus pratique à installer et à maintenir (plus leger, pas de services autre que httpd necessaire). Mais voilà, un CGI c'est chiant à écrire. Et puis demandez à un graphiste qui ne connait rien d'autre que dreamweaver de decorer les pages d'un CGI : ça risque de coincer.
      GSP permet de dermarrer d'une page html existante (la plus belle faite par le graphiste) et vous donne le choix du langage de programmation (et ainsi pouvoir réutiliser plus facilement ses bibliothèques perso).
      J'ai peut être réinventé la roue, mais à mon goût : je n'ai rien trouvé d'analogue (il est vrai que je n'ai pas cherché longtemps).
      • [^] # Re: Desole mais ... ca sert a quoi ???

        Posté par  (site web personnel) . Évalué à 1.

        > J'ai peut être réinventé la roue, mais à mon goût : je n'ai rien trouvé d'analogue (il est vrai que je n'ai pas cherché longtemps).

        Effectivement, on rencontre souvent des situations ou "il y a bien des outils qui permettent de le faire mais pas exactement comme je veux".

        Et c'est là que les logiciels libres sont intéressants. Il y a des dizaines et des dizaines de window managers, pourtant de nouveaux projets naissent régulièrement. C'est très bien.

        Bien sûr, ce n'est pas la meilleure démarche à adopter si le but est de "faire la nique au logiciel propriétaire". Mais ce n'est pas forcément le but.

        Moi j'aime bien l'idée du générateur de CGI, c'est peut-être déjà fait, mais d'une autre manière. Développer des choses analogues mais de manière différente c'est la meilleure méthode pour qu'à terme tout le monde dispose du logiciel qui lui convient le mieux.

        Si tout le monde suivait l'optique "je fais pas parce que c'est déjà fait", alors Larry Wall aurait continué à utiliser sed et awk, et Guido Van Rossum en serait resté à tcl...
    • [^] # Re: Desole mais ... ca sert a quoi ???

      Posté par  . Évalué à 1.

      Ben il y a XSP. J'aurais tendance a dire que c'est plus rapide que PHP, mais je connais mal PHP.

      http://xml.apache.org/cocoon/xsp.html(...)
    • [^] # Re: Desole mais ... ca sert a quoi ???

      Posté par  . Évalué à 0.

      > je peux te trouver des idées de trucs novateurs ;)

      eh ben vas-y te prive pas, livre nous toutes tes idées géniales et novatrices
  • # Très intéressé

    Posté par  . Évalué à 0.

    J'avoue être très intéressé. En effet, pour développer des CGI en Perl ou du mod_perl, j'ai testé toutes sortes d'outils : HTML::Mason, embperl, HTML::Templates...

    Eh bien je dois avouer qu'aucune solution ne me parait vraiment bonne, pour des raisons de syntaxe, de difficulté de mise en oeuvre, ou encore de "portabilité" dans un autre language.

    C'est en cela que GSP m'intéresse beaucoup. Je télécharge le source de la version 0.0.3 et je vois si je peux aider :-)

    Merci de m'avoir fait découvrir ce projet.

    --
    bmc qui a la flemme de choper son mot de passe
  • # Bonne initiative mais ca existe déja.

    Posté par  . Évalué à 0.

    Salut !

    ELle est très bien ton initiative mais il y a déja des outils qui permettre de faire cela !

    Fais une recherche avec 'template' sur cpan.org et il y a pls librairies qui permettent de gérer des template de page HTML.

    Pourquoi réinventer la roue ?

    Nicolas
  • # Séparer encore plus le code

    Posté par  . Évalué à 0.

    Il existe des outils qui n'intègrent pas le code HTML dans le programme, cela comporte plusieurs avantages:

    - On peut retoucher au code HTML alors que l'application tourne,
    - On peut travailler sur le programme sans connaitre l'HTML, et travailler sur l'HTML sans connaitre le programme.

    Un exemple d'une telle librairie est "Templates Parser", un composant Ada, disponible sur la page:
    http://perso.wanadoo.fr/pascal.obry/(...)
    Section Ada, contributions ...
    Ou directement:
    http://perso.wanadoo.fr/pascal.obry/contrib.html(...)
  • # mirror

    Posté par  . Évalué à 0.

    sourceforge rame, comme d'hab ...
    j'ai fait un p'tit mirroir des 2 archives que j'ai trouvé :

    http://ker.blablanux.org/gsp-linux-src-0.03.tar.jsp(...)
    http://ker.blablanux.org/gsp-linux-src-0.03.tar.gz(...)

    vala, vala :)
    • [^] # Re: mirror

      Posté par  . Évalué à 0.

      gsp-linux-src-0.03.tar.jsp ???
  • # mmhhh

    Posté par  . Évalué à 0.

    mmmmhhh
    d'apres la tête du code généré ...
    des tableaux en dur, des strcmp, des strcpy partout sur ces mêmes tableaux ...

    c'est pour faire de l'admin à distance ? :)

    enfin c'est vrai que l'idee est intéressante
    • [^] # Re: mmhhh

      Posté par  . Évalué à 0.

      >c'est pour faire de l'admin à distance ? :)
      heu ... j'ai pas compris. Explication ?
      • [^] # Re: mmhhh

        Posté par  (site web personnel) . Évalué à 1.

        Je pense qu'il évoque la possibilité de failles de sécurité dans les cgi générés.

        --
    • [^] # GSP et sécurité

      Posté par  (site web personnel) . Évalué à 1.

      Je n'ai pas encore regardé le code de GSP mais il est vrai qu'une des principales contraintes à prendre en compte, est la sécurité du code généré.

      Si GSP est un générateur de CGI avec "trous de sécurité distants", va y avoir de la gueulante dans l'air ;-)

      Alors commence (je parle pour l'auteur...) par remplacer les "strcpy", "strcmp"... par des "strncpy" et "strncmp"... et cours relire la série d'articles de Linux-Mag consacrée aux buffers overflows.
      • [^] # Re: GSP et sécurité

        Posté par  . Évalué à 1.

        Je reconnais que le code n'est surement pas top niveau. En fait j'en suis surtout à un premier jet qui me confirme la faisabilité de la chose.
        J'ai la serie d'article que tu évoque sous le coude, mais je n'ai pas encore eu le temps d'appliquer ces recommendations.
        Enfin, s'il y a de bonnes volontés pour m'aider à améliorer la qualité du code...
        • [^] # Re: GSP et sécurité

          Posté par  . Évalué à 0.

          Laisse tomber, encore un gros blaireau qui fait son intéressante au lieu de réfléchir 10 secondes.

Suivre le flux des commentaires

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