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

Débats sur le développement - Le Best Of Discussion :

Quelle est la plus grosse erreur de programmation que vous ayez jamais commise ?


Sujet :

Débats sur le développement - Le Best Of

  1. #101
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    je n'ai pas de code dans la têtes mais une grosse bourde dans dans un système hiérarchique.
    les systèmes permet d'ajouter tous les fils que l'on veut à un noeud. la suppression d'un noeud supprime tous ses fils.

    donc au départ on a un noeud root et au fil des usage on se retrouve avec un arbres qui grandit et réduit

    le bug (qui est partit en production) c'est que dans la méthode de suppression le test évitant de supprimer le noeud root était foireux et retournait toujours vrai.

    heureusement on s'en est aperçu avant que quelqu'un ne supprime le sommet de l'arbre. car non seulment on perdait toutes les données mais en plus on n'aurait pas pu le reconstruire.

    A+JYT

  2. #102
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 467
    Points : 647
    Points
    647
    Par défaut
    Voulant agrandir la partition système (12 go arrivant à saturation) d'un serveur, j'ai fais un ghost d'un volume RAID 1.

    Tout a bien marché sur le processus de création du ghost... Donc j'efface la partition et la recrée avec une taille acceptable. Remontée du ghost impec' et au boot : LE GROS FAIL.

    Au bout de 8H, j'ai finis par mettre un disque SATA à la place du lecteur CD et ait remonté mon ghost sur ce disque dur basique (Oui parce que les disques du serveur sont en SAS). , le serveur est reparti immédiatement !

    J'avais accès du coup au nouveau volume retaillé correctement depuis Windows. Direction la gestion des disques, clic droit sur la partition système du volume "Marquer comme active", j'ai rebooté sur le volume RAID : le serveur est reparti nikel

    Autant vous dire que le 7h30 -> 16H dans une salle serveur, sans manger avec des gens derrière vous qui font les 100 pas : ça provoque un stress très important...

  3. #103
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 18
    Points : 42
    Points
    42
    Par défaut
    des heures perdues sur un bete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(i=0; i<xxx; ++i);
    {
       ......
    }
    mais bon, ce genre de truc, tout comme les if (truc = valeur), on y est tous passé

    Et bien avant, lors d'un stage... je bossais dans un repertoire commun...
    Je fais un petit programme exemple.. puis je me decide de l'effacer :

    La commande etait, d'apres le manuel "EFFACER FICHIER"

    oops... OS un peu bizarre que je ne connaissais pas... où "Fichier" voulait dire "repertoire" ... my bad

  4. #104
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Il s'agissait d'un programme de surveillance d'un système électrique qui tournait sous un système unix en mode console(plusieurs consoles ouvertes avec du xterm) et relativement assez multithreadé.

    J'attendais désespérément un message sur une console qui signalé qu'un élément a été ajouté à un IPC (un pipe ou une pile je ne sais plus) pour une téléreléve de mesure puisque sur une autre console j'avais bien un message "nouvelle mesure arrivée".

    Au bout de 2-3jours je me suis aperçu que le message s'affichait bien mais était écrit en noir sur une console avec un fond noir donc je ne le voyais jamais
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  5. #105
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Cela me rappel le jour où une des nos formatrice à l'initiation sous windows (version 3.11, ça date !) m'a appelée au secours parce qu'un de ses stagiaires avait réussi à supprimer tous le contenu de tous les menus du poste...

    En fait, il avait fait un essai (malheureux) de personnalisation des couleurs de l'interface et défini la couleur du menu à blanc sur fond blanc... J'ai tapé au hasard dans la liste des couleurs disponibles et windows à remarché correctement.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  6. #106
    Membre régulier Avatar de taha1
    Femme Profil pro
    débutantE ^ ^
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : débutantE ^ ^

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 105
    Points
    105
    Par défaut
    pas mal
    euh moi c'est l'inverse, on me dis que je fais trops de bindage de code (je met trop de if avant d'effectuer tel ou tel action) par contre je suis moins rapide pour coder c'est sûr
    sinon au début quand j'ai commencer à faire du C , l'erreur est de ne pas incrémenter (à l'intérieur du while) la valeur qu'on teste par while mais on se rendait rapidement compte de la boucle infini

  7. #107
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    il existe des outils d'analyse statique du code capable de détecteur les potentielle boucle infinie de ce type.

    A+JYT

  8. #108
    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 518
    Points
    41 518
    Par défaut
    Mais pas toutes les boucles infinies (cf problème de l'arrêt)
    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.

  9. #109
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    ô oui il faut se méfier de ces outils même s'ils aident

    A+JYT

  10. #110
    Membre régulier Avatar de taha1
    Femme Profil pro
    débutantE ^ ^
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : débutantE ^ ^

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 105
    Points
    105
    Par défaut
    j'étais pas au courant de ça à l'époque ou je faisais du C

  11. #111
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 309
    Points : 928
    Points
    928
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Mais pas toutes les boucles infinies (cf problème de l'arrêt)
    Ok, il n'existe aucun outil complet d'analyse statique, et ce pour aucune propriété... ce n'est pour autant que certains d'entre eux ne sont pas extrêmement intéressants !

  12. #112
    Membre éprouvé
    Avatar de EpiTouille
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 372
    Points : 917
    Points
    917
    Par défaut
    Tenez vous bien un fois j'ai fais un truc de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure swap(pa , pv : integer);
    begin
      if (PA= 1) then PA := 0;
      if (Pa = 0) then PA := 1;
      if (PV = 1) then PV := 0;
      if (PV = 0) then PV := 1;
    end;
    Je soupçonnait même pas ce petit bout de code . J'ai bien mis une heure avant de conprendre

  13. #113
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 432
    Points : 593
    Points
    593
    Par défaut
    Citation Envoyé par titeeee Voir le message
    Tenez vous bien un fois j'ai fais un truc de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure swap(pa , pv : integer);
    begin
      if (PA= 1) then PA := 0;
      if (Pa = 0) then PA := 1;
      if (PV = 1) then PV := 0;
      if (PV = 0) then PV := 1;
    end;
    Je soupçonnait même pas ce petit bout de code . J'ai bien mis une heure avant de conprendre
    Je trouve ça tellement bizarre que je ne vois ou est LA pire erreur. Tu t'attendais à ce que swap échange n'importe quel entier ? Ou alors c'est juste Pa à la place de PA ?

  14. #114
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Citation Envoyé par Ubiquité Voir le message
    Je trouve ça tellement bizarre que je ne vois ou est LA pire erreur. Tu t'attendais à ce que swap échange n'importe quel entier ? Ou alors c'est juste Pa à la place de PA ?
    A priori, Pa à la place de PA, c'est une faute de frappe.

    Par contre, il aurait pu se contenter de faire :
    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    procedure swap(a, b : integer);
    begin
    end;
    Il manque "var" dans la liste des paramètres.
    Et les else sont manquants également...

  15. #115
    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 518
    Points
    41 518
    Par défaut
    Pas exactement, son code correspond à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure swap(pa , pv : integer);
    begin
      if (Pa = 0) then PA := 1;
      if (PV = 0) then PV := 1;
    end;
    (supposant un passage par référence dans le langage en question)

    Et si pa et pv ne peuvent prendre que les valeurs 0 et 1, on peut même virer les IF.
    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.

  16. #116
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par davcha Voir le message
    Par contre, il aurait pu se contenter de faire :
    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    procedure swap(a, b : integer);
    begin
    end;
    Euh cette procédure ne fait rien du tout...
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  17. #117
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 432
    Points : 593
    Points
    593
    Par défaut
    Bon ça va je comprend un peu mieux ^^

  18. #118
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 552
    Points : 15 463
    Points
    15 463
    Par défaut
    Citation Envoyé par hegros Voir le message
    Euh cette procédure ne fait rien du tout...
    Relis attentivement la procédure de titeeee, et tu verras, qu'elle ne fait rien du tout non plus.

  19. #119
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Mise à jour vers la version X+1 du dev sur le serveur de prob après moultes test. Application de gestion de dossiers RH. Après un mois de fonctionnement de X+1, on nous signale des dates incorrectes dans un dossier. Attention faut suivre la cause:

    champ de date, timezone GMT+1 dans le HTML
    récupération en java sous la forme d'un objet Date ayant les heures à 00:00
    envoi vers oracle via driver et un appel à setTimestamp (jour+heure, faut suivre)
    arrivée sur le serveur oracle avec un valeur ajustée à la locale du serveur: J-1 23:00
    Stockage dans une colone DB de type date, oracle zape la partie "heure", non stockée
    Récupération de oracle: J-1 00:00
    Transfert vers notre application: J-1 01:00
    Affichage: J-1 (on supprime la partie heure)
    On sauve, J-1 00:00 on recommence avec J-2, J-3, etc :p


    conclusion: tous les dossiers édités au cours du dernier mois ont eu tous leur champ de dates (naissance, contrat, formations, indemnités etc) reculé de autant de jour qu'il n'y avait eu de "save" dans l'application. Impossible d'appliquer un backup au bout d'un mois.... Je vous laisse imaginer la tête des RHs

  20. #120
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par Uther Voir le message
    Relis attentivement la procédure de titeeee, et tu verras, qu'elle ne fait rien du tout non plus.
    Si elle fait quelque chose mais mal (un bug) Quand je dis qu'une procédure ne fait rien cela veut dire qu'il n'y a aucune instruction 'nop'
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

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, 13h18
  2. Réponses: 13
    Dernier message: 24/06/2009, 09h19
  3. Réponses: 1
    Dernier message: 29/01/2007, 23h43

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