El error más grande que has cometido [cerrado]


33

Similar a la pregunta que leí en Server Fault, ¿cuál es el error más grande que has cometido en un puesto relacionado con TI? Algunos ejemplos de amigos:

Necesitaba trabajar en un sitio de producción, así que decidí copiar la base de datos en vivo al sitio beta. Bastante estándar, pero cuando fui al sitio beta todavía estaba obteniendo información desactualizada. ¡Vaya! ¡Copié la base de datos beta en el sitio en vivo! Gracias a Dios por las copias de seguridad.

Y para mí, creé un formulario para un evento que se realizaría durante un intervalo de tiempo específico. Los participantes completarían el formulario para tener la oportunidad de ganar, y nosotros enviaríamos a los organizadores del evento un CSV desde la base de datos. Entré en la base de datos y encontré SOLO 1 ENTRADA, LA MÍA. Al investigar, parece que olvidé una clave de incremento automático y, debido a la configuración del servidor, no había forma de recuperar los datos perdidos.

Sé que esta pregunta es similar a las de Stack Overflow, pero las que encontré parecían recibir respuestas genéricas en lugar de historias reales :)

¿Cuál es el error / error de codificación más grande jamás ...


66
preguntas guinness!
Junior M

¿Por qué o por qué se cerró esta pregunta? Siento la necesidad de agregar mi propio gran error: eliminé un sitio web EN VIVO durante tres horas (es decir, el estado 500 HTTP) después de implementarlo en Producción después de que me dijeron específicamente que NO DESPLIEGUE A LA PRODUCCIÓN. Lo peor de todo es que traté de ocultar el error, pero el cliente se dio cuenta y no parecía muy feliz.
Maria Ines Parnisari

Fácil para mi. Pagó retiros de inversión pero se convirtió a centavos dos veces. Pagó 3 mil en lugar de 30k. Subcampeón: cláusula where SQL incorrecta. Notificó a 4k personas que sus inversiones de $ 1 a $ 10 crecieron en $ 1800 durante la noche. Obviamente, algunos de estos clientes fueron y gastaron el dinero. Recuperado bastante rápido financieramente. La confianza y la culpa rotas nunca desaparecieron realmente. Cómo recuperarse: asumir la responsabilidad. Admite tu error. No culpe a nada más, incluso si hubo factores contribuyentes. Esto se cumplió con la comprensión y el esfuerzo del equipo para solucionarlo. El cliente agradeció la honestidad.
Reasurria

Respuestas:


54

Emitir una ACTUALIZACIÓN de SQL con una cláusula WHERE 'incorrecta' que coincide con todo

Lección aprendida: Siempre emita un SELECCIONAR primero para ver qué cambiará.


15
O establezca la confirmación automática en falso para que pueda ver cuántas filas se verían afectadas.
Yevgeniy Brikman

2
Oh, ya hice eso. Muy desagradable ...
glenatron

44
Jaja, creo que todos con algo de SQL en su haber lo han hecho en algún momento, incluido yo
Billy.bob

3
¡Es por eso que las actualizaciones deben hacerse primero en dev! No hay correcciones directas directamente a la producción. Y esté muy agradecido por las tablas de auditoría si las tiene cuando hace esto.
HLGEM

13
Lo hice una vez para restablecer la contraseña de alguien. Después de configurar la contraseña de todos para lo mismo, simplemente le dije a mi jefe que el soporte técnico recibiría muchas llamadas telefónicas y que debíamos decirle a la persona que llamaba que teníamos que cambiar su contraseña por razones de seguridad.
Barry Brown

36

Error tipográfico

Pasé tres días completos en esta parte:

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();
}

¿Ves el error? Es el punto y coma al final de la else if. No pude entender por qué mis comentarios eliminados no se eliminaron. Cavó en la base de datos, la solicitud AJAX que estaba usando, las variables POST, tenía error_logy en alerts todas partes . Terminé reescribiendo el método y funcionó. Luego hice una diferencia con la versión original y noté el punto y coma.

Los errores tipográficos son los más difíciles de rastrear en un idioma que no está compilado o verificado previamente por algo. Incluso errores como este serían difíciles en un lenguaje compilado. Cambia ==a =y de repente tienes una asignación dentro de un if.


8
Aquí es donde las herramientas como Resharper realmente pueden pagarse por sí mismas: lo habría resaltado como una advertencia y le habría pedido que lo eliminara.
Yaakov Ellis

24
¿Es el título un juego de palabras (previsto)? : o
Agos

3
@Rogue Coder: la diferencia entre comillas simples y dobles es muy pequeña. Es un mal uso del tiempo pasar ciclos cerebrales preocupándose por eso. Vea la prueba al final de phpbench.com
Joeri Sebrechts

2
@ back2dos: Errr ... correcto. ¿Entonces recomienda dejar todos los idiomas mencionados a favor de haXe? ¿Algo que apareció por primera vez en 2005? Adelante con eso.
Josh K

10
Gracias por el argumento a favor del estilo One True Brace. +1
eswald

28

Pensar que la programación se trata principalmente de construir cosas nuevas y geniales desde cero.


1
Cuando comencé, yo también tenía este pensamiento. Entonces aprendí que hay mucho más mantenimiento de otras personas que cualquier otra cosa. Es por eso que trato de escribir el mejor código (con comentarios) que pueda.

2
Todavía hay un montón de código nuevo para escribir. Muchos proyectos de código abierto requieren una codificación desde cero que implemente la misma funcionalidad que un sistema cerrado.
PP.

23

Mi mayor error fue pensar que programar es dinero fácil ...


27
Si te metiste en la programación por dinero, deberías tener una nueva carrera. No es que el dinero no esté allí, lo está, pero necesitas el amor obsesivo por la programación que tienen los verdaderos desarrolladores, o te
agotarás

1
Hiciste un buen punto. Realmente no me metí en la programación por dinero, pero realmente pensé que sería mucho más fácil vivir de ello. La programación es mi pasión y lo haría incluso si tuviera que pagar.
Marcelo de Aguiar

44
@johnc mismo iría para la mayoría de las profesiones. Sinceramente, no entiendo a las personas que van a la universidad para "aprender programación". Empecé cuando tenía 14 años con K&R. Fui a la universidad para "aprender electrónica", pero adivina qué, terminé como programador de todos modos. Los mejores músicos se enseñaron a sí mismos. Los mejores programadores se enseñaron a sí mismos. Así es la vida.
PP.

amen brother, amen
Misters

23

Eliminó accidentalmente la base de datos que almacenaba toda la información de nuestros clientes, el historial de pedidos y las facturas desde el inicio de la empresa (valor de varios años).

Para ser justos, mi empleador tiene que compartir parte de la culpa. Tenían la única copia de esa base de datos almacenada en el Mac SE (sí, esto fue hace mucho tiempo) que me dieron (un nuevo empleado, primer trabajo fuera de la universidad) como mi estación de trabajo y nunca habían considerado hacer una copia de seguridad.

Entonces, pensando que era una copia del DB, lo arrastré a la papelera. Debido al tamaño del archivo, lo eliminó de inmediato. Finalmente lo recuperamos después de pagar una cantidad impía a un servicio de restauración de datos, pero durante unos 5 días no pudimos completar ni facturar ningún pedido, y no tuvimos forma de acceder a la información sobre ningún cliente. Prácticamente llevó a la (compañía de 3 personas) a un punto muerto.


15
Ay. Nota personal: siempre realice una copia de seguridad: incluso si ya se supone que debe haber una copia de seguridad.
Kramii reinstala a Monica el

1
@Karmii: El mejor consejo, sin duda.
Chris

@Kramii: Me alegro de haber aprendido esa lección al principio de mi carrera.
JohnFx

¿No te despidieron?
Mateen Ulhaq

3
Había suficiente culpa para todos. Yo era solo un niño en ese entonces y probablemente más ingenuo de lo que sería hoy al asumir que una compañía real haría algo tan tonto como poner la única copia de la base de datos en mi escritorio. La experiencia me ha demostrado que es una tontería sobreestimar la preparación de mi empleador, incluso en una gran empresa.
JohnFx

15

cuando phpmyadmin preguntó:

"¡Estás a punto de DESTRUIR una base de datos completa! ¿Realmente quieres DERRAR BASE DE DATOS xxx?"

Presioné Enter.


26
Gran ejemplo de cuándo la programación defensiva habría ayudado a prevenir problemas importantes. Si está haciendo algo en el que las repercusiones podrían ser graves, como tal vez dejar caer tablas / bases de datos, la respuesta del usuario es "No" de manera predeterminada, de modo que deben estar DE ACUERDO ACTIVAMENTE con la acción.
Hugo

66
@Hugo: +1. Tenía un profesor en la universidad (ex Unix / administrador de bases de datos) que solía decir "cada vez que hagas algo serio, siempre quita las manos del teclado y siéntate en ellas durante unos diez segundos y piensa en lo que va a suceder".
Bobby Tables

1
@Hugo: voy más allá: "¡Estás a punto de DESTRUIR una base de datos completa! Si realmente quieres DROP DATABASE xxx, escribe DELETE:"
Loren Pechtel el

3
@Hugo @Loren Pechtel - "¡Estás a punto de DESTRUIR una base de datos completa! Una búsqueda web de tu inicio de sesión ha dado lugar a múltiples apariciones de 'lol' y, por lo tanto, esta acción está siendo denegada. Consulta a tu administrador o aprende a comunicarte".
desviarse el

15

No estoy seguro de que haya sido mi "mayor error", pero definitivamente uno memorable. En mi primera semana o dos en un nuevo trabajo, me asignaron hacer una pequeña "mejora de características" que implicaba modificar el orden de clasificación de algunos elementos en una de las páginas más populares del sitio. No estaba muy familiarizado con la base del código, pero rápidamente encontré el comparador relevante y agregué llamadas a un par de métodos inofensivos dentro del método compareTo sin pensar demasiado en ello. El código se probó localmente y en QA sin problemas y se activó.

Tuve un 1 a 1 con mi jefe ese mismo día y con una gran sonrisa en su rostro, me felicitó por tener mi primer "largometraje" en vivo tan pronto después de unirme. Ambos miramos mientras visitaba la página correspondiente para ver la función en acción. La página tardó 47 segundos en cargarse. Mi corazon se hundio. Actualizó la página: 53 segundos. Su sonrisa se desvaneció. Regresé a mi escritorio y pasé una larga noche depurando y enviando parches críticos al sitio en vivo.

Resulta que uno de los métodos de aspecto inofensivo que agregué fue una llamada de servicio remoto que resultó en al menos un golpe de base de datos. En cada comparación para llamar. Entonces, en una página donde se ordenaban más de 2,000 artículos, estaba haciendo ~ 6000 (nlogn) hits de DB. Ay.


¿Fue obvio el golpe de DB en su código, o ocurrió en algún método / propiedad que estaba llamando?
dbkk

El hit DB estaba realmente oculto detrás de un método que parecía un simple getter: agregué una llamada myObj.getFoo () en el método compareTo. El JavaDoc en la subclase relevante notó la posibilidad de un golpe de DB, pero el JavaDoc en la interfaz myObj (que es lo que miré al escribir el código) no mencionó nada de eso. En cualquier caso, creo que es una demostración clara de (a) pruebas inadecuadas en mi nombre y (b) lo que puede suceder si no sigue las convenciones de nomenclatura.
Yevgeniy Brikman

más probablemente fue el caso (muy común) de que el entorno de prueba no fuera representativo del entorno de producción. Lo probó, funcionó decentemente, por lo que concluyó que era bueno, sin saber nunca (y no podría haberlo hecho) que la base de datos de prueba contenía solo una fracción de los datos contenidos en la base de datos de producción.
Jwenting

15

He hecho esto:

rm -rf /bin

(En realidad, no hice exactamente eso. Eso sería tonto e inexcusable. Lo hice de una manera más sutil y rotunda que resultó en la ejecución de ese comando).

No hace falta decir que el sistema Unix quedó inutilizable después de ese punto y tuvo que ser reinstalado. Yo era un administrador de sistemas principiante en ese momento y el hombre mayor que me supervisaba era comprensivo.

Algo bueno vino de la experiencia. Aprendí a enumerar directorios sin tener que usar ninguno de los comandos / bin.

echo *

+1 aprendió trucos como simular ls y cat usando solo construcciones de shell Bourne del modo de usuario único en un sistema DEC-BSD
Arcege

11

El cliente desea un envío de correo a toda su base de usuarios que básicamente enviará un correo electrónico personalizado sobre un evento y cuando hace clic en un enlace en el correo electrónico los registrará automáticamente en un formulario con la mitad de sus datos completados.

Escribo el código, pruebo el código, funciona bien, los enlaces funcionan, es bastante sencillo. Después de verificar y verificar dos veces todo, cambio a la lista en vivo y nos vamos.

La lista en vivo es significativamente más grande que mis datos de muestra y el servidor de correo se cae. Tengo que detener mi aplicación de consola, luego me doy cuenta de que tendré que reiniciarla desde donde se detuvo. Afortunadamente, esta característica no es demasiado difícil de agregar y he registrado a qué usuarios ya se ha enviado el correo, por lo que he vuelto a poner en funcionamiento el servidor de correo y configuré el código para poder reiniciarlo desde el punto en que falló anteriormente y pausarlo para que el servidor de correo se ponga al día, nos vamos.

Desafortunadamente, de alguna manera me las arreglé para no hacer que todo mi código se actualice correctamente. No recuerdo los detalles de lo que hice, pero la consulta para obtener los datos del usuario obtenía un conjunto de datos, la consulta para generar el hash obtenía otro, por lo que si un usuario hacía clic en el enlace, accedería a un formulario que contenía los datos personales de otra persona de los detalles de su cuenta. Y esto en una industria de nicho donde había muchas pequeñas empresas competitivas en la lista.

El teléfono no tardó mucho en comenzar a sonar en la oficina de los clientes ...

Ese fue el único error hasta el momento que me llevó a ofrecer mi renuncia.


+1 para datos reales significativamente mayores que los datos de muestra :-(
nakedfanatic

OMI, este es uno de los peores> _ <
sevenseacat

7

Una vez usé una unión cruzada sin filtro. Funcionó bien en la base de datos de prueba con una fracción de los datos. Cuando se implementó, terminó con ~ 60 millones de filas en una consulta promedio.


14
En realidad, su mayor error fue no desarrollar una base de datos del tamaño apropiado. Nunca use una pequeña base de datos de prueba para desarrollar una gran base de datos de producción. No puede escribir código de rendimiento a menos que tenga la base de datos del tamaño correcto.
HLGEM

7

Choqué un escáner láser de 100 000 $.

El controlador estaba almacenando posiciones como números enteros, así que dividí todo por 10000 para obtener la posición real en pulgadas.

Cuando el último dígito era un 0, se omitió, por lo que el eje Z estaba 10 veces más lejos.

Hillarity se produjo


6

"Necesitamos hacer una reescritura".

Por otro lado, era una aplicación VB6 de cinco años.


5

Permití que mi gerente me adelantara para que dejara un trabajo que amaba. Debería haberlo dejado estropear las cosas, despedirme y luego debería haber intensificado y limpiar las piezas. En cambio, renuncié y me he arrepentido desde entonces.


17
Los gerentes rara vez son despedidos por tales cosas. Para llegar al nivel de gerente debes ser muy bueno cubriendo tu trasero; probablemente te convertiste en el chivo expiatorio en el momento en que dejaste la compañía. Tal vez podría haberlo manejado de manera diferente, pero no se castigue por eso.
Mark Ransom

si lo hubiera estropeado, te habrían culpado y despedido (o al menos pasar un mal momento hasta que abandones en desgracia).
Jwenting

4

Hace siete años, mi jefe y propietario de la compañía, a quien aún no conocía, era tan nuevo en el trabajo, estaba en otro estado haciendo una demostración de nuestro sitio web de investigación a un par de clientes potenciales. Las cuotas de membresía oscilaron entre las cinco y cinco cifras, por lo que estas demostraciones fueron un gran problema para nuestra empresa incipiente.

En el medio de su demostración, cuando estaba haciendo un trabajo de base de datos, hice un cambio en la base de datos en vivo y actualicé cada pregunta de la encuesta al mismo texto, algo así como "Esta es una pregunta de prueba" debido a una falla en el DONDE. Mi compañero de trabajo y yo nos apresuramos por la copia de seguridad y nos encogimos de hombros, esperando que no estuviera demostrando esa sección del sitio en ese momento, sino esperando el correo electrónico en mayúsculas que agradecidamente nunca apareció.

El lado bueno fue que el jefe finalmente surgió para una caja de desarrollo.


3

Estaba ejecutando el detective de enlaces de Xenu en nuestra intranet para tratar de limpiar algunos de los muchos enlaces rotos que se han acumulado a lo largo de los años (la mayoría, como era de esperar, eran enlaces de la wiki a la unidad de red compartida).

Después de unos 30 minutos, comencé a notar que algunos de los nuevos elementos tenían algunas imágenes extrañas, parecía que la gente había usado algunas de las fotos antiguas granuladas que estaban en el sistema, pero ignoré ese pensamiento de que tal vez simplemente no había nada más nuevo que tenían lo que querían

Otros 10 minutos más tarde noté que los elementos destacados estaban cambiando aleatoriamente por alguna razón. En este punto me di cuenta de lo que estaba sucediendo. La intranet utiliza la autenticación de Windows y algunas de las funciones (como seleccionar imágenes de noticias y elementos destacados) se codificaron para responder a las solicitudes HTTP GET. El verificador de enlaces había estado usando mi autenticación y se había arrastrado a páginas en el lado del administrador, haciendo su trabajo con lealtad y siguiendo cada enlace que encontró, incluidos los que

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


77
Parece que así es como mucha gente aprende cuándo es apropiado usar GET y cuándo es apropiado usar POST
Oli

De acuerdo, estaba a punto de comenzar a trabajar en el desarrollo de la intranet y esto coloca firmemente el uso adecuado de GET y POST en la parte superior de los requisitos. ASP MVC también ayuda a hacer esto fácil e intuitivo.
Chao

1
no es realmente tu error, pero una buena historia :-)
Dean Harding

3

Hasta ahora, mi único error que hacía que el estómago se torciera, aumentara el ritmo cardíaco, de repente se pusiera caliente y picara era ejecutar una consulta de ACTUALIZACIÓN sin una cláusula WHERE. Afortunadamente, hubo una copia de seguridad de los últimos 15 minutos y los datos no cambiaron muy a menudo, lo que significa que pude restaurar completamente los datos en 10 minutos sin que nadie lo supiera.

Nada mal pero he tenido algunas llamadas cercanas. Son y siguen siendo llamadas cercanas porque he escuchado suficientes historias de terror en esta industria que todo lo que hago que podría arruinar las cosas tiene un buen repaso.


1
¿Ustedes que cometen errores de base de datos nunca llaman reversión?
Jé Queue

@Xepoch, eso solo ayuda si comenzó una transacción
CaffGeek

1
@Chad, ¿no deberíamos asumir que todas las llamadas de datos deberían ser implícitamente transaccionales?
Jé Queue

2
@Xepoch, nunca asumas.
CaffGeek

1
@Char, tengo una preferencia personal para mantener todas las interacciones de DB dentro de las transacciones. Los que no lo hacen, conllevan riesgos o tienen casos comerciales que no les importan. La suposición de la especificación y los MANDATOS son que comenzaremos y mantendremos proyectos de código con la gestión de bases de datos transaccionales.
Jé Queue

3

Para un robot en el que trabajo, guardamos un archivo de registro de cada ejecución. Tenemos el robot y un simulador, ambos que generan estas carpetas de registro. Los archivos de registro del simulador son inútiles, pero los archivos de registro de los robots son muy útiles y se almacenan para siempre.

Debido a que el robot en sí tiene un espacio limitado en el disco duro, se transfieren a otra computadora y se almacenan allí. Esta computadora resulta ser la computadora operativa principal para comunicarse con el robot.

Bueno, recién había comenzado a trabajar en el robot un par de meses antes y no lo sabía. Pensé que los registros en la computadora operativa eran inútiles generados por el simulador y los borré. Perdimos todos los registros antiguos porque no había una copia de seguridad adecuada.


8
Maldición ... ¡ Quiero trabajar en robots! Todo lo que hago todo el día es crear sitios web pésimos.
Dan Ray

2

Construí una versión de nuestro software en mi computadora en lugar de la computadora de compilación, ya que era más rápido (aproximadamente 4 horas más rápido, lo que significaba que podría pasar al control de calidad ese día en lugar del siguiente) y el editor lo quiso lo antes posible.

Tenía una definición especial para la depuración en mi computadora que causó un error que no se detectó en el control de calidad. Solo lo detectaron al final de 4 semanas de pruebas de validación, pero fue lo suficientemente malo como para fallar la validación.


2

Descarte una base de datos de producción por accidente en lugar de una versión de desarrollo. No vi en qué servidor estaba trabajando. Afortunadamente, la última copia de seguridad se produjo hace 4 horas y el usuario no realizó muchos cambios en el sistema, por lo que no hubo grandes pérdidas de datos.


Hice que un compañero de trabajo hiciera esto. Solo que pensó que estaba dejando caer su copia local, no la prod. Todos estábamos trabajando y luego lo escuchamos decir 'OH SH ** !!!!' Esa fue una tarde divertida.
Tyanna

2

El error más grande que cometí fue no tener mi trabajo en control de fuente fuera de mi máquina de desarrollo. Mi disco duro se bloqueó y perdí semanas de trabajo. Es una lección aprendida y algo que nunca dejaré que vuelva a suceder.


No es mi error, pero relacionado. La empresa para la que trabajé tenía uno de sus servidores web comprometidos, lo que le daba acceso a un intruso root al servidor de control de versiones (DMZ? Whazda?), Donde ejecutó rápidamente un "rm -r /"
comenzó el

2

Usar en ==lugar de equalspara la comparación de cadenas en Java


13
¿Ese es el error más grande que has cometido?
Chris

Esto es mucho más un problema en Java, donde ==hay una comparación de referencia. En C #, ==hace una comparación de valores en cadenas, igual que .Equals() Dicho esto, hay algunas diferencias, vea la respuesta de Jon Skeet aquí: stackoverflow.com/questions/3678792/…
Tim Goodman

2
@Tim: eso todavía no responde cómo este fue "el error más grande que has cometido" ... Al menos un poco más de contexto sobre las consecuencias sería bueno ...
Dean Harding

Si la respuesta más positiva es sobre error tipográfico, ¿en qué se diferencia mi respuesta aquí? Si ha sido principiante, cometer este error es casi imposible de depurar y podría frustrarlo todo el día.
nanda

@Dean: No fue el error más grande que he cometido ... Solo estaba aclarando la diferencia de comportamiento aquí con C # vs Java
Tim Goodman

1

Le dije a mi director que solo porque sea VIEJO y tenga más años de experiencia que yo no significa que lo respete. Lo único que respetaría es HABILIDAD. No tuve que enfrentar las consecuencias de una declaración tan patética puede ser porque era un programador junior que. Mirando hacia atrás, este parece ser mi mayor error. ¿Dónde estaba mi sentido común \ humildad? :-(


2
Estoy de acuerdo en parte con usted, solo porque alguien tenga más experiencia (en años) no significa que sea un mejor programador. Hay muchos programadores que pueden escribir 'xx años de experiencia' en su currículum pero no tienen idea de lo que están haciendo.
Bobby

Son más probabilidades de haber recogido un error estúpido a lo largo del camino, como las mencionadas aquí, que hará que el desarrollador de una manera más cuidadosa, aunque
johnc

Para ser claros, el error no fue tener esa actitud. El error fue decir que tienes esa actitud.
Dan Ray

He querido decir esto a muchas personas a lo largo de los años.
Reasurria

1

Esto le sucedió a un colega este mes.

Estaba reparando un error que ocurría cuando enviabas un SMS a muchos teléfonos celulares. Por lo general, estos mensajes no se enviarán realmente para ahorrar costos, pero debido a una configuración incorrecta en nuestra base de datos, sí se enviaron.

Costo: salario de un mes de tráfico de SMS.


¡eso es barato! :)
Jwenting

1

A solicitud del gerente, copié /etc/sudoersde una máquina a otra (aunque no hubiera solucionado el problema en cuestión, pero eso no viene al caso). Desafortunadamente, solía sudomover el archivo copiado a su lugar, sin darme cuenta de que su propietario y los permisos estaban completamente equivocados. En ese momento, nadie tenía un shell de root abierto, nadie podía sudoy nadie podía iniciar sesión como root porque su shell estaba configurado en /bin/false. Y la máquina estaba en un almacén de datos remoto ...


1

Quería crear archivos de metadatos para cada archivo en un directorio (es decir, para cada archivo somedir/foo.bin, me gustaría crear un archivo somedir/foo.bin.meta). Por alguna estúpida razón, decidí crear los archivos abriendo y cerrando una secuencia de archivos a través de Python:

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

Por alguna razón aún más estúpida, pensé que era inteligente probar este script contra un directorio en mi disco duro con varios datos personales. Solo después de ejecutarlo me di cuenta de que me había olvidado de modificar el nombre del archivo antes de pasarlo openy que acababa de truncar cada archivo en ese directorio (ouch).

Afortunadamente, eso estaba en una computadora personal y no causó ningún daño a nada importante, pero aún así aprendí mi lección.


1

Estaba trabajando para una empresa que se encarga de la atención al cliente de una de las compañías de telecomunicaciones más grandes de Suecia. En nuestro servidor teníamos un software que regulaba la cola de llamadas entrantes, cuántas llamadas podíamos atender, etc. Si no funcionaba, no recibíamos llamadas y los clientes no recibían asistencia.

Aaaaanyway, hice un cambio (menor) al software. Podría haber esperado una ventana de servicio para cambiarlo, pero pensé "Oye, va a tomar un minuto reiniciar el servicio, por qué molestarse. La fortuna favorece a los audaces". Así que lo reinicié, desafortunadamente el hilo estaba bloqueado, así que no pude reemplazarlo. Comenzando a entrar en pánico, decido reiniciar rápidamente la máquina (me estaba conectando a distancia). Desafortunadamente, en mi pánico, hago clic en "instalar actualizaciones y apagar": P

No hace falta decir que no hubo mucha atención al cliente en Suecia durante la siguiente media hora antes de que pudiéramos reiniciarlo.

Sin embargo, un colega era peor que yo, depuramos el sistema automatizado de respuesta de voz una noche y redirigimos el número a su teléfono móvil. Lo único que olvidó es cambiarlo, tuvo el día libre al día siguiente y dejó su teléfono móvil en el trabajo. Nos preguntamos por qué sonaba constantemente ese día :)


1

Argh, 11pm, cierre de laboratorio, rápido, rápido ...

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

¡Dios no! FFS. Me refería a PS, ¡mierda!


Disculpas por el estilo del lenguaje, es necesario para la autenticidad.
Orbling

0

En algún momento antes de codificar el JS, no pude distinguir entre "1" (uno) y "l" "L pequeña". ¡Incluso cuando estaba escribiendo esta respuesta, ambos se ven casi iguales en el editor!


¿Por qué el voto negativo?
Gopi

0

Hice un sitio templating idioma , en una primera versión de la que todos los parámetros HTTP se ampliaron de manera implícita como variables. Esto significaba que podía escribir una URL como:

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

Y haría exactamente lo que parece.

Afortunadamente no tengo usuarios (suspiro), así que supongo que no fue un gran riesgo de seguridad.


0

Definitivamente un error de TSQL: demasiadas declaraciones de TSQL en una ventana del editor. Estaba un poco cansado, y la gente me interrumpía de izquierda a derecha, y emití un comando que actualizó 47,000 registros de dirección, ciudad, estado y código postal. Sin embargo, lo había arreglado en unos 25 minutos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.