Tomas Bradanovic

27 septiembre, 2007

El diablo está en los detalles

Archivado en: vba — tombrad @ 10:40 am

Heme aquí de nuevo, un poco tarde, después de un día maldito y frustrante. Resulta que ayer decidí hincar el diente en algo que venía dejando para el final en el programa del Rapa Nui: la trasmisión de los archivos desde el bar a la oficina, cosa que por ahora venía haciendo manualmente arrastrando todos los días a una carpeta web.

Claro que esto era una solución de parche porque cuando se manipulan manualmente los archivos hay que hacerlo con cuidado, no cuesta nada borrar o sobreescribir equivocadamente. Lo que necesitaba era un simple botón que desde el Excel hiciera la trasmisión sin posibilidad de equivocaciones. Pensé que sería algo muy sencillo -para eso se inventó Internet- y por eso lo dejé para el final. Efectivamente era sencillo, pero me demoré mucho en encontrar la forma; un día completo dándome de cabeza como mosca contra el vidrio.

Hay muchas formas de mandar archivos por Internet, desde adjuntos en un correo electrónico, arrastrar a carpetas web o usar un programa cliente FTP. Pero lo que yo necesitaba era programar un botón en VBA que hiciera todo. Y me puse alegremente a buscar con Google, ese gran programador que todo lo sabe, donde encontré varias soluciones. Pero todas pasaban por usar controles OCX que hay que registrarlos, no siempre son compatibles con la versión del Office y la programación era enredada y llena de funciones que no necesitaba, ¡diablos, yo solo busco un botón con unas pocas instrucciones!

Entonces pensé que lo más simple sería usar el FTP del DOS, en modo consola, controlado por un archivo bat, llamándolo del programa con una función de shell(), fácil y bonito como me gusta a mi. Pero no había caso, después que encontrar como se hacía manualmente traté de automatizarlo en un bat y solo llegaba hasta el password: al recibir el password me botaba. Toda la tarde probando y tratando de imaginar donde estaba el problema, nada. Y como dice la canción “y nos dieron la una y las dos”, pasaban las horas y no avanzaba ni un milímetro.

Se me ocurrió otra cosa ¿por qué no usar un cliente comercial de FTP que funcione con línea de comandos?, al apretar un botón le mandaba un script con lo que tenía que hacer y listo. Pero no encontré ni un solo cliente FTP que pudiera manejar con un script, seguramente no busqué bien ¡como no va a haber uno al menos!: Naranjas, nada. Y me seguía calentando la cabeza, probé con un gestor de backups llamado Cobian que no pude lograr que se conectara, luego con Curl, que de puro ver la cantidad de archivos y documentación que traía me desanimó, algo que necesita tantas explicaciones no puede ser bueno.

Se hizo de noche y seguía sin encontrar como, ¡algo tan sencillo! empecé a leer documentación de Microsoft sobre el FTP y me encontré con que el problema de leer el password desde un archivo bat era com{un y conocido, incluso un gracioso puso que recomendaba strongly no usar archivos bat para automatizar el FTP aunque no daba ninguna solución. De madrugada finalmente pillé la forma, sencillícima como sospeché desde un principio: un archivo ft. bat con una sola línea
ftp -s:f.scr

Y luego un archivo script f.scr con unas pocas líneas
open bradanovic.cl
(mi username)
(mi password)
cd public_html
cd RAPANUI
lcd c:\inventario
put prueba.txt
bye

¿Y el botón en VBA?, eso es lo más fácil, también una sola línea:
Shell (“c:\windows\ft.bat”)

¡Eso era todo! algo tan sencillo pero recién lo vine a sacar a las 3:18 AM después de andar todo el día buscando distintas cosas que no funcionaron. El problema con el archivo bat original era que al poner enter en un archivo windows coloca dos caracteres CR+LF, mientras que Unix reconoce solo CR y el LF lo toma como parte del password echándo todo a perder. Usando un archivo de script .scr se soluciona la cosa porque Unix reconoce cada línea como un comando.

En fin, las cosas que parecen más sencillas terminan complicándose “el diablo está en los detalles” pero al fin tengo, al menos en teoría, resuelto el maldito asunto, ahora solo me falta programarlo, hacer la otra parte (bajar los archivos) y todo eso, pero el problema principal ya está resuelto, en un tiempo más no tendré que ir todas las noches al Rapa a pasar los archivos y mi alma inmortal se verá beneficiada, evitando todos los pecados de la carne imaginarios y de pensamiento que he cometido -onda Jimmy Carter- en tan sacrificado trabajo. Hasta pronto.

>El diablo está en los detalles

Archivado en: vba — tombrad @ 10:40 am

>Heme aquí de nuevo, un poco tarde, después de un día maldito y frustrante. Resulta que ayer decidí hincar el diente en algo que venía dejando para el final en el programa del Rapa Nui: la trasmisión de los archivos desde el bar a la oficina, cosa que por ahora venía haciendo manualmente arrastrando todos los días a una carpeta web.

Claro que esto era una solución de parche porque cuando se manipulan manualmente los archivos hay que hacerlo con cuidado, no cuesta nada borrar o sobreescribir equivocadamente. Lo que necesitaba era un simple botón que desde el Excel hiciera la trasmisión sin posibilidad de equivocaciones. Pensé que sería algo muy sencillo -para eso se inventó Internet- y por eso lo dejé para el final. Efectivamente era sencillo, pero me demoré mucho en encontrar la forma; un día completo dándome de cabeza como mosca contra el vidrio.

Hay muchas formas de mandar archivos por Internet, desde adjuntos en un correo electrónico, arrastrar a carpetas web o usar un programa cliente FTP. Pero lo que yo necesitaba era programar un botón en VBA que hiciera todo. Y me puse alegremente a buscar con Google, ese gran programador que todo lo sabe, donde encontré varias soluciones. Pero todas pasaban por usar controles OCX que hay que registrarlos, no siempre son compatibles con la versión del Office y la programación era enredada y llena de funciones que no necesitaba, ¡diablos, yo solo busco un botón con unas pocas instrucciones!

Entonces pensé que lo más simple sería usar el FTP del DOS, en modo consola, controlado por un archivo bat, llamándolo del programa con una función de shell(), fácil y bonito como me gusta a mi. Pero no había caso, después que encontrar como se hacía manualmente traté de automatizarlo en un bat y solo llegaba hasta el password: al recibir el password me botaba. Toda la tarde probando y tratando de imaginar donde estaba el problema, nada. Y como dice la canción “y nos dieron la una y las dos”, pasaban las horas y no avanzaba ni un milímetro.

Se me ocurrió otra cosa ¿por qué no usar un cliente comercial de FTP que funcione con línea de comandos?, al apretar un botón le mandaba un script con lo que tenía que hacer y listo. Pero no encontré ni un solo cliente FTP que pudiera manejar con un script, seguramente no busqué bien ¡como no va a haber uno al menos!: Naranjas, nada. Y me seguía calentando la cabeza, probé con un gestor de backups llamado Cobian que no pude lograr que se conectara, luego con Curl, que de puro ver la cantidad de archivos y documentación que traía me desanimó, algo que necesita tantas explicaciones no puede ser bueno.

Se hizo de noche y seguía sin encontrar como, ¡algo tan sencillo! empecé a leer documentación de Microsoft sobre el FTP y me encontré con que el problema de leer el password desde un archivo bat era com{un y conocido, incluso un gracioso puso que recomendaba strongly no usar archivos bat para automatizar el FTP aunque no daba ninguna solución. De madrugada finalmente pillé la forma, sencillícima como sospeché desde un principio: un archivo ft. bat con una sola línea
ftp -s:f.scr

Y luego un archivo script f.scr con unas pocas líneas
open bradanovic.cl
(mi username)
(mi password)
cd public_html
cd RAPANUI
lcd c:\inventario
put prueba.txt
bye

¿Y el botón en VBA?, eso es lo más fácil, también una sola línea:
Shell (“c:\windows\ft.bat”)

¡Eso era todo! algo tan sencillo pero recién lo vine a sacar a las 3:18 AM después de andar todo el día buscando distintas cosas que no funcionaron. El problema con el archivo bat original era que al poner enter en un archivo windows coloca dos caracteres CR+LF, mientras que Unix reconoce solo CR y el LF lo toma como parte del password echándo todo a perder. Usando un archivo de script .scr se soluciona la cosa porque Unix reconoce cada línea como un comando.

En fin, las cosas que parecen más sencillas terminan complicándose “el diablo está en los detalles” pero al fin tengo, al menos en teoría, resuelto el maldito asunto, ahora solo me falta programarlo, hacer la otra parte (bajar los archivos) y todo eso, pero el problema principal ya está resuelto, en un tiempo más no tendré que ir todas las noches al Rapa a pasar los archivos y mi alma inmortal se verá beneficiada, evitando todos los pecados de la carne imaginarios y de pensamiento que he cometido -onda Jimmy Carter- en tan sacrificado trabajo. Hasta pronto.

9 septiembre, 2007

>Puro pasando rabias

Archivado en: arica, vba — tombrad @ 11:39 pm

>¿Que habrá pasado? temprano leí un comentario de Lilian donde me preguntaba por el programa del Rapa-Nui así es que recordé que tenía varios detalles menores que arreglar, me senté an mi escritorio, abrí el programa y empecé a revisarlo.

Pero algo pasó, parece que hoy andaba especialmente idiota porque no me podía concentrar en el asunto, empecé a trabajar mal dejando parches y escombros, como a las 7 de la tarde ya estaba bastante irritado y traté de dedicarme a otra cosa, pero el programa estaba allí, haciéndome burla, había pasado toda la tarde ensuciándolo y la maldita cosa ya me tenía realmente enojado.

Escribir un programa es parecido a escribir un cuento o redactar lo que sea, uno puede coseguir que funcione de cualquier manera usando la prueba y error, pero eso va dejando basura en el código, variables de prueba que después se nos olvidan, procedimientos que no funcionaron y toda clase de porquerías. Se trata de resolver una serie de problemas, algunos rutinarios porque hay una manera estándar de hacerlo, otros no los ha hecho nadie antes y uno tiene que buscar la mejor manera.

Hay siempre dos formas de resolver un problema nuevo: la elegante e ingeniosa y la de fuerza bruta, cuando empecé a programar siempre buscaba las soluciones elegantes, pero con los años descubrí que a los computadores les encanta la fuerza bruta, se sienten más cómodos con la redundancia de muchas soluciones simples encadenadas y estas son más fáciles de depurar y documentar. Ahora arranco de cualquier procedimiento ingenioso si hay alguno de fuerza bruta a la mano, mal que mal los ingeniosos somos nosotros y los brutos son las máquinas.

Y así estuve hasta hace muy poco rato limpiando todas las estupideces que había escrito en la tarde, ordenando y colocando comentarios ¡que bonito se ve un código bien ordenado! es un festín para la vista y una gran ayuda para detectar errores. Al final descubrí que era lo que no me cuadraba: un mismo trago ingresado en dos partes diferentes, error de consistencia. Habiendo arreglado eso ya quedo listo para ir a instalar el asunto nuevamente. Creo que la próxima semana lo subiré a la web para los que les interese el VBA, está muy simple y bonito.

Pero a quien le interesa eso, solo quería contarles que pasé rabia durante toda la tarde y me fuí por otros lados. Mejor reviso el diario para comentar un poco las noticias, los ariqueños recordarán la histórica trifulca entre el diputado Paredes y el alcalde Valcarse, ahora ambos están inhabilitados y procesados por la justicia ¡que estupidez más grande! esa es la clase de cosas que nunca se vió en los años de la Junta de Adelanto, podían haber discusiones y enamistades, pero nunca al nivel de mala clase y con la ambición desatada de ahora. En fin, parece que es cierto eso de que todo tiempo pasado fue mejor.

Y van quedando damnificados en el camino, mi amiga Aida Lara tuvo que salir en el diario desmintiendo ser socia de mi otro amigo, el guatón Camán, que situación más horrible, un hervidero de chismes y mala leche, es el festín de los audaces. La Aida es -a mi modo de ver- la mejor profesional mujer de la ciudad que yo conozca, ha levantado a pulso su negocio y le llegan todos estos chismes de rebote, para ensuciar a su pareja que es el segundo de la municipalidad, en fin, así de cochina es la política, fuerza muchachos y aguanten bien el chaparrón nomás.

Y a medida que se acercan las elecciones la ciudad se va llenando de vacunas que repentinamente les vino el interés por el servicio público y por Arica, que se vayan al diablo, manganada de parásitos. Desgraciadamente los aiqueños no se caracterizan por su inteligencia a la hora de votar, pero que vamos a hacerle, es lo que hay nomás.

Bueno, bueno, mejor no sigo leyendo el diario porque me da rabia. Una vuelta al Rapa y a la camita, buenas noches los pastores.

Puro pasando rabias

Archivado en: arica, vba — tombrad @ 11:39 pm

¿Que habrá pasado? temprano leí un comentario de Lilian donde me preguntaba por el programa del Rapa-Nui así es que recordé que tenía varios detalles menores que arreglar, me senté an mi escritorio, abrí el programa y empecé a revisarlo.

Pero algo pasó, parece que hoy andaba especialmente idiota porque no me podía concentrar en el asunto, empecé a trabajar mal dejando parches y escombros, como a las 7 de la tarde ya estaba bastante irritado y traté de dedicarme a otra cosa, pero el programa estaba allí, haciéndome burla, había pasado toda la tarde ensuciándolo y la maldita cosa ya me tenía realmente enojado.

Escribir un programa es parecido a escribir un cuento o redactar lo que sea, uno puede coseguir que funcione de cualquier manera usando la prueba y error, pero eso va dejando basura en el código, variables de prueba que después se nos olvidan, procedimientos que no funcionaron y toda clase de porquerías. Se trata de resolver una serie de problemas, algunos rutinarios porque hay una manera estándar de hacerlo, otros no los ha hecho nadie antes y uno tiene que buscar la mejor manera.

Hay siempre dos formas de resolver un problema nuevo: la elegante e ingeniosa y la de fuerza bruta, cuando empecé a programar siempre buscaba las soluciones elegantes, pero con los años descubrí que a los computadores les encanta la fuerza bruta, se sienten más cómodos con la redundancia de muchas soluciones simples encadenadas y estas son más fáciles de depurar y documentar. Ahora arranco de cualquier procedimiento ingenioso si hay alguno de fuerza bruta a la mano, mal que mal los ingeniosos somos nosotros y los brutos son las máquinas.

Y así estuve hasta hace muy poco rato limpiando todas las estupideces que había escrito en la tarde, ordenando y colocando comentarios ¡que bonito se ve un código bien ordenado! es un festín para la vista y una gran ayuda para detectar errores. Al final descubrí que era lo que no me cuadraba: un mismo trago ingresado en dos partes diferentes, error de consistencia. Habiendo arreglado eso ya quedo listo para ir a instalar el asunto nuevamente. Creo que la próxima semana lo subiré a la web para los que les interese el VBA, está muy simple y bonito.

Pero a quien le interesa eso, solo quería contarles que pasé rabia durante toda la tarde y me fuí por otros lados. Mejor reviso el diario para comentar un poco las noticias, los ariqueños recordarán la histórica trifulca entre el diputado Paredes y el alcalde Valcarse, ahora ambos están inhabilitados y procesados por la justicia ¡que estupidez más grande! esa es la clase de cosas que nunca se vió en los años de la Junta de Adelanto, podían haber discusiones y enamistades, pero nunca al nivel de mala clase y con la ambición desatada de ahora. En fin, parece que es cierto eso de que todo tiempo pasado fue mejor.

Y van quedando damnificados en el camino, mi amiga Aida Lara tuvo que salir en el diario desmintiendo ser socia de mi otro amigo, el guatón Camán, que situación más horrible, un hervidero de chismes y mala leche, es el festín de los audaces. La Aida es -a mi modo de ver- la mejor profesional mujer de la ciudad que yo conozca, ha levantado a pulso su negocio y le llegan todos estos chismes de rebote, para ensuciar a su pareja que es el segundo de la municipalidad, en fin, así de cochina es la política, fuerza muchachos y aguanten bien el chaparrón nomás.

Y a medida que se acercan las elecciones la ciudad se va llenando de vacunas que repentinamente les vino el interés por el servicio público y por Arica, que se vayan al diablo, manganada de parásitos. Desgraciadamente los aiqueños no se caracterizan por su inteligencia a la hora de votar, pero que vamos a hacerle, es lo que hay nomás.

Bueno, bueno, mejor no sigo leyendo el diario porque me da rabia. Una vuelta al Rapa y a la camita, buenas noches los pastores.

Tema WordPress Classic. Blog de WordPress.com.

Seguir

Get every new post delivered to your Inbox.