El Segundo Aire del Pelos

Tuesday, September 05, 2006

Cronica de una Falla Anunciada

Estos dias he andado bien ocupado... gran parte de mi tiempo me la he pasado leyendo y aprendiendo cosas nuevas. Suena chido, no? pues no... la verdad, es que tengo que confesarselos... LO HICE TODO MAL!!! sip, la cajetee horriblemente, lo hice todo del nabo... en fin... como se diria coloquialmente... cometi una infinidad de errores.
Y como soy muy buen samaritano, pues quiero platicarles mi experiencia, para que si algun dia estan en una situacion parecida, pues que no la cajeteen tan gacho como yo.
Asi que ahi les va la historia completa... resulta que un cliente nos pidio hacer un cambio en un proceso que tenemos actualmente... este cambio implica basicamente que la informacion que le proveemos, y que actualmente se manda en un archivo texto, ahora se tiene que mandar a traves de una pagina en Internet... sonaba bien facil... conectate a la pagina, pasa como parametros en el Querystring los datos y ya... de hecho, en alguna ocasion habia hecho algo parecido, asi que no habia de que preocuparse...
Sin embargo, a medida que empece a hacer las prueba, los problemos empezaron a surgir... mi primera opcion fue usar un control que ya habia usado llamado "TWebBrowser". Este es un control poderoso, y que tiene bastantes opciones... basicamente, te pone una pantalla para hacer browse de internet. Todo bien hasta ahi... sin embargo, surge el primer obstaculo... resulta que en la compañia usamos un proxy para conectarnos Internet, asi que la primera vez que se hacia la conexion, pues pedia las credenciales para el proxy... bueno, al cabo es solo una vez al principio, que lo ponga el usuario. Pues empiezo a hacer pruebas, y finalmente logro que se mande la informacion, tal como se necesita... pelada, no tuve broncas... sin embargo, lo del proxy me seguia molestando... pero en fin... para eso esta el usuario, no? Claro que es un proceso que debe correr "unatended", pero bueno, el operador lo puede correr, poner las credenciales, y ya de ahi en adelante que corra solo.
Ah!!! pero el destino es cruel... pues que me avisan que, junto con los datos, se tiene tambien que mandar la imagen... a cañon, ya se esta complicando mas... pero no hay pex, empiezo a checar como se puede hacer... en eso andaba, cuando ademas me avisan que el sitio al que se conectara es seguro, y requiere que se autentifique tambien, con un usuario y un pwd especificos. A cañon, ya se complica mas... igual y el usuario puede ponerlo tambien, pero bueno, esto cada vez se complica mas, y ya no me esta gustando. Asi que hay que buscar otra forma de hacerlo.
Claro, como el Pelos es bien trucha pues empieza a buscar en Internet y con sus compas, para ver como se puede hacer, y rapido, por supuesto. Entonces se aparecen por ahi una serie de controles llamados Indy (por Internet Direct), y de acuerdo a lo que leo y me dicen, uno de esos controles puede hacer exactamente lo que yo necesito (ah!!! por cierto, son Open Source). Asi que consigo la version mas reciente, la instalo en mi maquina y a darle.
Para estas alturas, ya casi estoy listo... ya solo es cuestion de checar la documentacion, y hacerlo jalar... asi que empiezo a buscar en la documentacion, para ver que pex... Pero resulta que entre mas leo, mas me hago pelotas. Habla de un buen de terminos que no conozco, sobre tecnologias que no domino y da por hecho que ya se todo sobre TCP, IP, Internet, Sockets, HTTP, Protocolos, etc... UUUUUUUUUTAAAAAAA... NO ENTIENDO NI MAIZ!!!
Asi que, dado que la "Ayuda" no me es de mucha idem, pues hago lo que cualquier persona cuerda y en sus cinco sentidos haria en ese momento... busco en Internet pedazos de codigo que ya esten listo, que hagan lo que necesito... para que batallar, no???
Despues de un rato, y gracias a San Google, pues que encuentro a una persona que tiene un articulo que se llama... como creen??? pues se llama "Uploading Files Using Indy"... no manches... ni mandado a hacer, como anillo al dedo (sin albur hasta donde se pueda). Le doy una medio leida al articulo, pero tambien habla de muchas cosas que no se que pex, asi que me lo brinco... anda... vamos a lo importante... donde esta el cooooodigo???? come to dady!!!!! y sip... ahi esta, el tan ansiado archivo zip con el codigo... Yuju!!!! ya la arme... lo bajo, lo descomprimo, lo pruebo y jala... ya solo es cuestion de cambiarle la direccion de la page a donde me tengo que conectar, pasarle los campos correctos y ya... ah!!! claro, tambien pasarle el user y pwd del proxy y de la autentificacion... pero como soy EL PELOS (asi, con mayusculas), pues eso ya lo habia encontrado en otro pedazo de codigo por ahi... asi que remplazo lo remplazable, pongo mis datos, lo corro y.... a caon... no corrio... como ejote... tronando machin... pero que pex??? si la aplicacion que baje si jala, porque ya modificada no??? empiezo a checar, me meto al codigo que baje (no le entiendo mucho, la neta) me meto al codigo del control (le entiendo todavia menos) y nomas no lo puedo echar a jalar... AAAAAAAAAGGGGGGHHHHHH!!!! ahora si esta del nabo... que hacer??? pues regresar a Internet y ver que mas se puede hacer...
Finalmente, me decido a hacer lo que debi haber hecho desde el principio!!! me decido a leer e investigar sobre Protocolos, sobre TCP, sobre IP, sobre Sockets. Afortunadamente, Matlus (autodenominado "The Delphi Apostle") ademas de proveernos de codigo, tambien tiene varios articulos teoricos sobre lo mencionado anteriormente.
A ver... waitaminute... ahi vengo...

Yap... es que jui a cenar... pero ya regrese...

Bueno, entonces les decia que Maltus amablemente me proveyo de literatura sobre estos temas... y me puse a leer como loco... hasta las cero trescientas horas (3:00 AM). Afortunadamente, ya cuando me fui a dormir tenia una idea de lo que era TCP, IP, HTTP, Sockets y otras cosas que algunas horas antes eran como japones para mi... bueno, peor que japones, porque al taka taka medio le entiendo.

A la mañana siguiente (se oye chido, no???) pues ya armado con mis conocimientos, empece a ver otra vez el desma que tenia de codigo... y me empece a dar cuenta de cuales eran las broncas... ademas, me tope en el Messenger a mi cuate Carlos Madrigal, y aprovechando que tenia rato que no platicaba con el, pues lo salude, le explique mi situacion, y el procedio amablemente a despejar las dudas que me quedaban. Le segui un buen rato dando, y para antes de que se acabara la jornada de trabajo, ya sabia como estaba el pex, y tenia una aplicacion "casi" funcional usando Indy... chido no??? pues nomas me tomo como tres o cuatro dias hacerlo...

Ok... de que sirve todo este super-choro??? bueno, quiero compartirles mi experiencia, y lo que aprendi.

  • Lo primero y mas importante: No hay Atajos para el Conocimiento. Asi es, si queremos aprender, no hay de otra... a estudiar. Afortunadamente hay muchas posibles fuentes.
  • El camino mas rapido no siempre lo es (y tampoco el mas facil). En mi intento por hacer las cosas facil y rapido, trate de usar codigo que alguien mas habia hecho, sin ponerme a analizarlo... ya despues, me di cuenta de varias cosas... primero que nada, ese codigo estaba diseñado PARA OTRA VERSION DE INDY. Una version vieja, que no tenia funcionalidades que la version mas nueva tiene, y que con esta version mas nueva era mas facil; segundo... ese codigo tenia "hardcoded" varias cosas, asi que NUNCA iba funcionar con lo que yo queria hacer.
  • Es bueno reutilizar codigo... no siempre se tiene que reinventar el hilo negro... pero es MUY IMPORTANTE entender el codigo que se reutiliza... y carajo... de perdida hay que checarlo, no?
  • No saber algo no es malo. No, es muy dificil saber todo de todos los temas... lo malo no es no saber, sino no aceptarlo. Yo no empece a resolver mis problemas hasta que me decidi a aceptar que ignoraba muchos de los conceptos, y por lo tanto decidi tambien que debia de estudiar... entonces, que no les de pena no saber... lo que les debe de dar pena, es no querer aprender!!!
  • Por ultimo... NO SEAS HUEVON!!! Ponte a estudiar, que no te cuesta nada, y te deja muchos beneficios!!!
Kamikaze me sugirio un par de "lecciones" que se pueden agregar... y como me parece que tiene mucha razon, las agrego.. claro, dandole el credito:

  • Participa en una comunidad de desarrolladores. Totalmente cierto... a Carlos Madrigal lo conoci por la Comunidad Juarez.NET, y aunque trato de evitarlo, a cada rato le doy lata con dudas... y asi como el estan varios profesionales muy buenos de quienes podemos echar mano... ademas, de vez en vez yo tambien puedo contribuir con mis pocos conocimientos y experiencia.
  • Y sobre todo... Lo importante no es saberlo todo, sino tener el telefono (o messenger) del que lo sabe!!!!
Bueno, ya esto esta exageradamente largo... espero que alguien lo lea hasta el final, y que les sirva de algo... ojala nadie pase por lo que yo pase, y haga las cosas bien desde el principio... y por cierto, si alguien necesita ayuda con el control TIdHTTP de Indy... pues aqui esta su servilleta...

Finalmente, otra vez muchas gracias al Charly Madrigal, por ayudarme a "desapendejarme"...

Abur!!!

Y por cierto... no me enojo si me dejan comentarios, eh!!!

6 Comments:

  • ¡Excelente historia! Qué bueno que enumeraste las "lecciones aprendidas". Creo que más de uno de nosotros ha pasado por eso.

    Yo hubiera agregado otro bullet a las lecciones: participa en alguna comunidad, o echa la mano y hazte compa de varios desarrolladores de distintas especies. Nunca sabes cuándo se te va a ofrecer, y como dice el dicho "lo importante no es saberlo todo, sino tener el teléfono (o el messenger) de quien pueda saber"

    ¡gracias por compartir!

    By Anonymous KaMiKaZe, at 8:16 AM  

  • Excelente historia. Concuerdo con el tocayo. Además, muy bien contada, muy cómica.

    Sobre tus lecciones aprendidas, de acuerdo. Los programadores pragmáticos tienen conocimiento y tener conocimiento es tener control. Los programadores novatos copian y pegan código y usan asistentes (wizards).

    Gracias por mencionarme, se siente chido. Aunque, la liga está incorrecta ;-)

    Si me aceptas una recomendación en tu estilo de escribir, hay unas cosas llamadas párrafos que ayuda a que no se vea un bloquezote de texto y, por lo tanto, no te da tanta hueva leerlo... jeje.

    By Blogger Carlos Madrigal, at 9:37 AM  

  • Gracias por los comentarios... espero romper mi propio record, y que alguien deje otro comentario, para por fin tener una entrada con mas de dos...
    Kamikaze... servido, ya agregue los otros dos items a la lista... muy validos.
    Madrigal, ya corregi la liga, y es mas, como "bonus" por la cajeteada, en otro lado puse la liga a tu otro blog...
    Oye... ya me hice pelotas con lo de los parrafos... segun yo si los uso... que no un parrafo es cuando pones un punto y luego le das ENTER? porque segun yo si hago eso... thanks anyway

    By Blogger Alex Briseno, at 10:08 AM  

  • Chido mi Alex, pa cuando necesita usar algo parecido con indy ya se donde buscar!!!
    (y)

    By Blogger -Kylix-, at 3:10 PM  

  • Para que tengas otro comentario y rompas tu marca... lo de los párrafos, depende de la configuración de tu blog... ya no recuerdo cómo dice pero creo que es algo así como "Convert new lines into BRs"

    By Blogger Carlos Madrigal, at 9:15 PM  

  • In my opinion it is not logical

    By Anonymous Casino Betting, at 8:21 AM  

Post a Comment

<< Home