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


33

Simile alla domanda che ho letto su Server Fault, qual è l'errore più grande che tu abbia mai commesso in una posizione relativa all'IT. Alcuni esempi di amici:

Avevo bisogno di fare un po 'di lavoro su un sito di produzione, quindi ho deciso di copiare il database live sul sito beta. Piuttosto standard, ma quando sono andato al sito beta stava ancora tirando fuori informazioni obsolete. OOPS! Avevo copiato il database beta sul sito live! Grazie a dio per i backup.

E per me, ho creato un modulo per un evento che doveva svolgersi durante un determinato intervallo di tempo. I partecipanti compilerebbero il modulo per avere la possibilità di vincere e invieremo agli organizzatori dell'evento un CSV dal database. Sono entrato nel database e ho trovato SOLO 1 ENTRATA, MIA. Al momento dell'indagine, sembra che abbia dimenticato una chiave di incremento automatico e, a causa della configurazione del server, non è stato possibile ripristinare i dati persi.

Sono consapevole che questa domanda è simile a quelle su Stack Overflow ma quelle che ho trovato sembravano ricevere risposte generiche anziché storie vere :)

Qual è l'errore / errore di codifica più grande di sempre ...


6
domande sulla guinness!
Junior M

Perché o perché questa domanda è stata chiusa? Sento la necessità di aggiungere il mio grosso errore: ho rimosso un sito Web LIVE per tre ore (ovvero 500 stato HTTP) dopo averlo distribuito in produzione dopo aver ricevuto il comando NON DI ESEGUIRE LA PRODUZIONE. Peggio ancora, ho cercato di nascondere l'errore, ma il cliente ha notato e non sembrava molto felice.
Maria Ines Parnisari,

Facile per me. Pagati prelievi di investimento ma convertiti in centesimi due volte. Pagato 3 mil invece di 30k. Secondo classificato - clausola SQL errata dove. Notificato a 4k persone che i loro investimenti da $ 1 a $ 10 sono cresciuti di $ 1800 durante la notte. Ovviamente alcuni di questi clienti andarono e spesero i soldi. Recuperato finanziariamente abbastanza rapidamente. La fiducia e il senso di colpa infranti non sono mai andati via. Come recuperare: assumersi la responsabilità. Ammetti il ​​tuo errore. Non dare la colpa a nient'altro anche se ci fossero fattori che contribuiscono. Ciò è stato accolto con comprensione e impegno del team per risolverlo. Il cliente ha apprezzato l'onestà.
Reasurria,

Risposte:


54

Emissione di un aggiornamento SQL con una clausola WHERE "non valida" che corrispondeva a tutto.

Lezione imparata: emettere sempre prima un SELEZIONA per vedere cosa verrà modificato.


15
Oppure imposta autocommit su false in modo da poter vedere quante righe sarebbero interessate.
Yevgeniy Brikman,

2
Oh, l'ho fatto. Molto brutto ...
Glenatron,

4
Haha Penso che tutti quelli con un po 'di SQL in mano lo abbiano fatto in qualche momento, me compreso
billy.bob

3
Ecco perché gli aggiornamenti dovrebbero essere eseguiti prima su dev! Nessuna correzione rapida direttamente al prod. Ed essere molto grato per le tabelle di controllo se le hai quando lo fai.
HLGEM,

13
L'ho fatto una volta per resettare la password di qualcuno. Dopo aver impostato la password di tutti sulla stessa cosa, ho semplicemente detto al mio capo che il supporto tecnico avrebbe ricevuto molte telefonate e che avremmo dovuto dire al chiamante che dovevamo cambiare la password per motivi di sicurezza.
Barry Brown,

36

Typo di

Ho trascorso tre giorni solidi su questo pezzo:

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 del else if. Non riuscivo a capire perché i miei commenti rimossi non venivano rimossi. Scavato nel database, la richiesta AJAX che stavo usando, variabili POST, era presente error_loge alerts ovunque . Ho 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 è compilata o pre-controllata da qualcosa. Anche errori come questo sarebbero difficili su un linguaggio compilato. Cambia a ==in =e improvvisamente hai un incarico all'interno di un if.


8
Qui è dove strumenti come Resharper possono davvero ripagare da soli - questo lo avrebbe evidenziato come un avvertimento e ti avrebbe spinto a rimuoverlo.
Yaakov Ellis,

24
Il titolo è un gioco di parole (previsto)? : o
Agos,

3
@Rogue Coder: la differenza tra virgolette singole e doppie è minuscola. È un abuso di tempo passare i cicli cerebrali a preoccuparsene. Vedi il test in fondo a phpbench.com
Joeri Sebrechts,

2
@ back2dos: Errr ... giusto. Quindi consigli di abbandonare tutte quelle lingue menzionate a favore di haXe? Qualcosa che è apparso per la prima volta nel 2005? Vai avanti con quello.
Josh K,

10
Grazie per l'argomento a favore di One True Brace Style. +1
eswald,

28

Pensare che la programmazione riguardi principalmente la creazione di nuove fantastiche cose da zero.


1
Quando ho iniziato ho pensato anch'io. Poi ho imparato che c'è molto più mantenimento degli altri di ogni altra cosa. Ecco perché provo ora a scrivere il miglior codice (con commenti) che posso.

2
C'è ancora un sacco di nuovo codice da scrivere. Molti progetti open source richiedono la codifica da zero che implementa la stessa funzionalità di un sistema chiuso.
PP.

23

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


27
Se sei entrato nella programmazione per i soldi, dovresti ottenere una nuova carriera. Non che i soldi non ci siano, lo è, ma hai bisogno dell'amore ossessivo per la programmazione che hanno i veri sviluppatori, o ti
esaurirai

1
Hai fatto un buon punto. Non sono davvero entrato nella programmazione per i soldi, ma ho davvero pensato che sarebbe stato molto più facile viverci. La programmazione è la mia passione e lo farei anche se dovessi pagare.
Marcelo de Aguiar,

4
Lo stesso vale per la maggior parte delle professioni. Onestamente non capisco le persone che vanno all'università per "imparare a programmare". Ho iniziato a 14 anni con K&R. Sono andato all'università per "imparare l'elettronica" - ma indovina un po ', sono finito comunque come programmatore. Si sono insegnati i migliori musicisti. I migliori programmatori si sono insegnati. È la vita.
PP.

amen fratello, amen
Misters il

23

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

Per essere onesti, il mio datore di lavoro deve tuttavia condividere alcune delle colpe. Avevano l'unica copia di quel database memorizzata sul Mac SE (sì, questo era tanto tempo fa) che mi hanno dato (un nuovo dipendente, primo lavoro fuori dal college) come mia postazione di lavoro e non avevano mai preso in considerazione l'idea di fare un backup.

Quindi, pensando che fosse una copia del DB, l'ho trascinato nel cestino. A causa delle dimensioni del file, è stato eliminato immediatamente. Alla fine l'abbiamo recuperato dopo aver pagato un importo ingannevole a un servizio di ripristino dei dati, ma per circa 5 giorni non siamo riusciti a evadere o fatturare alcun ordine e non abbiamo avuto modo di accedere alle informazioni su alcun cliente. Praticamente ha portato la società (3 persone) a un punto morto.


15
Ahia. Nota per se stessi: esegui sempre un backup: anche se è già previsto un backup.
Kramii Ripristina Monica il

1
@Karmii: miglior consiglio, senza dubbio.
Chris,

@Kramii - Sono contento di aver imparato quella lezione all'inizio della mia carriera.
JohnFx,

Non sei stato licenziato?
Mateen Ulhaq,

3
C'era abbastanza colpa per andare in giro. All'epoca ero solo un bambino e probabilmente più ingenuo di quanto sarei oggi nel ritenere che una vera azienda farebbe qualcosa di così stupido come mettere l'unica copia del DB sul mio desktop. L'esperienza mi ha dimostrato che è assurdo sopravvalutare la preparazione del mio datore di lavoro, anche in una grande azienda.
JohnFx,

15

quando phpmyadmin ha chiesto:

"Stai per distruggere un database completo! Vuoi davvero DROP DATABASE xxx?"

Ho premuto Invio.


26
Un ottimo esempio di quando la programmazione difensiva avrebbe contribuito a prevenire problemi importanti. Se stai facendo qualcosa in cui le ripercussioni potrebbero essere gravi, come ad esempio la caduta di tabelle / database, imposta automaticamente la risposta dell'utente su "No" in modo che debbano essere ATTIVAMENTE d'accordo sull'azione.
Hugo,

6
@Hugo: +1. Avevo un professore alla uni (ex Unix / database sysadmin) che diceva "ogni volta che fai qualcosa di serio, togli sempre le mani dalla tastiera e siediti su di esse per circa dieci secondi e pensa a cosa sta per accadere".
Tavoli Bobby,

1
@Hugo: vado più lontano - "Stai per DISTRUGGERE un database completo! Se vuoi davvero DROP DATABASE xxx, digita DELETE:"
Loren Pechtel,

3
@Hugo @Loren Pechtel - "Stai per DISTRUGGERE un database completo! Una ricerca web del tuo login ha rivelato più occorrenze di 'lol', e quindi questa azione è stata negata. Vedi l'amministratore o impara a comunicare."
detenere il

15

Non sono sicuro che sia stato il mio "più grande errore", ma sicuramente memorabile. Nella mia prima settimana o due in un nuovo lavoro, mi è stato assegnato un piccolo "miglioramento delle funzionalità" che comportava la modifica del tipo di ordinamento di alcuni elementi in una delle pagine più popolari del sito. Non avevo familiarità con la base di codici, 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 nel QA senza problemi ed è diventato attivo.

Ho avuto un 1 a 1 con il mio capo lo stesso giorno e con un grande sorriso in faccia, si è congratulato con me per aver reso il mio primo "lungometraggio" in diretta così presto dopo essermi unito. Entrambi abbiamo guardato mentre visitava la pagina corrispondente per vedere la funzione in azione. Il caricamento della pagina ha impiegato 47 secondi. Il mio cuore affondò. Ha aggiornato la pagina: 53 secondi. Il suo sorriso svanì. Sono tornato alla mia scrivania e ho trascorso una lunga serata debug e inviando patch critiche sul sito live.

Si scopre che uno dei metodi dall'aspetto innocuo che ho aggiunto era una chiamata di servizio remota che ha provocato almeno un hit DB. In ogni confronto Per chiamare. Quindi, in una pagina in cui venivano ordinati oltre 2000 articoli, stavo realizzando ~ 6000 (nlogn) hit DB. Ahia.


Il DB è stato colpito in modo evidente nel tuo codice o si è verificato in qualche metodo / proprietà che stavi chiamando?
dbkk,

Il successo del DB era in realtà nascosto dietro un metodo che sembrava un semplice getter: ho aggiunto una chiamata myObj.getFoo () nel metodo compareTo. JavaDoc sulla sottoclasse pertinente ha notato la possibilità di un hit DB, ma JavaDoc sull'interfaccia myObj (che è quello che ho visto quando ho scritto il codice) non ha menzionato nulla del genere. In entrambi i casi, penso che sia una chiara dimostrazione di (a) test inadeguati da parte mia e (b) cosa può succedere se non si seguono buone convenzioni di denominazione.
Yevgeniy Brikman,

più probabilmente è stato il caso (molto comune) che l'ambiente di test non fosse rappresentativo dell'ambiente di produzione. L'hai testato, ha funzionato decentemente, quindi hai concluso che era buono, non sapendo mai (e non avresti potuto, quindi) che il database di test contenesse solo una frazione dei dati contenuti nel database di produzione.
jwenting

15

Ho fatto questo:

rm -rf /bin

(In realtà, non ho fatto esattamente questo. Sarebbe stupido e ingiustificabile. L'ho fatto in un modo più sottile e indiretto che ha portato essenzialmente all'esecuzione di quel comando.)

Inutile dire che il sistema Unix era inutilizzabile dopo quel punto e doveva essere reinstallato. All'epoca ero un amministratore di sistema e il ragazzo anziano che mi sorvegliava era comprensivo.

Qualcosa di buono è venuto dall'esperienza. Ho imparato a elencare le directory senza avere nessuno dei comandi / bin da usare.

echo *

+1 ha appreso trucchi come simulare ls e cat usando solo i costrutti di shell Bourne dalla modalità single-user su un sistema DEC-BSD
Arcege,

11

Il cliente desidera un mailout a tutta la sua base di utenti che in sostanza invierà un'e-mail personalizzata su un evento e quando fa clic su un collegamento nell'e-mail li accederà automaticamente a un modulo con la metà dei loro dati compilati.

Scrivo il codice, collaudo il codice, funziona bene, i collegamenti funzionano, è abbastanza fluido. Dopo aver verificato e ricontrollato tutto, passo all'elenco live e partiamo.

L'elenco live è significativamente più grande dei miei dati di esempio e il server di posta cade. Devo interrompere la mia app console, quindi realizzare che dovrò riavviarla da dove si è fermata. Fortunatamente questa funzione non è troppo difficile da aggiungere e ho registrato a quali utenti è già stato inviato il mailout, quindi dopo aver riacceso e funzionante il mailserver e riconfigurato il codice per poter riavviare dal punto in cui è fallito in precedenza e mettere in pausa per far recuperare il mailserver, andiamo via.

Sfortunatamente in qualche modo sono riuscito a non aggiornare tutto il mio codice nel modo giusto. 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 altro, quindi se un utente avesse fatto clic sul collegamento sarebbero arrivati ​​a un forma che conteneva i dati personali di qualcun altro dai dettagli del proprio account. E questo in un settore di nicchia in cui c'erano un sacco di piccole imprese competitive nell'elenco.

Non ci volle 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.


+1 per dati reali significativamente più grandi dei dati campione :-(
nakedfanatic

IMO questo è uno dei peggiori> _ <
sevenseacat,

7

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


14
In realtà il tuo errore più grande non è stato lo sviluppo di un database delle dimensioni appropriate. Non utilizzare mai una piccola base di dati di prova per sviluppare un database di produzione di grandi dimensioni. Non puoi scrivere codice performante a meno che tu non abbia la base di dimensioni corrette.
HLGEM,

7

Ho rotto un laser scanner da 100.000 $.

Il controller stava memorizzando le posizioni come numeri interi, quindi ho diviso tutto per 10000 per ottenere la posizione effettiva in pollici.

Quando l'ultima cifra era uno 0, è stata omessa, quindi l'asse Z era 10 volte troppo lontano.

Ne seguì Hillarity


6

"Dobbiamo fare una riscrittura."

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


5

Consentito al mio manager di farmi un sopracciglio mi ha battuto nel lasciare un lavoro che amavo. Avrei dovuto lasciargli incasinare le cose, essere licenziato e poi avrei dovuto intensificare e ripulire i pezzi. Invece ho lasciato e me ne sono pentito da allora.


17
I manager raramente vengono licenziati per queste cose. Per raggiungere il livello di manager devi essere molto bravo a coprire la tua parte posteriore; probabilmente sei diventato il capro espiatorio nel momento in cui hai lasciato la compagnia. Forse avresti potuto gestirlo in modo diverso, ma non trattenerti.
Mark Ransom,

se avesse incasinato, saresti stato incolpato e licenziato (o almeno avresti avuto un periodo miserabile fino a quando non avessi abbandonato la vergogna).
jwenting

4

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

Nel mezzo della sua demo, mentre stavo facendo un po 'di lavoro sul database, ho apportato una modifica al database live e ho aggiornato tutte le domande del sondaggio in ogni sondaggio con lo stesso testo, qualcosa come "Questa è una domanda di prova" a causa di un difetto in il DOVE. Io e il mio collega abbiamo cercato il backup e abbiamo provato, sperando che non stesse dimostrando quella sezione del sito in quel momento, ma aspettando l'email in maiuscolo che non è mai apparso.

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


3

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

Dopo circa 30 minuti ho iniziato a notare che alcuni dei nuovi articoli avevano delle foto strane, sembrava che la gente avesse usato alcune delle vecchie foto sgranate che erano sul sistema, ma ho ignorato che pensando che forse non c'era niente di più nuovo che avevano quello che volevano.

Altri 10 minuti dopo ho notato che gli articoli in primo piano stavano cambiando in modo casuale per qualche motivo. A questo punto ho capito cosa stava succedendo. L'Intranet utilizza l'autenticazione di Windows e alcune funzioni (come la selezione di immagini di notizie e elementi in primo piano) sono state codificate per rispondere alle richieste GET HTTP. Il controllo link aveva utilizzato la mia autenticazione ed era passato alle pagine sul lato amministratore, facendo fedelmente il suo lavoro e seguendo ogni link trovato, inclusi quelli come

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


7
Questo sembra essere il modo in cui molte persone imparano quando è appropriato usare GET e quando è appropriato usare POST
Oli

D'accordo, stavo per iniziare a lavorare sulla riqualificazione della rete intranet e questo ha posto saldamente l'uso corretto di GET e POST in cima ai requisiti. ASP MVC aiuta anche a renderlo facile e intuitivo.
Chao,

1
non proprio il tuo errore, ma comunque una bella storia :-)
Dean Harding,

3

Finora il mio unico errore torcente allo stomaco, che aumentava la frequenza cardiaca, improvvisamente diventa caldo e pruriginoso era l'esecuzione di una query UPDATE senza una clausola WHERE. Fortunatamente c'è stato un backup degli ultimi 15 minuti e i dati non sono cambiati molto spesso, il che significa che sono stato in grado di ripristinare completamente i dati entro 10 minuti senza che nessuno lo sapesse.

Niente di male, ma ho avuto alcune chiamate ravvicinate. Sono e rimangono vicini perché ho sentito abbastanza storie dell'orrore in questo settore che tutto ciò che faccio che potrebbe rovinare le cose va bene.


1
Ragazzi, facendo errori DB non avete mai chiamato il rollback?
Jé Queue,

@Xepoch, questo aiuta solo se hai iniziato una transazione
CaffGeek

1
@Chad, generalmente non dovremmo presumere che tutte le chiamate di dati debbano essere implicitamente transazionali?
Jé Queue,

2
@Xepoch, non dare mai per scontato.
CaffGeek,

1
@Char, ho una preferenza personale per mantenere tutte le interazioni DB all'interno delle transazioni. Coloro che non lo fanno, corrono rischi o hanno casi aziendali a cui non importa. Il presupposto della specifica e MANDATE sono che inizieremo e gestiremo progetti di codice con la gestione transazionale dei DB.
Jé Queue,

3

Per un robot su cui lavoro, conserviamo un file di registro di ogni corsa. Abbiamo il robot e un simulatore, entrambi che generano queste cartelle di registro. I file di registro del simulatore sono inutili, ma i file di registro 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 sembra essere 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 sul computer operativo fossero quelli inutili generati dal simulatore e li cancellassero. Abbiamo perso tutti i vecchi registri perché non c'era un backup adeguato.


8
Dannazione ... Io voglio lavorare su robot! Tutto ciò che faccio tutto il giorno è creare siti Web scadenti.
Dan Ray,

2

Ho creato una versione del nostro software sul mio computer anziché sul computer di costruzione in quanto era più veloce (circa 4 ore più veloce, il che significava che poteva andare in QA quel giorno invece del successivo) e l'editore lo voleva al più presto.

Avevo una definizione speciale per il debug sul mio computer che causava un bug che non veniva rilevato nel QA. L'hanno rilevato solo alla fine di 4 settimane di test di convalida, ma è stato abbastanza male da non riuscire nella convalida.


2

Eliminare un database di produzione per errore anziché 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 big data.


Ho fatto collaborare un collega. Solo lui pensava di far cadere la sua copia locale e non quella. Lavoravamo tutti, poi lo sentimmo andare "OH SH ** !!!!" È stato un pomeriggio divertente.
Tyanna,

2

L'errore più grande che abbia mai fatto è stato non avere il mio lavoro nel controllo del codice sorgente fuori dalla mia macchina di sviluppo. Il mio disco rigido si è bloccato e ho perso settimane di lavoro. È una lezione appresa e qualcosa che non lascerò mai più accadere.


non è un mio errore, ma correlato. La società per cui lavoravo aveva uno dei suoi server web compromesso, dando a un intruso l'accesso root al server di controllo versione (DMZ? Whazda?), Dove eseguì prontamente un "rm -r /"
jwenting

2

Utilizzo ==anziché equalsper il confronto delle stringhe in Java


13
Questo è l'errore più grande che tu abbia mai fatto?
Chris,

Questo è molto più di un problema in Java, dove ==c'è un confronto di riferimento. In C #, ==fa un confronto di valore sulle stringhe, come .Equals() quello detto, ci sono alcune differenze, vedi la risposta di Jon Skeet qui: stackoverflow.com/questions/3678792/…
Tim Goodman,

2
@Tim: che ancora non risponde come sia stato "l'errore più grande che tu abbia mai fatto" ... Almeno un po 'più di contesto sulle conseguenze sarebbe bello ...
Dean Harding,

Se la risposta più in alto riguarda l'errore di battitura, in che modo la mia risposta qui è diversa? Se sei stato principiante, fare questo errore è quasi impossibile eseguire il debug e potrebbe frustrarti tutto il giorno.
nanda,

@Dean: Non è stato l'errore più grande che abbia mai fatto ... Stavo solo chiarendo la differenza di comportamento qui con C # vs Java
Tim Goodman,

1

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


2
Sono in parte d'accordo con te, solo perché qualcuno ha più esperienza (in anni) non significa che sia un programmatore migliore. Ci sono molti programmatori là fuori, che possono scrivere "xx anni di esperienza" sul loro curriculum ma non hanno idea di cosa stiano facendo.
Bobby,

È più probabile che abbiano riscontrato uno stupido errore lungo la strada, come quelli elencati qui, che renderà lo sviluppatore più attento però
johnc,

Per essere chiari, l'errore non era avere questo atteggiamento. L'errore è stato DIRE che hai quell'atteggiamento.
Dan Ray,

Ho voluto dirlo a molte persone nel corso degli anni.
Reasurria,

1

Questo è successo a un collega questo mese.

Stava risolvendo un bug che si verificava quando si inviava un SMS a molti cellulari. Di solito questi messaggi non vengono effettivamente inviati per risparmiare sui costi, ma a causa di una configurazione errata nel nostro database sono stati inviati.

Costo: salario di un mese del traffico SMS.


è economico! :)
jwenting

1

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


1

Volevo creare file di metadati per ogni file in una directory (cioè per ogni file somedir/foo.bin, vorrei creare un file somedir/foo.bin.meta). Per qualche stupida ragione 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 su una directory sul mio hard disk con diversi concerti di dati personali. Solo dopo averlo eseguito mi sono reso conto che avevo dimenticato di modificare effettivamente il nome del file prima di passarlo aopen 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 mia lezione.


1

Lavoravo per un'azienda che gestisce l'assistenza clienti di una delle più grandi società di telecomunicazioni della Svezia. Sul nostro server avevamo alcuni software che regolavano la coda delle chiamate in entrata, quante chiamate potremmo ricevere e così via. Se non funzionava non avremmo ricevuto alcuna chiamata e i clienti non avrebbero ricevuto alcun supporto.

Comunque, ho apportato una (minore) modifica al software. Avrei potuto aspettare che una finestra di servizio cambiasse, 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 ho potuto sostituirlo. Iniziando a prendere il panico decido di riavviare rapidamente la macchina (ero in remoto). Purtroppo nel panico faccio invece clic su "installa aggiornamenti e arresta": 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ò, una volta abbiamo eseguito il debug del sistema di risposta vocale automatica e reindirizzato il numero sul suo cellulare. L'unica cosa che ha dimenticato di riaccendere, ha avuto il giorno libero il giorno successivo e ha lasciato il cellulare al lavoro. Ci stiamo chiedendo perché suonasse costantemente quel giorno :)


1

Argh, 23:00, chiusura di laboratorio, veloce, veloce ...

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

Dio no! FFS. Intendevo PS tu ****!


Ci scusiamo per lo stile del linguaggio, è necessario per l'autenticità.
Orbling

0

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


Perché il voto negativo?
Gopi,

0

Ho creato un linguaggio di template del sito , in una prima versione di cui tutti i parametri HTTP sono stati implicitamente espansi come variabili. Ciò significa che potresti scrivere un URL come:

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

E farebbe esattamente quello che sembra.

Fortunatamente non ho utenti (sospiro), quindi immagino non sia stato un grosso rischio per la sicurezza.


0

Sicuramente contrattempo TSQL - troppe istruzioni TSQL in una finestra dell'editor. Ero un po 'stanco, e la gente mi interrompeva a destra e sinistra, e ho emesso un comando che aggiornava 47.000 registrazioni indirizzo, città, stato e zip - oops. Tuttavia, è stato risolto in circa 25 minuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.