Ähnlich wie bei der Frage, die ich bei Server Fault gelesen habe, ist dies der größte Fehler, den Sie jemals in einer IT-bezogenen Position gemacht haben. Einige Beispiele von Freunden:
Ich musste an einer Produktionsstätte arbeiten, also entschied ich mich, die Live-Datenbank auf die Beta-Site zu kopieren. Ziemlich normal, aber als ich auf die Beta-Seite ging, waren die Informationen immer noch veraltet. HOPPLA! Ich hatte die Beta-Datenbank auf die Live-Site kopiert! Gott sei Dank für Backups.
Und für mich habe ich ein Formular für eine Veranstaltung erstellt, die in einem bestimmten Zeitraum stattfinden soll. Die Teilnehmer würden das Formular ausfüllen, um eine Gewinnchance zu erhalten, und wir würden den Veranstaltern eine CSV aus der Datenbank senden. Ich ging in die Datenbank und fand NUR 1 EINTRAG, MEIN. Nach der Untersuchung scheint es, als hätte ich einen automatischen Inkrementierungsschlüssel vergessen, und aufgrund der Serverkonfiguration gab es keine Möglichkeit, die verlorenen Daten wiederherzustellen.
Mir ist bewusst, dass diese Frage ähnlich wie bei Stack Overflow ist, aber die Fragen, die ich gefunden habe, schienen generische Antworten zu erhalten, anstatt tatsächliche Geschichten :)
quelle
Antworten:
Ausgabe eines SQL-UPDATE mit einer "schlechten" WHERE-Klausel, die zu allem passte.
Gelernte Lektion: Geben Sie immer zuerst ein SELECT aus, um zu sehen, was geändert wird.
quelle
Tippfehler
Verbrachte drei feste Tage mit diesem Stück:
Fehler anzeigen? Es ist das Semikolon am Ende des
else if
. Ich konnte nicht herausfinden, warum meine entfernten Kommentare nicht entfernt wurden. In die Datenbank eingegraben, hatte die AJAX-Anforderung, die ich verwendet habe, POST-Variablenerror_log
undalerts
überall . Es endete damit, die Methode neu zu schreiben und es funktionierte. Dann habe ich einen Unterschied mit der Originalversion gemacht und das Semikolon bemerkt.Tippfehler sind am schwierigsten, eine Sprache zu finden, die nicht von irgendetwas kompiliert oder vorab überprüft wurde. Selbst solche Fehler wären in einer kompilierten Sprache schwierig. Ändern Sie a
==
zu=
und plötzlich haben Sie eine Zuweisung innerhalb vonif
.quelle
Zu denken, dass es beim Programmieren hauptsächlich darum geht, coole neue Dinge von Grund auf neu zu erstellen.
quelle
Mein größter Fehler war zu denken, dass Programmieren leichtes Geld ist ...
quelle
Versehentlich wurde die Datenbank gelöscht, in der alle Kundeninformationen, der Bestellverlauf und die Rechnungen gespeichert waren, die bis zum Beginn des Unternehmens zurückgingen (im Wert von mehreren Jahren).
Um fair zu sein, muss mein Arbeitgeber einen Teil der Schuld teilen. Sie hatten die einzige Kopie dieser Datenbank auf dem Mac SE gespeichert (ja, das ist schon lange her), die sie mir (einem brandneuen Mitarbeiter, erster Job außerhalb des College) als Arbeitsstation gaben, und hatten noch nie daran gedacht, eine Sicherungskopie zu erstellen.
Da ich dachte, es sei eine Kopie der DB, zog ich sie in den Mülleimer. Aufgrund der Größe der Datei wurde sie sofort gelöscht. Wir bekamen es schließlich zurück, nachdem wir einen gottlosen Betrag für einen Datenwiederherstellungsservice gezahlt hatten, aber für ungefähr 5 Tage konnten wir keine Bestellungen erfüllen oder in Rechnung stellen und hatten keine Möglichkeit, auf Informationen über einen Kunden zuzugreifen. Es brachte die (3-Personen-Firma) so ziemlich zum Erliegen.
quelle
als phpmyadmin fragte:
"Sie sind dabei, eine komplette Datenbank zu ZERSTÖREN! Möchten Sie wirklich DATABASE xxx TROPFEN?"
Ich drücke die Eingabetaste.
quelle
Ich bin mir nicht sicher, ob es mein "größter Fehler" war, aber definitiv ein denkwürdiger. In den ersten ein oder zwei Wochen eines neuen Jobs wurde mir eine kleine "Funktionserweiterung" zugewiesen, bei der die Sortierreihenfolge einiger Elemente auf einer der beliebtesten Seiten der Website geändert wurde. Ich war mit der Codebasis nicht allzu vertraut, fand aber schnell den relevanten Comparator und fügte Aufrufe zu ein paar harmlos aussehenden Methoden innerhalb der compareTo-Methode hinzu, ohne zu viel darüber nachzudenken. Der Code wurde lokal und in der Qualitätssicherung ohne Probleme getestet und ging online.
Ich hatte einen 1 gegen 1 mit meinem Chef am selben Tag und mit einem großen Lächeln im Gesicht gratulierte er mir, dass ich mein erstes "Feature" so bald nach meinem Beitritt live bekommen hatte. Wir sahen beide zu, als er die entsprechende Seite besuchte, um die Funktion in Aktion zu sehen. Das Laden der Seite dauerte 47 Sekunden. Mein Herz sank. Er hat die Seite aktualisiert: 53 Sekunden. Sein Lächeln verschwand. Ich ging zurück zu meinem Schreibtisch und verbrachte einen langen Abend damit, kritische Patches zu debuggen und auf die Live-Site zu schieben.
Es stellte sich heraus, dass eine der harmlos aussehenden Methoden, die ich hinzugefügt habe, ein Fernwartungsaufruf war, der zu mindestens einem DB-Treffer führte. In jedem compareTo-Aufruf. Auf einer Seite, auf der mehr als 2.000 Artikel sortiert wurden, habe ich ~ 6000 (nlogn) DB-Treffer erzielt. Autsch.
quelle
Ich habe das gemacht:
(Eigentlich habe ich genau das nicht getan . Das wäre dumm und unentschuldbar. Ich habe es auf subtilere Weise getan, was dazu führte, dass im Wesentlichen dieser Befehl ausgeführt wurde.)
Unnötig zu erwähnen, dass das Unix-System nach diesem Zeitpunkt unbrauchbar war und erneut installiert werden musste. Ich war zu dieser Zeit ein anfänglicher Sysadmin und der ältere Mann, der mich beaufsichtigte, war verständnisvoll.
Einige gute kamen aus der Erfahrung. Ich habe gelernt, wie man Verzeichnisse auflistet, ohne einen der Befehle / bin zu verwenden.
quelle
Der Kunde möchte eine E-Mail an seine gesamte Nutzerbasis, die im Grunde genommen eine personalisierte E-Mail über ein Ereignis sendet. Wenn er auf einen Link in der E-Mail klickt, meldet er sich automatisch in einem Formular an, in dem die Hälfte seiner Daten ausgefüllt ist.
Ich schreibe den Code, teste den Code, es funktioniert gut, die Links funktionieren, es ist ziemlich glatt. Nachdem ich alles überprüft und nochmals überprüft habe, wechsle ich zur Live-Liste und los geht's.
Die Live-Liste ist deutlich größer als meine Beispieldaten und der Mailserver fällt um. Ich muss meine Konsolen-App anhalten und dann feststellen, dass ich sie an der Stelle neu starten muss, an der sie angehalten wurde. Glücklicherweise ist diese Funktion nicht allzu schwer hinzuzufügen, und ich habe die Benutzer protokolliert, an die das Mailout bereits gegangen ist, habe den Mailserver also wieder in Betrieb genommen und den Code neu konfiguriert, damit er von dem Punkt aus, an dem er zuvor fehlgeschlagen ist, neu gestartet und angehalten werden kann Damit der Mailserver aufholt, gehen wir.
Leider hatte ich es irgendwie geschafft, meinen gesamten Code nicht richtig zu aktualisieren. Ich erinnere mich nicht an die Details dessen, was ich getan habe, aber die Abfrage zum Abrufen der Benutzerdaten enthielt einen Datensatz, und die Abfrage zum Generieren des Hashs enthielt einen weiteren Datensatz. Wenn ein Benutzer also auf den Link klickte, wurde ein angezeigt Formular, das die persönlichen Daten einer anderen Person aus deren Kontodaten enthielt . Und dies in einer Nischenbranche, in der viele wettbewerbsfähige Kleinunternehmen auf der Liste standen.
Es dauerte nicht lange, bis das Telefon im Büro des Kunden klingelte ...
Das war der einzige Fehler, der mich bisher zum Rücktritt veranlasst hat.
quelle
Ich habe einmal einen Cross-Join ohne Filter verwendet. Funktionierte einwandfrei in der Testdatenbank mit einem Bruchteil der Daten. Bei der Bereitstellung wurden in einer durchschnittlichen Abfrage ca. 60 Millionen Zeilen angezeigt.
quelle
Ich habe einen 100 000 $ Laserscanner abgestürzt.
Der Controller hat Positionen als Ganzzahl gespeichert, also habe ich alles durch 10000 geteilt, um die tatsächliche Position in Zoll zu erhalten.
Wenn die letzte Ziffer eine 0 war, wurde sie weggelassen, sodass die Z-Achse zehnmal zu weit war.
Hillarity folgte
quelle
Andererseits war es eine fünf Jahre alte VB6-App.
quelle
Mein Manager durfte mich dazu bringen, einen Job zu verlassen, den ich liebte. Ich hätte ihn die Dinge vermasseln lassen, mich entlassen lassen und dann die Teile aufräumen sollen. Stattdessen habe ich aufgehört und es seitdem bereut.
quelle
Vor sieben Jahren war mein Chef und Firmeninhaber, den ich noch nicht kennengelernt hatte, so neu im Beruf, dass er in einem anderen Bundesstaat eine Demo unserer Forschungswebsite für ein paar potenzielle Kunden machte. Die Mitgliedsbeiträge bewegten sich im niedrigen bis mittleren fünfstelligen Bereich, daher waren diese Demos eine große Sache für unser junges Unternehmen.
In der Mitte seiner Demo, als ich einige Datenbankarbeiten machte, nahm ich eine Änderung an der Live-Datenbank vor und aktualisierte jede Umfragefrage in jeder Umfrage auf den gleichen Text, etwa "Dies ist eine Testfrage" wegen eines Fehlers in das WO. Mein Kollege und ich suchten nach dem Backup und duckten uns, in der Hoffnung, dass er diesen Bereich der Website nicht gerade testete, sondern auf die E-Mail in Großbuchstaben wartete, die dankbarerweise nie aufgetaucht waren.
Die gute Seite war, dass der Chef endlich für eine Entwicklungsbox gefedert war.
quelle
Ich habe Xenus Link-Suche in unserem Intranet ausgeführt, um einige der vielen defekten Links zu beseitigen, die sich im Laufe der Jahre gebildet haben (die meisten waren, was nicht überraschend war, Links vom Wiki zum freigegebenen Netzlaufwerk).
Nach ungefähr 30 Minuten bemerkte ich, dass einige der neuen Objekte seltsame Bilder aufwiesen. Es sah so aus, als hätten die Leute einige der körnigen alten Fotos verwendet, die sich auf dem System befanden, aber ich ignorierte diesen Gedanken, dass es vielleicht nichts Neueres gab hatte was sie wollten.
Weitere 10 Minuten später bemerkte ich, dass sich die vorgestellten Gegenstände aus irgendeinem Grund zufällig änderten. Zu diesem Zeitpunkt wurde mir klar, was gerade geschah. Das Intranet verwendet die Windows-Authentifizierung, und einige Funktionen (z. B. das Auswählen von Nachrichtenbildern und empfohlenen Elementen) wurden codiert, um auf HTTP-GET-Anforderungen zu antworten. Der Link Checker hatte meine Authentifizierung verwendet und war zu Seiten auf der Admin-Seite gekrochen, hatte loyal seine Arbeit erledigt und hatte jeden gefundenen Link befolgt, einschließlich solcher wie
/admin/displayItems/icon_update.asp?image=eastereggs.jpg&itemID=3174
quelle
Bisher habe ich nur eine UPDATE-Abfrage ohne WHERE-Klausel ausgeführt, die den Magen verdreht, die Herzfrequenz erhöht und plötzlich heiß und juckt. Glücklicherweise gab es in den letzten 15 Minuten ein Backup und die Daten änderten sich nicht sehr oft, was bedeutete, dass ich die Daten innerhalb von 10 Minuten vollständig wiederherstellen konnte, ohne dass es jemand wusste.
Nichts Schlimmes, aber ich hatte ein paar knappe Anrufe. Sie sind und bleiben enge Anrufe, weil ich genug Horrorgeschichten in dieser Branche gehört habe, dass alles, was ich tue, was Dinge vermasseln kann, eine gute Sache wird.
quelle
Für einen Roboter, an dem ich arbeite, führen wir eine Protokolldatei für jeden Lauf. Wir haben den Roboter und einen Simulator, die beide diese Protokollordner erzeugen. Die Protokolldateien des Simulators sind unbrauchbar, aber die Protokolldateien des Roboters sind sehr nützlich und werden für immer gespeichert.
Da der Roboter selbst nur über begrenzten Festplattenspeicher verfügt, werden sie auf einen anderen Computer übertragen und dort gespeichert. Dieser Computer ist der Hauptbediencomputer für die Kommunikation mit dem Roboter.
Nun, ich hatte vor ein paar Monaten angefangen, an dem Roboter zu arbeiten und wusste das nicht. Ich dachte, die Protokolle auf dem Betriebssystemcomputer wären die nutzlosen, die vom Simulator generiert wurden, und löschten sie. Wir haben alle alten Protokolle verloren, weil keine ordnungsgemäße Sicherung vorhanden war.
quelle
Erstellen Sie eine Version unserer Software auf meinem Computer anstelle des Build-Computers, da diese schneller war (etwa 4 Stunden schneller, was bedeutete, dass sie an diesem Tag anstelle der nächsten in die Qualitätssicherung gehen konnte), und der Herausgeber wollte sie so schnell wie möglich.
Ich hatte eine spezielle Definition für das Debuggen auf meinem Computer, die einen Fehler verursachte, der in der Qualitätssicherung nicht erkannt wurde. Sie haben es erst nach 4 Wochen Validierungstest entdeckt, aber es war schlimm genug, um die Validierung nicht zu bestehen.
quelle
Löschen Sie versehentlich eine Produktionsdatenbank anstelle einer Entwicklungsversion. Ich habe nicht gesehen, auf welchem Server ich arbeite. Glücklicherweise wurde das letzte Backup vor 4 Stunden erstellt und der Benutzer hat keine großen Änderungen am System vorgenommen, so dass kein großer Datenverlust zu verzeichnen ist.
quelle
Der größte Fehler, den ich jemals gemacht habe, war, dass ich meine Arbeit in der Quellcodeverwaltung nicht von meinem Entwicklungscomputer aus erledigt habe. Meine Festplatte ist abgestürzt und ich habe wochenlang Arbeit verloren. Es ist eine hart erlernte Lektion, die ich nie wieder zulassen werde.
quelle
Verwenden von
==
anstelle vonequals
für den Zeichenfolgenvergleich in Javaquelle
==
es sich um einen Referenzvergleich handelt. Führt in C #==
einen Wertevergleich für Zeichenfolgen durch, wie bereits erwähnt.Equals()
, es gibt einige Unterschiede, siehe Jon SkeetsIch sagte meinem Direktor, dass nur weil er ALT ist und mehr Jahre Erfahrung hat als ich, das nicht bedeutet, dass ich ihn respektiere. Das einzige, was ich respektieren würde, ist die FÄHIGKEIT. Ich musste mich nicht mit den Konsequenzen einer solch pathetischen Aussage auseinandersetzen, vielleicht weil ich ein Junior Programmer war als. Rückblickend scheint dies mein größter Fehler zu sein. Wo war mein gesunder Menschenverstand \ Demut? :-(
quelle
Dies ist einem Kollegen in diesem Monat passiert.
Er hat einen Fehler behoben, der auftrat, als Sie eine SMS an viele Handys schickten. Normalerweise werden diese Nachrichten nicht gesendet, um Kosten zu sparen. Aufgrund einer falschen Konfiguration in unserer Datenbank wurden sie jedoch gesendet.
Kosten: ein Monatslohn für SMS-Verkehr.
quelle
Auf Wunsch eines Managers habe ich
/etc/sudoers
von einem Computer auf einen anderen kopiert (obwohl dies das Problem nicht behoben hätte, aber das ist nicht der Punkt). Leider habe ichsudo
die kopierte Datei verschoben, ohne zu bemerken, dass der Eigentümer und die Berechtigungen völlig falsch waren. Zu diesem Zeitpunkt hatte noch niemand eine Root-Shell geöffnet, niemand konntesudo
sich anmelden und niemand konnte sich als Root anmelden, da die Shell auf festgelegt war/bin/false
. Und die Maschine befand sich in einem entfernten Data Warehouse ...quelle
Ich wollte Metadatendateien für jede Datei in einem Verzeichnis erstellen (dh für jede Datei
somedir/foo.bin
möchte ich eine Datei erstellensomedir/foo.bin.meta
). Aus irgendeinem blöden Grund habe ich beschlossen, die Dateien durch Öffnen und Schließen eines Dateistreams über Python zu erstellen:Aus irgendeinem noch dümmeren Grund fand ich es klug, dieses Skript gegen ein Verzeichnis auf meiner Festplatte mit mehreren Aufträgen persönlicher Daten zu testen. Erst nach dem Ausführen wurde mir klar, dass ich vergessen hatte, den Dateinamen vor der Übergabe tatsächlich zu ändern ,
open
und dass ich gerade jede einzelne Datei in diesem Verzeichnis (autsch) abgeschnitten hatte.Zum Glück befand sich das auf einem PC und verursachte keinen Schaden an irgendetwas Wichtigem, aber ich lernte trotzdem meine Lektion.
quelle
Ich habe für ein Unternehmen gearbeitet, das für einen der größten Kundenbetreuer von Telekommunikationsunternehmen in Schweden zuständig ist. Auf unserem Server gab es eine Software, die die Warteschlange für eingehende Anrufe, die Anzahl der Anrufe usw. regulierte. Wenn es nicht funktionierte, bekamen wir keine Anrufe und die Kunden bekamen keinen Support.
Aaaaanyway, ich habe eine (kleinere) Änderung an der Software vorgenommen. Ich hätte warten können, bis ein Servicefenster es ändert, aber ich dachte: "Hey, es wird eine Minute dauern, bis der Service neu gestartet wird. Das Glück ist mutig." Also habe ich es neu gestartet, leider war der Thread gesperrt, so dass ich ihn nicht ersetzen konnte. In Panik zu geraten, entschloss ich mich, den Computer schnell neu zu starten (ich hatte ein Remoting durchgeführt). Leider klicke ich in meiner Panik stattdessen auf "Updates installieren und herunterfahren": P
Es ist unnötig zu erwähnen, dass in Schweden in der nächsten halben Stunde nicht viel Kundensupport verfügbar war, bevor wir den Neustart schafften.
Ein Kollege war schlechter als ich. Eines Nachts haben wir das automatische Sprachantwortsystem getestet und die Nummer auf sein Handy umgeleitet. Das Einzige, was er vergessen hatte, war, dass er am nächsten Tag frei hatte und sein Handy bei der Arbeit ließ. Wir fragen uns, warum es an diesem Tag dauernd geklingelt hat :)
quelle
quelle
Vor einiger Zeit konnte ich beim Codieren des JS nicht zwischen "1" (eins) und "l" "kleines L" unterscheiden. Selbst als ich diese Antwort getippt habe, sehen beide im Editor fast gleich aus!
quelle
Ich habe eine Site-Template-Sprache erstellt , in der alle HTTP-Parameter in einer frühen Version implizit als Variablen erweitert wurden. Dies bedeutete, dass Sie eine URL wie folgt schreiben konnten:
Und es würde genau das tun, wie es aussieht.
Zum Glück habe ich keine Benutzer (seufz), also war es wohl kein allzu großes Sicherheitsrisiko.
quelle
Auf jeden Fall ein TSQL-Missgeschick - zu viele TSQL-Anweisungen in einem Editorfenster. War ein bisschen müde, und die Leute unterbrachen mich von links und rechts, und ich gab einen Befehl aus, der 47.000 Datensätze mit Adresse, Stadt, Bundesstaat und Postleitzahl aktualisierte. Hatte es in etwa 25 Minuten behoben.
quelle