Semblable à la question que j'ai lue sur Server Fault, quelle est la plus grosse erreur que vous ayez jamais commise à un poste lié aux TI? Quelques exemples d'amis:
J'avais besoin de travailler sur un site de production, j'ai donc décidé de copier la base de données en direct sur le site bêta. Joli standard, mais quand je suis allé sur le site bêta, il tirait toujours des informations périmées. OOPS! J'avais copié la base de données bêta sur le site live! Merci mon Dieu pour les sauvegardes.
Et pour moi, j'ai créé un formulaire pour un événement qui devait se dérouler au cours d'une période donnée. Les participants remplissaient le formulaire pour avoir une chance de gagner et nous envoyions aux organisateurs de l'événement un fichier CSV de la base de données. Je suis allé dans la base de données et j'ai trouvé SEULEMENT 1 ENTRÉE, MINE. Lors de l’enquête, il semble que j’ai oublié une clé d’incrémentation automatique et qu’en raison de la configuration du serveur, il n’existait aucun moyen de récupérer les données perdues.
Je suis conscient que cette question est similaire à celle de Stack Overflow, mais celles que j'ai trouvées semblaient recevoir des réponses génériques plutôt que des histoires réelles :)
Quelle est la plus grande erreur / erreur de codage de tous les temps…
la source
Réponses:
Émettre une instruction SQL UPDATE avec une «mauvaise» clause WHERE qui correspond à tout.
Leçon apprise: Toujours émettre un SELECT d'abord pour voir ce qui sera changé.
la source
Typo
Passé trois jours solides sur ce morceau:
Voir l'erreur? C'est le point-virgule à la fin de la
else if
. Je ne pouvais pas comprendre pourquoi mes commentaires supprimés n'étaient pas supprimés. Enfoncée dans la base de données, la requête AJAX que j’utilisais, les variables POST, haderror_log
's etalerts
partout . Nous avons fini par ré-écrire la méthode et cela a fonctionné. Ensuite, j'ai fait un diff avec la version originale et remarqué le point-virgule.Les typos sont les plus difficiles à retrouver dans une langue qui n'est pas compilée ou pré-vérifiée par quelque chose. Même de telles erreurs seraient difficiles sur un langage compilé. Changer un
==
en=
et soudain vous avez une affectation dans unif
.la source
Penser que la programmation consiste principalement à créer de nouvelles choses sympas à partir de rien.
la source
Ma plus grande erreur a été de penser que la programmation est de l'argent facile ...
la source
Supprimé accidentellement la base de données qui stockait toutes les informations client, l'historique des commandes et les factures remontant au début de l'entreprise (plusieurs années).
Pour être juste, mon employeur doit partager une partie du blâme cependant. Ils avaient la seule copie de cette base de données stockée sur le Mac SE (oui, c'était il y a longtemps) qu'ils m'avaient donnée (nouvel employé, premier emploi à la sortie de l'université) comme poste de travail et qu'ils n'avaient même jamais envisagé de faire une sauvegarde.
Alors, pensant que c’était une copie de la BD, je l’ai glissé dans la corbeille. En raison de la taille du fichier, il l'a immédiatement supprimé. Nous l'avons finalement récupéré après avoir payé un montant indécent à un service de restauration de données, mais pendant environ 5 jours, nous n'avons pas pu remplir ni facturer les commandes et n'avions aucun moyen d'accéder aux informations relatives à un client. Cela a pratiquement mis la compagnie de trois personnes à l'arrêt.
la source
quand phpmyadmin a demandé:
"Vous êtes sur le point de détruire une base de données complète! Voulez-vous vraiment DROP BASE DE DONNÉES xxx?"
Je frappe Entrée.
la source
Pas sûr que ce soit ma "plus grosse erreur", mais certainement une mémorable. Au cours de ma première semaine ou deux à un nouvel emploi, j'ai été affecté à une petite "amélioration des fonctionnalités" qui impliquait de modifier l'ordre de tri de certains éléments sur l'une des pages les plus populaires du site. Je ne connaissais pas trop la base de code, mais j'ai rapidement trouvé le comparateur pertinent et ajouté des appels à quelques méthodes inoffensives à l'intérieur de la méthode compareTo sans trop y penser. Le code a été testé localement et QA sans problèmes et a été mis en ligne.
Le même jour, j’ai eu un face à face avec mon patron et avec un grand sourire, il m’a félicité d’avoir fait vivre mon premier "long métrage" si tôt après son arrivée. Nous avons tous les deux regardé pendant qu'il visitait la page correspondante pour voir la fonctionnalité en action. Le chargement de la page a pris 47 secondes. Mon cœur se serra. Il a rafraîchi la page: 53 secondes. Son sourire disparut. Je suis retourné à mon bureau et ai passé une longue soirée à déboguer et à appliquer des correctifs critiques au site en direct.
L’une des méthodes inoffensives que j’ai ajoutées était un appel de service à distance qui a entraîné au moins un succès dans la base de données. Dans chaque appel comparatif. Donc, sur une page où plus de 2 000 articles étaient triés, je faisais environ 6 000 hits DB (nlogn). Aie.
la source
J'ai fait ça:
(En fait, je n'ai pas fait exactement cela. Ce serait stupide et inexcusable. Je l'ai fait d'une manière plus subtile et détournée, ce qui a essentiellement abouti à l'exécution de cette commande.)
Inutile de dire que le système Unix était devenu inutilisable après ce moment-là et devait être réinstallé. J'étais un administrateur système à l'époque et le responsable qui me supervisait était compréhensif.
L'expérience a été bénéfique. J'ai appris à répertorier des répertoires sans avoir à utiliser les commandes / bin.
la source
Le client souhaite envoyer par courrier électronique à l'ensemble de sa base utilisateur un courrier électronique personnalisé sur un événement. Lorsqu'il clique sur un lien de l'e-mail, il les connecte automatiquement à un formulaire dont la moitié des données sont renseignées.
J'écris le code, teste le code, cela fonctionne bien, les liens fonctionnent, c'est assez lisse. Après avoir vérifié et revérifié tout, je passe à la liste des concerts et on part.
La liste de diffusion en direct est nettement plus volumineuse que mes exemples de données et le serveur de messagerie tombe. Je dois arrêter mon application de console, puis réaliser que je vais devoir la redémarrer là où elle s'est arrêtée. Heureusement, cette fonctionnalité n’est pas trop difficile à ajouter et j’ai consigné les utilisateurs auxquels le courrier a été envoyé. C’est pour cela que le serveur de courrier est de nouveau opérationnel et que le code a été reconfiguré pour pouvoir redémarrer à partir du point où il avait échoué précédemment et pour mettre en pause. pour laisser le serveur de courrier rattraper son retard, on s'en va.
Malheureusement, j'avais réussi à ne pas mettre tout mon code à jour correctement. Je ne me souviens pas des détails de ce que j'ai fait, mais la requête pour obtenir les données de l'utilisateur obtenait un ensemble de données, la requête pour générer le hachage en obtenait un autre. Ainsi, si un utilisateur cliquait sur le lien, il obtiendrait un formulaire qui contenait les données personnelles de quelqu'un d'autre à partir des détails de son compte. Et ceci dans un secteur de niche où il y avait beaucoup de petites entreprises compétitives sur la liste.
Le téléphone n'a pas tardé à sonner chez le client ...
C’est la seule erreur jusqu’à présent qui m’a amené à proposer ma démission.
la source
Une fois, j'ai utilisé une jointure en croix sans filtre. Travaillé très bien sur la base de données de test avec une fraction des données. Lorsqu'il a été déployé, il a abouti à environ 60 millions de lignes dans une requête moyenne.
la source
J'ai écrasé un scanner laser de 100 000 $.
Le contrôleur stockait les positions sous forme d'entier, j'ai donc tout divisé par 10 000 pour obtenir la position réelle en pouces.
Lorsque le dernier chiffre était un 0, il était omis et l'axe Z était 10 fois trop éloigné.
Hillarity s'ensuit
la source
D'autre part, c'était une application VB6 vieille de cinq ans.
la source
Permettre à mon responsable de me forcer à quitter un emploi que j'aimais. J'aurais dû le laisser foutre en l'air, se faire virer, puis j'aurais dû intervenir et nettoyer les pièces. Au lieu de cela, j'ai arrêté et je l'ai regretté depuis.
la source
Il y a sept ans, mon patron et le propriétaire de l'entreprise, que je n'avais pas encore rencontrés, étaient si nouveaux dans ce poste, alors qu'ils étaient dans un autre État en train de faire une démonstration de notre site Web de recherche à quelques clients potentiels. Les frais d'adhésion ont été dans les cinq à cinq chiffres, donc ces démos ont été un gros problème pour notre jeune entreprise.
Au milieu de sa démo, alors que je travaillais sur une base de données, j’ai modifié la base de données en direct et mis à jour chaque question de sondage dans chaque enquête avec le même texte, quelque chose comme "Ceci est une question de test" en raison d’une faille dans le O. Mon collègue et moi-même avons lutté pour la sauvegarde et nous avons craqué, espérant qu'il ne faisait pas la démo de cette section du site à ce moment-là, mais qu'il attendait l'email en majuscule qui, avec gratitude, n'apparaissait jamais.
Le bon côté était que le patron a finalement jailli pour une boîte de développement.
la source
J'exécutais le réseau de liens de Xenu sur notre intranet pour essayer de dissiper certains des nombreux liens brisés qui se sont accumulés au fil des ans (la plupart, sans surprise, étaient des liens allant du wiki au lecteur de réseau partagé).
Après environ 30 minutes, j'ai commencé à remarquer que certains des nouveaux éléments comportaient des images bizarres. Il semblait que les gens utilisaient certaines des anciennes photos d'archives granuleuses qui se trouvaient sur le système, mais j'ignorais que penser avait ce qu'ils voulaient.
Dix minutes plus tard, j’ai remarqué que les articles présentés changeaient de façon aléatoire pour une raison quelconque. À ce stade, j'ai compris ce qui se passait. L'intranet utilise l'authentification Windows et certaines des fonctions (telles que la sélection d'images d'actualités et d'éléments présentés) ont été codées pour répondre aux demandes HTTP GET. Le vérificateur de liens utilisait mon authentification et avait parcouru des pages du côté de l’administrateur, faisant son travail avec loyauté et suivant everylink, il en trouva notamment des
/admin/displayItems/icon_update.asp?image=eastereggs.jpg&itemID=3174
la source
Jusqu'ici, ma seule erreur de torsion de l'estomac, d'augmentation de la fréquence cardiaque et de démangeaisons soudaines était de lancer une requête UPDATE sans clause WHERE. Heureusement, il y avait une sauvegarde des 15 dernières minutes et les données ne changeaient pas très souvent, ce qui me permettait de restaurer complètement les données en 10 minutes sans que personne ne le sache.
Rien de grave, mais j'ai eu des appels proches. Ils sont et restent des interlocuteurs proches, car j’ai entendu assez d’histoires d’horreur dans cette industrie pour que tout ce que je fais qui pourrait gâcher la situation se passe bien.
la source
Pour un robot sur lequel je travaille, nous gardons un journal de chaque exécution. Nous avons le robot et un simulateur, qui génèrent tous ces dossiers. Les fichiers journaux du simulateur sont inutiles, mais les fichiers journaux du robot sont très utiles et sont stockés pour toujours.
Comme le robot lui-même dispose d'un espace disque limité, il est transféré sur un autre ordinateur et stocké sur celui-ci. Cet ordinateur se trouve être le principal ordinateur utilisé pour communiquer avec le robot.
Eh bien, je venais de commencer à travailler sur le robot quelques mois plus tôt et je ne le savais pas. Je pensais que les journaux de l'ordinateur d'exploitation étaient ceux inutiles générés par le simulateur et les supprimaient. Nous avons perdu tous les anciens journaux car il n'y avait pas de sauvegarde adéquate.
la source
Construit une version de notre logiciel sur mon ordinateur au lieu de l'ordinateur de compilation car il était plus rapide (environ 4 heures plus vite, ce qui signifiait qu'il pouvait passer au contrôle qualité ce jour-là au lieu du jour suivant) et l'éditeur le souhaitait immédiatement.
J'ai eu une définition spéciale pour le débogage sur mon ordinateur qui a causé un bogue qui n'a pas été détecté dans le contrôle qualité. Ils ne l'ont détecté qu'à la fin des 4 semaines de tests de validation, mais c'était assez grave pour que la validation échoue.
la source
Supprimer une base de données de production par accident au lieu d'une version de développement. Je n'ai pas vu sur quel serveur je travaillais. Heureusement, la dernière sauvegarde a été produite il y a 4 heures et l'utilisateur n'a pas apporté beaucoup de modifications au système, donc pas de perte de données volumineuses.
la source
La plus grande erreur que j'ai jamais commise est de ne pas avoir mon travail de contrôle de source sur ma machine de développement. Mon disque dur s'est écrasé et j'ai perdu des semaines de travail. C'est une leçon difficile à apprendre et quelque chose que je ne laisserai plus jamais arriver.
la source
Utiliser
==
au lieu deequals
pour la comparaison de chaînes en Javala source
==
trouve une comparaison de référence. En C #,==
fait une comparaison de valeur sur les chaînes, comme.Equals()
cela a été dit, il y a quelques différences, voir la réponse de Jon Skeet ici: stackoverflow.com/questions/3678792/…J'ai dit à mon directeur que le simple fait qu'il soit VIEUX et possède plus d'années d'expérience que moi ne signifie pas que je le respecterai. La seule chose que je respecterais, c'est la CAPACITÉ. Je n'ai pas eu à faire face aux conséquences d'une déclaration aussi pathétique peut-être parce que j'étais programmeur junior que. En regardant en arrière, cela semble être ma plus grande erreur. Où était mon sens commun \ humilité ?? :-(
la source
Cela est arrivé à un collègue ce mois-ci.
Il corrigeait un bug survenu lorsque vous envoyez un SMS à de nombreux téléphones portables. Habituellement, ces messages ne sont pas réellement envoyés pour économiser sur les coûts, mais en raison d'une mauvaise configuration dans notre base de données, ils ont été envoyés.
Coût: un mois de salaire du trafic SMS.
la source
À la demande d'un responsable, j'ai copié
/etc/sudoers
d'une machine à une autre (même si cela n'aurait pas résolu le problème, mais ce n'est pas la question). Malheureusement, jesudo
déplaçais le fichier copié à la place, sans remarquer que son propriétaire et ses autorisations étaient complètement erronés. À ce stade, personne n'avait de shell racine ouvert, personne ne le pouvaitsudo
et personne ne pouvait se connecter en tant que root car son shell était défini sur/bin/false
. Et la machine était dans un entrepôt de données distant ...la source
Je voulais créer des fichiers de métadonnées pour chaque fichier d'un répertoire (c'est-à-dire pour chaque fichier).
somedir/foo.bin
, je voudrais créer un fichier fichiersomedir/foo.bin.meta
). Pour une raison stupide, j'ai décidé de créer les fichiers en ouvrant et en fermant un flux de fichiers via Python:Pour une raison encore plus stupide, j’ai pensé qu’il était judicieux de tester ce script par rapport à un répertoire de mon disque dur comportant plusieurs concerts de données personnelles. Seulement après l'avoir lancé, j'ai réalisé que j'avais oublié de modifier le nom du fichier avant de le transmettre à
open
et que je venais de tronquer chaque fichier de ce répertoire (ouch).Heureusement, cela se trouvait sur un ordinateur personnel et ne causait aucun dommage à quelque chose d'important, mais j'ai quand même appris ma leçon.
la source
Je travaillais pour une entreprise qui gère l'un des plus grands centres d'assistance clientèle de sociétés de télécommunications en Suède. Sur notre serveur, nous avions un logiciel qui réglementait la file d’appels entrants, le nombre d’appels que nous pouvions prendre, etc. Si cela ne fonctionnait pas, nous ne recevions aucun appel et les clients ne bénéficiaient d'aucune assistance.
Aaaaanyway, j'ai apporté une modification (mineure) au logiciel. J'aurais pu attendre une fenêtre de service pour la changer, mais je me suis dit: "Hé, ça va prendre une minute pour redémarrer le service, pourquoi s'embêter. La fortune préfère les audacieux". Donc je l'ai redémarré, malheureusement le fil était verrouillé, je ne pouvais donc pas le remplacer. Commençant à paniquer, je décide de redémarrer rapidement la machine (j'étais à distance). Malheureusement, dans ma panique, je clique plutôt sur "installer les mises à jour et l'arrêt": P
Inutile de dire qu’il n’y avait pas beaucoup d’assistance clientèle en Suède pendant une demi-heure avant que nous puissions le redémarrer.
Un collègue était pire que moi cependant, il a débogué le système de réponse vocale automatique une nuit et redirigé le numéro sur son téléphone portable. La seule chose qu'il a oublié de changer de téléphone, a pris sa journée de congé le lendemain et a laissé son téléphone portable au travail. Nous nous demandons pourquoi il sonnait constamment ce jour-là :)
la source
la source
Quelque temps auparavant, lors du codage du JS, je n’étais pas en mesure de faire la distinction entre "1" (un) et "l" "petit L". Même quand je tapais cette réponse, les deux ont presque la même apparence dans l'éditeur!
la source
J'ai fait un langage de template pour site , dans une version antérieure de laquelle tous les paramètres HTTP étaient implicitement développés en tant que variables. Cela signifiait que vous pouviez écrire une URL telle que:
Et cela ferait exactement ce à quoi il ressemble.
Heureusement, je n'ai aucun utilisateur (soupir), alors je suppose que ce n'était pas trop un risque de sécurité.
la source
Problème TSQL: trop d'instructions TSQL dans une seule fenêtre d'éditeur. J'étais un peu fatigué et les gens m'interrompaient à gauche et à droite et j'ai lancé une commande mettant à jour 47 000 enregistrements d'adresse, de ville, d'état et de zip-oops. Avait-il réparé dans environ 25 minutes, cependant.
la source