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

Python Discussion :

Exercices en Python


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Cadre de banque
    Inscrit en
    octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Cadre de banque
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2018
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Exercices en Python
    Bonjour tous,

    J'ai des exos à faire en Python (Python 3). Suis bloqué. Sollicite votre aide svp...

    Je travaille sur la base d'un fichier txt comportant des données de logs associés à un site internet pendant une période de deux jours.Chaque ligne du fichier représente la demande d'accès d'un hôte (visiteur) à une ressource du site en question (une page, une image, etc.). Nous disposons des infos suivantes concernant cette demande: l'heure précise, le code retournépar le serveur site à cette demande (404 si la ressource demandée n'existe pas, 200 indique que la demande a été bien traitée) et la taille de la réponse fournie par le serveur (donc la taille de la ressource quand le code retourné est 200)... Le jeu de données est disponible sur la page http://ita.ee.lbl.gov/html/contrib/EPA-HTTP.html

    il m'a été demandé de répondre aux questions suivantes (SANS UTILISER DE LIBRAIRIES)...

    1. Combien de requêtes d’accès (de lignes) sont de type GET ?
    2. Fournissez les statistiques de nombre d’accès par code retourné par le
    serveur (ie., le nombre d’accès avec un code 200, le nombre d’accès
    avec le code 404, ...).
    3. Combien de requêtes ont été effectuées par heure et par jour ?
    4. Combien d’utilisateurs uniques ont accédé au site par heure ?
    5. Pour la journée du 30, combien de requêtes de type GET ont cherché à
    accéder à un fichier contenu dans le répertoire docs ?
    6. Combien de requêtes concernent des fichiers de type image (jpeg, jpg, png, etc.?
    7. Qui a le plus accédé au site durant cette période ?
    8. Quelle est la taille moyenne des images demandées par les utilisateurs? Attention, si un utilisateur souhaite accéder à une image mais que le code retourné est 400, alors la taille de la ressource (la dernière valeur
    de la ligne) n’indique pas la taille de l’image.

  2. #2
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 487
    Points : 24 507
    Points
    24 507
    Par défaut
    Salut,

    Citation Envoyé par Effigie Voir le message
    J'ai des exos à faire en Python (Python 3). Suis bloqué. Sollicite votre aide svp...
    Où est le code que vous avez écrit?
    Quel problème rencontrez vous?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    Cadre de banque
    Inscrit en
    octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Cadre de banque
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2018
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Où est le code que vous avez écrit?
    Quel problème rencontrez vous?

    - W
    Salut W,

    J'ai essayé de retrouver des ressources sur ce type de questions, seulement, aucune ne me donnait satisfaction... J'ai essayé avec la première question, ça ne marche pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    chaine = "GET" # Texte à rechercher
    fichier = open("C:/Users/2018/PYTHON/Projet/data_project.txt","r")
    for ligne in fichier:
        if chaine in ligne:
            count = 0
    for lines in ligne:
        if lines.strip():
            count +=1
    print(count)

  4. #4
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 487
    Points : 24 507
    Points
    24 507
    Par défaut
    Citation Envoyé par Effigie Voir le message
    J'ai essayé avec la première question, ça ne marche pas...
    Relire votre code pour vérifier que vous ajoutez 1 à "count" là où il faut, et vous poser des questions sur les lignes que vous avez écrites pour essayer de comprendre pourquoi çà ne le fait pas est le boulot de base de la mise au point d'un programme.
    Si vous vous contentez de constater "ça ne marche pas", vous n'apprendrez rien.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Candidat au Club
    Homme Profil pro
    Cadre de banque
    Inscrit en
    octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Cadre de banque
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2018
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Relire votre code pour vérifier que vous ajoutez 1 à "count" là où il faut, et vous poser des questions sur les lignes que vous avez écrites pour essayer de comprendre pourquoi çà ne le fait pas est le boulot de base de la mise au point d'un programme.
    Si vous vous contentez de constater "ça ne marche pas", vous n'apprendrez rien.

    - W
    Tu as raison, W.

    Seulement, je suis dessus depuis plusieurs jours et je peine... Là, je suis pris par les délais... Je risque d'être hors-délai si vous ne m'aidez pas... Avec les corrections, je pourrais aussi mieux comprendre à force de relire vos codes...

    Merci.

  6. #6
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 487
    Points : 24 507
    Points
    24 507
    Par défaut
    Citation Envoyé par Effigie Voir le message
    Avec les corrections, je pourrais aussi mieux comprendre à force de relire vos codes...
    Comme je suis encore plus fainéant que vous, je vous suggère d'attendre le corrigé que donnera le professeur: vous pourrez les relire tant que vous voulez.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Candidat au Club
    Homme Profil pro
    Cadre de banque
    Inscrit en
    octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Cadre de banque
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2018
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Comme je suis encore plus fainéant que vous, je vous suggère d'attendre le corrigé que donnera le professeur: vous pourrez les relire tant que vous voulez.

    - W
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    chaine = "GET" # Texte à rechercher
    fichier = open("C:/Users/2018/PYTHON/Projet/data_project.txt","r")
    for ligne in fichier:
        if chaine in ligne:
            count = 1
    for lines in ligne:
        if lines.strip():
            count +=1
    print(count)]

  8. #8
    Candidat au Club
    Homme Profil pro
    Cadre de banque
    Inscrit en
    octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Cadre de banque
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2018
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Mon code Question 1
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Où est le code que vous avez écrit?
    Quel problème rencontrez vous?

    - W
    Question 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    count = 0
    chaine = "GET" # Texte à rechercher
    # Ouverture du fichier en mode lecture
    fichier = open("C:/Users/2018/PYTHON/Projet/data_project.txt","r") 
    for ligne in fichier:	# Pour toute ligne dans le fichier
        if chaine in ligne:	# Si le caractère à rechercher s’y trouve, le compter.
            count = count + 1
    print(count)

  9. #9
    Candidat au Club
    Homme Profil pro
    Cadre de banque
    Inscrit en
    octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Cadre de banque
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2018
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Mon code Question 2
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Où est le code que vous avez écrit?
    Quel problème rencontrez vous?

    - W
    Mon code pour la question 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    count = 0
    chaine = "200" # Code à rechercher
    # Ouverture du fichier en mode lecture
    fichier = open("C:/Users/CMBEAC/Desktop/M2_FOAD/2018/PYTHON/Projet/data_project.txt","r")
    for ligne in fichier:	# Pour toute ligne dans le fichier
        if chaine in ligne:	# Si le code à rechercher s’y trouve, le compter.
            count += 1
    print(count)
    Pour cette question, j'ai fait un script pour chaque code (200, 400, 404, etc.). Mais à y regarder de près, il me semble qu'il faut faire un seul script pour tous ces codes… Et là, je n'ai pas su comment m'y prendre.

  10. #10
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 487
    Points : 24 507
    Points
    24 507
    Par défaut
    Salut,

    Ce fut laborieux

    Maintenant, je ne comprends pas trop comment vous faites vos exercices mais, il faut déjà commencer par lire les différentes questions, regarder comment y retrouver dans les données les différentes informations qui permettront de répondre aux différentes questions et commencer à imaginer comment vous allez bien pouvoir coder çà.

    note: la programmation "produit" des lignes de code qui vont faire le boulot mais le boulot du programmeur est d'imaginer comment il va bien pouvoir découper le problème en sous-problème et composer les solutions à ces sous problèmes pour fabriquer le programme.

    Pour çà on peut commencer par récupérer les 10 premières lignes du fichier et regarder à quoi elles ressemblent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    141.243.1.172 [29:23:53:25] "GET /Software.html HTTP/1.0" 200 1497
    query2.lycos.cs.cmu.edu [29:23:53:36] "GET /Consumer.html HTTP/1.0" 200 1325
    tanuki.twics.com [29:23:53:53] "GET /News.html HTTP/1.0" 200 1014
    wpbfl2-45.gate.net [29:23:54:15] "GET / HTTP/1.0" 200 4889
    wpbfl2-45.gate.net [29:23:54:16] "GET /icons/circle_logo_small.gif HTTP/1.0" 200 2624
    wpbfl2-45.gate.net [29:23:54:18] "GET /logos/small_gopher.gif HTTP/1.0" 200 935
    140.112.68.165 [29:23:54:19] "GET /logos/us-flag.gif HTTP/1.0" 200 2788
    wpbfl2-45.gate.net [29:23:54:19] "GET /logos/small_ftp.gif HTTP/1.0" 200 124
    wpbfl2-45.gate.net [29:23:54:19] "GET /icons/book.gif HTTP/1.0" 200 156
    wpbfl2-45.gate.net [29:23:54:19] "GET /logos/us-flag.gif HTTP/1.0" 200 2788
    tanuki.twics.com [29:23:54:19] "GET /docs/OSWRCRA/general/hotline HTTP/1.0" 302 -
    Si l'énoncé raconte:
    Nous disposons des infos suivantes concernant cette demande: l'heure précise, le code retourné par le serveur site à cette demande (404 si la ressource demandée n'existe pas, 200 indique que la demande a été bien traitée) et la taille de la réponse fournie par le serveur (donc la taille de la ressource quand le code retourné est 200)...
    Il va falloir plus ou moins découper ces lignes pour y récupérer les différentes informations i.e.
    à partir de (par exemple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wpbfl2-45.gate.net [29:23:54:19] "GET /logos/us-flag.gif HTTP/1.0" 200 2788
    récupérer:
    • host: wpbfl2-45.gate.net
    • time: 29:23:54:19
    • request: GET /logos/us-flag.gif HTTP/1.0
    • reply code: 200
    • reply size: 2788

    sous une forme ou une autre... car trouver "200" dans la ligne à n'importe quelle position, c'est pas pareil que tester si "reply code"/réponse == "200".

    Citation Envoyé par Effigie Voir le message
    Pour cette question, j'ai fait un script pour chaque code (200, 400, 404, etc.). Mais à y regarder de près, il me semble qu'il faut faire un seul script pour tous ces codes… Et là, je n'ai pas su comment m'y prendre.
    Une solution est de passer par un dictionnaire où les clefs seront les codes et la valeur le nombre d’occurrences. Mais le but de votre exercice est de montrer que vous avez "acquis" les concepts présentés dans votre cours. Donc si vous ne connaissez pas les dictionnaires, il va falloir faire autrement (et il n'a que vous pour savoir ce que vous pouvez utiliser).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Candidat au Club
    Homme Profil pro
    Cadre de banque
    Inscrit en
    octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Cadre de banque
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2018
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Question 3
    Citation Envoyé par wiztricks Voir le message
    Salut,


    Une solution est de passer par un dictionnaire où les clefs seront les codes et la valeur le nombre d’occurrences. Mais le but de votre exercice est de montrer que vous avez "acquis" les concepts présentés dans votre cours. Donc si vous ne connaissez pas les dictionnaires, il va falloir faire autrement (et il n'a que vous pour savoir ce que vous pouvez utiliser).

    - W
    Merci pour l'orientation, W. Voici le code que j'ai fait pour la question 3:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def comptereq_jh (fic):
        d = {}
        for f in fic:
            date = f[1] # clé
            if date in d: d [date] += 1
            else: d [date] = 1
        print (d)
     
    dico_date = comptereq_jh (fic)
    print(dico_date)

  12. #12
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 487
    Points : 24 507
    Points
    24 507
    Par défaut
    Citation Envoyé par Effigie Voir le message
    Merci pour l'orientation, W. Voici le code que j'ai fait pour la question 3:
    Si vous écrivez: dico_date = comptereq_jh (fic) et qu'on ne trouve pas d'instruction return ... dans la fonction, déjà c'est pas bon.
    Après vous pouvez écrire le code que vous voulez, s'il manque des bouts, on ne sait pas ce qu'est "fic" donc si çà fonctionne tant mieux pour vous mais à quoi bon le montrer?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Candidat au Club
    Homme Profil pro
    Cadre de banque
    Inscrit en
    octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Cadre de banque
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2018
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Si vous écrivez: dico_date = comptereq_jh (fic) et qu'on ne trouve pas d'instruction return ... dans la fonction, déjà c'est pas bon.
    Après vous pouvez écrire le code que vous voulez, s'il manque des bouts, on ne sait pas ce qu'est "fic" donc si çà fonctionne tant mieux pour vous mais à quoi bon le montrer?

    - W
    Bonjour W,

    J'ai appliqué tes instructions en examinant d'abord la structure du fichier...

    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
    def lit_fichier (file) :
        f = open (file, "r")
        li = f.readlines () # découpage sous forme de lignes 
        f.close ()
        res = []
        for l in li :
            s = l.replace ("\n", "")
            s = s.split (" ") # le séparateur des colonnes est l’espace
            res.append (s)
        return res
     
     
    fichier = lit_fichier("C:/Users/2018/PYTHON/Projet/data_project.txt") 
    for f in fichier [0:10]:
        print(f)
    Je suis désolé pour les bouts manquants... Je remets tout le code, avec les expressions bien définies.

    QUESTION 3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def comptereq_jh (fichier):
        d = {}
        for c in fichier:
            date = c[1] # clé
            if date in d: d [date] += 1
            else: d [date] = 1
        return (d)
     
    dico_date = comptereq_jh (fichier)
    print(dico_date)

  14. #14
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 487
    Points : 24 507
    Points
    24 507
    Par défaut
    Salut,

    lit_fichier se contente de découper les lignes du fichiers suivant les " ".
    Donc la date sera une chaine de caractères qui ressemble à "[DD:HH:MM:SS]"
    Et si la question 3 est "Combien de requêtes ont été effectuées par heure et par jour ?", la clef sera "DD:HH" ou "DD" ou "HH" suivant comment s’interprète "par heure et par jour".
    De plus, comme c'est un fichier log, les entrées sont dans l'ordre chronologique: pas besoin d'un dictionnaire.

    De fait, vous écrivez des lignes sans vous posez la question de "tester" que çà va bien produire le résultat attendu. C'est quand même pas si compliqué de fabriquer un petit fichier à partir de votre tas de données histoire de pouvoir calculer "à la main", le résultat attendu et de comparer avec ce que sort votre code.

    Ça veut dire que "programmer", c'est aussi pouvoir tester vos petits bouts de code histoire de vous assurer que vous aller pouvoir compter dessus plus tard. Et dans la pratique, c'est encore écrire du code (celui qui va tester).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  15. #15
    Candidat au Club
    Homme Profil pro
    Cadre de banque
    Inscrit en
    octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Cadre de banque
    Secteur : Finance

    Informations forums :
    Inscription : octobre 2018
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    lit_fichier se contente de découper les lignes du fichiers suivant les " ".
    Donc la date sera une chaine de caractères qui ressemble à "[DD:HH:MM:SS]"
    Et si la question 3 est "Combien de requêtes ont été effectuées par heure et par jour ?", la clef sera "DD:HH" ou "DD" ou "HH" suivant comment s’interprète "par heure et par jour".
    De plus, comme c'est un fichier log, les entrées sont dans l'ordre chronologique: pas besoin d'un dictionnaire.

    De fait, vous écrivez des lignes sans vous posez la question de "tester" que çà va bien produire le résultat attendu. C'est quand même pas si compliqué de fabriquer un petit fichier à partir de votre tas de données histoire de pouvoir calculer "à la main", le résultat attendu et de comparer avec ce que sort votre code.

    Ça veut dire que "programmer", c'est aussi pouvoir tester vos petits bouts de code histoire de vous assurer que vous aller pouvoir compter dessus plus tard. Et dans la pratique, c'est encore écrire du code (celui qui va tester).

    - W
    Salut W,

    Tu es assez dur avec moi... Suis pas un informaticien. Je suis un économiste. Je n'ai pas encore les réflexes d'un informaticien. J'apprends encore Python....
    Aide-moi.

  16. #16
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 487
    Points : 24 507
    Points
    24 507
    Par défaut
    Citation Envoyé par Effigie Voir le message
    Tu es assez dur avec moi... Suis pas un informaticien. Je suis un économiste. Je n'ai pas encore les réflexes d'un informaticien. J'apprends encore Python....
    Si vous postez un code qui fonctionne sans erreur mais qui n'a aucune chance de produire le résultat attendu, je ne vais pas vous dire "bravo, continuez comme çà!".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Python 3.X] [Histogramme]exercice Apprendre Python de G. Zwinnen
    Par bergenist dans le forum Général Python
    Réponses: 4
    Dernier message: 15/10/2015, 01h43
  2. Exercice Tp Python Licence
    Par lorli911 dans le forum Général Python
    Réponses: 4
    Dernier message: 01/05/2015, 19h29
  3. Exercice en python besoin de votre aide
    Par Takahitekun dans le forum Général Python
    Réponses: 6
    Dernier message: 14/01/2013, 17h10

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