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 ...
fuente
Respuestas:
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á.
fuente
Error tipográfico
Pasé tres días completos en esta parte:
¿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íaerror_log
y enalerts
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 unif
.fuente
Pensar que la programación se trata principalmente de construir cosas nuevas y geniales desde cero.
fuente
Mi mayor error fue pensar que programar es dinero fácil ...
fuente
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.
fuente
cuando phpmyadmin preguntó:
"¡Estás a punto de DESTRUIR una base de datos completa! ¿Realmente quieres DERRAR BASE DE DATOS xxx?"
Presioné Enter.
fuente
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.
fuente
He hecho esto:
(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.
fuente
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.
fuente
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.
fuente
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
fuente
Por otro lado, era una aplicación VB6 de cinco años.
fuente
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.
fuente
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.
fuente
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
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
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.
fuente
Usar en
==
lugar deequals
para la comparación de cadenas en Javafuente
==
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/…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? :-(
fuente
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.
fuente
A solicitud del gerente, copié
/etc/sudoers
de una máquina a otra (aunque no hubiera solucionado el problema en cuestión, pero eso no viene al caso). Desafortunadamente, solíasudo
mover 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íasudo
y 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 ...fuente
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 archivosomedir/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: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
open
y 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.
fuente
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 :)
fuente
fuente
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!
fuente
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:
Y haría exactamente lo que parece.
Afortunadamente no tengo usuarios (suspiro), así que supongo que no fue un gran riesgo de seguridad.
fuente
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.
fuente