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

Actualités Discussion :

Le pire bout de code que vous ayez vu

  1. #461
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Barsy Voir le message
    Le code ci-dessus permet de retourner la valeur absolue d'un entier, efficace non ?
    Ouch c'est du lourd.

    Ou alors, le gars est payé à la ligne de code ? (mal, j'espère ).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  2. #462
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par tomtom83 Voir le message
    remplacé en une ligne par miniseconde=String.Format("{0:000}", (valeur - minute * 60 - seconde) * 1000);
    La correction ne valant pas beaucoup plus cher que le code critiqué, puisqu'elle démontre l'égal ignorance du TimeSpan.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #463
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2011
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2011
    Messages : 204
    Points : 511
    Points
    511
    Par défaut
    Citation Envoyé par Furikawari Voir le message
    Non, en Java tout est par valeur... Tu passes une copie de la référence d'un objet, ce qui te permet de modifier les champs de cet objet mais en aucun cas sa référence. Et donc la mise à null ici est effectivement limitée au scope de la fonction.
    Ah oui à ce sujet, j'aimerais savoir s'il se passe la même chose en C# ? Je me suis justement posé la question il y a peu de temps.

  4. #464
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Le passage par référence est supporté en C#, mais possède une syntaxe spécifique.

    Donc, à moins que tu l'utilises explicitement, c'est la même chose qu'en Java.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #465
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Le passage par référence est supporté en C#, mais possède une syntaxe spécifique.

    Donc, à moins que tu l'utilises explicitement, c'est la même chose qu'en Java.
    de vieux langages comme COBOL ou VB passent par défaut par référence(mais pas le C). Je suppose que sur les langages "modernes" on préconise la séparation des données par défaut.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  6. #466
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 215
    Points : 0
    Points
    0
    Par défaut
    Moi c'est une des pires choses que j'ai entendu par un dev web:
    "Oui ici on utilise que des liens absolus"

  7. #467
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    de vieux langages comme COBOL ou VB passent par défaut par référence(mais pas le C). Je suppose que sur les langages "modernes" on préconise la séparation des données par défaut.
    C'est surtout qu'il est difficile de se passer d'un mécanisme de passage par référence quand on ne dispose pas de la possibilité d'isoler les valeurs dans une classe (cas des langages non objet comme VB mais aussi Pascal et C) alors que dans le cadre d'un langage objet, il est toujours possible de contourner cette nécessité par l'ajout d'une classe supplémentaire.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  8. #468
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sybil Voir le message
    Moi c'est une des pires choses que j'ai entendu par un dev web:
    "Oui ici on utilise que des liens absolus"
    Quel est le problème ?

  9. #469
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Citation Envoyé par Bourgui Voir le message
    Quel est le problème ?
    Déménages ton application sur un autre serveur ou changes le nom de domaine et tu vas vite comprendre la bêtise.
    C'est comme d'indiquer lorsque tu fais une commande l'adresse de ton ancien logement. Tu risques pas d'être livré.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  10. #470
    Expert confirmé Avatar de Barsy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    1 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 484
    Points : 5 277
    Points
    5 277
    Par défaut
    Citation Envoyé par Bourgui Voir le message
    Quel est le problème ?
    Ça impose d'avoir sur la machine de dev une arborescence de dossier identique à la prod.

    Or, dans mon cas, j'ai plusieurs projets que j'ai dans un répertoire "Développement" qui est lié à un contrôleur de sources. Et chacun de mes projets ne va pas sur le même serveur de prod à l'arrivée. Donc il m'est impossible de respecter une arborescence quelconque (à moins d'avoir une machine par projet...).
    Et pour ce qui est des liens, ils sont du type "http://localhost:XXXX" sur mon serveur de dev, ce qui est bien évidemment différent en prod.

    Sinon, il existe une technique souvent utilisée pour utiliser des liens/chemins absolus. C'est de mettre la racine du chemin/lien dans un fichier de configuration qui change selon l'environnement.
    "tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"

  11. #471
    Invité
    Invité(e)
    Par défaut
    Suffit de mettre ton nom de domaine en config (voir plusieurs : un pour les pages, un pour les fichiers statiques) et tout est réglé.

    Comme ça si un jour il te prends la bonne idée de mettre tes images sur un serveur externe fait pour renvoyer des fichier statique (en gros t'enlève tout ce qui est inutile, tu monte les cache, tu booste ton disque dur), ben ta modif prend 4 sec, pas 2 semaines.
    Si t'a envie que ton site soit référencé, tu vas faire de l'url rewriting, et pour ce faire il te faut avoir une arborescence d'url côté client qui est différente de l'arborescence côté serveur et dans ces cas la les url absolu sont essentielle.

    Donc si tu détermine ça comme la plus grosse c.....e entendue par un développeur web, tu as beaucoup, beaucoup de chance.

  12. #472
    Expert éminent Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 564
    Points : 7 287
    Points
    7 287
    Par défaut
    http://thedailywtf.com/Articles/Tril...-Language.aspx

    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
    ALTER PROCEDURE [sp_Tickets_Select_Main]
      @StatusID int,
      @UserFilter varchar(255)  = NULL,
      @DateFilter varchar(255)  = NULL,
      @PriorityFilter varchar(255)  = NULL,
      @CategoryFilter varchar(255)  = NULL,
      @TechFilter varchar(255) = NULL,
      @DescriptionFilter varchar(255) = NULL
    AS
    
    SELECT 
       '<input type="button" class="p' + cast(Tickets.PriorityID as varchar) 
       + '" onmouseover="hov(this,''hov p' + cast(Tickets.PriorityID as varchar) 
       + ''')" onmouseout="hov(this,''p' 
       + cast(Tickets.PriorityID as varchar) 
       + ''')" onclick="st('+ cast(Tickets.TicketID as varchar) 
       + ')" value="#' + cast(Tickets.TicketID as varchar) + '">' ,
       Category.CategoryName,
       UserInfo.UserFullName,
       (left(Tickets.Description,512) + '...'),
       Tickets.IssueDate
    	
    
    FROM 
       Tickets 
       INNER JOIN Status
          ON Tickets.StatusID = Status.StatusID
       INNER JOIN  Tech
          ON Tickets.TechID = Tech.TechID
       INNER JOIN Category
          ON Tickets.CategoryID = Category.CategoryID
       INNER JOIN Priority
          ON Tickets.PriorityID = Priority.PriorityID
       INNER JOIN UserInfo
          ON Tickets.UserName = UserInfo.UserName
    
    WHERE 
       Tickets.StatusID = @StatusID
       AND (UserInfo.UserFullName LIKE  '%' + ISNULL(@UserFilter, UserInfo.UserFullName)  + '%' 
            OR Tickets.UserName LIKE  '%' + ISNULL(@UserFilter, Tickets.UserName)+ '%' 
    	OR UserInfo.UserExt LIKE '%' + ISNULL(@UserFilter, UserInfo.UserExt)+ '%' )
       AND convert(varchar, Tickets.IssueDate,101) LIKE 
              '%' + ISNULL(@DateFilter, convert(varchar, Tickets.IssueDate,101)) + '%'
       AND (Tickets.PriorityID LIKE '%' + ISNULL(@PriorityFilter, Tickets.PriorityID) + '%' 
            OR Priority.PriorityName LIKE '%' + ISNULL(@PriorityFilter, Priority.PriorityName) + '%')
       AND (Category.CategoryName LIKE '%' + ISNULL(@CategoryFilter, Category.CategoryName) + '%' 
            OR Category.CategoryName LIKE '%' + ISNULL(@CategoryFilter, Category.CategoryName) + '%')
       AND (Tickets.TechID LIKE '%' + ISNULL(@TechFilter, Tickets.TechID) + '%' 
            OR Tech.TechUserName LIKE '%' + ISNULL(@TechFilter,Tech.TechUserName) + '%')
       AND Tickets.Description LIKE '%' + ISNULL(@DescriptionFilter, Tickets.Description) + '%'
    
    ORDER BY 
       Tickets.PriorityID DESC,
       Tickets.TicketID DESC
    Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros!


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include <stdio.h>
     
    int main(int argc, char **argv) {
     
        printf("So long, and thanks for the fish, Dennis...\n");
        return 0;
    }

  13. #473
    Invité
    Invité(e)
    Par défaut
    C'est un des beau codeSOD , SQL + HTML + javascript = Separation of Concern

  14. #474
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Points : 146
    Points
    146
    Par défaut
    Citation Envoyé par Bourgui Voir le message
    C'est un des beau codeSOD , SQL + HTML + javascript = Separation of Concern
    J'ai déja fait java + javascript + html : j'ai vu que c'est la m****
    J'ai aussi réinventer les sémaphores à ma sauce pour synchroniser des threads. Synchroniser des threads avec des sémaphores "maison" en variable globales, malin !!


    ils se sont arracher les cheuveux pour débuguer.

    C'était il y a bien longtemps !

  15. #475
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Trouvé à l'instant :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
        ... du code
    } catch(UneException ex) {
        // Don't care
    }
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  16. #476
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Ahah j'ai trouvé le même genre il y a pas longtemps, je l'ai plus sous la main mais c'était du genre :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
        ... code ...
    } catch(ex) {
        // Si tu passes ici c'est que j'ai pondu un code de m*rde...
    }

    Cela dit... Je vois pas tellement le rapport entre un code de m*rde et la levée d'une exception...
    Car le code merdique en question c'est justement ce morceau, le fait de ne pas gérer les exceptions.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  17. #477
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Citation Envoyé par transgohan Voir le message
    Ahah j'ai trouvé le même genre il y a pas longtemps, je l'ai plus sous la main mais c'était du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
        ... code ...
    } catch(Exception ex) {
        // Si tu passes ici c'est que j'ai pondu un code de m*rde...
    }
    Cela dit... Je vois pas tellement le rapport entre un code de m*rde et la levée d'une exception...
    Car le code merdique en question c'est justement ce morceau, le fait de ne pas gérer les exceptions.
    Moi je vois bien le truc: une exception genre NullPointerException pas forcément gênante qui sort de temps en temps, assez souvent pour masquer le problème mais pas suffisamment pour passer du temps à le résoudre
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  18. #478
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Cela n'existe pas en PHP les NullPointerException, mea culpa pour le code j'ai fait un bête copier/coller du précédent et j'ai laissé le type de variable qui n'apparait pas dans ce langage...

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  19. #479
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Je suis tombé sur le code suivant dans une application réalisée par une autre personne que je dois maintenir

    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    For i := 0 to 25 do
    begin
      // code
      If Blabla then
        Break;
    End;
     
    For i := 1 to i do
    begin
      // Code
    end;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  20. #480
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Voici comment on vérifie les codes postaux sur le site que je maintiens :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from code_posteau
    Le résultat de la requête est utilisé pour pour faire ceci :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if(array_key_exists($codepostal,$list))

    Étant donné la lenteur d'affichage du site associé, il a été décidé de mettre en cache le résultat de la requête...

    La personne qui a produit ce code était payé plus cher que moi.
    Et avait les droits d’accès à toutes les machines.

    3 semaines que j'ai vue l'erreur, j'ai toujours pas eu le droit de faire la modification sur la prod.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. Quel est le pire bout de code que vous ayez jamais écrit ?
    Par Gordon Fowler dans le forum Débats sur le développement - Le Best Of
    Réponses: 61
    Dernier message: 31/10/2011, 12h18
  2. Quelle est la plus grosse erreur de programmation que vous ayez jamais commise ?
    Par Katleen Erna dans le forum Débats sur le développement - Le Best Of
    Réponses: 138
    Dernier message: 03/08/2011, 23h38
  3. Petit bout de code que je ne saisis pas trop
    Par MeTaLCaM dans le forum C#
    Réponses: 5
    Dernier message: 03/12/2009, 00h07
  4. [Vos débuts] Quel est le premier langage que vous ayez appris ?
    Par Commodore dans le forum La taverne du Club : Humour et divers
    Réponses: 171
    Dernier message: 02/02/2007, 14h43

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