Journal Un module apache pour programmer des applis web en C++

Posté par (page perso) .
Tags : aucun
15
6
mar.
2009
Cher journal,

Je t'écris un petit mot pour te prévenir que le module apache que j'ai développé fonctionne très bien et qu'il est disponible sous licence LGPL. Il me permet de faire de beaux logiciels en C++ pour mes besoins perso et pro.

Il faut maintenant que je soigne sa page web et sa documentation.

à bientôt - Guillaume
  • # oh ?

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

    et monsieur l'auteur ne veut pas faire une dépêche ?

    pourquoi ? :)
  • # Hello

    Posté par . Évalué à  1 .

    En vrac :
    - Promis, j'essayerai... un jour...
    - Alors, bientôt célébrité et richesse ?
    - Mais pourquoi avoir posté un vendredi ?
    • [^] # Re: Hello

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

      mod_c++ se devait de paraitre un vendredi : le potentiel trollesque est trop gros dans la communauté dev pour laisser passer l'occasion !
  • # et sinon ?

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

    A quand un module apache pour faire du brainfuck en natif sans passer par le cgi ?

    Sinon concrètement : qu'apporte ton module en plus de mod_perl, mod_python ou mod_php à part que si tu préfère le C++ c'est mieux pour toi et peut être des performance vu qu'on est sur du compilé ?
    Pourquoi choisir l'extension .c et non .cpp pour le code des sites woueb ?
    Tu utilise quoi comme compilateur en arrière plan ?
    Quand tu compile la page lorsque le module détecte une mise à jour, c'est pas un peu lent ?

    Sinon ça serait super si tu pouvais faire un bench genre une page simple avec quelques fonctions de base pour faire un comparatif entre perl, php, python, RoR, J2RE et ton module car tu parle de quantité mémoire ingurgité sur ton site mais on aimerait bien avoir un aperçu ainsi que pour les performance de rendu de la page.

    Bon à part ça même si je n'aurais surement jamais utilité de ton module, je trouve que ton initiative n'est pas mauvaise dans le sens où les fan de C++ vont pouvoir utiliser leur langage de prédilection d'une manière plus souple qu'en CGI. Et puis même si c'est pas sous licence BSD, la lgpl est toujours mieux que la licence apache :)
    • [^] # Re: et sinon ?

      Posté par . Évalué à  6 .

      Je trouve que c’est une très bonne idée.

      Marre de ces langages de plus en plus lourd et qui, au final, n’apporte pas grand chose (attention, je parle de langage, pas des bibliothèques associés).

      J’aurais quand même préféré du C pure ou de l’ObjC, mais c’est déjà une très bonne idée en soit.
    • [^] # Re: et sinon ?

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

      Pourquoi choisir l'extension .c et non .cpp pour le code des sites woueb ?

      Ouais enfin chacun fait comme il veut si tu veux faire un .nawak, tu peux aussi en changeant une ligne de conf
      • [^] # Re: et sinon ?

        Posté par . Évalué à  9 .

        Certes... Mais respecter les "conventions" de nommage n'est pas un luxe inutile
        • [^] # Re: et sinon ?

          Posté par . Évalué à  3 .

          En fait, il utilise .C et pas .c, ce qui est différent et se retrouve très souvent pour du C++.
          • [^] # Re: et sinon ?

            Posté par . Évalué à  4 .

            ... sauf qu'utiliser la casse uniquement pour différencier est une très mauvaise idée
            • [^] # Re: et sinon ?

              Posté par . Évalué à  4 .

              ... mais moins que d'utiliser un OS qui ne sait pas gérer la casse dans les noms de fichiers.

              Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

              • [^] # Re: et sinon ?

                Posté par . Évalué à  8 .

                Ça n'a pas grand chose à voir, je suis sûr que tu adorerais du code qui aurait plusieurs noms de variables identiques à la casse près.
            • [^] # Re: et sinon ?

              Posté par . Évalué à  2 .

              C'est pourtant le cas, make, gcc considère par défaut le .C comme du c++. C'est un fait. Sur les station SUN, c'est également le cas, c'est d'ailleurs un des seuls endroits où je l'ai vu utilisé. Beaucoup d'éditeur considère le .C comme du C++.

              Après, quand tu fais ton ls, ça se voit bien, quand tu l'écris dans un forum ça se voit moins bien.
              • [^] # Re: et sinon ?

                Posté par . Évalué à  5 .

                Je le sais bien que certains l'utilisent, ça ne m'empêche pas de penser que c'est une mauvaise idée. D'ailleurs, d'autres utilisent .cc ou .cpp, le fait qu'il n'y ait pas d'accord témoigne peut-être qu'il y a un problème à ce niveau.
                • [^] # Re: et sinon ?

                  Posté par . Évalué à  2 .

                  Si ça pouvait être le seul problème du c++... (soupir)
        • [^] # Re: et sinon ?

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

          respecter les "conventions" de nommage

          Ok dans ce cas, il faut faire du .html pour éviter de donner des informations inutiles à propos du système.
          • [^] # Re: et sinon ?

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

            Tout a fait d'accord. Lorsque je développais mes propres environnement Perl pour Apache, tout mes scripts perl était en .html

            J'avoue que je trouve idiot de donner le nom du langage dans lequel on développe et de dire que la page est dynamique. C'est un problème interne du serveur et dont le client se fiche éperduement.
          • [^] # Re: et sinon ?

            Posté par . Évalué à  4 .

            Ou rajouter une couche de mod_rewrite pour que les URLs soient "propres".
    • [^] # Re: et sinon ?

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

      > ...brainfuck...
      oh ça doit exister ça mod_bf :)

      > ...qu'apporte ton module en plus de mod_perl...
      tu réponds à la question

      > ....c et non .cpp...
      j'impose rien

      <Location /plop>
      [...]
      AddHandler raii_module .csp
      AddHandler raii_module .C
      [...]
      </Location>


      > ...compilateur en arrière plan ?
      gcc

      >...une mise à jour, c'est pas un peu lent ?
      c'est supportable, mais c'est juste le premier accès

      > ...faire un bench...
      je sais pas comment faire ça de façon équitable

      > ...licence BSD...
      j'aime pas trop cette licence
  • # C'est une bonne idée

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

    Je cherche un peu la même chose pour faire du web en c++, mais avec Qt. Pour l'instant, je passe par fastcgi, mais ton mod légèrement modifié pourrait être plus pratique.

    C'est une super idée.

    Envoyé depuis mon lapin.

  • # libmicrohttpd

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

    Personnellement, j'utilise en C :
    http://www.gnu.org/software/libmicrohttpd/

    Cela n'ajoute que peu de lourdeur surtout pour les serveurs web qui tournent sur de l'embarqué...
    • [^] # Re: libmicrohttpd

      Posté par . Évalué à  2 .

      Il existe aussi tntnet (avec les "c++ server page"). Par contre, j'avoue ne jamais l'avoir vraiment utilisé (juste un petit proto pour piloter la freebox avec un vieux 500mhz)
  • # C'est vendredi \o/

    Posté par . Évalué à  8 .

    Pas mal ça comme idée d'avoir fait un mod_segfault+mod_leak, ça permet de vérifier ses heartbeats et watchdogs.
    • [^] # Re: C'est vendredi \o/

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

      c'est comme tout :)
      on peut programmer de façon fiable sans trop de difficultés avec beaucoup de sucre.
      - segfault, http://blackmilk.fr/www/cms/dev/libapache2_mod_raii/ex_raise
      - segfault/leak, http://en.wikipedia.org/wiki/Smart_pointer
      - leak http://en.wikipedia.org/wiki/RAII
      • [^] # Re: C'est vendredi \o/

        Posté par . Évalué à  3 .

        Ah oui, heureusement qu'il faut inclure une flopée de bibliothèques (et les comparer, et les apprendre) pour pouvoir corriger quelques uns (et il en reste) des défauts du langage.
        • [^] # Re: C'est vendredi \o/

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

          Oui, chaque langage a ses écueils.
          Il n'y en a pas un seul qui soit exempt de défaut.
        • [^] # Re: C'est vendredi \o/

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

          RAII c'est un design pattern.
          Segfault en utilisant les iterator, j'ai un peu de mal à voir aussi (mais y'a toujours des gens doués).
          Quand au pointeur intelligent, c'est assez facile à implémenter, et il y'en a des implémentations dans la lib standard (d'autres dans boost mais qui sont intégrés dans C++0x9).

          Donc en gros, 0 bibliothéque à utiliser, il faut juste comprendre ce qu'on fait (comme d'habitude à vrai dire). Mais bon oui y'a des tas de langages bien mieux à utiliser en général et dans ce contexte, mais bon tout de suite c'est plus difficile de trouver des gens compétents en Ocaml ou en Haskell (quoi que trouver des gens compétents en C§§, c'est pas gagné tous les jours).
          • [^] # Re: C'est vendredi \o/

            Posté par . Évalué à  -2 .

            > Segfault en utilisant les iterator, j'ai un peu de mal à voir aussi (mais y'a toujours des gens doués).
            Ya des iterators builtins et pour les types systèmes ? (genre les arrays type C)

            > Quand au pointeur intelligent, c'est assez facile à implémenter
            Ah oui, super comme argument, ça, "DIY"...

            > et il y'en a des implémentations dans la lib standard
            La "lib standard" est tellement bien que ya pléthore de libs pour refaire ce que fait si bien la "lib standard".

            > (d'autres dans boost mais qui sont intégrés dans C++0x9).
            2009, il était temps ?

            > il faut juste comprendre ce qu'on fait
            Effectivement, le brainfuck est un super langage, aussi puissant que le C++, ils sont tous les 2 turing-complets : "il faut juste comprendre ce qu'on fait". Sauf que l'un est moins pratique que l'autre. Ben C++ c'est pareil, il est carrément moins pratique qu'un paquet d'autres langages plus adaptés, surtout dans un contexte hostile comme le web, comme le souligne quelqu'un d'autre plus bas.
            • [^] # Re: C'est vendredi \o/

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

              C'est un peu une faute de goût d'utiliser des char* ou d'autres trucs* pour représenter des chaines de caractère et autres tableaux (à remplacer par std::string / wstring, et std::vector).

              Pour le reste, bah oui j'irai probablement pas faire du web en C++, m'enfin ça craint pas beaucoup plus qu'utiliser php, python, ruby et cie pour le web. Aucun de ces langages ne donnent de méthodes "formelles" pour éviter la majorité des attaques web, so ? On peut pas avoir de segfault ? Ok (enfin même si en manipulant les abstractions objets et pas les types C, je vois mal comment on fait pour faire un segfault). On se tape le gc par contre, et sa gestion de ressource parfois étrange (alors qu'avec le principe du RAII tu as un contrôle très fin de tes ressources) + les différents bugs possible de l'interpréteur (et y'en a jamais eu dans php, on est d'accord)). Tu as quoi comme "super langage" pour le web ? Et quels sont ces avantages réels ?
      • [^] # Re: C'est vendredi \o/d l

        Posté par . Évalué à  3 .

        Essaye de langage D… 90% de la puissance du c++, 10 % de sa complexité qu'ils disent…
        http://www.digitalmars.com/d/
        http://fr.wikipedia.org/wiki/D_(langage)

        Ça me dirais bien de tester ça sur un vrai projet un de ces jours…
    • [^] # Re: C'est vendredi \o/

      Posté par . Évalué à  1 .

      [Mode vendredi on]
      Et bonjour les failles de type format strings, buffer overflow, etc... Sql injection c'était pas assez fun.
      [Mode vendredi off]

      Non je sais, peut importe le langage, ça dépend plus du codeur, mais bon faut avouer que le c++ c'est plus propice à ce genre de failles.
      • [^] # Re: C'est vendredi \o/

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

        que nenni !!! le C++ n'est pas plus propice à ce genre de failles que (au hasard) php ou java
        • [^] # Re: C'est vendredi \o/

          Posté par . Évalué à  1 .

          Pourtant, les char* sont encore pas mal utilisés en C++, ainsi que les tableaux "de base" qui ne lèvent pas d'exceptions si on dépasse les bords.
          • [^] # Re: C'est vendredi \o/

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

            encore heureux ! il ne manquerait plus qu'on nous interdise de nous tirer une balle dans le pied !
            C'est un riche héritage du C.
            Aujourd'hui, on est libre de ne plus les utiliser les machin*
  • # Quant aux applis (in)dispos...

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

    Désolé pour les liens cassés sur le site, je vais mettre les tarballs des applis (galerie et autres) assez rapidement...
  • # Et comparé à CPPSERV ?

    Posté par . Évalué à  2 .

    Et comparé à CPPSERV, c'est quoi les différences essentielles ?
    • [^] # Re: Et comparé à CPPSERV ?

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

      c'est mieux :-D

      sinon, je ne sais pas trop, je ne me suis pas attardé sur ce qui existait dans le domaine,
      Je dirais :
      - les détails de l'API
      - module apache2 vs standalone
      - compilation et chargement à la volée
  • # Et c'est mieux que ça ?

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

    Il y a ça aussi : http://modcplusplus.sourceforge.net/ pour apache 2.0

    En tout cas bravo :)

    Un pays bien organisé est celui où le petit nombre fait travailler le grand nombre, est nourri par lui, et le gouverne - Voltaire

Suivre le flux des commentaires

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