web analytics
  • Sabes que hay un luser cerca cuando ves muestras de heces por el suelo. Se hacen caca a menudo.
  • Backup

  • Más Wardog

  • Social cosa

  • Etiquetas

  • Sin publicidad

    Me he cansado de poner publicidad para costear los gastos del blog. Puedo asumirlos por mí mismo. Hago esto por diversión.

    Pero si te apetece pagarme una cerveza, aquí tienes un botón:

  • ¡Cómprame un libro!

    320 páginas de celulosa no retroiluminada vintage con lo que hay aquí y el final de "Un nuevo mundo". No necesita baterías y funciona con casi cualquier luz visible.

    Aviso: El papel puede cortar. Consideradlo una feature de ataque a lusers.

  • Buen leer

    El increíble viaje del faquir que se qeudó atrapado en un armario de IKEA,d e Romain Puértolas

    El último pasajero, del maestro Manel Loureiro

    Tengo una pistola, de Enriqe Rubio

  • El código

    Tengo la boca grande como un buzón. Media vida metido en el departamento de informática y aún me tengo que castigar el lomo yo mismo por lo inocente que soy. Pero no digo que tenga la boca grande por ser indiscreto, o faltón, que también; sino porque cada vez que me preguntan contesto con lo que yo sé que es verdad y no con lo que quieren escuchar. Ser honesto en la vida es una puta mierda.

    Suprakillminds depende enormemente de la buena marcha de una aplicación muy particular. La dichosa aplicación la usan muchos usuarios y ha de ser rápida, veloz y ligera cual gacela huyendo de un guepardo con hambre de seis días y zapatillas nuevas.

    Cuando compraron la aplicación, y maldigo al lenguaje HTML por no tener suficientes herramientas de formato para remarcar el «compraron»; resultó que todo iba como la seda. Asignamos un servidor normalito, con treinta y dos gigas de RAM y dos procesadores de ocho núcleos con tres discos SAS de trescientos gigas en RAID 5. Una cosa normalita para mover una base de datos e intercambio de ficheros de operaciones.

    La aplicación en cuestión se comunica con dispositivos remotos mediante un fichero que se deja en un directorio y los dispositivos remotos preguntan si hay algo mediante FTP, o si tienen que dejar algo para que la aplicación procese, pues lo dejan mediante el mismo sofisticado mecanismo. Hasta ahí todo muy siglo XX, pero bien. Entonces, la parte servidora hace lo que coño sea que tenga que hacer y devuelve el resultado a impresoras, dispositivos, gente, máquinas de café, etc.

    Todo esto que cuento no puede parecerle a nadie ni medio complicado. No lo es. De hecho, las operaciones se parecen mucho a un carrito de la compra. Sin embargo, de un tiempo a esta parte, la aplicación se ha ralentizado hasta límites inaceptables.

    La base de datos no es. Aquí mi colega el MKII ha sacado los diplomas Emecé, los ha puesto encima de la mesa y ha tuneado la base de datos puesto que el servidor de bases de datos fue forjado en Mordor. De hecho, la base de datos responde ahora como un puto tiro. Me voy a tener que hacer un Emecé para aprender cosas tan chula. No quisiera quitarle méritos a MKII por nada del mundo. Es un tío formado y serio. Pero que digo yo que se tiene que notar el aumento de rendimiento si pones índices coherentes a las tablas de la base de datos. Aunque sea uno. Porque no tenía ni un mal índice. Nada.

    Descartada la base de datos miramos el procesador. Los procesadores. Nada. La aplicación provocaba algunos picos pero nada que perturbase la paz de los dieciséis núcleos instalados. Tan panchos estaban limándose las uñas.

    La memoria no era tampoco. Había memoria libre para aburrir. El disco tampoco estaba muy ocupado, la verdad. La red local estaba tocando las palmas y los enlaces al exterior relajados y con capacidad testada. No era tampoco.

    Aquello tenía pinta de que iba a ser el pin siete del RJ45 o que habíamos encendido el servidor con el dedo en ángulo de doce grados en lugar de dieciséis. Vamos, que sólo nos quedaba un sospechoso: el programa.

    Y ahí estuvo mi error. $Hyperboss fue informado pertinentemente por Gargamel de un problema informático sin resolver y nos reunió a MKII y a mi en su despacho. Muy serio.

    -Pero vamos a ver, Wardog: si el servidor es muy lento, cámbialo.
    -Que no. que no es lento, oiga. El servidor no es.
    -¡Ponle más memoria!
    -No le hace falta, no la está gastando.
    -¿Entonces?
    -Como no sea el programa…
    -¿Y por qué iba a ser el programa?
    -Por exclusión. Me quedan el programa y los usuarios. Y por una vez les voy a dar un voto de confianza a los usuarios porque no pueden tocar nada de la aplicación, sólo la echan de comer.
    -Pues llama a los del programa.
    -Ya lo he hecho.
    -¿Y qué te dicen?
    -Que es por la red de la empresa, que a ellos les va bien.
    -¡Pues cambia la red!
    -No. Va bien. La red no es.
    -¿Lo sabrán mejor los del programa, no?
    -No. Ellos ni puta idea de cómo va nuestra red. Ellos saben de su programa.
    -Vale, pues si no es la red, ¿qué es?
    -Insisto: el programa o el usuario. Descarto el usuario.
    -Pues busca otra causa.
    -Un pitufo epiléptico ha estado practicando sexo tántrico con doce sapos encantados sobre los portales RFID me parece una causa razonable.
    -¡Una causa seria!
    -Con todos los respetos- interrumpe EL Máquina II,- pero Wardog tiene razón. No puede ser otra cosa que el programa. Hemos descartado las demás opciones y no tenemos ningún interés en llevar razón, sino que simplemente, el resto de posibles causas están funcionando perfectamente.
    -Vamos a ver si nos entendemos, muchachos-, se frota el puente de la nariz concienzudamente.- He pagado una cifra considerable a una empresa de desarrollo de software muy conocida para que esa aplicación vuele. No me puedo creer que, después de seis meses, ya no funcione. Algo habéis tocado.
    -No. Conforme la dejaron los artistas de $Bullshitsoft está. De hecho, ni siquiera hemos habilitado ningún puesto nuevo ni hemos quitado los existentes. Cero cambios.
    -¡Pues algo tiene que ser!- dice con un puñetazo en la mesa.
    -¡Pues es el programa!- replico con una palmada y un firulillo flamenco por encima de la cabeza.

    Nos miramos fijamente a los ojos. Él con el puño aún en la mesa. Yo, con la mano a diez centímetros de la cabeza  y la palma hacia arriba.

    -El programa no puede ser, Wardog. Que me ha costado una millonada.
    -Primera fase del duelo: negación. El Titanic también costó una millonada. Y ahí está, en calo.
    -Pues mira a ver qué falla en el programa y arréglalo.
    -No puedo.
    -¿Cómo que no puedes?
    -No puedo. Sabemos que en los dispositivos el cambio de una pantalla a otra tarda mucho, pero no sabemos qué coño hace en el intervalo. A veces la conexión explota y otras veces suelta un error inespecífico. Pero sin el código fuente no podemos saber qué es lo que le pica.
    -¡Pues que lo arreglen los de $Bullshitsoft!
    -No. Como son tan guays y tan caros, si no les damos un diagnóstico claro, no mueven un dedo.
    -¿Cómo que no?
    -Como que no. Que o les decimos qué va mal o no pueden hacer nada. Y nuestra mejor aproximación a un diagnóstico detallado es: «Todo va lento».
    -¡Ponme con ellos!

    Marco el número en el teléfono de sobremesa de $Hyperboss. Pide hablar con soporte. Grita mucho. Dice que va lento. Se calma. Dice que eso espera. Cuelga.

    -Ya está, solucionado.
    -¿Ya va rápido el programa?
    -No, joder. Mañana tenemos aquí a un ingeniero de la empresa para arreglarlo. Sólo hacía falta ponerse duro.
    -Entonces no está solucionado.
    -¡Pero mañana estará solucionado!
    -Vale, vale, si yo lo decía por hablar con propiedad.

    Al día siguiente, a las nueve de la mañana se presentó un ingeniero de $Bullshitsoft en $Suprakillminds, con su chaqueta, su corbata y las manos en los bolsillos. $Deity me libre de prejuzgar a la gente, pero mi olfato canino para detectar imbéciles me estaba alertando acerca de este individuo.

    Le cogí de la manita y me lo llevé, a petición suya, a ver cómo iban de lento los terminales equipados con su software. Se colocó detrás de un operario para ver cómo trabajaba el hombre.

    -Ahá-. Dijo muy concentrado el ingeniero.- Parece que tenemos un problema de velocidad.
    -¡No me digas! ¿Cómo lo has notado? ¿Quizá por el hecho de que nuestro operario puede pulsar un botón cada minuto y medio?
    -Sí. Parece que hay algo que ralentiza la aplicación.
    -Y así, concretando más…
    -No sé. Pero efectivamente, va todo muy lento.
    -Eso ya lo sabíamos y os lo hicimos saber.
    -Pero ahora ya lo sabemos con certeza.
    -Anda. Oye, me tienes que decir dónde estudia uno la carrera de saber las cosas con certeza. Porque ya hemos comunicado en varias ocasiones que todo el aplicativo se arrastra como una babosa coja.
    -Bien, yo hablaré con los programadores para que lo revisen.
    -¿Para que revisen qué?
    -El problema de lentitud.
    -¿Y cuál es la causa concreta por la que va lento?
    -No lo sé, es algo general.
    -Tócate los cojones. Yo, de verdad, con vosotros es que aprendo. ¡Ay si yo me hubiese hecho ingeniero en vez de puta!

    El ingeniero ingenioso se fue con las manos en los bolsillos as fast as he came. Dejando en mi correo electrónico un precioso informe de dos líneas redactado al vuelo con su Ladrilloberry. Eso es un usuario móvil avanzado, amigos.

    Le enseñé el informe a $Hyperboss. Lo leyó doce veces, incrédulo. El informe rezaba:

    Detectada ralentización en todos los procesos de la aplicación.

    Se pasa tarea a soporte para corrección y puesta en producción.

    Y debajo la firma del Ingeniero en Diagnósticos por la prestigiosa Universidad Handinpockets.

    Casi podía apreciar cómo la ira se abría camino desde la vésicula biliar de $Hyperboss hacia su garganta y cómo el hombre, en un esfuerzo de autocontrol la retenía ahí.

    -Wardog… ¿cómo se llama eso que decís los informáticos para tocar los programas?
    -¿Dedo? – juego con él.
    -No, coño. Lo de programar.
    -Ah. Código fuente.
    -Si os consigo el código fuente, ¿podéis mirar qué coño le pasa a la aplicación?
    -Podemos intentarlo. Pero no le van a dar el código fuente.
    -Ya te digo yo que sí me lo dan.

    Dicho y hecho. Al día siguiente $Hyperboss se presentó en el departamento mientras desayunábamos y me puso en la mesa un pendrive con el código fuente de la aplicación de los cojones. MKII y yo lo miramos atemorizados. Parece vibrar quedamente, emitir una especie de fulgor fantasmagórico. Era algo difícil de explicar. Como una luz oscura. Como si estuviese iluminado por la oscuridad que emitía.

    Al final lo cogí con más curiosidad que ganas y lo puse en mi equipo. Abrí el pendrive y vi que contenía un directorio de nombre «SRC». Vamos bien, hasta ahí lo entiendo. Abro el directorio y veo el nombre Suprakillminds. Abro y tenemos «srv» y «clt». Joder, qué bueno soy. Hasta aquí entiendo todo.

    Abro primero «srv» y veo un proyecto de Mordor Cé Cross Plus. Abro el proyecto y ante mí se muestra en toda su grandeza. Siempre me maravillo cuando veo un programa hecho con un lenguaje orientado a objetos que no implementa ni una clase. De hecho, el programa principal parece ser un monolítico fichero. Todo corre en un gigantesco loop cuya única condición de salida es, al parecer, un valor uno en una variable de nombre «salir».

    Empiezo a leer mientras MKII gestiona cosas, pero tanto me oye bufar que se trae la silla a mi puesto y se pone a leer en la pantalla.

    -Mira, tenemos seis scrolls completos sólo para las variables globales. No está mal, ¿eh?
    -¿Y por qué hay tantas variables globales?
    -Y  yo qué sé. Espera, espera, terrible sospecha. Mira, ahí está.
    -¿El qué?
    -¿No lo ves? ¡Todas las funciones devuelven void!
    -¡No jodas!
    -¡Claro! ¡Son unos cracks! ¡Si todas las variables son globales no hace falta pasar parámetros ni devolver valores!
    -Pero eso no es eficiente.
    -¡Porque tú lo digas! ¡Es súper efectivo! ¡Efectivo que te defecas haciendo estrellitas!
    -¿Hablas en serio?
    -No. Ah, mira, ¿ves? Aquí hay funciones que no devuelven void. Desde luego, qué malpensado somos.
    -Oye, pero esa función…
    -Sí, ¿qué pasa? Suma dos variables globales y devuelve el resultado. Y te callas que te veo un poco talibán del Mordor Cé Cross Plus.
    -¿Hablas en serio?
    -Que no, coño, pero es que si no relajo tensiones con las coñas me van a empezar a sangrar los ojos.
    -Espera, espera, ¿qué es eso?- me dice MKII abriendo mucho los ojos y señalando la pantalla. Me da palmaditas con su mano helada en el antebrazo.
    -Oh. $deity desdoblado.

    Me envaro en la silla y empiezo a hiperventilar. Antes nuestros estupefactos ojos se muestran brillantes, sólidos, rotundos y pulidos, incontables GOTOs destacando sobre el blanco del editor como una macha de sangre fresca en la nieve. Pero no es sólo el GOTO infame. Es que, uno tras otro, y sin orden lógico aparente, los GOTOs envían la ejecución del programa a etiquetas de nombre tan específico como «Label1», «Label2», «Label7» y así hasta «Labeln» siendo n un número entero desaforado.

    Con los ojos a punto de salírsenos de las órbitas nos levantamos sin decir nada en busca de bálsamo caliente. Por el pasillo nos encontramos a $Hyperboss. Le miramos con nuestra cara de espanto.

    -¡Qué tal chicos! ¿Entendéis el código fuente ese?

    Salimos corriendo gritando mucho con los brazos levantadaos. Bueno, esa fue mi primera intención; y sé que MKII me hubiese imitado, pero no. Permanecimos con nuestra cara de espanto estoicamente.

    -¿Chicos? ¿Lo podéis arreglar?
    -Mire, $Hyperboss… eso no se puede arreglar. Por mucho que queramos. Es una perversión. Es… es…
    -¿Ya estamos con las quejas? Primero que si no tenéis el código fuente, luego que si lo  tenéis.
    -$Hyperboss- dice MKII.- Ese programa es obsceno.
    -Está tan mal hecho que parece fabricado con trozos aleatorios de manual.

    MKII y yo nos miramos inmediatamente. Claro, por eso las etiquetas de los gotos se llaman Labelx. Trozos de manual.

    -Becarios- decimos al unísono.
    -¿De qué habláis?
    -Este programa lo han debido hacer becarios en precario.
    -¿Con lo que cuesta lo van a haber hecho becarios? ¡Que es una empresa seria!
    -Con lo que cuesta. El programa compila y funciona cumpliendo los requisitos. Facturado. Los becarios son gratis o baratos. Más margen de beneficio.- replico.
    -Bueno, da igual. Me ha costado mucho conseguir el código fuente. Arregladlo como sea.
    -Haremos lo que esté en nuestra mano.- contesta demasiado dispuesto MKII.

    Con un café en el cuerpo la cosa parece más soportable. El ejecutable principal de la parte cliente no parece tener más problemas que la sobredosis de tumores de código. El hijo de puta es feo y deforme, pero como sólo tiene que recoger unos ficheros, leerlos y meterlos en la base de datos y vive en una máquina absolutamente sobredimensionada, corre que se las pela.

    -Pero hay una cosa que no veo.- Dice MKII.
    -¿El qué?
    -¿Cómo pasa parámetros desde el bucle principal al programa de impresión?
    -No sé, veamos el programa de impresión.

    Abro «print.cpp» y busco la entrada de parámetros. No la veo. Edición, buscar argc. Nop. ¿Cómo es posible? MKII y yo nos miramos extrañados. ¿Cómo es posible que un programa necesite un parámetro para imprimir un resultado y no lo reciba al iniciar la ejecución? ¿Cómo puede ser tan sofisticado? Una lectura rápida de main lo explica de inmediato.

    -Esto es lo más grande, MKII.
    -¿Es eso lo que parece que es?
    -Los parámetros los coge de una variable de entorno del sistema. ¿Qué te parece?
    -Pero… ¿no se supone que si eso es así, se podría sobreescribir la variable de entorno y que las impresiones salgan por donde les de la gana?
    -Veámoslo en el programa principal.

    Buscamos la llamada a print. Resulta que no, que no se puede sobreescribir dicha variable de entorno porque resulta que la llamada a print está detrás de un bucle del que sólo se sale si otra variable de entorno está a cero: la variable «PUEDIMP». Así, tal cual la escribo. Cuando PUEDIMP tiene el valor apropiado (no parece ser booleana, sino otra cosa, tal vez trileana con valores sí, no y psá) se imprime y se cambia de nuevo el valor para indicar que está dispuesta a imprimir otra vez. Un semáforo un poco rústico y sobre todo, muy seguro.

    -La madre que los parió. ¿Y tú sabes lo que ha costado esto, Maqui?
    -Lo sé. Y por eso sufro más que tú.
    -Al comercial de esta casa hay que juzgarlo en Estrasburgo.
    -En fin. Sigamos. Esto está feo, pero no afecta a la velocidad. Vamos a ver el cliente qué hace.

    Abro el directorio del cliente. Ahogo un grito. Intento tragar saliva y me cuesta horrores. MKII me mira. Mira la pantalla. Suspira hondamente. Me levanto. Voy hacia un armario y con un suspiro lo abro. Aparto las tarjetas serialix, los conmutadores manuales de puerto paralelo, un disco duro de cuarenta megas y una bolsa de conectores BNC. Maldigo no haberme puesto guantes de amianto. Cojo la caja que hay al fondo, blanca y en cuyo frontal reza «Visual Basic 6.0».

    Saco el disco y lo meto en la unidad. Lo instalo en una máquina virtual con XP y abro por fin el proyecto. Reconozco de inmediato los formularios de la aplicación y paso a ver lo que hay detrás. MKII no tiene experiencia con esta atrocidad y no lo lee con la misma fluidez que yo.

    -Los controles no tienen nombre. Bueno, tienen el nombre por defecto-le explico.- Bien. Cojonudo. El código no está indentado. Mejor todavía.
    -Para que luego digan que las llaves de C son un coñazo.
    -Son una bendición divina. No me jodas.

    No pasa mucho rato hasta que veo el problema de lentitud de todos los clientes. El problema residen en la comunicación con la base de datos.

    -Mira, MKII, ya he encontrado el porqué de la lentitud.
    -¿Sí? ¿Dónde?
    -Mira, ¿ves esta matriz bidimensional?
    -La veo.
    -Pues ahí se monta la consulta SQL.
    -¿Y por qué en una matriz?
    -Por joder, porque no es para plantillar.
    -Vale, ¿entonces a un lado el campo y al otro el valor y luego se concatena la sentencia?
    -Que no, que no. A un lado se pone «select *» y al otro «from tabla» y ya.
    -¿Cómo que «y ya»?
    -Y ya. No hay where. No se selecciona de más de una tabla.
    -¿Entonces cómo se filtran los resultados de la consulta?

    Sonrío como un maníaco.

    -Muy fácil: iteramos todos los valores de la consulta y nos quedamos con el que nos coincida. ¡Es genial!
    -¿Cómo? ¿Cómo?
    -¡Es genial! Y si necesito una subconsulta… ¡repito el proceso!

    Una risa nerviosa se apoderó de nosotros y nos tuvo fuera de combate durante una hora.

    ¡Bimbambidubi! ¡Dubi!

    -¡Jiajiajiajiajia! ¡Sistemas, Joker al habla! ¡Jajajajaja!
    -Cada día estáis peor ahí. Oye, que no tenemos internet y necesito entrar en los bancos.
    -¡Jajajajaja! ¡Jiaaaajajajaja! ¡Bancos! ¡Bancos! ¡No sé ni quién eres tú! ¡Jiajajajia! ¡Pero da igual! ¡Iré puesto por puesto comprobando si tienes internet!
    -¿De qué hablas?
    -¡Es súper rápido! ¡Jiajiajiaaaaaa!
    -¿Me lo arreglas o no?
    -¡No! ¡Jiaaaaajajajajaaaaa!

    Cuando por fin conseguimos rehacernos, desconectamos los teléfonos y pasamos varios días modificando chapuzas similares en ambas partes del programa. Después de mucho tocar, de mucho corregir error de compilación tras error de compilación, conseguimos meter unos cuantos tumores que suplieran otros cuantos tumores más dañinos y la aplicación volvió a correr decentemente.

    Como Gargamel no informaba de nuestros progresos a $Hyperboss, decidí mandarle un correo electrónico.

    Asunto: La aplicación ya va bien.

    Cuerpo del texto: Pues eso.

    A los pocos minutos me llama al despacho.

    -He llamado a unos cuantos usuarios para comprobar que va bien y me han dicho que ya va como al principio. ¿Qué coño le pasaba al programa?
    -Técnicamente a este problema se le conoce como «Rendimiento diferencial demo-producción» o «Mal del becario».
    -¿Y eso qué es?
    -Pues que si un programa hace lo que tiene que hacer no necesariamente está bien hecho.
    -Explícate.
    -El programa fue bien cuando tenía pocos datos que manejar. Conforme la base de datos creció, resultó no estar bien preparado para manejar tantos datos.
    -¿Y cómo lo habéis solucionado?
    -Limitando los registros devueltos por la base de datos. ¿Pero por qué le interesan los detalles técnicos? Normalmente ésto le importa una mierda.
    -Para decírselo al ingeniero de Bullshitsoft.
    -Ah, yo les mando un informe.
    -¿No te importa?
    -En absoluto.
    -Vale, gracias, Wardog.
    -De nada. Oiga, una curiosidad. ¿Cómo consiguió el código fuente tan rápido?
    -¿Conoces a Astaroth?
    -¿El abogado?
    -Él se lo trajo en un pendrive en dos horas.
    -Joder.

    Yo seré BOFH, pero éste no veas lo cabrón que llega a ser en el mundo real. Astaroth es a los abogados lo que un volcán a un mechero de gas. Es capaz de acojonar a Satanás.

    Volví a mi despacho y redacté un email

    Para: jefazos@bullshitsoft.es
    CC: higiniero@bullshitsoft.es

    Asunto: Aplicación arreglada. Informe de reparación.
    Cuerpo: Ya funciona rápido. El problema era que tenéis a los becarios bajos de azúcar. Mantas.

    Enviar.

    129 Comentarios esperando que les lleves la contraria. Plantar un comentario.

    1. «primeeeer», estoy autorizado a decirlo si no se adelanta ninguno antes.

      Ver código fuente de otros debería ser una asignatura obligatoria.

      Comentario by One — 14 agosto, 2013 @ 13:34


    2. Pruebo

      Comentario by war — 14 agosto, 2013 @ 13:34


    3. Ostia puta… mira que odia la programacion.. pero hasta saber que el GOTO esta obsoleto y solo induce a errores….. que maquinas los programadores…

      Espero que nos remitas tambien su respuesta a tu mail

      Comentario by xap — 14 agosto, 2013 @ 13:35


    4. Macho, eres mi ídolo…

      Comentario by erDani — 14 agosto, 2013 @ 13:36


    5. Últimamente estamos todos rehaciendo cógido de mierda de los años 20 eh? Bien hecho.

      Comentario by ManOwaR — 14 agosto, 2013 @ 13:39


    6. primeeeer

      Me ha matao lo de la variable trileana xD

      Comentario by SitoS — 14 agosto, 2013 @ 13:40


    7. Macho, el día que dejé de estudiar informática, mi madre me armó la bulla… El día que te encontré, llegué a arrepentirme de no haber estudiado informática por la cantidad de especímenes que podía encontrarme cual pokemons… Pero hoy, hoy que he vislumbrado otro más de los marrones que te jamas por tu laburo… Joer, que bien me lo paso siendo un monico más de un callcenter :S

      Suerte y al toro, maestro. 😉

      Comentario by Tejeletras — 14 agosto, 2013 @ 13:40


    8. Primer!!!

      Comentario by daimiel — 14 agosto, 2013 @ 13:46


    9. Solo para que conste, también hay precarios que intentan hacer las cosas bien. Y que sufren horrores viendo el código de según que proyectos, o cuando les toca desplegar dicho código (la última que me traumatizó, webapp en java que había que recompilar enterita si querías cambiarla de máquina o de directorio).

      Comentario by cmoft — 14 agosto, 2013 @ 13:47


    10. Sólo sé de C y C++ pero con lo que he leído de variables globales y goto se me ponen los pelos como escarpias.
      Decir que ha sido hecho por becarios es muy generoso. Si acaso por becarios de filología, por ejemplo.

      Comentario by GuillermoF1 — 14 agosto, 2013 @ 13:55


    11. He visto hasta diseñadores de AutoCAD picando codigo .net. Y si, cogen manual (duele que encuentren aun en google ejemplos con GOTO) y luego te ponen a mitad de proyectoy te dicen, toma, solo queda una semana para la entrega y CASI funciona todo…

      Me encantan esos CASI, casi esta escrito, casi compila, casi escribo bien, CASI LO MATO…

      Comentario by Angel S.P — 14 agosto, 2013 @ 14:07


    12. Jooooder, pensaba que cuando llegué al primer «Ce Cross Plus» me iba a perder, pero me he acordado on live xD Lo único importante que me ha dejado claro la fábula es:

      1.) Me tenía que haber hecho abogado.
      2.) Si hubiera sido el becario, y no me pagan los suficientes gold pieces, y quieres que haga un programa con los puntos 1, 2 y 3. Yo te lo hago, pero te vas a cagar pensando en Frankenstein como si fuera una niña que sólo buscaba atención, porque lo que te voy a entregar en 2 días, va a ser la verdadera abominación de la naturaleza. xD

      Saludos y HIGH FIVE!

      Comentario by Sanjuro — 14 agosto, 2013 @ 14:31


    13. Yo también he vivido lo de POO sin OO jeje, pero tio!!! lo del goto no puede ser!!! jajaja

      Comentario by gmm — 14 agosto, 2013 @ 14:42


    14. Podria alguien darme el teléfono de Astaroth?

      Comentario by Rafael Gawenda — 14 agosto, 2013 @ 14:44


    15. Me he reído infinito, gracias

      Comentario by Bea — 14 agosto, 2013 @ 14:49


    16. Hola Wardog,

      Me siento descomunalmente identificado.

      Arregla un fallo que tienes en el relato :

      <>

      Creo que deberías haber pillado el Visual C 6.0 . ya que los programas estaban hechos en C++ MFC

      Un saludo

      Comentario by Turrican — 14 agosto, 2013 @ 15:10


    17. Que pecha de reir me he dado uf. Yo como programador que soy (no profesional aún), tampoco habría sabido donde meterme. La parte de los «¡Bancos! ¡Bancos! […]» la mejor de todas. Uf.

      Comentario by Peregring-lk — 14 agosto, 2013 @ 15:33


    18. Muy buena entrada Wardog.
      Una pregunta, no se os ocurrio espiar las sesiones a las BBDD para ver que el programa cada vez lanzaba consultas sin filtrar?
      Un saludo.

      Comentario by Txukie — 14 agosto, 2013 @ 15:36


    19. juro por dios que lo del select sin where y luego Itero por código yo lo he visto

      Comentario by pirri — 14 agosto, 2013 @ 15:40


    20. GOTO? Formularios sin nombre? etiquetas «de manual»? Mecagonlavirgensanta! Si eso no lo hago ni yo que hace como 10 años que no programo! Y SOBRETODO INDENTAR, JODER! que no cuesta tanto!

      PD: Has pensado en contactar con la jefa de Recursos inhumanos para que te mande a Daisy y enviarla por correo urgente a $BullShitSoft con unos alicates de corte?
      Lo mismo te la devuelven con un pendrive lleno de archivitos bien gestionados, un manual, un sobrecillo estilo Barcenas y a ella decorada con un lacito de regalo y un trapo para que limpie la sangre de los alicates.

      Comentario by Alt+126 — 14 agosto, 2013 @ 15:42


    21. El C++ funciona de p.m. pero realizar una aplicación de ese supuesto calibre sin clases y usando goto (a estas alturas) es para matarlos.
      No es la primera vez que leo algo parecido y que incluso tuve que corregirlo en su momento y soy de la época en donde los programas se hacian en Cobol y no para los bancos precisamente.

      Comentario by Salva — 14 agosto, 2013 @ 15:44


    22. Jajajajaja vaya par de genios los que habéis escrito esto. Me habéis arrancado unas buenas risas.

      Comentario by Kastle — 14 agosto, 2013 @ 15:49


    23. Unos GOTO en una función, si están bien colocados y justificados, no son dañinos. Y si no mirad el Kernel de Linux. 😛

      Comentario by Assert — 14 agosto, 2013 @ 15:58


    24. Yo tambien he visto lo de los selects sin where… Y guardando los resultados en arrays de un millon de posiciones… Y haciendo los joins a pelo con dichos arrays…

      Que jarta a reir y que poco te prodigas.

      Comentario by shammael — 14 agosto, 2013 @ 15:59


    25. Que no Turrican, el servidor estaba en Mordor C y el cliente en Visual C.
      O sea, un becario pa cada programa, un absurdo derroche de recursos ¬¬

      Comentario by llarensj — 14 agosto, 2013 @ 16:07


    26. La verdad que tocar código ajeno siempre suele ser una experiencia, he visto código de todo tipo, desde código que parece ser escrito por un académico que da gusto leer y aprender, hasta aberraciones como las que describes en tu relato, lo de los becarios es un problema enorme, he visto empresas «serias» como $Bullshitsoft que incluyen a becarios en proyectos para bajar costos o para que «ayuden» a los developers senior, aun sigo topándome con genialidades del famoso becario cuando reportan algún problema con la aplicación a la que estamos dando soporte y mantenimiento, y créeme, cada vez que eso pasa no se si reír o llorar pero eso si, infaliblemente recuerdo a todos los ancestros del mentado becario …

      Cuando escucho becario, se me viene a la mente la imagen de Mr. Burns y sus mil monos escribiendo Shakespeare …

      Gracias por un capítulo más de tus penurias …

      bye
      😉

      Comentario by deathUser — 14 agosto, 2013 @ 16:11


    27. Esto no es por ser becario, esto es por ser gilipollas. Seguro que hay becarios muy válidos.

      PD: No, no soy becario y nunca lo he sido…

      Comentario by mouthbow — 14 agosto, 2013 @ 16:14


    28. Wardog se ha quedado desfasado. Esto es NoSQL tío, que así no se tienen que preocupar de índices ni de modelos ni de na’

      Por otro lado, los booleanos pueden ser: true, false y FILE_NOT_FOUND

      En fin, una lástima que no puedas mostrar esto al mundo en TheDailyWTF.com

      Comentario by ubersoldat — 14 agosto, 2013 @ 16:14


    29. una pregunta completamente inocente:
      entiendo lo del select a toda la bbdd, lo de que no usa clases que abusa de las variables globales pero..
      porque una funcion no puede devolver la suma de dos variables globales?

      Comentario by bepp — 14 agosto, 2013 @ 16:29


    30. Mira, tronco… porque hablas de C++ y no de Java, que si no, me hubiera puesto a buscarte como loco por las plantas del edificio donde curro. Tanto paralelismo me abruma.

      Otra diferencia es que el hijo de las mil putas responsable de este desastre ha llevado a $Bullshitsoft a la quiebra, y ha sido contratado por mi chiringuito, a una risión de sueldo de unos 30K. Al mes. True story.

      Daría para post, pero no me sale el humor con este tema.

      Comentario by Javier Lobo — 14 agosto, 2013 @ 16:30


    31. Por tu culpa me han despedido, cabrón de mierda… Además, yo soy más guapo y alto de lo que relatas.

      Comentario by Ingeniero de $Bullshitsoft — 14 agosto, 2013 @ 16:31


    32. El problema está en la aplicación, si? Bendiciones y buenas noches.

      Comentario by Sandro Rey — 14 agosto, 2013 @ 16:32


    33. #29 porque es absurdo.
      dado:
      var a, b, c;
      function sumar() {
      return a+b;
      }
      Qué prefieres hacer?
      c=suma();
      o
      c=a+b;

      Comentario by nxdiez — 14 agosto, 2013 @ 16:35


    34. Que clase de BBDD o DBA teneis que no es capaz de ver las consultas sin un filtro «where» ???

      Comentario by reco — 14 agosto, 2013 @ 16:42


    35. Becarios… al menos tiene «explicacion» y casi justificacion pero cuando tocas código de un supuesto developer sr y ves el catálogo de usuarios para accesar a la aplicacion embebido en el código te hace pensar.
      Muy buen relato, me siento tan identificado. Sobre todo por la parte en que la sinceridad es una mierda y sólo acarrea mas trabajo.

      Saludos.

      Comentario by stvzas — 14 agosto, 2013 @ 16:46


    36. «no parece ser booleana, sino otra cosa, tal vez trileana con valores sí, no y psá»

      ÉPICO.

      Comentario by mad_gcc — 14 agosto, 2013 @ 16:47


    37. Segun lo leia no podia creer como crecia la aberracion ya me olian mal las cosas desde que vi FTP (que lo entiendo por compatiblidad con sistemas viejos y lo que sea) pero al final del relato quede en posicion fetal con los recuerdos.

      Maldito valor que tienes para aguantar semejante… cosa.

      Apoyo a Alt+126, mete a Daisy en una caja con sellitos de Fragil y mandala a $BullShitSoft.

      Saludos desde este lado del carcho.

      PD se extrañaba saber algo de MKII y del BOFH-Zen

      Comentario by Spatior — 14 agosto, 2013 @ 17:06


    38. <>

      Si los GoTos y POO sin OO ya me tenian descojonandome… Visual Basic DIOS!!!

      Y lo de las consultas SQL ….

      Comentario by Zardoz — 14 agosto, 2013 @ 17:34


    39. Rompo una lanza en favor de los desarrolladores cuando ocurre lo contrario.
      Cuando hablas de estrés, de pool de threads, threads estacados y en espera… pero sistemas sólo te dice que el proceso java está a tope y que es la aplicación. «Es tu app, lo sé porque con mis superpoderes veo que se peta ‘ordenador.exe'».
      Lo mejor es ver que tienen otro marrón a la semana y se quejan de que hay momentos de mucho estrés en la máquina…

      Comentario by JGagarin — 14 agosto, 2013 @ 17:34


    40. Genial 🙂

      Comentario by Simba — 14 agosto, 2013 @ 17:45


    41. Me ha recordado a aquel programa que me contaron, que para cruzar datos de dos tablas con millones de registros recuperaba en un Recordset los datos de la primera y luego lo recorría recuperando los datos de la segunda para cada registro. O alguno que tuve que arreglar yo, que sólo con usar bien la BBDD hice que dejara de tardar varias horas en sacar un fichero para tenerlo en minuto y medio…

      Comentario by Deyector — 14 agosto, 2013 @ 17:45


    42. Cada vez me haces menos gracia, sobre todo prejuzgando a la gente con estudios, con una ingeniería acabada. Como todo en esta vida, HAY DE TODO (me he encontrado con ingenieros con un Máster que no son capaces de resolver problemas que gente con un CFGS lo hace sin el mayor problema), pero no tienes que insultar a nadie sólo porque lleve traje y corbata. Háztelo mirar y deja de insultarnos.

      Por otro lado, te crees omnisapiente; a ti no te falta azúcar, te faltan unas cuantas toneladas de HUMILDAD.

      Y una tacita te voy a dar: técnicamente yo habría empezado por ver el rendimiento del servidor donde tienes la BBDD, que con esas consultas debería estar saturado. También puedes mirar los log de la BBDD para ver qué consultas está lanzando… Pero bueno, supongo que siempre es más gracioso tener que pedir el código fuente o ponerte a decompilar…

      Nadie es perfecto 😉

      Comentario by Poco gracioso — 14 agosto, 2013 @ 17:47



    43. Pues resulta que mucha culpa le echamos a los becarios, pero más tienen los jefes de esos becarios que no revisan el código.
      Si, soy becario. Pero cuando estaba de practicas tenia un ojo del programador jefe en mi pantalla antes de acabar la jornada.

      Dicho esto, errores cometemos todos, pero burradas como estas…en fin…

      Comentario by Altramuz — 14 agosto, 2013 @ 18:04


    44. Yo sé de una empresa con triangulito verde que como no sabe gestionar sus bases de datos correctamente impide a sus desarrolladores hacer Joins de tablas para las consultas.
      Prefieren que por código hagas bucles anidados para cotejar los resultados de una, dos y hasta n querys separadas.

      Así está el nivel.

      Comentario by Vandia — 14 agosto, 2013 @ 18:04


    45. Impresioel antiguo Boss al nuevo Hyperboss. El anterior no quería nada nuevo, este lo primero que te dice es que cambies el servidor o le pongas más memoria.

      Comentario by Pascual — 14 agosto, 2013 @ 18:08


    46. Yo he visto el código de una aplicación hecha con PHP del viejo (código spagetti del bueno) que usaba una única clase estática para conectar a la base de datos y luego mandaba los valores de la conexión por variables SUPERGLOBALES…

      También hacía otras cosas preciosas, como usar Ajax sin Ajax, es decir, que toda operación que debía afectar a la ventana en uso (sí, funcionaba con ventanas e IE6) debía abrir un iframe o popup oculto en segundo plano que hiciese cosas y devolviera el resultado a la ventana principal usando código en plan parent.algo.setValue();

      Y claro, cuando la aplicación creció en complejidad veías cosas como parent.opener.parent.opener.opener.parent.parent.refresh();

      La base de datos tampoco tenía ni un sólo índice, y todos los campos (hasta las primary keys) eran un varchar de 250.

      Eso sí, al menos funcionaba bien el engendro este…

      Comentario by PabloskyP4P — 14 agosto, 2013 @ 18:20


    47. Yo creo que es evidente que el código estaba originalmente en VBASIC y, por ampliarlo u ocultar fórmulas y patentes, lo pasarían a C++: no le echéis la culpa a los becarios, a ver llamado a Astarot de nuevo y que os trajera el verdadero código fuente y los DFD’s.

      Ahora bien, lo de la falta de WHERE…, yo me estaba imaginando algo típico y más sofisticado, la verdad, que si clusters y cosas más de ingeniería. en cuyo caso, dar sólo el código fuente o la ER sería criminal para descubrir el problema.

      Comentario by Juan Manuel Dato — 14 agosto, 2013 @ 18:24


    48. Que bueno. Como me he reído! Lástima que pocos podamos entender la grandeza de este post.

      Lo de los GOTO es excelbilloso, pero la variable de sistema PUEDEIMP es sublime. Usar una variable de sistema como semáforo es… es… una maravilla del ingenio. Select * sin where iterando los resultados… genios. Estos tíos son genios.

      Me encantaría conocer a los autores de semejante barbarie.

      PD: A parte el post está bien escrito. Felicidades

      Comentario by Nacho — 14 agosto, 2013 @ 18:41


    49. Verifico que he visto cosas similares (sentencias SQL con resultados mastodónticos que luego se filtran por código) en un programa creado por Accenture. Si, Accenture, esos que hacen que toda la plana directiva se ponga palote con sus megachorra presentaciones de lujo; pero que en el fondo tienen a cuatro gatos muy mal pagados (también lo verifico), que en la mayoría de los casos no saben cómo funciona un ordenador (o ya puestos un compilador, el sistema de BD que usan en un proyecto concreto, etc.), cagando código mierdoso y soñando con, en unos años, pasar a la gestión (reuniones, documentación) y no programar más.

      Da pena verlo, pero es asi como el trabajo de programador se ha devaluado tanto.

      Comentario by Branno — 14 agosto, 2013 @ 19:15


    50. grandeee

      Comentario by Christ — 14 agosto, 2013 @ 19:18


    51. Creo q los becarios no tienen culpa de ser más capaces o no capaces, si tienen culpa los cabrones de sus jefes que son capaces de hacerles programar algo y luego no comprobar si el trabajo que han hecho está en condiciones. Un becario debe de estar en una empresa para aprender y ser formado, no para producir y que la empresa saque beneficio de ellos, aunque claro, THIS IS SPAIN

      Comentario by oscat — 14 agosto, 2013 @ 19:20


    52. Un pequeño detalle. Donde pone «El ejecutable principal de la parte cliente no parece tener más problemas que la sobredosis de tumores de código.» debería decir «de la parte servidor».

      Me uno al club de los que se ha encontrado con un select sin where con un bucle posterior para buscar un elemento por id :S

      Nula seriedad de $Bullshitsoft y error en la decisión de adquirir un programa sin su código fuente de $Suprakillminds (aunque los abogados lo pudieran conseguir).

      Comentario by Biel — 14 agosto, 2013 @ 19:59


    53. yo no es por picar … pero si el problema era una select sin el where, lo tendrían que haber detectado en el ‘tunning’ de la base de datos !! /tocapelotasmode
      buen post, como siempre me he reido mucho! 😀

      Comentario by molesto — 14 agosto, 2013 @ 20:01


    54. Me he descojonado de risa como en cada nuevo informe Wardog. Sé que te cagarías en mi puta madre a la semana, pero cómo me reiría trabajando contigo.

      Comentario by ZangWangHo — 14 agosto, 2013 @ 20:06


    55. Wardog, creo que es de las mejores entradas que he leído.

      Hay cada aplicación suelta por este país…

      No sólo un becario es capaz de semejante acto terrorista ni un tío de traje es siempre el culpable, lo que si se cumple siempre es que abrir un caso de soporte es un tortuoso viaje por el desierto que te demuestra que tú conoces mejor la aplicación que el fabricante.

      Al payaso ese de más arriba que te recomienda una dósis de humildad y te da una tacita de sabiduría le invito a comer. Un kilo de caña de lomo que tengo entre las piernas.

      Comentario by GuillerminGo — 14 agosto, 2013 @ 20:17


    56. ¿Esto ha pasado de verdad?????

      p.s: Oiga Wardog, por favor de unas referencias del emecé.

      Comentario by Jose — 14 agosto, 2013 @ 21:52


    57. Juro que recientemente he tenido que arreglar varios de estos, idénticos. Para qué vamos a hacer un WHERE, no hombre no, hago un tabla.GetAll() y luego ya filtraré si eso. Dios mío, y que haya ingenieros que hagan eso.

      Comentario by coche — 14 agosto, 2013 @ 21:59


    58. Mare mía, mare mía …

      Estos deben ser becarios de I+D utilizando las últimas tecnologías y metiéndose buena mierda:

      la variable ternaria, es un qbit!!, y lo de seleccionar toda la tabla debe ser el famoso no-sql ese, lo de los GOTO no me lo explico.

      Para ser justo he de decir que a cualquiera de los becarios con los que he trabajado les saldrían sarpullidos antes de propinar esas patadas al sentido común.

      habéis pagado mucho por esa virguería?

      Comentario by Ldu — 14 agosto, 2013 @ 22:50


    59. Esta gente son auténticos profesionales: están enmascarando ASM en C++. Seguro que las variables globales representaban los registros y los goto los jumps. Novatos…

      Por cierto, estas cosas ocurren mayormente cuando contratas a becarios «programadores» de otras ramas como matemáticas, física, teleco…

      Comentario by lordcpp — 15 agosto, 2013 @ 00:24


    60. «Me envaro en la silla y empiezo a hiperventilar», jeje, que bueno.
      Lo bueno de la programacion es que hay muchas formas de llegar a un resultado, la mejor ,la da la experiencia y la excelencia…. pero vaya el caso es ponerse a programar y hacer lo que se pueda… a veces en la tochez hay mucha creatividad, xD… por cierto busco becario.

      Comentario by Raca — 15 agosto, 2013 @ 00:31


    61. XD

      Esta fue -para mí- tu mejor entrada Wardog. Jamás me reí tanto con nada que haya leído en internet -y mira que ya llevo unos cuantos años en eso :P-

      En fin, ansío leer tu próxima entrada y que nos cuentes qué otras joyitas le encontraron al código ese.

      P.D: hablando del código… me lo pasas? XD Que en el trabajo seguro le encontramos la gracia entre todos.

      P.D2: soy programador 😛

      Comentario by JGTROCKET — 15 agosto, 2013 @ 03:16


    62. Hasta llegar al puto SELECT, ya se me estaba haciendo largo, pero… cuando he llegado me he descojonado XD. Lo cierto es que esto mismo lo he vivido en distintas ocasiones. Ahora hay una nueva modalidad de que ocurra eso y es culpa de los ORM’s. Pena que no tenga esa capacidad sarcástica/humorística para contarlo. No dejes de escribir nunca, eres el desahogo espiritual del sufrimiento interno de los BOFHS y ahora, con un poco de suerte también de los BDFHS (D de developers) 😛

      Comentario by FreeMEM — 15 agosto, 2013 @ 10:03


    63. Me has alegrado la mañana, que harton de reir yo solito aquí en la faena. muy bueno. Y pasate de blogero a escritor, que lo bordas, seguro, saludos.

      Comentario by toni — 15 agosto, 2013 @ 10:08


    64. #1 Si hombre, y sin comentarios si te parece.

      Una burrada estilo wardog que me ha ocurrido esta semana; no sé si os habrá ocurrido a alguno, pero creo que a pocos porque es de las gordas.

      Como un ordenador no se conectaba a la red le dije al usuario que mirase en la parte de atrás, para ver si había una o dos luces donde se conectaba el cable de red.
      El usuario miró y no se si vió alguna luz, pero vió un trocito de plástico rojo brillante quele pareció una luz.

      Me dijo que sí. Que había girado el botón. Yo intentaba imaginar algún botón en la trasera del equipo, pero no lograba encajar la situación. Le pregunté de nuevo
      – ¿un botón?
      – bueno, no un botón, eso que se gira.

      ¡La madre que le parió!
      -¿Cómo que un botón? ¿qué has hecho?
      – Nada, lo he girado y ha explotado algo dentro y ha salido humo.

      Pues eso, que había girado el selector de voltaje de la fuente de alimentación de 240V a 135V.

      Pa suicidarse.

      Comentario by santaklaus — 15 agosto, 2013 @ 10:38


    65. No se hasta qué punto son reales las burradas que comentas del código fuente de la aplicación, pero igual deberías divulgar de alguna manera el nombre real de «$Bullshitsoft» xDDD

      Comentario by HED — 15 agosto, 2013 @ 11:59


    66. Je, parece que todos hemos visto las consultas SQL sin WHERE. Una menos habitual que he sufrido es el utilizar varios UPDATEs para actualizar un registro… un UPDATE por cada campo de la fila :-O

      Comentario by betapublica — 15 agosto, 2013 @ 13:06


    67. Y yo que pensaba en la crucifixión como solución final para que a mi socio le diera por escribir algún comentario en el código…

      Pero en comparación con los GOTO, las variables trileanas y demás perlas ¡mi socio es un bendito!!! Le compraré más pastitas y le tendré que servir más café.

      Comentario by Xavi — 15 agosto, 2013 @ 13:16


    68. No lo puedo creer!!!
      Hace ya varios años programe un sistema (yo solito), cuando aun comenzaba a caminar en esto de la informatica y la programacion.

      Paso el tiempo y el año pasado me tope con ese primer sistema, en parte me dio risa ver cosas que hice, PERO JAMAS vi un GO TO, un query sin filtrar o un select *.

      Lo que si recuerdo es haber encontrado tablas sin indices, hechas por un viejo cavernicola en un DB2, (el cavernicola ganaba 19 veces mas que yo).

      El mismo cavernicola no conocia los campos de tipo date o datetime, puesto que para armar una fecha y hora ocupaba 6 columnas en una tabla.

      Uga uga tambien administraba el servidor AS400, recuerdo que cambiaron el sistema a uno mas potente y reciente siempre de IBM, y cuando le preguntaron (en una reunion con un responsable de IBM) que en cuanto tenia seteada la seguridad del servidor, uga uga respondio que «la habia subido a 10», a lo cual el ing. de IBM le digo, los sistemas vienen por defecto en 30 (de 100), patetico!.

      Comentario by m06 — 15 agosto, 2013 @ 17:24


    69. ¿Que el lenguaje HTML no tiene suficientes herramientas de formato para remarcar una palabra? ¿O quizás que TÚ no tienes su-fi-ci-en-tes conocimientos del lenguaje HTML?

      Y luego para no remarcarla y ponerle unas cutres comillas en la segunda mención…

      Deberías tener en cuenta que te van a leer muchos informáticos (y yo no lo soy) y que cazarán al vuelo cualquier tontería que digas -escribas- intentandotelas dar de listillo 😉

      Comentario by MuchaPicha — 15 agosto, 2013 @ 17:58


    70. #70
      sarcasmo.
      (Del lat. sarcasmus, y este del gr. σαρκασμός).
      1. m. Burla sangrienta, ironía mordaz y cruel con que se ofende o maltrata a alguien o algo.
      2. m. Ret. Figura que consiste en emplear esta especie de ironía o burla.

      Comentario by AlexVix — 15 agosto, 2013 @ 18:07


    71. un simple basta para remarcar una palabra … o un

      Aunque en sí, la gracia es librar de formato el HTML , y dejarlo en solo estructura. Del formato ya se encarga el CSS.

      De ceplusplus sabrás mucho pero de web poco xD

      Comentario by Fran — 15 agosto, 2013 @ 20:19


    72. Anda, me ha jodido los tags html…

      Comentario by Fran — 15 agosto, 2013 @ 20:20


    73. Si no sabes que esto es parodia, burla, mofa, chiste, broma, comedia o similar…. No Regreses por aqui.

      Comentario by TheWired — 15 agosto, 2013 @ 21:45


    74. MKII se merece un buen tirón de orejas. Yo no tengo emece, pero hay una aplicación muy maja, en el sql de Mordor, que te dice las sentencias sql que se estan ejecutando, la cpu que ocupan, el tiempo que tardan en ser procesadas. Es un chivato.

      Si estas un poco avispado ahí ves que las sentencias sql van sin where. Aunque eso es hilar fino.

      El relato es cojonudo.

      Comentario by Ignacio — 15 agosto, 2013 @ 22:35


    75. Todos unos cracks los becarios de $Bullshitsoft con la variable trileana.

      Comentario by gamamew — 15 agosto, 2013 @ 22:40


    76. #70 hijo mío, si no entiendes las bromas de este tipo, me temo que no puedes leer wardog, porque está repleto de ellas.

      Comentario by FreeMEM — 15 agosto, 2013 @ 23:41


    77. Sistemas escritos en C++ porque «el código nativo siempre es más rápido» que hacen consultas sin where x)

      Comentario by Tor-Aaron — 16 agosto, 2013 @ 12:35


    78. En una ocasión vi otra variante:
      Para mostrar los últimos elementos por fecha, habían cogido toda la tabla , y luego se los ordenaban ellos mismos en la aplicación.
      (En vez de select top 10 * from … order by )
      Como habeis comentado, según pasa el tiempo cada vez va peor.

      Eso sí, no se qué metodo usaban para ordenar.

      Supongo que el que lo ha hecho de bases de datos solo sabe consultar una tabla y poco más, o ni siguiera, se lo habrán dado en una receta.

      Saludos

      Comentario by chema — 16 agosto, 2013 @ 14:21


    79. En mi empresa nos pasó el año pasado algo similar con cierta empresa.

      Los muy listos habían hecho lo de Select * y la aplicación conseguía llenar 1Gb de ancho de banda de la F.O. que teniamos. Ahí con 2 cojones y decían que era problema nuestro de nuestro servidor.

      Comentario by [aMc] — 16 agosto, 2013 @ 14:42


    80. Wardog, eres muy grande tío 😀
      Un comentario, por si te sirve en el futuro: a veces (no es este caso) el problema de lentitud puede estar en la latencia. Es decir: hacer muchas consultas pequeñas (o accesos a ficheros, FTP, red, etc) en lugar de pocas y más grandes. Lo he visto a menudo en mi caso (procesado masivo de datos con Java y Oracle o similar).
      Ea, un saludete, y no cambies!!

      Comentario by ysndhalf — 16 agosto, 2013 @ 15:40


    81. Lo mas divertido que he leido en todas las vacaciones. Muchas gracias.

      Comentario by angela — 16 agosto, 2013 @ 18:18


    82. Eres el amo absoluto,
      El Select * sin where es la tipica, quien no lo haya encontrado al menos una vez en su vida miente…
      Pero a mi me han pasado cosas peores, una jr de practica que tiro un update… sin where!!!!! creo que jamás en mi vida he amado tanto el rollback como ese día.

      Me descostille de la risa con toda la entrada, entre las variables trileanas y el PUEDIMP casi muero.

      Saludos desde el otro lado del charco!

      Comentario by Lady_Bisho — 16 agosto, 2013 @ 18:48


    83. Hace unos meses tuvimos un problema similar. «Heredamos» un portal Liferay cuyo core y ciertos portlets habían sido modificados por la empresa «líder» de las TICs nacionales (que es multinacional). El caso es que el portal hacía un extraño chequeo de permisos para cada entrada cada vez que generaba ciertas páginas. El problema fue creciendo como una bola de nieve de tal manera que visualizar ciertas secciones de la web generaba más de 6000 consultas SQL (!) (con sus subconsultas) que ponían el Oracle RAC de rodillas en cuanto habían unos pocos usuarios concurrentes, incluyendo la araña de Google. Además como habían modificado el core de Liferay actualizarlo no es trivial.

      Bueno… por suerte eso queda fuera de mi competencia. Que apechugue con esto el que les contrató 😛

      Comentario by Deeso — 16 agosto, 2013 @ 22:54


    84. Haber si astaroth puede conseguirte el codigo fuente de direct-x.

      Comentario by Garam — 16 agosto, 2013 @ 23:30


    85. select * from world where programador = bueno

      Results not found

      Yo no soy programador, pero mis pequeños programas hechos en Visual Basic 6, php o GamBAS (visualBasic para linux) siempre han tenido un Limit, where o similar.

      Por cierto Wardog, ¡¡¡NO Cambies!!!

      Comentario by Edro the ex-BOFH — 17 agosto, 2013 @ 20:25


    86. Solo por joder: Visual Basic 6.0 autoindenta «por cojones» con la configuración por defecto… y todavía no sé qué es peor…

      Comentario by Gaizko — 19 agosto, 2013 @ 00:09


    87. ¿Los becarios?
      Pues anda que el experto encorbatao que redacta el informe una vez que evalúa el problema in situ (que cobrará 3 veces más que cada uno de los pringadillos ésos) se lució, eh?…
      Por cierto, que los becarios tendrían un responsable/jefe que es un crack (y que cobrará 3 veces más que ellos).
      Y vuestro responsable/jefe que se deja timar por la empresa de sw, también es pa ponerle una medallita.

      Añado que esta entrada debería ser de obligada lectura en 1º de las carreras de informática. O mejor aún: en 1º de preescolar.
      Muchas gracias por las risas que nos hemos echado a este lado!

      Comentario by ra — 19 agosto, 2013 @ 11:57


    88. Lol! Soy becario pero me cae que no soy tan malo :P, me he reido bastante y lo peor es que realmente ocurren estas situaciones, de echo ya me toco corrregir una que otra.

      Saludos.

      Comentario by Sion — 19 agosto, 2013 @ 16:49


    89. Igualico quel defunto de su abuelico!, me recuerdaa esto a mis peleas con las aplicas de $chapucindra y sus chorradas, el Cobol se quedaba pequeño ante tan tamaños atentados a la programación, menos mal que me he jubilado sino hubiera terminado como vosotros tal los jotus….5 minutos para devolver un valor de campo, 15 para una lista, etc

      Comentario by piflodo — 20 agosto, 2013 @ 10:44


    90. Buena entrada, yo soy sysops pero alguna vez me he enfrentado a aplicaciones muy parecidas, cuyos maestros desarrolladores SIEMPRE acusan a los sistemas, «porque en su portátil funciona»…

      A la que te explican como lo hacen funcionar… bueno, se te caen los cojones al suelo y le das un par de consejillos.

      Por cierto wardog, ¿la peña que se ofende en esta web es de verdad o les pagas para que nos partamos de las gilipolleces que dicen?

      Comentario by malevolent — 20 agosto, 2013 @ 13:52


    91. Podemos añadir aún más alicientes si el Dios de espacio exterior no es de una empresa proveedora sino de la misma empresa en la que trabajas, y si nada más entrar en ella él se va de la empresa, dejando MUCHOS proyectos abiertos. Uno de estos proyectos hablo un poco por encima en http://www.cronicasmundoabsurdo.com/marron-en-el-tiempo/

      Comentario by Aberracion — 22 agosto, 2013 @ 15:03


    92. Algunas frases para la historia! Ingenio agudo. 🙂

      Comentario by Joana Pol — 22 agosto, 2013 @ 20:42


    93. sos un genio, que epoca aquella de los «goto»

      Comentario by sergitin — 23 agosto, 2013 @ 02:28


    94. mucho ignorante por aquí veo… podría hacer una buena lista…

      ¡Post genial!

      Comentario by observer — 26 agosto, 2013 @ 14:57


    95. Hubiera sido más fácil activar el query log un rato. Era mejor gastarse la pasta en un DBA. De todas formas sois unas máquinas por meteros con ese troncho.

      Comentario by Orco — 28 agosto, 2013 @ 11:40


    96. Grandioso. La vida misma. Yo tengo unos casos muy muy parecidos.
      La trileana ha sido brutal.

      Comentario by J — 28 agosto, 2013 @ 14:01


    97. No me lo creo. Eso no es un trabajo de becarios: es un sabotaje concienzudo. Para usar GOTOs hay que saber que existen. Es un concepto tan obsoleto (la programación estructurada existe desde antes de que yo naciera) que no tiene cabida en los curriculums académicos de hoy en día. Complicadísimo también intentar convertirse en programador autodidacta y encontrarse con un libro o material que te enseñe a programar así. Es como si un médico-wannabe te sangrara con sanguijuelas porque se hizo así durante mucho tiempo en el pasado…

      Por otro lado, ¿de dónde salen esos becarios? Yo todos los que he visto pasar sufrían el mal contrario: orthodoxis academica. Hay que vigilarlos, pero no para que no usen variables globales o código espagueti, sino para que no te creen una jerarquía cuasiinfinita de clases abstractas e interfaces, o pierdan la mitad de la jornada dibujando diagramas de colaboración, o escribiendo tests unitarios para funciones triviales. Sólo me puedo imaginar que los becarios de los que habla Wardog no fueran informáticos sino biólogos, o ingenieros de telecomunicaciones :p Cosa impensable hoy en día en que sale igual de barato contratar a un estudiante de informática como a un FP.

      Por no hablar de que jamás he visto una empresa que se dedique a vender software y fabrique productos de tan ínfima calidad, con una atención postventa pésima, y encima comparta el código fuente con un cliente. Ni creo que la que vea, porque aunque existan, se hundirán tan rápido como han aparecido. Igual que si yo pongo una panadería y vendo el pan que recogí el día anterior de los contenedores delante del Mercadona. Y además, al que se queje de que sabe rancio le digo que lo haga él, a ver si le sale mejor.

      Gracia tiene, verosimilitud ninguna.

      Comentario by El hombre que no existe no deja de existir porque no exista — 29 agosto, 2013 @ 15:38


    98. @98 yo sí me lo creo:

      Cuando un estudiante de informática descubre las variables globales es como si se le iluminara el mundo: por fin, nada de scopes, nada de pasos por valor/referencia, nada de malloc/free, nada de nada…. KISS en estado puro. Si no les vigilas, el vicio está asegurado… Y mira que he tenido que desasnar a estudiantes «globalizados»

      Quién sabe si el goto es una exageración, pero digan lo que digan por ahí, se usa. Se usa mucho. Mucho. Y más cuando tienes al pobre becario tras un sinfín de bucles anidados $deity sabe como, y del los que no sabe cómo salir. Otra de mis tareas de desasne consiste en enseñar a usar el «break», incluso el «throw», o que la condición de salida de un while() no tiene por qué ser solo una única variable

      No, no soy profesor; soy maestro de laboratorio. Parte de mi trabajo consiste en enseñar a los alumnos a manejar lo que creen haber aprendido de lo que los profesores creen haberles enseñado 🙂

      PS: me encanta el post. También he sufrido chapuzas similares, y doy fé de que existen.

      Comentario by jonsy — 30 agosto, 2013 @ 09:02


    99. No he podido evitarlo, me han llevado al hospital de un ataque de risa descontrolado.
      Llevo muchossss años en esto y cuando digo muchosss es porque lo son. Todavía recuerdo que un GOTO en codigo C era equivalente a «chaval, esto no es lo tuyo».
      Por desgracia o falla la formación o las ganas de hacerlo bien.
      Me ha tocado leer mucho código hecho por empresas $Bullshitsoft! y al menor comentario, en voz baja, de «vaya mierda» me han mirado siempre con cara de «Y tu que dices, que son los de $Bullshitsoft!, vas a saber tu mas que ellos»
      En fin… espero que me den el alta antes de leer otro post de Wardog…

      Comentario by Javier — 2 septiembre, 2013 @ 02:28


    100. Quizás sean becarios no pagados, mal pagados… o simplemente, becarios que son filósofos supervisados por becarios biólogos….

      Comentario by David — 2 septiembre, 2013 @ 13:22


    101. Seguramente, David, es así, pero lo importante para bullshitsoft es que sean Licenciados Universitarios…, en qué ya da igual…, lo que importa es un diploma y cuello para la corbata.

      Comentario by Josep — 2 septiembre, 2013 @ 15:50


    102. Esto me suena a HAL 9000 y su soporte.

      Comentario by Tomatelotranki — 2 septiembre, 2013 @ 15:53


    103. @98: Aquí un Teleco. No me pidas que te haga un diagrama UML porque no sabría ni por dónde empezar, pero lo primero que me enseñaron en programación de primero fue que los GOTO y las variables globales estaban terminantemente prohibidos (a menos que programes en ensamblador, claro).

      Comentario by jasev — 3 septiembre, 2013 @ 09:53


    104. Te ha faltado un clásico, el de las selects donde juntan varias tablas y para que les dé algo parecido a lo que quieren meten un distinct porque no hacen una mala join bien…

      Cuando me tocaba tunear aplicaciones siempre apostaba a ver cuántas sql me encontraba SIN el distinct 🙂

      Comentario by asertus — 5 septiembre, 2013 @ 09:24


    105. Totalmente de acuerdo con #42. Ya te pasas de listillo WD!

      Comentario by azerrty — 5 septiembre, 2013 @ 15:15


    106. @98 Yo he visto todo eso en una empresa pequeña donde trabajaba hace 6 años.

      Comentario by leigo — 9 septiembre, 2013 @ 02:30


    107. Lo del GOTO + variables globales + becarios no tiene sentido, cualquier estudiante de programación reciente ha tenido que recibir una buena dosis de adoctrinamiento sobre ese tema, si no vaya profes de mierda.

      Parece mas obra del «abuelo higiniero», el que aprendió a programar C en 1983 y ahí se ha quedado.

      Comentario by David — 10 septiembre, 2013 @ 10:29


    108. #45

      El permitir o no la JOIN es la diferencia entre saber de SQL y saber de BD. El JOIN suele acabar produciendo FULL SCANS de las tablas cosa mala y ralentizando todo un montón cuando las tablas son grandes.

      Hace años teníamos a un fiera del SQL que le gustaba el JOIN más que a un tonto una tiza y al que se le iban las consultas a 10 minutos como nada. Luego esa misma consulta se la pasábamos al que si sabía de BD, quitaba los JOIN y partía las consultas y obteníamos la respuesta en 10-20 segundos.

      Vamos, que no me extraña se prohíba el JOIN.

      Comentario by Jesus — 11 septiembre, 2013 @ 14:55


    109. Si, yo también doy fe de que muchas empresas tienen el JOIN capado en sus BBDD. Lo del #42 me parece un poco absurdo, hay gente que no sabe de que va el blog… Yo me he reído un montón y soy programador hasta la médula.

      Comentario by David — 12 septiembre, 2013 @ 15:54


    110. Hace unos días descubrí tu blog gracias a un enlace a este ¿relato?, y desde entonces me lo he leído entero desde su inicio en el 2005.

      Muchas gracias, me has hecho reír un montón todas estas noches antes de dormir, y espero que sigas escribiendo durante mucho tiempo.

      Comentario by miniyo — 12 septiembre, 2013 @ 17:07


    111. Wardog, sigo tu blog desde hace años pero es la primera vez que comento, no tienes que ser tan ácido con los pasantes (o con los ingenieros, de paso, conozco a muchos pasantes de ingeniería que son mejores que muchos técnicos/tecnólogos con años de experiencia).
      Puede pasar lo contrario, y es exactamente lo que estoy viviendo: acabo de graduarme como ingeniero de sistemas y no trabajé un sólo día en la universidad (bueno, me gradué hace cinco meses y llevo trabajando menos de tres, así que soy básicamente un pasante en lo que a experiencia se refiere) y pasó que la empresa donde estoy trabajando fue montada y es dirigida por chimpancés:
      -Bases de datos sin relaciones, cientos de tablas y todas sueltas, todo el manejo de los datos se hace a nivel de la capa de datos de las aplicaciones (que también es una monstruosidad).
      -No estándares, no metodologías de desarrollo, nada. Todo se hace al azar y según lo que un sujeto que antes trabajaba en bienes raíces concuerda con los clientes (tampoco se siguen estándares de modelado o diseño, todo se hace a mera intuición).
      -Hasta hace poco ni siquiera se usaba control de versiones y lo poco que hacían lo hacían muy rudimentariamente. Esto es lo primero que he logrado convencerlos de que corrijan (y tengo que ser yo quien lo haga).

      Y muchas, muchas otras falencias.

      Un par de apuntes: C++ es multiparadigma (uno de los pocos verdaderamente multiparadigma, de hecho), no fuerza la programación orientada a objetos, he visto programas muy bien hechos en C++ que no usan clases, simplemente porque no son pensados como orientados a objetos sino procedurales. A nivel de kernel no se usa POO, por lo general, y C++ puede ser usado a ese nivel, por ejemplo. Eso sí, el programa que describiste en esa empresa es definitivamente un insulto.

      Comentario by Julian — 14 septiembre, 2013 @ 17:35


    112. Pues ya me he terminado el blog entero. Y ahora me aburro XDDD

      Comentario by CrisZombie — 14 septiembre, 2013 @ 22:33


    113. Por dios una chapuza así se tiene que hacer a propósito

      Comentario by Jaume — 16 septiembre, 2013 @ 21:14


    114. soy programador web y de php

      en mis primeros años de desarrollo como profesional echo y derecho. me toco arreglar codigos vomitivos, sufri, los intestinos se revolcaban unos sobre otros.
      de ahi, mi regla sagrada…
      si no usa framework, no meto las manos en esa cosa mas que para reconstruirla desde 0

      Comentario by inyaka — 20 septiembre, 2013 @ 02:23


    115. Gracias a Monesvol, no soy un gilipollas «informático» y puedo comentar que las historias de Wardog, sean «de veras», o no, me hacen descojonar… Fíjate, Wardog,que te escribe un tipo que apenas sabe hacer «doble click», así que me la sopla el contexto «técnico» de la historia, sino que me descompongo de la risa propiamente con la historia, porque éstas trascienden el aspecto técnico, que es el único que toman en cuenta todos estos animalit@s, para, en realidad, (de)mostrarte cuáaanto saaaben… Digo, ¿no estarán medio enamorad@s de tí, y pretenderán seducirte de alguna manera perversa… para que los tengas en cuenta…? De mi parte, tengo que consultar la wiki para entender la mayoría de las cosas técnicas… pero eso no me arruina las carcajadas. Son historias de oficina, machos, no de informática… Pero como son tan listos (es sarcasmo), no se han dado cuenta… Firmado: Un oficinista analfabeto en informática, harto de los comentarios de los «expertos».

      Comentario by hernán — 22 septiembre, 2013 @ 07:07


    116. Jajaja… me encanta este Wardog. Soy programador y doy fe de que se debería poner muuuucho más «énfasis» en la enseñanza del SQL

      Comentario by Rubén — 25 septiembre, 2013 @ 11:05


    117. Excelentes tus articulos, te leo desde aqui «18.524858580412673, -69.88731103515624» y eso es pa’ que veas lo que es la interne….REALIDAD QUE HA SUPERADO LA FICCION AL 100%….amigo, sigue asi…

      Comentario by Lechattresfaible — 31 octubre, 2013 @ 13:43


    118. Que te paso WarDog?? Donde fue tu BOFH??? Ese mensaje que enviaste es demasiado suave para mi gusto, tanto trabajo que te mataste solo para no devolverla…

      Comentario by SinZapatillas — 2 noviembre, 2013 @ 11:42


    119. Tengo más de 20 años de experiencia como director de sistemas de una empresa industrial, en la que recientemente se ha implantado (por cojones, ya me entendéis) SAP y puedo dar fe de que, por ejemplo, para los listados, se piden los parámetros de selección por pantalla, en una tabla en memoria se mete TODA la tabla de la BD y luego se itera, borrando los registros que no cumplen los criterios de selección de la pantalla, pero, haciendo una iteración por cada condición…

      Y esto no lo han hecho los becarios….

      Que os parece?

      Comentario by VivaSAP — 1 diciembre, 2013 @ 12:33


    120. ¿Cómo lo haces? Como luser que soy, profano a conciencia, me he leido el post y me he tronchado de risa sin haber entendido nada del lenguaje técnico. Estoy por estudiar programación con tal de ponerme cianótico leyendo las entradas.

      Felicidades por esa habilidad, y gracias por hacerme reir (algo que a partir de los 40 es como para invitar al que lo consigue a unas vieiras 😉

      Comentario by Nexus — 16 enero, 2014 @ 15:47


    121. Yo soy ldo. en Derecho y no es que me vaya a poner a aprender a programar, es que ya me he puesto(no te he comprado el libro porque soy ldo. en Derecho en paro y no leo nada impreso que no esté en la biblioteca municipal).

      Ya que te hace ilusión leerlo, te lo decimos. Llevo leyéndote… unos años, no sé muy bien cuántos, pero me he leído el blog entero con el botón de «anterior» y aprendiendo Java en mi tiempo libre desde septiembre o así.Para entenderte a ti y a otros informáticos metidos a artista como Ender o koopaconan.

      Ahora, he leído algo en Twitter algo de que ibas a actualizar más esto si te decimos estas cosas y creo que tenemos un contrato vinculante…

      Comentario by Xav. — 16 enero, 2014 @ 19:34


    122. Un poco de humor siempre viene bien. A tope con la programacion!

      Comentario by lineaseroticas — 4 febrero, 2014 @ 20:06


    123. Everis. Fijo.

      Comentario by Agustin — 9 febrero, 2014 @ 21:41


    124. Uff que jodido. Yo eso lo llevaría fatal. No valgo una mierda como programador porque solo sé trabajar con código que escribo yo. Puedo coger un código que escribí hace seis años y saber cómo va a estar sin tener que mirarlo, pero coger el de otros… muy bien lo tienen que apañar para entenderlo.
      En vuestro caso lo hubiera tenido jodido. Gran trabajo.

      Comentario by Charlie el remero — 27 junio, 2014 @ 11:33


    125. JAJAJAJA… Esta noche pesadillas, me acordaré del Amstrad464 monitor fósforo verde cuando programabas en BASIC GOTO break… ARGHHHHHHJAJAJAJAJ

      Comentario by Menusal — 3 febrero, 2016 @ 11:04


    126. Más razón que un santo amigo!!!!!
      Grande !!! Jajaja

      Comentario by Seo — 28 octubre, 2016 @ 15:05


    127. Un par de años más tarde pero …

      Con mi compañero desarrollamos un método de detección de errores basado en conceptos ampliamente usados a lo largo de la historia.

      «El Oráculo de Sistemas»
      Coges un clip, una tapa de boli bic, una tapa de pendrive, un par de transistores (para darle el contactar con los espíritus tecnológicos q habitan a nuestro alrededor), una pila de botón y un m&m no muy chupado.
      Lo metes todo en un cubilete lo agitas y rezas una plegaria a los dioses de Cobol (o c o perl o cisco, o cualquiera q sea tu dios tecnológico). Vuelcas el oraculo sobre la mesa y estás preparado para la fase de «Interpretación de designios divinos».
      Hay diversas vertientes teológicas en este paso del ritual, pero básicamente leyendo adecuadamente las señales del oráculo, se manejan se llega fácilmente a diagnosticar problemas de alta complejidad del tipo:
      -«Han cascado las comunicaciones»
      -«Algún inútil no limpia los punteros en las inicializaciones»
      -«El técnico de la noche ha conectado la polaridad al reves»
      -«El usuario ha golpeado demasiadas veces el terminal con un objeto contundente»
      -«Este tipo de tecnología no es resistente ni al agua ni a sustancias orgánicas fluidas»
      – y demás violaciones infectas de los códigos de conducta tecnologica aceptada por «la compañia».
      Basándonos en los designios divinos reflejados en el oráculo, mandamos a nuestros fieles lacayos juniors a investigar en detalle el problema para buscarle una solución, aplacar las iras de los usuario y la acidez estomacal del dios de la tecnología.

      Estamos trabajando en condensar nuestro credo en 0x10 mandamientos y hacer jurar devoción a ellos a todo nuevo trabajador. Más tarde expandiremos nuestra fe al resto del mundo.

      En resumen, hoy tengo una mala tarde y no me concentro para seguir currando :p

      Comentario by ÇKano — 5 mayo, 2017 @ 13:38


    128. La verdad, después de haberlo leído de cabo a rabo, tengo que reconocer que me he reído bastante, no viene mal tomarse un respiro con tanto código.

      Comentario by lineaeroticabarata — 16 agosto, 2017 @ 03:17


    RSS de los comentarios | TrackBack URL

    Leave a comment

    • No te lo vas a creer, pero hay páginas web que usan cookies. Ésta es una de ellas. Si continúas perdiendo el tiempo aquí, asumiremos que aceptas nuestros malignos ficheros de texto.
    • Vale.
    • Paso.
    • Quiero más información,