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

Langage C++ Discussion :

Conception d'un pipeline générique


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    <Modération>
    Cette discussion est tiré de : http://www.developpez.net/forums/d10...t-multithread/

    Reprise des messages :
    </Modération>

    Deux choses sur ces tâches courtes :

    1) si l'ordre des tâches est important, je suis en train de réfléchir à la notion de pipeline généralisé (réversible et non réversible). Ca pourrait coller avec l'idée de continuer un traitement tant qu'il n'échoue pas. Que ceux qui m'aiment me suivent (par MP, dans un premier temps).

    [...]

    Je ne sais pas si ça peut aider ; c'était juste mon intervention peu utile du jour
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Par défaut
    Dans mon cas l'ordre a une importance, ce sont des algos.
    Par contre je ne connais pas ce concept de pipeline généralisé.

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Un pipeline y = P(x), c'est une suite de fonctions F0(), .... Fn() qui sont utilisées en séquence, de sorte que :

    y = P(x) = Fn(Fn-1(....F0(x)...));

    ou, dans un langage plus mathématique : P(x) = (Fn ∘ Fn-1 ∘ .... ∘ F1 ∘ F0)(x)

    Le généraliser (dans une vision C++), ça serait donner la possibilité à l'utilisateur de

    1) sélectionner les fonctions qui doivent être exécutées
    2) sélectionner la façon dont les paramètres sont passés (paramètre de la fonction == résultat de la fonction précédente ? ou autre chose ?)
    3) sélectionner la façon dont le pipeline s'arrête (arrêt unique à la fin ? arrêt entre chaque évaluation de fonction ?)

    etc. Au final, ce pipeline généralisé serait donc une liste de tâche dont une particularité serait qu'elle peut fonctionner sous la forme d'un véritable pipeline. En C++, ça va être super tordu
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 14
    Par défaut
    Pour compléter ta liste
    - Il faut pouvoir introduire des étapes imbriquées ( sous-tâches )
    - Comment gérer les étapes conditionnelles() (i.e if-elseif else )
    - Pouvoir accéder aux étapes directement ( sans trop d'indirections...)

    A défaut de faire l'implémentation il faut qu'on arrive à figer une Interface...

    Ou en es tu ?

    On n'arrive pas à t'envoyer de MP...

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Citation Envoyé par ICE Tea Voir le message
    Pour compléter ta liste
    - Il faut pouvoir introduire des étapes imbriquées ( sous-tâches )
    - Comment gérer les étapes conditionnelles() (i.e if-elseif else )
    - Pouvoir accéder aux étapes directement ( sans trop d'indirections...)
    Ca me semble exagéré. Le conditionnel peut être traité avec un pipeline dans une fonction qui effectue un test. Quand à l'ajout d'une fonction intermédiaire, ça n'a de sens que si son entrée et sa sortie ont le même type (ce qui peut arriver, bien évidemment). Par contre, j'ai du mal à voir un cas d'utilisation probant.

    Citation Envoyé par ICE Tea Voir le message
    A défaut de faire l'implémentation il faut qu'on arrive à figer une Interface...
    Comme il risque fort d'y avoir beaucoup de magie à l'intérieur (je le pressens), ça pourrait être un plus effectivement d'essayer de spécifier ça.

    Je vais voir ça ce soir.

    Citation Envoyé par ICE Tea Voir le message
    Ou en es tu ?

    On n'arrive pas à t'envoyer de MP...
    Boite pleine. Mais je l'ai vidé.

    Quand à où j'en suis, et bien, j'ai beaucoup de choses à faire ; il faut que je corrige ce satané SHA256, que j'implémente une lib TCP/IP, que je revoie mon système de dispatch de messages ; à ce moment, je commencerais à avoir besoin d'un pipeline (puisque je vais recevoir des messages cryptés, encodés en base64 (ou pas, d'ailleurs), que je vais devoir décoder, décrypter, puis interpréter. L'interface que j'ai à l'heure actuel prévu n'est pas idéale, même si elle est pratique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    blowfish_cryptograph c;
    blowfish_key k;
    std::string b64_from_socket = ...;
    std::vector<unsigned char> out;
    c.decrypt(k, b64_from_socket, out, decoder::base64());
    ...
    Peut mieux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    pipeline<???> p = make_pipeline(decoder::base64_pipe(), symetric_cryptograph_pipe<bf_engine>(k));
     
    pipeline << b64_from_socket >> out; // ou quelque chose comme ça ; ça, c'est pas beau.
    Dans l'idée, je ne devrais pas à me soucier de ce qu'il y a dans le pipeline ; ça devrait fonctionner tout seul.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  6. #6
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Par défaut
    @Emmanuel Deloget: Je t'avais répondu, je te réenvoie le MP.

    Pour la fin de ton message, j'aurais plus vue ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    out = pipeline(in);
    Comme un foncteur, j'avais pas pensé au opérateur de flux, mais je verrais plus ca écrit avec les deux même opérateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    out << pipeline << in;
    //ou
    in >> pipeline >> out;
    En le fait d'avoir deux sens pourrait être pratique pour un pipeline réversible, AMA.

  7. #7
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par Emmanuel Deloget Voir le message
    Ca me semble exagéré. Le conditionnel peut être traité avec un pipeline dans une fonction qui effectue un test.
    Si plusieurs étapes du pipeline dépendent de ce test, il me semble utile de le définir en tant qu'étape de pipeline à part entière.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. Conception générique 2TUP
    Par araking dans le forum UML
    Réponses: 0
    Dernier message: 03/05/2014, 11h09
  2. Problème conception classe générique
    Par scary dans le forum Langage
    Réponses: 19
    Dernier message: 23/10/2009, 09h27
  3. Conception Générique d'une base de donnée
    Par meher&malek dans le forum Schéma
    Réponses: 9
    Dernier message: 24/10/2008, 09h29
  4. Réponses: 18
    Dernier message: 25/11/2007, 13h35

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