Historias de terror de Halloween de desarrolladores web





Antes de Halloween, el desarrollador de pila completa Wes Bose tuiteó a otros programadores para compartir sus historias de terror sobre webdev. Éstos son algunos de ellos ...



@DimitroffPeter :



Mi primer trabajo y mi primera contribución a la producción. Necesito arreglar una utilidad cliente-servidor. Su función es sencilla: tenemos un dispositivo casero desde un router y una PC. El enrutador tiene una CLI y debería mostrar información sobre el estado de la PC. Cosas como systemctl, top, free. El comando se transmite como texto, se ejecuta y el resultado se recibe como texto. Sin embargo, esto se hizo de la manera más horrible posible ...



Los comandos CLI se especifican en XML. Invocan un script Bash con argumentos específicos. El script crea un PIPE en el sistema de archivos y le pasa comandos. El servidor está escrito en C (así es exactamente como el servidor realiza solicitudes al cliente, no al revés). Todos los nombres de variables en el servidor C constan de una letra (x, a, b, q) o tienen una forma general (mem, data). También tiene un montón de pthreads que escriben en las tuberías y sondean en un sistema de archivos con un control de subprocesos completamente CERO. Sin mutex, nada de eso.



Entonces, el subproceso del servidor C sondea la primera tubería y ejecuta el script que abre una sesión SSH con la PC y ejecuta el comando requerido. El resultado se coloca en una tubería más en el sistema de archivos. El servidor C tiene otro hilo que sondea esta tubería. Y mil problemas relacionados. Por ejemplo, no puede averiguar de ninguna manera si el resultado está completo y no espera a que lleguen más datos por la tubería. Tan pronto como lee algo, lo muestra inmediatamente. Debido a esto, se obtuvieron muchos resultados parciales, y las partes restantes de ellos se pegaron al resultado del siguiente comando ...



Pero eso no es todo. El código C estaba esparcido fprintf(s). Si está familiarizado con la familia de funciones printf, se dará cuenta de que se trata simplemente de solicitar un desbordamiento del búfer. Y nos visitaron. Muchas veces.



Echemos otro vistazo a la arquitectura / pila de este magnífico invento:



> CLI

> script sh

> PIPE

> pipe llamando pthread

> script llamando pthread

> script

SSH> sesión SSH para conectarse a la PC

> PIPE 2

> otra lectura de tubería pthread



I reemplazó todo después de la CLI con 30 líneas de Bash usando ncat.







@MichaelDClaar



El proyecto anterior envió todos los informes de errores como correos electrónicos a los desarrolladores. Un pequeño error nos envió tantos correos electrónicos que nuestro proveedor de servicios de correo electrónico clavó nuestra cuenta. Durante medio día, nadie pudo enviar correos electrónicos a los clientes. Nos enviamos spam a unos 5.000 correos electrónicos por minuto.



@dev__adi : Creé



un modo oscuro para nuestro sitio, pero no agregué ningún valor predeterminado para las variables CSS. Se suponía que debíamos agregar el archivo de tema CSS en un solo lugar y todo debería estar bien. Resultó que en otro proyecto no incluimos el archivo de variables del tema y todo se volvió blanco. Afortunadamente, el problema se detectó en preparación para la producción.



@Abdullah_Mzaien :



En mi proyecto de graduación, estaba realmente molesto por su tamaño, así que barajé los archivos.



Creó uno de los comandos de git más extraños, que volverá a comprometer todas las confirmaciones desde el principio.



No hay nada de malo en eso, pero todos estos compromisos asustaron a mi equipo.



@MathiasaurusRex :



Hace unos 10 años, cometí un error tipográfico en la variable de etiqueta de anclaje en una empresa de comercio electrónico del Top 5. Digamos que su dirección es ABC punto com, y todas las etiquetas de anclaje apuntaban a AC punto com. El error se extendió a la sección de descuentos diarios / semanales del sitio. Tomó un par de horas arreglarlo.



Bastante caro salió "oops".



@FcoGT : FcoGT



Los periódicos dejan noticias importantes que pueden suceder que se publiquen tan pronto como ocurra el evento. Cuando Gabriel García Márquez estaba muy enfermo, ya dejaron la noticia de su muerte en la página de inicio. ¡Un amigo mío cometió un error en el condicional y fue enviado!



@ryanfiller_ : Una



vez ejecuténpm publish desde la carpeta incorrecta y envié el repositorio de trabajo privado a npm como un paquete público. Afortunadamente, hay un equipo npm unpublish, si lo detecta lo suficientemente rápido (dentro de las 72 horas). De lo contrario, se quedará allí para siempre ...



@perlilja :



Una vez reinstalé el sistema en mi computadora. Pensé que había creado una copia de seguridad de mi código, pero resultó que no lo era. Se perdió un mes de trabajo. También hay un lado bueno en esto: creo que el nuevo código es mejor.



@petetasker :



hice un concurso para un programa de radio. Creó un formulario a través del cual los usuarios podían enviar respuestas a preguntas semanales. Había un apóstrofe en la respuesta a una de las preguntas semanales. No se han creado publicaciones esta semana ...



@davigiroux_ :



No es mi historia, pero también una aterradora: el tipo que trabajó conmigo hizo una actualización de la base de datos sin un "dónde", por lo que todos los usuarios que se suscribieron a los cursos fueron elegidos el mismo curso. Pasé una mañana entera LLAMANDO a todos para que hicieran el curso que querían, y ese tipo dijo que estaba enfermo.



@jonicious :



En las primeras semanas de mi primer trabajo como desarrollador, otro novato y yo eliminamos todas las claves públicas SSH de la máquina que ejecuta uno de los servicios más críticos.



También mezclé las banderas truey falseapagué la campaña publicitaria con un 50% de descuento para todos los clientes.



@PatZawa :



Estaba escribiendo una función de expresión regular para validar el número de seguro social antes de transferirlo a la base de datos. Sin embargo, antes de realizar la verificación, olvidé realizar el descifrado inverso, razón por la cual se eliminaron casi 10 mil números de pacientes de la base de datos en producción. Pasé los siguientes dos días recuperándome y reinsertándome.



@nishant_ch :



Al comienzo de mi carrera, una vez me conecté accidentalmente a través de Filezilla al servidor equivocado y cargué el sitio web de otra persona en un dominio que funcionaba, y luego me fui a descansar. Después de unas horas, vi que los cambios que hice no se reflejaban en el sitio y me di cuenta de lo que había hecho.



@pjately :



Apagó accidentalmente el servidor el primer día de trabajo de oficina. Ni siquiera me di cuenta hasta que volví a encender el interruptor y el servidor emitió un sonido de arranque, mientras que el director técnico se volvía y preguntaba: "¿Era un servidor?" El segundo día de trabajo fue mucho mejor ... No pudo haber sido peor.



@rrrrrrichard :



escribí un sitio web por dinero a principios de la década de 2000. Depuraba la página de contacto, pensando que había desactivado la entrega en sí. Ese día, el cliente recibió un montón de correos electrónicos de "Adolf G.", "Joseph S." etc. Unas horas más tarde, cortésmente me pidió que me detuviera. ¡Ups!



Al principio, por parte del cliente, pensó que estaba siendo atacado por algún psicópata enojado, porque el cuerpo de las cartas era vulgar. Entonces se dieron cuenta de que alguien había llegado a su sitio web y se pusieron en contacto conmigo. Se pidieron disculpas y se aprendieron lecciones.



@spencer_carli :



Nueva base de datos para mí. Estaba trabajando en la resolución de problemas de notificaciones push y en el proceso pensé que había una diferencia entre un sistema local y un sistema de producción. Envié una docena de notificaciones push de prueba con un grado de irritación cada vez mayor ...



Resultó que no solo yo, sino todo el equipo recibimos mensajes. Me dijeron que todos los miembros del equipo recibieron mensajes de prueba. ¡Tortita! Bueno, está bien ... La empresa es técnica, todos entendieron todo.



Pero luego comenzaron a llegar tweets y correos electrónicos de inversores: los mensajes se transmitieron no solo dentro del equipo, sino también a toda la base de usuarios.



Ups ...



Entonces, por última vez en mi vida, escribí mensajes de prueba abusivos / humorísticos / despectivos de notificaciones push.



@jeroenheijmans :



"Por favor, redondee las casillas de verificación, pero puede elegir varias opciones".



@endlife :



En 2005, estaba trabajando en una aplicación web para una cadena de tiendas de alquiler de DVD; pasaba de las aplicaciones cliente / servidor que se requerían para el acceso telefónico a una única aplicación en línea. El día del lanzamiento, descubrí que la base de datos central sincronizada desde las bases de datos del cliente estaba completamente destruida. Nadie ha probado la integridad de los datos.



Los empleados de las sucursales me llamaron: “Vemos gente de otras ciudades en nuestro sistema, pero las nuestras no están en él”.



Pasé un día conectándome a través de VNC a computadoras locales, creando volcados de base de datos usando administradores de MySQL locales y construyendo manualmente una base de datos central. Y todo esto tras una dolorosa puesta en servicio del sistema durante dos días.



En esos tres días, escuché Let's Dance de David Bowie setenta veces.



@sillywampa : Una



vez actualicé una contraseña de usuario en una base de datos MySQL de producción, pero olvidé agregar una construcción WHERE, por lo que todas las contraseñas de usuario cambiaron. Después de 15 minutos, comenzamos a recibir llamadas y correos electrónicos de clientes corporativos que no podían iniciar sesión.



@sygint :



Reescribí el formulario para limpiar la interfaz de usuario, lo que impidió la adición de nuevas tarjetas de crédito en el sitio móvil de la compañía Fortune 500 durante un mes. Probablemente nadie las agregó desde la aplicación, porque no recibimos quejas. Un desarrollador junior notó el problema, incluso el departamento de control de calidad no lo sabía.



En otra ocasión, el cliente me desobedeció y colocó una plantilla rota en el servidor en ejecución. Perdieron 70 mil dólares en una hora. Esta vez ni siquiera estaba cerca del mío, jajaja.



@marcelcutts :



En los días calurosos en una startup, creé un juego llamado Zombies, Run! que era bastante popular y tenía varios millones de jugadores que pagaban. Una vez, habiendo acumulado una deuda técnica inconmensurable, copié y pegué la versión incorrecta del archivo de configuración de Django y perdí el secreto de la base de datos.



Por supuesto que lo hice en producción y no tenía copias de seguridad. Al darme cuenta de lo que había sucedido, le conté al director ejecutivo y me fui de la oficina. No pensé que pudiéramos salvar a la empresa enviando un mensaje de texto a cada usuario "hola, paga de nuevo", y me cansé del debate sobre la deuda tecnológica. Resultó que tenía razón.



A la mañana siguiente, me acosté en la cama pensando en formas de reducir la entropía del secreto y descubrí que, dado que cometí otro error e inserté el secreto en mi terminal, estaba en mi historial zsh todo el tiempo. Dos negativos hacen afirmativa.



Comenta el tweet: una vez jugué a este juego, tenía un montón de errores extraños.



@marcelcutts : No me sorprende, soy un desarrollador terrible.



@JosDeBerdt :



Tenía un sistema de sitios múltiples donde el contenido se podía transferir de un sitio a otro. Durante las pruebas, no me di cuenta de que seguí el enlace a producción y lancé "actualizar contenido" sin especificar la identificación de la página ... Todas las páginas de cada sitio consistían en una sola palabra "prueba". Esto fue en los días antes de que existieran los sistemas de control de versiones y los cambios se transfirieron instantáneamente a través de FTP al servidor de producción.



@chrisalesant :



En mi primer trabajo de front-end, me pidieron que diseñara una larga lista de correos electrónicos, así que creé todo con divs, animaciones y flexbox. Después de aproximadamente dos semanas, el departamento de marketing realizó un control de calidad y dijo que harían todo desde cero usando tablas y estilos en línea en tres días.



Cereza en el pastel: se suponía que el diseño tenía un diseño perfecto de píxeles para el cliente de Outlook.





@johnhutch :



Trabajé en una plataforma de comercio electrónico dedicada para una empresa de Fortune 500. Cientos de desarrolladores están trabajando en docenas de copias internacionales de varias marcas, el código avanza sin parar todo el día.



Así que imagina mi horror ...



cuando recibí un mensaje de que rompí toda mi rama / entorno de git. Resulta que al hacer la fusión arruiné la rama en la que estoy (no use '.' Chicos. Siempre incluya los nombres de las ramas explícitamente).



@MongooseDoom :



Utilizo una tableta Wacom en lugar de un mouse, porque me resulta más cómodo. Un día, sin darme cuenta, arrastré una carpeta a otra carpeta en el servidor de producción. No había registros de lo que hice, por lo que a otra persona le tomó mucho tiempo averiguarlo. Y lo hice dos veces.



En otra noche lluviosa de viernes, borré accidentalmente una tabla SQL.



Por supuesto, luego descubrí que nuestra estrategia de respaldo no funcionaba.



Afortunadamente, esto fue antes de la era de la carga diferida, y terminé con una pestaña abierta con 400 valores, que luego inserté manualmente.



Por lo general, soy agnóstico, ¡pero recuerdo orar ese día para que Firefox no se bloqueara hasta que tomé capturas de pantalla de todos los valores de esta página!






Publicidad



VDSina ofrece servidores seguros en Linux o Windows: elija uno de los sistemas operativos preinstalados o instálelo desde su imagen.






All Articles