Ajax para el cambio de divisas

Conexión Ajax con el Rss del Banco de Canada para el cambio de divisas

¿Aburrido de tener que ir divisa a divisa buscando el cambio cada día, para copiarlo e introducirlo en hojas Excel?. Así estaba yo hasta que me programé esta combinación de JavaScript y PHP para leer los RSS (Really Simple Syndication en formato XML) del Banco de Canada (Bank of Canada), de siempre mi banco central favorito, para obtener una tabla de cambios con mis divisas habituales y poder pegar con comodidad esa tabla en las hojas Excel que necesitaban esos cambios actualizados.

El resultado es una página web, con un estilo vintage muy a mi gusto, en colores de computador clásico y con la preciosa Lucida Console por tipo de letra.

Todo el código JavaScript y PHP (PHP Hypertext Pre-processor ) puede consultarse en PDF (Portable Document Format) al final de este post, sólo pongo a continuación un par de funciones, la primera JavaScript y la segunda PHP, que muestran como se puede tener un estilo de programación similar con leguajes de programación diferentes.



///////////////////////////////////////////////////////////////////

   function XmlGetValue(itm, atr)



// PURPOSE: Returns a text value. If atr = cb:value and itm =

// ...<cb:value frequency="business" decimals="4">0.9947</cb:value>...

// first gets " frequency="business" decimals="4">0.9947<"

// and returns 0.9947

///////////////////////////////////////////////////////////////////

{

  var tmp = TxtBetween2Tag(itm,"<"+atr,"/"+atr+">");

  var txt = TxtBetween2Tag(tmp,">","<");

  return(txt);

}



///////////////////////////////////////////////////////////////////

   function GetRssFile()

   

// PURPOSE: Gets the contents of an external Rss feed and saves its

// contents to the cached file on the server.

///////////////////////////////////////////////////////////////////

{

  global $rssUrl, $pthFile;

  $contents=file_get_contents($rssUrl); // Fetch the Rss file

  $fp=fopen($pthFile, "w");             // Open local file for write

  fwrite($fp, $contents);     // Write contents of Rss to cache file

  fclose($fp);                          // Close the local file

}

  

Observatorio de la Economía y la Sociedad China

Contraportada de la primera entrega en OES-China 9

De diciembre de 2008 a junio de 2010 he publicado traducciones de poemas jueju de la dinastía Táng en la revista Observatorio de la Economía y la Sociedad China (OES-China, ISSN: 1887-3197), en la sección de Cultura y Sociedad coordinada por Yawen Teh.

OES-China es una revista editada por Eumed.Net su editor ejecutivo es Juan Carlos M. Coll y está patrocinada por la Universidad de Málaga y la Fundación Universitaria Andaluza «Inca Garcilaso».

Durante estos años se han realizado 5 entregas:

  1. Diciembre de 2008, primera entrega, OES-China, número 9.
  2. Marzo de 2009, segunda entrega, OES-China, número 10.
  3. Julio de 2009, tercera entrega, OES-China, número 11.
  4. Septiembre de 2009, cuarta entrega, OES-China, número 12.
  5. Junio de 2010, quinta entrega, OES-China, número 13.

Estas 5 entregas representaron todo un proceso de evolución en mi técnica y metodología de traducción de la poesía medieval china.

  • Author of «Learn Chinese and Tang poetry», OES Chine magazine, numbers 9, 10, 11, 12 & 13, 5 publications with different poems each, Málaga, 2008, 2009 & 2010.
  • Autor de «Aprender Chino y Poemas Táng», revista OES China, números 9, 10, 11, 12 & 13, 5 publicaciones con poemas diferentes cada una, Málaga, 2008, 2009 y 2010.

Canales de distribución y preguntas de marketing

Tipos de canales de distribución y otras preguntas de marketing

En un foro asociado al curso de especialista en gestión inmobiliaria de la Universidad de Burgos, cuando lo cursaba, me hicieron las siguientes preguntas:

«¿Qué se entiende por canales directos de distribución, por cortos y largos y por estrechos y anchos?.
¿Qué es normalizar la oferta?.
¿Qué significa que no existe un substrato transferible?.
Pon un ejemplo de mercados organizacionales»

Reproduzco aquí mis respuestas:

Canales directos de distribución: Los que van directamente del fabricante al comprador, sin pasar por nadie más, por ejemplo, Dell fabrica computadores e intenta que se los compres directamente.

Canales cortos / largos de distribución: Canal corto es el que tiene pocos pasos, por ejemplo, Coca-Cola, la embotelladora (Casbega en Madrid, Cobega en Cataluña, etc.) embotella y con sus camiones (antes propios y ahora subcontratados) llega al bar de tu barrio que te la vende. El extremo de canal corto es el directo que sólo tiene un paso. Canal largo el que tiene muchos pasos fabricante, mayoristas, minoristas, etc.

Canales estrechos / anchos de distribución: Por ancho del canal se entiende el número de entidades en paralelo que ofrecen el producto. Por ejemplo, los coches de lujo, imaginemos Buick, tienen un canal estrecho, puede haber un concesionario o a lo sumo 2 en una gran ciudad. Los chicles Orbit tienen un canal ancho, en bares, tiendas de chuches, quioscos, máquinas en la calle, miles de sitios ofreciéndolos.

Normalizar la oferta: Se dice que un sector ha normalizado la oferta cuando consigue establecer medidas en casi todo lo que compra de forma que los productos o servicios que compra son totalmente comparables. Normaliza pesos, anchos, gamas de calidades, etc. de forma que junto con su precio las ofertas son fácilmente comparables. Cuando la oferta esta está hipernormalizada se podría llamar "commoditie" (luz, agua, gas, etc.), en este caso la única variable verdaderamente es el precio. La electricidad esta supernormalizada, es un commoditie, no hay electrones de más o menos calidad (te venden electrones verdes, de energía eólica, pero realmente no sabes si el electrón procede de una central nuclear, es un invento para intentar diferenciarse). En este casos prácticamente la decisión de compra es a cuánto vale el megawatio. Cuando hay precios caros y baratos, pero los productos tienen características muy diferentes y no son comparables, se dice que la oferta no está normalizada. Hay dentistas caros y baratos pero es difícil saber si el caro es realmente bueno, si el empaste estará bien hecho, si no se infectará y si no lo pasarás tan mal como la última vez o si justo eso es, al revés, que el barato es el realmente bueno.

No existe un substrato transferible: Que no hay nada que dar físico, por ejemplo, el servicio de un psicólogo. Vas allí y el psicólogo puede ser bueno o malo y a ti valerte o no valerte, pagas y no vuelves a casa con un paquete que enseñar a los niños, llegas con tus problemas resueltos o no o a medio resolver.

Ejemplo de mercados organizacionales: Tal vez se entiende mejor cuando se les denominan mercados industriales. Por ejemplo, todo el mercado alrededor de los grandes fabricantes de coches, hay quien vende gomas, telas, planchas, tornillos, ..., el que fabrica los asientos compra al de telas o a varios, pero también al de los tornillos o a varios, el fabricante de coches compra a los de los asientos, pero también a los de tornillos, grandes, medianas y pequeñas empresas comprándose y vendiéndose para ofrecer al final un producto que es un coche. De poco vale el marketing convencional (de gran público) para conseguir colocarle tus tornillos a la BMW.

InkWatercolor, otoño 2008

¿Por qué nunca termino nada?, why do I never finish anything?, catálogo de otoño 2008

¿Por qué nunca termino nada? | Why do I never finish anything?

Catálogo de otoño del año 2008 de InkWatercolor, 12 páginas, color, inglés y español.

Contiene 10 obras artísticas en su interior más una de portada tituladas: why do I never finish anything? ~ ¿por qué nunca termino nada?; seventeen points of growth [angel of cryings] ~ diecisiete puntos de crecimiento [angel de los lloros]; up and down in the green lagoon ~ arriba y abajo en la laguna verde; multiplication of wealth and opportunities ~ la multiplicación de la riqueza y las oportunidades; a self-propelled crushing machine of souls ~ máquina trituradora de almas, autopropulsada; the flowers of the hell [waiting for a kiss] ~ las flores del infierno [esperando un beso]; heart tunnelling, a silent process ~ perforación del corazón, un proceso silencioso; a parting, bié sòng [Wáng Wéi] ~ adiós al partir, bié sòng [Wáng Wéi]; slow sleeping waves against the column ~ lentas ondas de sueño contra la columna; the quest of the last saints ~ la búsqueda de los últimos santos y the iconoclast tree, icons of thought ~ el álbol iconoclasta, iconos del pensamiento.

¿Por qué nunca termino nada?, why do I never finish anything?
  • Author of «Automatic painting 1991/2004; 210 paitings using inks, watercolors and others media», Intellectual Property Register, number 16/2008/9490, Madrid, September of 2008.
  • Autor de «Pintura automática 1991/2004; 210 cuadros con tinta, acuarela y otros medios», Registro de la Propiedad Intelectual, número 16/2008/9490, Madrid, septiembre de 2008.

Contador de separadores de campos

En una gran aseduradora nos volcaban ficheros inmensos de datos de operaciones sobre polizas desde el host, ficheros con millones de registros. Eran ficheros planos y ellos mismos elegían el carácter separador de campos. Esos ficheros los subíamos, a su vez, a otra base de datos que los cargaba utilizando, para interpretar la separación de campos, el carácter indicado en cada caso. Esta carga se realizaba empleando el programa de carga suministrado junto con el sistema de gestión de la base de datos.

El proceso de carga era lento y, además, con frecuencia, el carácter que habían elegido, aparecía en algún campo de texto de algún registro. Por ejemplo, elegían el asterisco y algunos campos de observaciones contenían asteriscos. Al llegar al primer registro con más separadores de los esperados el proceso de carga abortaba tras horas de ejecución.

La solución era programar un comprobador de ficheros, muy rápido, que antes de iniciar el proceso de carga, comprobara que todas las líneas del fichero contuvieran el mismo números de caracteres separadores de campo, asumiendo como correcto el número de separadores de la primera línea del fichero. Y sólo comenzar la carga a la base de datos tras comprobar que el fichero era correcto.

Hacía ya mucho tiempo que no programaba en C y esta era una ocasión para volver a él. El programa se llama chksep.exe, esta hecho en lenguaje C en pocas horas, por lo que seguro que se puede mejorar. Se ejecuta como chksep 42 < fichero.txt, donde el 42 es el código ASCII del caracter *, que era el separador de campos habitual, aunque se puede elegir cualquier otro carácter, por ejemplo, chksep 59 < fichero.txt, para el punto y coma.

El programa visualiza las líneas donde el número de separadores de campo es diferente al de la primera línea. En un computador portatil normal este programa es capaz de revisar un Giga en 2 minutos 15 segundos, lo que equivalía con los ficheros reales que nos daban a unos 800.000 registros por minuto. Por lo que en 5 ó 10 minutos se podía evitar que luego abortara una carga de horas. El programa también cuenta el número de líneas del fichero.

A continuación pongo el ciclo principal del programa y en el fichero PDF adjunto a este post el código fuente completo.

Me gustan mucho los programas eficaces de pocas líneas de código y que sean eficientes ya lo considero un regalo.



while((chrInp=getc(stdin)) != EOF)

{

       if(chrInp==sepChr) { sepCnt++; }     /* Es un separador */

  else if(chrInp==EOL)                 /* Es un salto de linea */

  {

    if(linCnt==1)                  /* Estabamos en la 1ª linea */

    {

      sepFst = sepCnt;   /* Referencia para el resto de lineas */

      printf("\n[%d] [%s] en la primera linea.", sepFst, sepStr);

    }

    else                                       /* Linea normal */

    {

      if(sepFst!=sepCnt)        /* Faltan o sobran separadores */

      {

        printf("\nlinea %d: [%d] [%s] en vez de [%d].",

               linCnt, sepCnt, sepStr, sepFst);

      }

    }

    linCnt++;             /* Incrementar el contador de lineas */

    sepCnt = 0;     /* Poner a cero el contador de separadores */

  }

}

printf("\nProcesadas [%d] lineas.", linCnt);

  

Página del abogado Bartolomé Quesada Valles

Página del abogado Bartolomé Quesada Valles

Realización del registro de dominio .es, diseño, maquetación, desarrollo y mantenimiento en internet de la primera versión de la página web del despacho de abogados de Bartolomé Quesada Valles.

Bartolomé Quesada Valles es abogado, tiene más de 20 años de ejercicio profesional y está colegiado en el Ilustre Colegio de Abogados de Madrid (ICAM).

Esta primera versión de la página web estuvo operativa desde mediados del verano de 2008 hasta inicios del verano de 2010.

Actualmente está en funcionamiento la segunda versión de esta página web, que ha sido desarrollada en Joomla! por Luis Torrijos.

Máximo común divisor de 2 números

Cálculo en Excel del máximo común divisor (MCD) de 2 números

Ejemplo de hoja Excel para calcular el máximo común divisor (MCD) entre 2 números.

El fichero Excel de Microsoft está formado por una sola hoja de cálculo en la que los 2 números para los que se quiere calcular su máximo común divisor se introducen en las celdas azules.

La hoja Excel visualiza en la zona gris los divisores encontrados y arriba en grande y azul el máximo común divisor.

Este ejemplo Excel tiene limitaciones en el tamaño de los números y el método de cálculo.

La versión es la de Excel 97-2003.

Poemas jué jù, dinastía Táng, en Excel

Poemas jué jù, dinastía Táng, en Excel

En 2008 comencé a plasmar en Excel el resultado de mis traducciones de poemas de la disnastía Táng que luego imprimía en formato PDF. Realmente, no sólo a plasmar, pues al final llegué a traducir directamente sobre Excel.

Desarrollé varios modelos de hojas Excel, de los cuales uno de los últimos va adjunto a este post. Cuando alguien de una multinacional o gran compañía consultora se empeñaba en enseñarme y presumir de sus fabulosas hojas financieras Excel entonces, en vez de mostrarle otras hojas financieras, yo terminaba por eseñarle estas hojas Excel de soporte a la traducción de poemas mediavales chinos y el show de hojas Excel se terminaba rápido.

Excel daba más soporte que mis experientos iniciales en PowerPoint, pues permitía automatizar muchas tareas, pero llegó un punto, como suele suceder con Excel, que la complejidad de las hojas y las fórmulas, y especialmente su repetición en todas las hojas, dificultaban el avance, e incluso el recálculo de celdas podía hacerse muy pesado y la impresión de las hojas de resultados finales, no de intermedios, requería mucha atención.

Excel es, en mi opinión, lo mejor que ha hecho Microsoft en su historia. Muy pocas herramientas proporcionan un desarrollo inicial tan rápido como Excel, pero la velocidad de desarrollo de Excel se amortigua con el avance, hoy se avanza menos que ayer y más que mañana, por lo que para desarrollo de pocos días es ideal y para desarrollos de muchos meses insoportable.

Por ello, la vida de estas hojas Excel fue de mediados de 2008 a mediados 2009, prácticamente un año, a partir del cual retome la exploración de nuevas formas de dar soporte a la traducciones de poemas jué jù Táng buscando mayor automatismo y eficiencia en la traducción y composicion del resultado.

Varias publicaciones de mis traducciones de poemas Táng fueron realizadas con el soporte de Excel.

Pedro Reina, cifras y letras

Portada del número 379 de Investigación y Ciencia

Tuve la suerte de conocer a Pedro Reina en 1991, en la primera edición del curso Sistemas expertos en la empresa.

En 1992, Pedro acometió el desarrollo de dos programas cuyo objetivo era resolver los problemas del programa televisivo «Cifras y Letras». Primero desarrollo el programa que resolvía el problema de las cifras y luego el de las letras. Durante ese tiempo pude discutir con Pedro sus enfoques de solución a esos dos problemas.

En abril de 2008, Juan M. R. Parrondo dedicó su sección de Juegos Matemáticos de la revista Investigación y Ciencia, a los dos algoritmos desarrollados por Pedro Reina para resolver los problemas de «Cifras y Letras». En este artículo, Pedro Reina me cita amablemente a la hora de describir el mecanismo usado para resolver el problema de las letras:

«...la solución que nos ofrece Reina es muy sencilla, gracias a una idea sumamente ingeniosa que el propio autor atribuye al profesor de inteligencia artificial Antonio Salmerón...».

Juan M. R. Parrondo, «Cifras y Letras de Pedro Reina», sección de Juegos matemáticos, revista Investigación y Ciencia (traducción española de Scientific America), ISSN 0210-136X, número 379, páginas 90-91, Barcelona, abril de 2008.

  • Cited in «Numbers and Letters of Pedro Reina» by Juan M. R. Parrondo, Reseach & Science Magazine, Barcelona, April of 2008.
  • Citado en «Cifras y Letras de Pedro Reina» por Juan M. R. Parrondo, Revista Investigación y Ciencia, Barcelona, abril de 2008.

Análisis sensorial de sistemas

psoe.es y pp.es en la campaña electoral 2008

Cuaderno con casos prácticos:

psoe.es y pp.es en la campaña electoral 2008 y otros casos de estudio, elaborado del 21 al 29 de febrero de 2008.

Cuando somos niños creemos que los personajes de los libros, de las obras de teatro o de las películas hablan por sí mismos, sin embargo, pronto aprendemos que son los autores los que hablan a través de ellos y que, por tanto, podemos intentar conocer y comprender a los autores a través de sus obras.

Cuando interactuamos con sistemas a menudo seguimos creyendo, como los niños, que son dichos sistemas los que dicen y hacen y no los autores que los programaron y las entidades que los crearon.

Como en cualquier creación humana, podemos conocer y comprender a las entidades, su dueños, directivos y trabajadores a través de los comportamientos, acciones, mensajes y errores de los sistemas que fabrican o de los que se sirven. A menudo las verdaderas ideas y sentimientos de las personas y los grupos se pueden ver mejor reflejadas en sus sistemas que en sus mensajes comerciales, ya que mientras en otros tipos de comunicación se presta especial atención a los mensajes que se emiten, en los sistemas hay 2 razones por la que los sentimientos auténticos de la organización afloran con mayor facilidad:

  1. la atención a los aspectos tecnológicos, la subcontratación y las dificultades de desarrollo restan atención al cuidado de los mensajes que se emiten diciendo más directamente lo que se piensa y
  2. la conexión directa de muchos sistemas con el aparato de la organización hace que a través de esas conexiones aflore su verdadera personalidad.
Análisis sensorial de sistemas, Partido Popular, Mariano Rajoy
  • Author of «Sensory analysis of systems», Intellectual Property Register, number 16/2009/5854, Madrid, March of 2008. Essay on the analysis of computer systems through the senses and about how to lear this technique.
  • Autor de «Análisis sensorial de sistemas», Registro de la Propiedad Intelectual, número 16/2009/5854, Madrid, Marzo de 2008. Ensayo sobre el análisis de sistemas informáticos a través de los sentidos y sobre el aprendizaje de esta técnica.

Traducción de juejus de la dinastía Táng

Traducción de juejus de la dinastía Táng

6 traducciones buscando la literalidad

de poemas de Li Bái, Wáng Wéi y Yú Shì-nán.

Los poemas son de Li Bái «Pensamiento en noche serena» y «Sentado sólo en la montaña Jìng Tíng», de Wáng Wéi «Entre los bambúes», «Adiós al partir» y «La cerca de los ciervos» y de Yú Shì-nán «Cigarras».

Son los 6 primeros poemas con los que comencé a trabajar en este área y con ellos empecé a establecer también las bases de mi proceso metodológico de traducción de poemas jueju.

  • Author of «Translation of juejus of the Tang dynasty», Intellectual Property Register, number 16/2009/5853, Madrid, February of 2008.
  • Autor de «Traducción de juejus de la dinastía Táng», Registro de la Propiedad Intelectual, número 16/2009/5853, Madrid, febrero de 2008.

Les fleurs du mal, Charles Baudelaire

Poster con las ilustraciones de Les fleurs du mal

«Les fleurs du mal», édition de 1861, Charles Baudelaire,

une édition illustrée par InkWatercolor.

Contiene una ilustración para cada poema de Baudelaire, estas ilustraciones fueron desarrolladas con técnicas mixtas (tintas, rotuladores, pinturas plásticas, etc.) sobre papel couché de colores, a menudo con difusión de fuego o frotamientos con alcohol.

Todas las ilustraciones de la obra, bajo el título «Ilustraciones para Les fleurs du mal - 128 cuadros para 128 poemas de C. Baudelaire», están inscritas en el Registro de la Propiedad Intelectual de Madrid, con el número de asiento registral 16 / 2008 / 9489, fecha de presentación y efectos 25 de febrero de 2008, clase de la obra pintura y titular de los derechos Antonio Salmerón Cabañas.

Las ilustraciones se comenzaron a crear en el año 1986, a partir de una versión bilingüe (francés / español) de la edición de 1861 de «Las flores del mal» de Charles Baudelaire. Se crearon unas 400 más ilustraciones, las últimas de ellas hacia 1991. Desde entonces ha existido una aproximación parcial al conjunto de la obra, pero completamente desarrollada soporte físico de papel. Durante unos 14 años el conjunto de la obra estuvo muy avanzada pero inconclusa, fundamentalmente por temas tecnológicos.

En agosto de 2005 se retoman los trabajos de composición del libro desde el comienzo, realizando la selección definitiva de 128 ilustraciones, procediendo a su digitalización y a su primera difusión por internet.

En 2008 se termina una primera versión completa de esta edición ilustrada de «Les fleurs du mal» de Charles Baudelaire.

Esta obra se distribuye con la licencia de creativecommons.org denominada Reconocimiento-NoComercial-CompartirIgual 2.5 España, que permite copiar, distribuir, comunicar y hacer obras derivadas bajo las condiciones de reconocer los créditos al autor, no usar la obra con fines comerciales y compartir las obras derivadas bajo la misma licencia.

Illustrations for Les fleurs du mal; 128 painting for 128 poems of C. Baudelaire
  • Author of «Illustrations for Les fleurs du mal; 128 painting for 128 poems of C. Baudelaire», Intellectual Property Register, number 16/2008/9489, Madrid, February of 2008.
  • Autor de «Ilustraciones para Les fleurs du mal; 128 cuadros para 128 poemas de C. Baudelaire», Registro de la Propiedad Intelectual, número 16/2008/9489, Madrid, febrero de 2008.

asalmeron en issuu.com

asalmeron en issuu.com, obras online

Tabla ASCII generada con TOL

Tabla ASCII generada con el lenguaje de programación TOL

Este es un programa sencillo, orientado al aprendizaje del lenguaje TOL.

El programa escribe un fichero con los 128 primeros caracteres de la tabla ASCII.

Los 32 primeros son caracteres especiales por lo que sus siglas se almacenan en un conjunto TOL (Set).

Los siguientes caracteres se generan mediante la función TOL Text Char(Real asc).

Se muestra a continuación el código completo del programa que también se puede consultar en el documento PDF adjunto a este post, se incluye junto con el código el fichero resultante con la tabla ASCII.



Set AscFst =

[[

  "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",

  "BS ", "TAB", "LF ", "VT ", "FF ", "CR ", "SO ", "SI ",

  "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB", 

  "CAN", "EM ", "SUB", "ESC", "FS ", "GS ", "RS ", "US "

]];



Text fil = "ascii.txt";

Text WriteFile(fil, "Tabla ASCII");



Set  cic = For(0, 127, Text(Real asc)

{

  // Each 8 jump new line

  Text new = If(asc % 4, "", "\n");



  // The fist 32 are special characters

  Text chr = If(LT(asc, 32), AscFst[asc+1], "["+Char(asc)+"]");



  // Append character to file

  Text lin = new + FormatReal(asc, "%03.0lf") + " " + chr +" | ";

  Text AppendFile(fil, lin);

  

  chr // Return the character

});

  

15 puzle (3x3) y 65 puzle (5x5)

Excel con el 15 puzle (3x3) y 65 puzle (5x5) resueltos

Fichero Excel de Microsoft formado por una sola hoja de cálculo, que contiene:

  • El llamado problema del 15 puzle, de 3x3 celdas, con todos los números de 1 al 9, uno por celda sin repetirse, que suman siempre 15 tanto por filas, como por columnas y diagonales, y
  • El problema del 65 puzle, menos conocido que el anterior, de 5x5 celdas, con todos los números de 1 al 25, uno por celda sin repetirse, que suman siempre 65 tanto por filas, como por columnas y diagonales.

En este fichero Excel se muestran ambos problemas ya resueltos. La versión es la de Excel 97-2003.