IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Librairies de templates HTML (pour le web, en C++)


Sujet :

C++

  1. #1
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut Librairies de templates HTML (pour le web, en C++)
    Bonjour,

    Dans le cadre d'un projet perso qui consiste à créer un moteur de site web en C++, je me trouve confronté à la question suivante:

    Quel système de templates utiliser ?

    Là il ne s'agit pas du tout des templates C++, mais bien d'une librairie permettant de transformer du texte en entrée vers du texte en sortie qui sera généralement du HTML. La sortie est générée en fonction de données statiques ainsi que des données dynamique, par exemple des "variables" dans la template ainsi que, si possible, des éléments rudimentaires pour assurer la logique de présentation (boucles, conditions)

    Par exemple, j'ai trouvé:
    Google ctemplate: http://code.google.com/p/google-ctemplate/ (C++)
    ClearSilver: http://www.clearsilver.net/ (C)

    Google ctemplate a l'avantage d'avoir une api C++. Les templates en tant que tel sont par contre assez moches...
    ClearSilver a le désavantage d'être en C (il existe cependant un vieux portage C++). Par contre la forme des templates est intéressantes.

    Avez-vous connaissance de systèmes similaires ? J'ai l'impression que celà ne court pas les rues, ou alors il s'agit de sous projets (en C) pleinement intégrés à des langages de scripts (genre php).

    Quelque part je me dis que le système idéal serait à base de JSON: les variables dans les templates seraient remplies avec des données en JSON parceque ce format a tout ce qu'il faut et parceque j'utilise déjà du javascript coté server (avec Google V8). La difficulté en ce qui me concerne serait de créer l'interpréteur.

  2. #2
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Pas de nouvelles, bonnes nouvelles ?

    Je ne me suis toujours pas attaqué à ce problème de templates pour mon MVC (model view controller) en C++ pour applications web.

    Sachant que je bénéficie d'un moteur javascript coté server (google V8) j'ai cette vague idée de l'utiliser pour gérer la partie View du projet. Ca renforce mon idée que le format JSON est idéal pour passer des données à cette partie View. Si cette dernière est nativement du javascript, on ne peut pas faire plus direct.

    Un exemple:

    Template écrite par un humain (si possible un designer talentueux) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <html>
    <head>
    <title> <?js title ?> </title>
    ...

    Ensuite, par un système qui reste à écrire, cette template HTML serait transformée en javascript. Cette opération pourrait se faire au préallable et son résultat serait mis en cache quelque part.
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print("<html><head><title>");
    print(title);
    print("</title>");
    La fonction "print" serait bien entendu définie en C++ de sorte que l'appli sous-jacente se charge de traiter la sortie javascript.

    Ensuite l'application se charge de fournir ce script à V8 qui le compile.
    L'appli se charge également de passer la variable "title" au context javascript. D'où une généralisation au format JSON pour des templates plus complexes.
    Lorsque la partie Vue est sollicitée, le template en javascript est évalué par V8. La sortie est ensuite envoyée au client (le navigateur web).

    Maintenant considérons un exemples un brin plus complexe: une condition dans la template:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <html>
    <head>
    <?js if (title) ?>
    <title> <?js title ?> </title>
    <?js endif ?>

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    print("<html><head>");
    if (title) {
      print("<title>");
      print(title);
      print("</title>");
    }

    Alors d'après vous, quel outil/librairie est la plus appropriée pour opérer cette phase de transformation template HTML --> template javascript ? Boost.Spirit ? Ou peut être les composants Qi et Karma du futur Boost.Spirit2 ?
    Vos avis sont les bienvenus, tout comme toutes critiques quant à l'essence même de cette solution

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    Il existe une foultitude de moteurs à template en perl, python ou que sais-je encore.
    A moins d'une forte contrainte C++, il n'y a pas un grand intérêt à le faire dans ce langage.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  4. #4
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Merci pour ta réponse.
    J'aimerai si possible ne pas dépendre d'un interpréteur python ou perl ou quoique ce soit d'autre, à part peut être javascript puisque je m'en sert déjà.
    Pourquoi javascript ? Eh bien pourquoi pas! Donnons lui une chance coté serveur
    Cette contrainte c++ que je m'impose est purement pédagogique. Et du coup je me rends compte qu'en dehors du monde des langages de scripts, les systèmes de templates ne sont pas légion.

    Edit: J'obtient un truc pas trop mal en utilisant Boost.Spirit classic

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <html><head>
    <?js if (title): ?>
      <title><?js= title ?></title>
    <?js end ?>
    <?js= meta() ?>
    </head><body>
    <?js for (i in json.stuff) :?>
    text <a href="<?js= json.stuff[i] ?>">blah</a>
    <?js end ?>
    </body></html>

    Transformé en javascript:
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    print('<html><head>');
    if (title){
    print('<title>');
    print( title );
    print('</title>');
    }
    print( meta() );
    print('</head><body>');
    for (i in json.stuff) {
    print('text <a href="');
    print( json.stuff[i] );
    print('">blah</a>');
    }
    print('</body></html>');

    En travaillant ça un peu plus (penser à échaper là où il faut etc), et sachant que le javascript résultant peut être mis en cache sous forme "compilée" en mémoire, je ne serai pas étonné que les performances soient très correctes comparé à du php par exemple (Google V8 étant très performant).

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Citation Envoyé par metagoto Voir le message
    Template écrite par un humain (si possible un designer talentueux) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <html>
    <head>
    <title> <?js title ?> </title>
    ...
    Le HTML ne devrait contenir que des données et n'est pas pas le travail d'un designer.
    Le designer s'occupe de la présentation avec des CSS.

  6. #6
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Si si, le designer devra se tapper ce genre de templates (de toute façon le designer, c'est moi ).

    Le système est très proche de php ou encore du framework python django en ce sens que les templates mixent allègrement données et logique de présentation. Généralement, un "designer" dans ce context est la personne qui "code" la template.

    Par contre je ne suis pas encore fixé sur la forme des directives. Au lieu de <?js ?> je pourrais mettre {% %} par exemple.

    Le projet avance assez bien. Je n'ai pas fait de benchmarks poussés, tout juste quelques mattraquages avec ApacheBench: à fonctionnalités équivalentes, c'est à dire simple View-Controller avec routing pour des urls propres, l'appli en c++ et javascript est plus performante que php+APC (cache d'opcodes). Le tout en fastcgi derrière nginx sous linux. Cependant, tant qu'un blog complet ne tournera pas sous mon système, je ne me risquerais pas à d'autres pronostiques.

  7. #7
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Quitte à faire du C++, pourquoi ne pas regarder du côté de wt ?

    http://www.webtoolkit.eu/wt

    (je n'ai jamais pu le tester réellement, le concept me semblait intéressant par contre, mais je ne sais pas quel est l'état réel du produit)

  8. #8
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Oui, j'ai vaguement parcouru le site de wt.
    Le projet est sûrement interessant bien que je n'aime pas trop cette idée de widget dans un context "web".

    En ce qui me concerne, mon seul intérêt est d'apprendre et m'amuser en créant une sorte de framework pour appli en fastcgi.
    Le problème (disons plutôt la question) posé dans cette thread est pour l'instant règlé: les variables et la logique de présentation dans les templates sont gérées par javascrit (dont le contrôle est supervisé par c++). Le passage et la conversion des données des types natifs aux types Javascript est assuré par une astucieuse modélisation de JSON en c++ (un Boost.Variant récursif). Une futur etape consistera à créer un moteur à base de Lua tout en gardant ce concepte JSON. Mais avant je dois m'attaquer à la partie "M" du MVC du framework: tâcher de rendre l'usage d'une base de données aussi facile qu'en php par exemple (suis preneur de toutes info quant à des librairies existantes)

  9. #9
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    En ce qui me concerne, mon seul intérêt est d'apprendre et m'amuser en créant une sorte de framework pour appli en fastcgi.
    Le problème (disons plutôt la question) posé dans cette thread est pour l'instant règlé: les variables et la logique de présentation dans les templates sont gérées par javascrit (dont le contrôle est supervisé par c++). Le passage et la conversion des données des types natifs aux types Javascript est assuré par une astucieuse modélisation de JSON en c++ (un Boost.Variant récursif). Une futur etape consistera à créer un moteur à base de Lua tout en gardant ce concepte JSON. Mais avant je dois m'attaquer à la partie "M" du MVC du framework: tâcher de rendre l'usage d'une base de données aussi facile qu'en php par exemple (suis preneur de toutes info quant à des librairies existantes)
    Connais-tu la bibliothèque ATL Server?

    ATL Server est un ensemble de classes C++ natives qui permet aux développeurs de créer des applications Web, des services Web XML et d'autres applications serveur. De nombreuses classes peuvent également être utilisées dans des applications clientes ou des composants clients générés sous la forme de projets ATL, MFC ou Windows.
    La logique et les variables de présentation sont gérées par des templates appelés des fichiers srf (server response file) et le contrôle est supervisé par du C++.
    Certaines pages d'authentification ou d'inscription à des sites comme ceux de Microsoft utilisent cette techno comme la page d'obtention d'un Windows Live ID

  10. #10
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Non, je ne connais pas la bibliothèque ATL Server. Mon projet est dev sous linux (threads posix), et est actuellement non portable sous windows. (je m'appuis sur la lib fastcgi de Peter Simons http://git.cryp.to/fastcgi ).

    L'aspect d'avoir des binaires partagés (dll) de ATL Server est sympathique. C'est d'ailleurs un truc que j'ai en tête depuis le début, mais mis de coté pour l'instant: a terme, fournir une interface pour étendre une appli web avec des extensions (.so).

    J'ai commené à intégrer une base de données mysql (en passant par libdbi). A fonctionnalités équivalentes (routing, dispatching, templating, connexion et simples queries sql), mon app de test, un blog, est 6 fois plus véloce tout en ayant certains composant implémentés en javascript que php5.3 patché avec php-fpm (fastcgi) + APC (memory caching). Ca me conforte dans mon idée que C++ a parfaitement sa place coté server (et javascript aussi!!)

  11. #11
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Il y a Grantlee en développement chez KDE (inspiré de Django justement):
    http://www.grantlee.org/grantleetalk.pdf

    Ils s'en servent pour themer leurs apps, mais c'est pas encore mature. Pour cette raison moi aussi je cherche un peu ce qui se fait d'autre, et j'ai trouvé ceci en + de ce qui a été mentionné ici :
    http://www.lazarusid.com/libtemplate.shtml
    http://teng.sourceforge.net/
    http://nulidex.com/code/docs/html_template/
    http://ctpp.havoc.ru/en/

    mais je crois que je vais opter pour le truc google, dont la syntaxe de base est proche de Grantlee (ce dont je me suis inspiré pour coder mon petit truc qui a fait l'affaire jusqu'ici).

    Dans mon cas, je m'en sers pour générer des pages HTML (localisées) que j'affiche dans un browser intégré à mon appli.

  12. #12
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Merci bien l'ami. Je vois que tu as étudié le problème!

    Je ne suis pas spécialement emballé par les liens proposés, à part peut être grantleetalk pour la forme des templates (très proche de ce que j'ai, qui est aussi un mix de django et de json/js). Après, je ne sais pas comment ça se comporte au runtime. Plusieurs solutions transforment les templates en opcodes.

    J'aurai aussi probablement opté pour google ctemplate si je n'avais pas une solution maison.

    Qu'avais tu utilisé pour coder ta solution ?

    Je n'ai pas touché à mon système depuis heu.. la dernière fois que j'ai répondu. En partie parce que pour l'instant c'est largement suffisant pour prototyper mon projet d'app web fastcgi.

  13. #13
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par metagoto Voir le message
    Qu'avais tu utilisé pour coder ta solution ?
    Je me suis codé une petite classe maison inspirée de Smarty (PHP) qui faisait très bien le travail à savoir : simplement remplacer des variables avec une syntaxe à la django ({{ variable }}). Mais voilà, maintenant j'ai besoin de faire des boucles dans mes templates, alors il me faut quelque chose de plus puissant, sans que ce soit une usine à gaz (pas besoin de compiler les templates par exemple).

    Pour info, voici le code de ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #ifndef HTMLTEMPLATELOADER_H
    #define HTMLTEMPLATELOADER_H
     
    class HtmlTemplateLoader
    {
    public:
        HtmlTemplateLoader();
     
        void assign( const QString & TemplateVar, const QString & Value );
        void assign( const QString & TemplateVar, int Value );
     
        QString fetch( const QString & TemplateFilePath );
     
    private:
        QMap<QString, QString> zVars;
    };
     
    #endif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    #include "HtmlTemplateLoader.h"
     
    #include <QFile>
     
    HtmlTemplateLoader::HtmlTemplateLoader()
    {
    }
     
    void HtmlTemplateLoader::assign( const QString & TemplateVar, const QString & Value )
    {
        this->zVars[ TemplateVar ] = Value;
    }
     
    void HtmlTemplateLoader::assign( const QString & TemplateVar, int Value )
    {
        return this->assign( TemplateVar, QString::number( Value ) );
    }
     
    QString HtmlTemplateLoader::fetch( const QString & TemplateFilePath )
    {
        QString content;
     
        // load the template content
        QFile file( TemplateFilePath );
        if ( file.open( QIODevice::ReadOnly ) )
        {
            content = QString::fromUtf8( file.readAll().data() );
            file.close();
        }
        else
        {
            qCritical() << "Could not find file" << TemplateFilePath;
            return QString::null;
        }
     
        // result
        QString result;
        result.reserve( content.length() + 100 );
     
        // template vars replacement
        int pos;
        while ( ( pos = content.indexOf( "{{" ) ) != -1 )
        {
            // extract the variable name
            int end = content.indexOf( "}}", pos + 2 );
            if ( end == -1 )
            {
                qCritical() << "Invalid template var syntax in file"
                    << TemplateFilePath;
                return content;
            }
            QString varName = content.mid( pos + 2, end - pos - 2 ).simplified(); 
     
            // find the value for this var
            QString value;
            QMap<QString, QString>::const_iterator i = this->zVars.find( varName );
            if ( i == this->zVars.end() )
            {
                qWarning() << "Missing value for template variable" << varName;
            }
            else
            {
                value = *i;
            }
     
     
            // do the template var replacement
            result.reserve( result.length() + value.length()
                + content.length() - end - 2 );
            result += content.left( pos );
            result += value;
     
            // keep only the remaining content
            content = content.mid( end + 2 );
        }
        result += content;
        return result;
    }
    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HtmlTemplateLoader tlp;
    tlp.assign( "variable", tr( "Hello World!" ) );
    QString html = tlp.fetch( ":/templates/example.tpl" );
    this->zUi.webView->setHtml( html, QUrl("qrc:/") );

  14. #14
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Ah oui effectivement c'est simple, mais ça fait son job

    J'ai ce genre de chose pour les templates:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <ul>
    {% for (i in tags) :%}
    <li><a href="{%= tags[i].uri %}">{%= tags[i].name %}</a></li>
    {% end %}
    </ul>
    Comme je le disais, c'est google V8 qui se charge des boucles et du reste. Ces templates sont transformées en véritable javascript par boost spirit puis précompilées par v8 et je me contente juste de les exécuter quand nécessaire dans le bon context (l'environnement de variables).

    A terme faut que je complète mon système pour pouvoir spécifier dans le template quel méthode d'échappement utiliser pour les variables plutôt que ce soit html uniquement. De ce coté là, google ctemplate a de bonnes idées.

    Pour passer des variables du c++ à V8, j'utilise un json-like type qui est un boost variant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    typedef boost::make_recursive_variant
    <
      int, double, bool, std::string, std::time_t
     ,boost::unordered_map<std::string, boost::recursive_variant_> // object
     ,std::vector<boost::recursive_variant_> // array
    >::type json_type;
     
    typedef boost::unordered_map<std::string, json_type> json_object;
    typedef std::vector<json_type> json_array;
    Ca se manipule très simplement coté c++ (ici, gcc4.5)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    json_array tags;
    std::for_each(rs.begin(), rs.end(), [&tags] (const row_t& row) {
      json_object tag;
      tag["name"] = row.get<1>();
      tag["uri"] = format_utility::tag_uri(row.get<0>(), row.get<2>());
      tags.push_back(tag);
    });
    Puis une série de template specialisations opèrent la conversion de json_type vers v8 lors du "assign"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    template<>
    inline v8::Handle<v8::Value> to<bool>(const bool& val)
    {
      return v8::Boolean::New(val);
    }
     
    struct json_type_converter_visitor : public boost::static_visitor<v8::Handle<v8::Value> >
    {
      template<typename T>
      v8::Handle<v8::Value> operator()(const T& val) const
      {
        return to(val);
      }
    };
     
    template<>
    inline v8::Handle<v8::Value> to<json_type>(const json_type& val)
    {
      return boost::apply_visitor(json_type_converter_visitor(), val);
    }
    J'ai franchement pas mal de truc à faire dans mon projet. Quand j'aurai mieux testé et refactoré cette partie template, j'en ferais peut être un composant standalone. Il faudra aussi que je fasse quelques benchmarks pour comparer avec d'autres systèmes existants. En tout cas, à première vue, ça dépote pas mal (merci V8!)

  15. #15
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Oui, je me suis taté moi aussi à enrichir mon truc pour pouvoir interpréter du javascript au moyen de QtScript, mais j'ai fais une petite recherche et j'ai décidé de ne pas réinventer la roue

  16. #16
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Citation Envoyé par metagoto Voir le message

    J'ai franchement pas mal de truc à faire dans mon projet. Quand j'aurai mieux testé et refactoré cette partie template, j'en ferais peut être un composant standalone. Il faudra aussi que je fasse quelques benchmarks pour comparer avec d'autres systèmes existants. En tout cas, à première vue, ça dépote pas mal (merci V8!)
    Plus je suis ce topic plus je me dis que c'est vraiment intéressant sur tout les points ton projet. Tu comptes distribué les sources? En tout cas chapeau pour le travail .

  17. #17
    Membre très actif Avatar de metagoto
    Profil pro
    Hobbyist programmateur
    Inscrit en
    Juin 2009
    Messages
    646
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Hobbyist programmateur

    Informations forums :
    Inscription : Juin 2009
    Messages : 646
    Par défaut
    Citation Envoyé par Goten Voir le message
    Plus je suis ce topic plus je me dis que c'est vraiment intéressant sur tout les points ton projet. Tu comptes distribué les sources? En tout cas chapeau pour le travail .
    Merci. Oui, je mettrais les sources à disposition, mais je préfère avoir un truc présentable et compilable chez tout un chacun avant d'aller plus loin. Initialement, c'était juste histoire de faire quelque chose d'autre parce que php commençait à me saouler (je fais surtout du php). Donc bon, y a pas mal de refactoring à faire et de choses à faire tout court

Discussions similaires

  1. cherche bon template iptable pour serveur web
    Par markham dans le forum Sécurité
    Réponses: 0
    Dernier message: 13/12/2014, 18h25
  2. Quelle librairie graphique utilisez-vous pour le web ?
    Par zyongh dans le forum Webdesign & Ergonomie
    Réponses: 0
    Dernier message: 05/07/2011, 11h54
  3. [XSLT] production de HTML pour site web
    Par psic dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 03/06/2010, 19h32
  4. [eclipse 3.0.1]plugins pour dvlp web HTML / CSS / PHP
    Par partyboy dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 26/10/2004, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo