Il più grande errore che tu abbia mai fatto [chiuso]

33

Simile alla domanda che ho letto su Server Fault, qual è l'errore più grave che tu abbia mai fatto in una posizione correlata all'IT. Alcuni esempi da amici:

I needed to do some work on a production site so I decided to copy over the live database to the beta site. Pretty standard, but when I went to the beta site it was still pulling out-of-date info. OOPS! I had copied the beta database over to the live site! Thank god for backups.

E per me, ho creato un modulo per un evento che doveva essere tenuto durante un intervallo di tempo specifico. I partecipanti compilerebbero il modulo per la possibilità di vincere e invieremo agli organizzatori dell'evento un CSV dal database. Sono entrato nel database e ho trovato SOLO 1 INGRESSO, IL MIO. Dopo aver esaminato, sembra che abbia dimenticato una chiave di incremento automatico e, a causa della configurazione del server, non è stato possibile recuperare i dati persi.

Sono consapevole che questa domanda è simile a quella di Stack Overflow, ma quelli che ho trovato sembrano ricevere risposte generiche invece di storie reali:)

Qual è il più grande errore / errore di codifica mai ...

    
posta Brandon Wamboldt 23.05.2017 - 14:40
fonte

37 risposte

54

Emissione di un UPDATE SQL con una clausola WHERE "cattiva" che corrisponde a tutto.

Lezione appresa: emettere sempre una SELECT per vedere prima cosa cambierà.

    
risposta data 25.10.2010 - 05:02
fonte
36

di Typo

Abbiamo trascorso tre giorni solidi su questo blocco:

if($func == "remove")
{
    $p->comments[$index]->removed = true;
    $p->save();
}
else if($func == "approve");
{
    $p->comments[$index]->approved = true;
    $p->comments[$index]->removed = false;
    $p->save();
}

Vedi l'errore? È il punto e virgola alla fine di else if . Non riuscivo a capire perché i miei commenti rimossi non stessero rimuovendo. Scavato nel database, la richiesta AJAX che stavo usando, le variabili POST, aveva error_log e alerts ovunque . Finito per riscrivere il metodo e ha funzionato. Poi ho fatto un diff con la versione originale e ho notato il punto e virgola.

Gli errori di battitura sono i più difficili da rintracciare in una lingua che non è stata compilata o pre-verificata da qualcosa. Anche errori come questo sarebbero difficili in un linguaggio compilato. Cambia un == in = e all'improvviso hai un'assegnazione all'interno di if .

    
risposta data 20.04.2011 - 00:07
fonte
28

Pensa che la programmazione sia principalmente basata sulla creazione di nuove fantastiche cose da zero.

    
risposta data 26.10.2010 - 07:32
fonte
23

Il mio più grande errore è stato pensare che la programmazione sia denaro facile ...

    
risposta data 25.10.2010 - 22:12
fonte
23

Cancellato accidentalmente il database che memorizzava tutte le informazioni sui nostri clienti, la cronologia degli ordini e le fatture che risalivano all'inizio della società (per diversi anni).

Per essere onesti, però, il mio datore di lavoro deve condividere parte della colpa. Avevano l'unica copia di quel database memorizzata sul Mac SE (sì è stato tanto tempo fa) che mi hanno dato (una nuova dipendente, prima uscita dall'università) come mia workstation e non avevo mai nemmeno preso in considerazione l'idea di fare un backup.

Quindi, pensando che fosse una copia del DB, l'ho trascinato nel cestino. A causa della dimensione del file lo ha eliminato immediatamente. Alla fine l'abbiamo recuperato dopo aver pagato una quantità non corretta a un servizio di ripristino dei dati, ma per circa 5 giorni non abbiamo potuto soddisfare o fatturare alcun ordine e non abbiamo avuto modo di accedere alle informazioni su alcun cliente. Ha praticamente bloccato l'azienda (3 persone).

    
risposta data 13.01.2011 - 20:23
fonte
15

quando phpmyadmin ha chiesto:

"Stai per DISTRUGGERE un database completo! Vuoi veramente DROP DATABASE xxx?"

Ho premuto Invio.

    
risposta data 25.10.2010 - 04:52
fonte
15

Non sono sicuro che sia stato il mio "errore più grande", ma sicuramente memorabile. Durante la mia prima o due settimane in un nuovo lavoro, mi è stato assegnato un piccolo "miglioramento delle funzionalità" che comportava la modifica dell'ordine di alcuni articoli su una delle pagine più popolari del sito. Non avevo molta familiarità con la base di codice, ma ho trovato rapidamente il Comparatore pertinente e ho aggiunto chiamate a un paio di metodi dall'aspetto innocuo all'interno del metodo compareTo senza pensarci troppo. Il codice è stato testato localmente e in QA senza problemi ed è andato in diretta.

Ho avuto un 1 su 1 con il mio capo lo stesso giorno e con un grande sorriso sul suo volto, si è congratulato con me per aver ottenuto il mio primo "film" dal vivo poco dopo essere entrato. Entrambi abbiamo guardato mentre visitava la pagina corrispondente per vedere la funzione in azione. La pagina impiegò 47 secondi per caricarsi. Il mio cuore affondò. Ha rinfrescato la pagina: 53 secondi. Il suo sorriso svanì. Sono tornato alla mia scrivania e ho trascorso una lunga sessione di debugging e ho spinto le patch critiche sul sito live.

Risulta che uno dei metodi innocui che ho aggiunto era una chiamata al servizio remoto che ha provocato almeno un hit del DB. In ogni confronto Per chiamare. Quindi, su una pagina in cui erano stati ordinati oltre 2000 articoli, stavo registrando ~ 6000 (nlogn) hit DB. Ouch.

    
risposta data 25.10.2010 - 07:36
fonte
15

Ho fatto questo:

rm -rf /bin

(In realtà, non l'ho fatto esattamente . Sarebbe stupido e imperdonabile, l'ho fatto in un modo più sottile e indiretto che ha portato essenzialmente all'esecuzione del comando.)

Inutile dire che il sistema Unix era inutilizzabile dopo quel punto e doveva essere reinstallato. All'inizio ero un sysadmin e il senior che mi supervisionava mi stava capendo.

Sono venuti alcuni buoni dell'esperienza. Ho imparato come elencare le directory senza avere nessuno dei comandi / bin da usare.

echo *
    
risposta data 25.10.2010 - 18:33
fonte
11

Il cliente vuole un mailout alla sua intera base di utenti che invierà fondamentalmente un'e-mail personalizzata su un evento e quando farà clic su un link nell'e-mail lo registrerà automaticamente in un modulo con metà dei dati compilati.

Scrivo il codice, collaudo il codice, funziona bene, i collegamenti funzionano, è piuttosto semplice. Dopo aver controllato e ricontrollato tutto, passo alla lista dei live e via.

La lista dal vivo è significativamente più grande dei miei dati di esempio e il server di posta cade. Devo interrompere la mia app per console, quindi mi rendo conto che dovrò riavviarlo da dove si è fermato. Fortunatamente questa funzione non è troppo difficile da aggiungere e ho registrato gli utenti a cui il mailout è già passato, quindi avere il server di posta in servizio e riconfigurare il codice per poter riavviare dal punto in cui non era riuscito in precedenza e mettere in pausa per lasciare che il mailserver raggiunga, via, andiamo.

Purtroppo in qualche modo sono riuscito a non aggiornare tutto il codice correttamente. Non ricordo i dettagli di ciò che ho fatto, ma la query per ottenere i dati dell'utente stava ottenendo un set di dati, la query per generare l'hash ne stava ottenendo un'altra, quindi se un utente ha fatto clic sul link otterrebbe un modulo che conteneva qualcun altro dati personali dai loro dettagli dell'account. E questo in un settore di nicchia in cui c'erano molte piccole imprese competitive nella lista.

Non ci è voluto molto perché il telefono iniziasse a squillare nell'ufficio dei clienti ...

Questo è stato l'unico errore finora che mi ha portato a offrire le mie dimissioni.

    
risposta data 25.10.2010 - 13:25
fonte
7

Una volta ho usato un cross join senza filtro. Ha funzionato bene sul database di test con una frazione dei dati. Quando è stato distribuito, ha terminato con ~ 60 milioni di righe in una query media.

    
risposta data 25.10.2010 - 02:26
fonte
7

Mi sono schiantato uno scanner laser da 100.000 $.

Il controller stava memorizzando le posizioni come intero così ho diviso tutto per 10000 per ottenere la posizione effettiva in pollici.

Quando l'ultima cifra era uno 0, veniva omessa, quindi l'asse Z era 10 volte più lontano.

Seguì la polarizzazione

    
risposta data 25.10.2010 - 18:51
fonte
6

"We need to do a rewrite."

D'altra parte, era un'app VB6 di cinque anni.

    
risposta data 25.10.2010 - 16:09
fonte
5

Ho permesso al mio manager di fronte di picchiarmi per lasciare un lavoro che amavo. Avrei dovuto lasciargli incasinare le cose, essere licenziato e poi avrei dovuto intensificare e ripulire i pezzi. Invece ho smesso e me ne sono pentito da allora.

    
risposta data 25.10.2010 - 09:43
fonte
4

Sette anni fa il mio capo & il proprietario della società, che non avevo ancora incontrato, era così nuovo al lavoro, in un altro stato stava facendo una demo del nostro sito web di ricerca a un paio di potenziali clienti. Le quote associative erano comprese tra le cifre basse e medie, quindi queste dimostrazioni erano un grosso problema per la nostra neonata compagnia.

Nel bel mezzo della sua demo, mentre stavo facendo del database, ho apportato una modifica al database live e aggiornato ogni domanda di sondaggio in ogni sondaggio allo stesso testo, qualcosa come "Questa è una domanda di prova" a causa di un difetto nel DOVE. Il mio collega e io ci siamo dati da fare per il backup e ci siamo accontentati, sperando che non stesse dimostrando quella sezione del sito in quel momento, ma aspettando che l'e-mail in maiuscolo non fosse mai apparsa.

Il lato positivo è stato il boss finalmente nato per una scatola di sviluppo.

    
risposta data 25.10.2010 - 12:23
fonte
3

Stavo eseguendo il link sleuth di Xenu sulla nostra intranet per cercare di chiarire alcuni dei molti collegamenti interrotti che si sono accumulati nel corso degli anni (la maggior parte, non sorprende, erano i collegamenti dal wiki all'unità di rete condivisa).

Dopo circa 30 minuti ho iniziato a notare che alcuni dei nuovi articoli contenevano alcune immagini strane, sembrava che la gente avesse usato alcune delle vecchie foto di repertorio che erano sul sistema, ma ho ignorato il fatto che forse non c'era proprio qualcosa di più recente che aveva quello che volevano.

Altri 10 minuti dopo ho notato che gli elementi in primo piano stavano cambiando casualmente per qualche motivo. A questo punto mi sono reso conto di cosa stava succedendo. La rete intranet utilizza l'autenticazione di Windows e alcune delle funzioni (come la selezione di immagini di notizie e articoli in primo piano) sono state codificate per rispondere alle richieste HTTP GET. Il controllo dei collegamenti aveva utilizzato la mia autenticazione e aveva eseguito la scansione delle pagine sul lato amministrativo, eseguendo il suo lavoro lealmente e seguendo tutti i link trovati, inclusi quelli come

/admin/displayItems/icon_update.asp?image=eastereggs.jpg&itemID=3174

    
risposta data 25.10.2010 - 12:39
fonte
3

Finora il mio unico errore di torcimento dello stomaco, aumento della frequenza cardiaca, improvvisamente caldo e prurito stava eseguendo una query UPDATE senza una clausola WHERE. Fortunatamente c'è stato un backup negli ultimi 15 minuti e i dati non sono cambiati molto spesso, il che significa che sono riuscito a ripristinare completamente i dati entro 10 minuti senza che nessuno lo sapesse.

Niente di male ma ho avuto alcune chiamate ravvicinate. Sono e restano chiamate ravvicinate perché ho sentito abbastanza storie dell'orrore in questo settore che tutto quello che faccio che potrebbe rovinare tutto diventa una buona scoperta.

    
risposta data 25.10.2010 - 13:04
fonte
3

Per un robot su cui lavoro, teniamo un file di registro di ogni esecuzione. Abbiamo il robot e un simulatore, entrambi che generano queste cartelle di registro. I file di log del simulatore sono inutili, ma i file di log dei robot sono molto utili e vengono archiviati per sempre.

Poiché il robot stesso ha uno spazio limitato sul disco rigido, vengono trasferiti su un altro computer e memorizzati lì. Questo computer è il principale computer operativo per comunicare con il robot.

Bene, avevo appena iniziato a lavorare sul robot un paio di mesi prima e non lo sapevo. Pensavo che i log del computer operativo fossero quelli inutili generati dal simulatore e li ho cancellati. Abbiamo perso tutti i vecchi log perché non c'era un backup corretto.

    
risposta data 25.10.2010 - 20:07
fonte
2

Abbiamo costruito una versione del nostro software sul mio computer invece che sul computer di compilazione perché era più veloce (circa 4 ore più veloce, il che significava che poteva passare al QA quel giorno invece del prossimo) e l'editore lo voleva al più presto.

Ho avuto una definizione speciale per il debug sul mio computer che ha causato un bug che non è stato rilevato in QA. Lo hanno rilevato solo alla fine delle 4 settimane di test di convalida, ma è stato abbastanza brutto da fallire nella convalida.

    
risposta data 25.10.2010 - 02:49
fonte
2

Rilasciare un database di produzione per errore invece di una versione di sviluppo. Non ho visto quale server stavo lavorando. Fortunatamente, l'ultimo backup è stato prodotto 4 ore fa e l'utente non ha apportato molte modifiche al sistema, quindi nessuna perdita di dati di grandi dimensioni.

    
risposta data 26.10.2010 - 01:11
fonte
2

Il più grande errore che abbia mai commesso non era il mio lavoro nel controllo del codice sorgente fuori dalla mia macchina di sviluppo. Il mio disco rigido si è schiantato e ho perso settimane di lavoro. È una lezione difficile da imparare e qualcosa che non lascerò mai più succedere.

    
risposta data 26.10.2010 - 03:12
fonte
2

Uso di == anziché equals per il confronto delle stringhe in Java

    
risposta data 26.10.2010 - 06:45
fonte
1

Ho detto al mio direttore che solo perché è VECCHIO e ha più anni di esperienza di quello che ho non significa che lo rispetterò. L'unica cosa che rispetterei è ABILITÀ. Non dovevo affrontare le conseguenze di una simile affermazione patetica perché ero un programmatore junior di. Guardando indietro questo sembra essere il mio più grande errore. Dov'era il mio buon senso \ l'umiltà ?? : - (

    
risposta data 25.10.2010 - 08:13
fonte
1

Questo è successo a un collega questo mese.

Stava correggendo un bug che si verificava quando si inviava un SMS a molti telefoni cellulari. Solitamente questi messaggi non verranno effettivamente inviati per risparmiare sui costi ma a causa di un errore di configurazione nel nostro database sono stati inviati.

Costo: un mese di salario del traffico SMS.

    
risposta data 25.10.2010 - 17:56
fonte
1

Su richiesta di un manager, ho copiato /etc/sudoers da una macchina all'altra (anche se non avrebbe risolto il problema, ma questo è oltre il punto). Sfortunatamente, ho usato sudo per spostare il file copiato in posizione, senza notare che il suo proprietario e le sue autorizzazioni erano completamente sbagliati. A quel punto, nessuno aveva una shell root aperta, nessuno poteva sudo e nessuno poteva accedere come root perché la sua shell era impostata su /bin/false . E la macchina si trovava in un data warehouse remoto ...

    
risposta data 25.10.2010 - 19:13
fonte
1

Volevo creare file di metadati per ogni file in una directory (ad esempio, per ogni file somedir/foo.bin , vorrei creare un file somedir/foo.bin.meta ). Per qualche stupido motivo ho deciso di creare i file aprendo e chiudendo un flusso di file tramite Python:

for fn in os.listdir(path):
    open(os.path.join(path, fn), 'w').close()

Per qualche ragione ancora più stupida ho pensato che fosse intelligente testare questo script contro una directory sul mio harddrive con diversi concerti di dati personali su di esso. Solo dopo averlo eseguito mi sono reso conto che avevo dimenticato di modificare il nome del file prima di passarlo a open e che avevo appena troncato ogni singolo file in quella directory (ouch).

Fortunatamente quello era su un personal computer e non ha causato alcun danno a qualcosa di importante, ma ho comunque imparato la lezione.

    
risposta data 25.10.2010 - 21:42
fonte
1

Lavoravo per una società che gestisce uno dei maggiori clienti svedesi delle aziende di telecomunicazioni. Sul nostro server avevamo alcuni software che regolavano la coda delle chiamate in entrata, quante chiamate potevamo prendere e così via. Se non funzionava, non ricevevamo chiamate e i clienti non ricevevano supporto.

Aaaaanyway, ho fatto una modifica (minore) al software. Avrei potuto aspettare una finestra di servizio per cambiarlo, ma ho pensato "Ehi, ci vorrà un minuto per riavviare il servizio, perché preoccuparsi, la fortuna aiuta gli audaci". Quindi l'ho riavviato, sfortunatamente il thread era bloccato quindi non potevo sostituirlo. Iniziare al panico Decido di riavviare rapidamente la macchina (stavo facendo il servizio remoto). Purtroppo nel mio panico faccio clic su "installa aggiornamenti e spegnimento" invece: P

Inutile dire che non c'era molto supporto clienti in Svezia per la prossima mezz'ora prima che riuscissimo a riavviarlo.

Un collega era peggio di me, però, abbiamo eseguito il debug del sistema di risposta vocale automatizzato una notte e reindirizzato il numero sul suo cellulare. L'unica cosa che ha dimenticato di tornare indietro, ha avuto il giorno libero il giorno successivo e ha lasciato il suo cellulare al lavoro. Ci stiamo chiedendo perché suonasse costantemente quel giorno:)

    
risposta data 13.01.2011 - 22:55
fonte
1

Argh, 11pm, lab shutting, quick, quick...

$ enscript -o midterm.hs midterm.hs
$ submit midterm.hs
Error: submission is empty

God no! FFS. I meant PS you ****!

    
risposta data 13.01.2011 - 23:27
fonte
0

Qualche tempo prima, durante la codifica del JS, non ero in grado di distinguere tra "1" (uno) e "l" "piccola L". Anche quando stavo scrivendo questa risposta sembra quasi uguale in editor!

    
risposta data 25.10.2010 - 07:35
fonte
0

Ho creato una lingua per i template dei siti , in una versione precedente di cui tutti i parametri HTTP erano implicitamente espansi come variabili. Ciò significava che potresti scrivere un URL come:

page.vis?body=<body><p>Oh dear</p></body>

E farebbe esattamente come sembra.

Fortunatamente non ho utenti (sospiro), quindi suppongo che non sia un rischio per la sicurezza.

    
risposta data 25.10.2010 - 17:03
fonte
0

Sicuramente disfatta di TSQL - troppe istruzioni TSQL in una finestra dell'editor. Era un po 'stanco, e la gente mi interrompeva a destra ea manca, e ho emesso un comando che aggiornava 47.000 record di indirizzo, città, stato e zip-ops. Aveva risolto in circa 25 minuti, però.

    
risposta data 25.10.2010 - 22:02
fonte

Leggi altre domande sui tag