Vor Halloween twitterte der Full-Stack-Entwickler Wes Bose andere Programmierer, um ihre Horrorgeschichten über Webdev zu teilen. Hier sind einige davon ...
@DimitroffPeter :
Mein erster Job und mein erster Beitrag zur Produktion. Ich muss ein Client-Server-Dienstprogramm reparieren. Die Funktion ist einfach: Wir haben ein hausgemachtes Gerät von einem Router und einem PC. Der Router verfügt über eine CLI und sollte Informationen zum Status des PCs anzeigen. Dinge wie systemctl, top, kostenlos. Der Befehl wird als Text übertragen, ausgeführt und das Ergebnis als Text empfangen. Dies wurde jedoch auf die schrecklichste Art und Weise getan ...
CLI-Befehle werden in XML angegeben. Sie rufen ein Bash-Skript mit bestimmten Argumenten auf. Das Skript erstellt eine PIPE im Dateisystem und übergibt Befehle an dieses. Der Server ist in C geschrieben (genau so stellt der Server Anforderungen an den Client, nicht umgekehrt). Alle Variablennamen auf dem C-Server bestehen aus einem Buchstaben (x, a, b, q) oder haben eine allgemeine Form (mem, data). Es gibt auch eine Reihe von Pthreads, die in Pipes schreiben und diese in einem Dateisystem mit vollständig NULL-Thread-Kontrolle abfragen. Keine Mutexe, nichts dergleichen.
Der C-Server-Thread fragt also die erste Pipe ab und führt das Skript aus, das eine SSH-Sitzung mit dem PC öffnet und den erforderlichen Befehl ausführt. Das Ergebnis wird in einer weiteren Pipe im Dateisystem abgelegt. Der C-Server verfügt über einen anderen Thread, der diese Pipe abfragt. Und tausend damit verbundene Probleme. Beispielsweise kann er in keiner Weise herausfinden, ob das Ergebnis vollständig ist, und wartet nicht darauf, dass weitere Daten durch die Pipe gelangen. Sobald er etwas liest, zeigt er es sofort an. Aus diesem Grund wurden viele Teilergebnisse erhalten, und die verbleibenden Teile davon wurden mit dem Ergebnis des nächsten Befehls verklebt ...
Aber das ist noch nicht alles. Der C-Code war verstreut
fprintf(s)
. Wenn Sie mit der Funktionsfamilie vertraut sind printf
, werden Sie feststellen, dass dies lediglich einen Pufferüberlauf erfordert. Und sie haben uns besucht. Viele Male.
Werfen wir einen weiteren Blick auf die Architektur / den Stapel dieser großartigen Erfindung:
> CLI
> Skript sh
> PIPE
> Pipe-Aufruf pthread
> Skript-Aufruf pthread
> SSH-Skript
> SSH-Sitzung zur Verbindung mit PC
> PIPE 2
> eine andere Pipe, die pthread
I liest Ersetzte alles nach der CLI durch 30 Zeilen Bash mit ncat.
@MichaelDClaar Das
vorherige Projekt hat alle Fehlerberichte als E-Mails an Entwickler gesendet. Ein kleiner Fehler hat uns so viele E-Mails versendet, dass unser E-Mail-Dienstanbieter unser Konto festgenagelt hat. Einen halben Tag lang konnte niemand Kunden eine E-Mail senden. Wir spammen uns ungefähr 5.000 E-Mails pro Minute.
@dev__adi :
Ich habe einen dunklen Modus für unsere Site erstellt, aber keine Standardwerte für die CSS-Variablen hinzugefügt. Wir sollten die CSS-Themendatei an einer Stelle hinzufügen und alles sollte in Ordnung sein. Es stellte sich heraus, dass wir in einem anderen Projekt die Datei mit den Themenvariablen nicht aufgenommen haben und alles weiß wurde. Glücklicherweise wurde das Problem bei der Vorbereitung der Produktion festgestellt.
@Abdullah_Mzaien :
In meinem Abschlussprojekt war ich sehr verärgert über die Größe, also mischte ich die Dateien.
Erstellt einen der seltsamsten Git-Befehle, der alle Commits von Anfang an erneut festschreibt.
Daran ist nichts auszusetzen, aber all diese Verpflichtungen haben meinem Team Angst gemacht.
@MathiasaurusRex :
Vor ungefähr 10 Jahren habe ich einen Tippfehler in der Ankertag- Variablen eines E-Commerce-Unternehmens aus den Top 5 gemacht. Angenommen, die Adresse lautet ABC dot com, und alle Ankertags zeigen auf AC dot com. Der Fehler breitete sich auf den täglichen / wöchentlichen Rabattbereich der Website aus. Die Reparatur dauerte ein paar Stunden.
Ziemlich teuer kam "oops" heraus.
@FcoGT : FcoGT
Zeitungen hinterlassen wichtige Nachrichten, die möglicherweise veröffentlicht werden, sobald die Veranstaltung stattfindet. Als Gabriel García Márquez sehr krank war, haben sie die Nachricht von seinem Tod bereits auf der Homepage hinterlassen. Ein Freund von mir hat einen Fehler in der Bedingung gemacht und wurde gepostet!
@ryanfiller_ :
Ich habe einmal
npm publish
aus dem falschen Ordner ausgeführt und das private Arbeits-Repository als öffentliches Paket in npm verschoben . Glücklicherweise gibt es ein Team npm unpublish
, wenn Sie es schnell genug bemerken (innerhalb von 72 Stunden). Sonst bleibt es für immer dort ...
@perlilja :
Sobald ich das System auf meinem Computer neu installiert habe. Ich dachte, ich hätte ein Backup meines Codes erstellt, aber es stellt sich heraus, dass dies nicht der Fall ist. Ein Monat Arbeit ging verloren. Das hat auch eine gute Seite: Ich denke, der neue Code ist besser.
@petetasker :
Ich habe einen Wettbewerb für eine Radiosendung durchgeführt. Erstellt ein Formular, über das Benutzer Antworten auf wöchentliche Fragen senden können. Die Antwort auf eine der wöchentlichen Fragen enthielt einen Apostroph. Diese Woche wurden keine Beiträge erstellt ...
@davigiroux_ :
Nicht meine Geschichte, aber auch eine beängstigende: Der Typ, der mit mir zusammengearbeitet hat, hat die Datenbank ohne "Wo" aktualisiert, weshalb jeder Benutzer, der die Kurse abonniert hat, denselben Kurs ausgewählt hat. Ich habe einen ganzen Morgen damit verbracht, alle anzurufen, um sie auf den gewünschten Kurs zu bringen, und dieser Typ sagte, er sei krank.
@jonicious :
In den ersten Wochen meines allerersten Jobs als Entwickler haben ein anderer Neuling und ich alle öffentlichen SSH-Schlüssel von der Maschine entfernt, auf der einer der wichtigsten Dienste ausgeführt wird.
Ich habe auch die Flaggen vertauscht
true
und false
die Werbekampagne mit einem Rabatt von 50% für alle Kunden ausgeschaltet.
@ PatZawa :
Ich habe eine Regex-Funktion geschrieben, um die Sozialversicherungsnummer zu validieren, bevor ich sie in die Datenbank gehasht habe. Bevor ich die Prüfung durchführte, vergaß ich jedoch, die Entschlüsselung rückgängig zu machen, weshalb in der Produktion fast 10.000 Patientennummern aus der Datenbank gelöscht wurden. Verbrachte die nächsten zwei Tage damit, sich zu erholen und wieder einzusetzen.
@nishant_ch :
Zu Beginn meiner Karriere habe ich mich einmal versehentlich über Filezilla mit dem falschen Server verbunden, die Website eines anderen auf eine funktionierende Domain hochgeladen und mich dann ausgeruht. Nach ein paar Stunden sah ich, dass die von mir vorgenommenen Änderungen nicht auf der Website wiedergegeben wurden, und mir wurde klar, was ich getan hatte.
@pjately :
Schalten Sie den Server am ersten Arbeitstag im Büro versehentlich aus. Ich habe es nicht einmal bemerkt, bis ich den Schalter wieder einschaltete und der Server ein Startgeräusch gab, während der technische Direktor sich umdrehte und fragte: "War das ein Server?" Der zweite Arbeitstag war viel besser ... Es hätte nicht schlimmer sein können.
@rrrrrrichard : Ich habe
Anfang der 2000er Jahre eine Website für Geld geschrieben. Ich debuggte die Kontaktseite und dachte, ich hätte die Zustellung selbst deaktiviert. An diesem Tag erhielt der Kunde eine Reihe von E-Mails von "Adolf G.", "Joseph S." usw. Ein paar Stunden später bat er mich höflich aufzuhören. Hoppla.
Zuerst dachten sie auf der Seite des Klienten, dass sie von einem wütenden Psycho angegriffen wurden, weil der Körper der Briefe aus Vulgarität bestand. Dann wurde ihnen klar, dass jemand ihre Website erreicht hatte, und sie kontaktierten mich. Es wurden Entschuldigungen gemacht und Lehren gezogen.
@spencer_carli :
Neue Datenbank für mich. Ich arbeitete an der Fehlerbehebung bei Push-Benachrichtigungen und dachte dabei, dass es einen Unterschied zwischen einem lokalen System und einem Produktionssystem gibt. Ich habe ein Dutzend Test-Push-Benachrichtigungen mit immer größerer Irritation gesendet ...
Es stellte sich heraus, dass nicht nur ich, sondern das gesamte Team Nachrichten erhalten haben. Mir wurde gesagt, dass Testnachrichten von allen im Team empfangen wurden. Pfannkuchen! Na gut ... Die Firma ist technisch, jeder hat alles verstanden.
Aber dann kamen Tweets und E-Mails von Investoren - Nachrichten wurden nicht nur innerhalb des Teams, sondern auch an die gesamte Nutzerbasis übertragen.
Ups ...
Dann habe ich zum letzten Mal in meinem Leben schmutzige / humorvolle / abweisende Testnachrichten von Push-Benachrichtigungen geschrieben.
@jeroenheijmans :
"Bitte machen Sie die Kontrollkästchen rund, aber Sie können mehrere Optionen auswählen."
@endlife :
2005 arbeitete ich an einer Webanwendung für eine Kette von DVD-Verleihgeschäften - sie wechselte von den Client / Server-Anwendungen, die für die Einwahl erforderlich waren, zu einer einzelnen Online-Anwendung. Am Starttag stellte ich fest, dass die von den Client-Datenbanken synchronisierte zentrale Datenbank vollständig zerstört wurde. Niemand hat die Datenintegrität getestet.
Mitarbeiter von Niederlassungen nannten mich: "Wir sehen Menschen aus anderen Städten in unserem System, aber unsere sind nicht dabei."
Ich verbrachte einen Tag damit, über VNC eine Verbindung zu lokalen Computern herzustellen, Datenbank-Dumps mit lokalen MySQL-Administratoren zu erstellen und manuell eine zentrale Datenbank zu erstellen. Und das alles nach den schmerzhaften zwei Tagen, in denen das System in Betrieb genommen wurde.
In diesen drei Tagen hörte ich siebzig Mal David Bowies Let's Dance.
@sillywampa :
Ich habe einmal ein Benutzerkennwort in einer Produktions-MySQL-Datenbank aktualisiert, aber vergessen, ein Konstrukt hinzuzufügen
WHERE
, sodass sich alle Benutzerkennwörter geändert haben. Nach 15 Minuten erhielten wir Anrufe und E-Mails von Firmenkunden, die sich nicht anmelden konnten.
@sygint :
Das Formular zur Bereinigung der Benutzeroberfläche wurde neu geschrieben, wodurch das Hinzufügen neuer Kreditkarten auf der mobilen Website des Fortune 500-Unternehmens für einen Monat verhindert wurde. Wahrscheinlich hat niemand diese über die App hinzugefügt, da wir keine Beschwerden erhalten haben. Das Problem wurde von einem Nachwuchsentwickler bemerkt, selbst die QS-Abteilung wusste nichts davon.
Ein anderes Mal hat der Client mir nicht gehorcht und eine kaputte Vorlage auf den laufenden Server geschoben. Sie haben in einer Stunde 70.000 Dollar verloren. Diesmal war es nicht einmal in meiner Nähe, lol.
@marcelcutts :
An heißen Tagen bei einem Startup habe ich ein Spiel namens Zombies, Run! erstellt, das sehr beliebt war und mehrere Millionen zahlende Spieler hatte. Nachdem ich einmal unermessliche technische Schulden angehäuft hatte, kopierte und fügte ich die falsche Version der Django-Konfigurationsdatei ein und verlor das Datenbankgeheimnis.
Natürlich habe ich es in der Produktion gemacht und ich hatte keine Backups. Als ich merkte, was passiert war, erzählte ich dem CEO davon und verließ gerade das Büro. Ich dachte nicht, dass wir das Unternehmen retten könnten, indem wir jedem Benutzer eine SMS mit dem Titel „Hallo, zahlen Sie noch einmal“ schreiben, und ich hatte die Debatte über technische Schulden satt. Es stellte sich heraus, dass ich recht hatte.
Am nächsten Morgen lag ich im Bett und überlegte, wie ich die Entropie des Geheimnisses verringern könnte. Als ich einen weiteren Fehler machte und das Geheimnis in mein Terminal einfügte, war es die ganze Zeit in meiner Geschichte. Zwei Negative bejahen.
Kommentar zum Tweet: Ich habe dieses Spiel einmal gespielt, es hatte eine Menge seltsamer Fehler.
@marcelcutts : Nicht überrascht, ich bin ein schrecklicher Entwickler.
@ JosDeBerdt :
Ich hatte ein System mit mehreren Standorten, in dem Inhalte von einer Website auf eine andere übertragen werden konnten. Während des Tests habe ich nicht bemerkt, dass ich dem Link zur Produktion gefolgt bin und "Inhalt aktualisieren" gestartet habe, ohne die Seiten-ID anzugeben ... Alle Seiten auf jeder Site bestanden dann aus einem einzigen Wort "Testen". Dies war in den Tagen, bevor Versionskontrollsysteme existierten und Änderungen sofort per FTP auf den Produktionsserver übertragen wurden.
@chrisalesant :
In meinem ersten Front-End-Job wurde ich gebeten, eine lange Liste von E-Mails zu erstellen, also habe ich alles mit Divs, Animationen und Flexbox erstellt. Nach ungefähr zwei Wochen führte die Marketingabteilung eine Qualitätskontrolle durch und sagte, dass sie in drei Tagen alles von Grund auf neu auf Tischen und Inline-Stilen erledigen würden.
Kirsche auf dem Kuchen: Das Design sollte ein pixelgenaues Layout für den Outlook-Client haben.
@johnhutch :
Ich habe an einer dedizierten E-Commerce-Plattform für ein Fortune 500-Unternehmen gearbeitet. Hunderte von Entwicklern arbeiten an Dutzenden internationaler Kopien mehrerer Marken. Der Code wird den ganzen Tag ohne Unterbrechung übertragen.
Stellen Sie sich also mein Entsetzen vor ...
als ich die Nachricht erhielt, dass ich meinen gesamten Git-Zweig / meine gesamte Umgebung zerstört habe. Es stellt sich heraus, dass ich beim Zusammenführen den Zweig, in dem ich mich befinde, durcheinander gebracht habe (verwenden Sie nicht '.' Leute. Geben Sie Zweignamen immer explizit an).
@ MongooseDoom :
Ich benutze ein Wacom-Tablet anstelle einer Maus, weil das für mich bequemer ist. Eines Tages zog ich unabsichtlich einen Ordner in einen anderen Ordner auf dem Produktionsserver. Es gab keine Aufzeichnungen darüber, was ich getan habe, daher hat eine andere Person lange gebraucht, um es herauszufinden. Und ich habe es zweimal gemacht.
An einem anderen regnerischen Freitagabend habe ich versehentlich eine SQL-Tabelle gelöscht.
Dann fand ich natürlich heraus, dass unsere Backup-Strategie gebrochen war.
Glücklicherweise war dies vor der Zeit des verzögerten Ladens und ich hatte eine Registerkarte mit 400 Werten geöffnet, die ich dann manuell einfügte.
Ich bin normalerweise ein Agnostiker, aber ich erinnere mich, dass ich an diesem Tag gebetet habe, dass Firefox nicht abstürzen würde, bis ich Screenshots aller Werte auf dieser Seite gemacht habe!
Werbung
VDSina bietet sichere Server unter Linux oder Windows - wählen Sie eines der vorinstallierten Betriebssysteme oder installieren Sie es von Ihrem eigenen Image.