Personalizar con A-PDF Text Replace
realización: 9 de septiembre de 2011 | actualización: 9 de septiembre de 2011
He empezado a utilizar A-PDF Text Replace que
es una herramienta muy útil para modificar documentos en formato PDF.
Por ejemplo, sirve para personalizar un mismo documento PDF para diferentes personas.
Para ello se puede poner en el documento PDF original
un texto que haga de campo a reemplazar, por ejemplo, _NOMBRE_, y
luego utilizar A-PDF Text Replace para cambiar _NOMBRE_ por
el nombre de cada persona.
Como con A-PDF Text Replace se pueden dar varias órdenes de cambio en la misma ejecución,
se puede personalizar simultáneamente el nombre, la fecha, la dirección u otros campos.
A-PDF Text Replace es también invocable desde la línea de mandatos,
por lo que puede invocarse con System() desde el lenguaje TOL,
como se muestra en el siguiente código:
///////////////////////////////////////////////////////////////////
Real PdfReplace(Text inpPth, // Input file path
Text outPth, // Output file path
Text namCus) // Customer name
///////////////////////////////////////////////////////////////////
{
Text pdfCmd = W("bin/apdf/ptrcmd.exe"); // A-Pdf executable path
Text inpDos = Q(W(inpPth));
Text outDos = Q(W(outPth));
Text forOld = Q(":e:");
Text namOld = Q(":a:");
Text dteOld = Q(":c:");
Text forNew = Q("Edición personalizada para");
Text namNew = Q(namCus);
Text dteNew = Q("el "+Dte2Spa(Now)+"."); // Spanish date
Text cmdTxt = pdfCmd+" "+inpDos+" "+outDos+" "+
forOld+" "+forNew+" "+
namOld+" "+namNew+" "+
dteOld+" "+dteNew;
Real sysRet = System(cmdTxt); // Execute
sysRet // Returns
};
Donde Q() y W() son dos pequeñas funciones donde
la primera pone comillas en los caminos de los ficheros,
por si esos nombres contuvieran caracteres blancos, y
la segunda cambia el slash normal ( / ) por el back slash de los caminos de Windows ( \ ).
///////////////////////////////////////////////////////////////////
Text Q(Text txt) // Text
///////////////////////////////////////////////////////////////////
{ Char(34)+txt+Char(34) };
///////////////////////////////////////////////////////////////////
Text W(Text txt) // Text
///////////////////////////////////////////////////////////////////
{ Replace(txt, "/", "\\") };
La siguiente ventana muestra
la ejecución de A-PDF Text Replace invocado desde TOL.
El mandato que se esta ejecutando en la ventana es:
bin\apdf\ptrcmd.exe
"..\Ediciones\9788493912901.Becquer.Gustavo. Adolfo.Leyendas\
BecquerGA.Leyendas.20110802.aContracorriente.PackDigital\BecquerGA.
Leyendas.20110801.aContracorriente.pdf"
"aContracorriente\BecquerGA.Leyendas.20110801.aContracorriente.pdf"
":e:" "Edición personalizada para"
":a:" "Antonio Salmeron"
":c:" "el 9 de septiembre de 2011."
Donde ":e:", ":a:" y ":c:" son los campos que se utilizan para ser remplazados por los texto de personalización.
El resultado es el que se muestra en la siguiente imagen.
A la izquierda el PDF original,
a la derecha el PDF modificado.
Es la personalización de una edición digital de las Leyendas de Gustavo Adolfo Bécquer.
Los campos seleccionados en el primer PDF corresponden a las marcas,
los campos seleccionados en el segundo PDF a los valores finales de la personalización.
Ver más herramientas de A-PDF
Buscar datos en Mozilla Backup de Thunderbird
realización: 5 de septiembre de 2011 | actualización: 5 de septiembre de 2011
Para buscar datos (direcciones, teléfonos, fechas de envío, etc.)
que estaban en un email borrado,
pero guardado en un backup realizado con Mozilla Backup (MozBackup)
para el sistema de gestión de correo electrónico Thunderbird,
no es necesario restaurar el backup.
Lo que es especialmente relevante para backups de más de un Gbyte.
El fichero de MozBackup (extensión .pcv) es un fichero comprimido,
que se puede abrir con 7-zip, también con WinZip y WinRar, y
volcar todo su contenido a un directorio temporal.
Este directorio sigue la estructura de los directorios de
trabajo de Thunderbird.
Una vez volcado se puede navegar, manualmente,
por el árbol de directorios
para localizar la carpeta en la que se cree que esta el correo.
Esta navegación también se podría hacer dentro del fichero comprimido,
pero me resulta mucho más incómoda.
Si no se sabe muy bien donde pueden estar los datos o los correos electrónicos,
se puede localizar el fichero o los ficheros que los contienen con
alguna utilidad de búsqueda recursiva en un árbol de directorios y
aquellos patrones de búsqueda que creamos más significativos.
En estos casos, en Windows, utilizo grep.exe de GNU (GnuGrep)
con la opción -r de recursivo, por ejemplo:
\bin\gnuwin32\bin\grep -r -l -c "asolver.com" ImapMail
para buscar correos del dominio asolver.com sólo en la carpeta
ImapMail, lo más cómodo es buscarlo en el total (.).
Hay que tener en cuenta que el caracter arroba (@) típico de las direcciones de correos
a veces aparece como tal en las cabeceras de los correos electrónicos y
otras como
=40 siendo el 40 el código ASCII hexadecimal de la arroba
(64 decimal, el anterior a la A y el doble que el caracter blanco),
como sucede en el cuerpo de los correos.
Por lo que se podrían probar búsquedas como
"asalmeron@asolver.com" o "asalmeron=40asolver.com".
Si finalmente hay que examinar visualmente
el fichero o los ficheros localizados por grep.exe,
como son ficheros planos,
pueden abrirse con un editor de textos para buscar la información localmente.
De todos los editores posibles utilizo para ello Notepad2.
Mozbackup,
Thunderbird,
7-zip,
GNU Grep Win32 y
Notepad2
Resolver ecuaciones de segundo grado
realización: 17 de agosto de 2011 | actualización: 17 de agosto de 2011
Pequeño fichero Excel (Libro de Excel 97-2003) con una sola hoja de cálculo que
permite resolver las ecuaciones de segundo grado y
obtener sus dos soluciones.
En la parte izquierda de la hoja de cálculo,
a partir de la ecuación sen encuentran sus 2 raices,
se factoriza la ecuación de segundo grado como (x - 1ª raiz) . (x - 2ª raiz) y
se vuelve a reconstruir la ecuación para comprobar que todo es correcto.
La parte derecha de la hoja de cálculo,
permite generar problemas sencillos de ecuaciones de segundo grado
para su posterior solución.
Las celdas azules son para introducir los datos y
las celdas verdes para ver los resultados.
Descargar el Excel para resolver ecuaciones de 2º grado
Comprobar divisiones con resto
realización: 10 de julio de 2011 | actualización: 10 de julio de 2011
Pequeño fichero Excel (Libro de Excel 97-2003) con una sola hoja de cálculo que
permite comprobar el cociente y el resto de divisiones.
También permite comprobar divisiones cuando se pide calcular el cociente con 2 decimales.
Las celdas azules son para introducir los datos y
las celdas verdes para ver los resultados.
Descargar el Excel para comprobar divisiones
Ecuaciones de 2 a 6 incógnitas con matrices
realización: 21 de enero de 2011 | actualización: 15 de agosto de 2011
Fichero Excel (Libro de Excel 97-2003) con 6 hojas de cálculo
para resolver pequeños sistemas de ecuaciones de 2 a 6 incógnitas.
En las 2 primeras hojas de cálculo
se resuelven sistemas de 2 ecuaciones de con 2 incógnitas.
En la primera mediante la función Excel inversa de una matriz y
en la segunda mediante el cálculo paso a paso de la inversa de una matriz 2x2.
En las 4 siguientes hojas de cálculo
se resuelven sistemas de ecuaciones con 3, 4, 5 y 6 incógnitas,
mediante la función Excel inversa de una matriz (MINVERSA()).
Las 2 últimas hojas de cálculo (con 5 y 6 ecuaciones)
también contienen un área de celdas para la comprobación de los resultados.
Estas hojas de cálculo Excel permiten conocer el mecanismo de cálculo empleado,
mediante:
-
su diseño de cálculo por fases, especialmente en la 2ª hoja,
con datos de entrada, resultados intermedios y resultados finales y
-
las fórmulas visibles dentro de sus celdas.
La función Excel MINVERSA() es una fórmula matricial que
afecta a varias celdas de forma simultánea.
La introducción de este tipo de fórmulas matriciales
es diferente al de las funciones normales de Excel.
Los pasos para introducir una fórmula matricial son:
-
Se selecciona el rango de celdas que ocupará la matriz destino,
por ejemplo, un rango 2x2,
empezando por la celda de la esquina superior izquierda.
-
Se pulsa la tecla F2 que
activa la posibilidad de introducir una fórmula
en la celda de la esquina superior izquierda
(que es por la que se comenzó la selección).
Entonces se teclea la fórmula matricial,
por ejemplo: =MINVERSA(T6:U7).
-
Una vez tecleada la fórmula y
con el rango de celdas destino que sigue seleccionado
se pulsan simultáneamente las teclas Control+Shift+Intro.
Entonces la fórmula matricial se expande a todo el área seleccionada y
Excel la visualiza entre corchetes,
como {=MINVERSA(T6:U7)},
para señalar que es una fórmula matricial.
-
Nota:
Una vez tecleada la fórmula no hay que pulsar Intro,
ni el botón llamado introducir (v) que
está a la izquierda del área de introducción de fórmulas.
Descargar el Excel para resolver ecuaciones con matrices
artthropods.net: bichos de material reciclado
realización: 14 de noviembre de 2010 | actualización: 19 de septiembre de 2011
Artthropods.net es
una web deliciosa de Miguel Ángel Nuñez.
Fue desarrollada en 2002 por un querido amigo suyo que ya no está entre nosotros.
Inicialmente estaba albergada en un servidor de Arsys,
pero tras una actualización por parte de Arsys de la versión del sistema operativo de ese servidor,
la web dejo de funcionar
y tampoco es que los de Arsys proporcionaran mucha ayuda a sus recuperación.
En 2010, a partir de un backup de la web,
corregí en su código todo aquello que hacía que hubiera dejado de funcionar,
cree el nuevo dominio Artthropods.net,
la albergue en un servidor mio y, desde entonces, vuelve a estar operativa.
La web contiene una fabulosa tienda y un museo de bichos realizados a mano por Miguel Ángel Núñez con material reciclado.
Aunque agrupados por especies (Insectos, Crustáceos y Arácnidos) y
familias
(Halogenatae, Cohoniaceae, Bichiidae, Escaracazolae, Saltavoltiaceae, Viniliidae, Picnicpterae, Latharontidae, Microchupterae,
Anthiparridae, Calzadoriaceae, Recycliidae, Macrochupopterae, Scorpioniidae, Malahosstiaceae, Calandrakae, Casualidea,
Malakostrakae y Aranyas),
cada bicho es totalmente diferente y con nombre propio:
Agaffosperma capronna, Anthiparris vacuum,
Bishogordus tontorronis, Bombus jamacucus,
Cascanut goliath, Chupoptera grappadora,
Duploclippaa primigenia, Escaracazus inox,
Fagopringatta seductora, Fornica docarallo,
Gamba manolopozus, Grillotata longuipatta,
Lacusta coloreatta, Lataronthias mejillonii,
Malahossssthia elegans (hembra y macho),
Neuropteris fabafacialis, Onthocazus lathicornis,
Patachunga blueyes, Pompilia sublimis,
Raybannia lenti-macarria, Recyclida miniwattia,
Saltavoltios chamaleon, Scorpio dipostre,
Tabanus inox, Tippex magnum,
Vespachappa splendens, Vespina brebis,
Zumbix violacea, Zumbonia lunaria, etc.
Pueden adquirirse a unos precios muy razonables para el trabajo que tienen y lo bonitos que son.
Tanto si tienes interés por conseguir algún ejemplar
(el mio es como el que aparece en la imagen de la izquierda)
o sólo por contemplar los que se muestran en su Museo
te recomiendo que visites la web.
Esta web está desarrollada en HTML con JavaScript para el lado del cliente y con
Active Server Pages (ASP) para el lado del servidor,
soportado por una base de datos Access de Microsoft y
por los dos últimos productos ha de albergarse en
un servidor Windows con Internet Information Services (IIS).
Ver los bichos de material reciclado de Miguel Ángel Númez
Solución a un 3D Squares
realización: 27 de septiembre de 2010 | actualización: 7 de septiembre de 2011
Hay puzzles que les regalan a los niños que parecen triviales y no lo son,
a veces ni para los niños ni para los adultos.
Para mi este es un caso claro.
Para resolverlo tuve que programar un solucionador en TOL que
no resulto muy complicado.
De hecho mucho menos complicado que resolver manualmente el puzzle 3D Squares.
Aunque el código completo junto con su traza de ejecución puede obtenerse
en PDF al final de este post,
pongo a continuación en algoritmo recursivo fundamental.
Este algoritmo encuentra 4 soluciones iguales, pues unas resultan de un giro de 90º de otras:
///////////////////////////////////////////////////////////////////
Real SolCua(Set entSol, Set entPie) // Resuelve
///////////////////////////////////////////////////////////////////
{
Real crdSol = Card(entSol);
Text Write(FormatReal(crdSol,"%.0lf"));
If(EQ(crdSol, 9), SolVer(entSol), // Ha encontrado una solucion
{ // Busca soluciones
EvalWhile(entPie, Real(Text unoPie)
{
Set salPie = entPie - [[unoPie]];
Set varPie = VarAll(unoPie);
EvalWhile(varPie, Real(Text unoVar)
{
Set salSol = entSol << [[ unoVar ]];
If(SolBue(salSol), SolCua(salSol, salPie), FALSE)
})
})
})
};
Programación de la solución del 3D Squares y traza de ejecución
Ver el problema y las 4 soluciones del 3D Squares
Puertas lógicas AND, OR, XOR y Sumador en Excel
realización: 29 de julio de 2010 | actualización: 3 de septiembre de 2011
Ejemplo de programación en Excel de puertas lógicas AND, OR, XOR y Sumadores con acarreo (la versión es la de Excel 97-2003).
En la primera hoja se ven las puertas lógicas AND (Y), OR (O) y XOR (O exclusivo) y sus tablas de verdad.
En la segunda hoja un sumador con acarreo y su tabla de verdad construido mediante las puertas anteriores.
La tercera hoja contiene 3 versiones de sumadores con acarreo similares al de la hoja anterior.
En la cuarta hoja se implementa un sumador de 3 bits a partir de los sumadores anteriores.
Incluye todas las pistas de conexión entre las puertas, con diferentes colores, para ver la transmisión de la información.
Puertas lógicas AND, OR, XOR y Sumador con acarreo en Excel
Tablas de multiplicar y multiplicaciones
realización: 14 de febrero de 2010 | actualización: 22 de abril de 2011
Fichero Excel de Microsoft con tablas de multiplicar y multiplicaciones
de 1, 2, 3, 4 y 5 dígitos por 1 dígito.
Plantea multiplicaciones, hay que teclear los resultado e
informa de los errores de tal manera que
si el número sale azul es que la multiplicación está bien,
si sale en rojo es que está mal.
En cada una de las 6 hojas Excel hay una celda negra que permite generar 9 conjuntos diferentes
de combinaciones de operaciones (del 1 al 9).
Las soluciones también pueden consultarse en la parte inferior
de cada hoja Excel en el área coloreada de gris.
La versión es la de Excel 97-2003.
Excel con tablas de multiplicar y multiplicaciones
Informes estadísticos para ANECA
realización: 9 de junio de 2009 | actualización: 2 de septiembre de 2011
Automatización de la generación de informes estadísticos sobre los resultados de la evaluación
del profesorado universitario
para la Agencia Nacional de Evaluación de la Calidad y Acreditación
(ANECA).
Realizado en colaboración con Cetiver,
es un desarrollo en lenguaje TOL,
contra una base de datos SQL-Server,
con generación de informes en formato PDF y
envío automático de los informes por email a 44 Vicerrectores de Universidades Españolas.
Se trata de un programa de los que llamo nocturnos,
capaz de funcionar sólo, por las noches,
activado por el programador de tareas del sistema,
sin necesidad de intervención humana.
Fue la primera aplicación real de mis experimentos de generación de informes PDF,
desde el lenguaje TOL, mediante la creación de páginas HTML intermedias y su conversión a PDF con
Two Pilots.
El código específico de esta aplicación es privado,
por lo que sólo incluyo un pequeño ejemplo de las 15 líneas de código de la
función de llamada a Two Pilots,
para la conversión de un informe HTML a PDF,
que es completemente genérico y
útil para el que desee invocar a este conversor en su modo de línea de mandatos.
///////////////////////////////////////////////////////////////////
Real PdfBuild(Text filInp, // Input html file
Text filOut) // Output pdf file
///////////////////////////////////////////////////////////////////
{
If(Not(FileExist(filInp)), FALSE, // Nothing to do
{
// with back slash
Text dosInp = Replace(PdfAbs+filInp, "/", "\\");
Text dosOut = Replace(PdfAbs+filOut, "/", "\\");
Text cmdTxt = PdfExe+" "+ // Executable pdf convertor
dosInp+" "+ // Input file
dosOut+ // Output file
" /jpeg 100 /author Aneca";
Text WriteLn(" Pdf: "+filOut);
System(cmdTxt) // Execute html to pdf conversion
})
};
///////////////////////////////////////////////////////////////////
PutDescription(
"Returns true if can create a pdf file filOut from "+
"an html file filInp.",
PdfBuild);
///////////////////////////////////////////////////////////////////
Conversor de HTML a PDF de Two Pilots
Contador de separadores de campos
realización: 15 de agosto de 2008 | actualización: 10 de septiembre de 2011
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);
Ver el código fuente C completo del contador de separadores de campo
Página del abogado Bartolomé Quesada Valles
realización: 10 de agosto de 2008 | actualización: 5 de agosto de 2011
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 de
OnlineBizLab.
Ver el versión actual
Máximo común divisor de 2 números
realización: 26 de julio de 2008 | actualización: 22 de abril de 2011
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.
Cálculo en Excel del máximo común divisor (MCD) de 2 números
Pedro Reina, cifras y letras
realización: abril de 2008 | actualización: 20 de agosto de 2011
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.
Leer el artículo en PDF
Análisis sensorial de sistemas
realización: marzo de 2008 | actualización: 10 de octubre de 2010
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:
-
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
-
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.
-
Author,
«Sensory analysis of systems»,
Intellectual Property Register, number 16/2009/5854,
Madrid,
February of 2008.
-
Autor,
«Análisis sensorial de sistemas»,
Registro de la Propiedad Intelectual, número 16/2009/5854,
Madrid,
febrero de 2008.
Ver el cuaderno completo en PDF
De BMP Windows a ICO Unix
realización: 27 de noviembre de 2007 | actualización: 10 de septiembre de 2011
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
});
Ver el código fuente TOL y fichero de salida con la tabla ASCII
Triángulo mágico de la diosa hindú Durga
realización: 5 de mayo de 2007 | actualización: 21 de abril de 2011
Fichero Excel (Libro de Excel 97-2003) con 4 hojas de cálculo.
En la primera hoja se plantea resolver el problema del llamado
triángulo mágico de la diosa hindú Durga.
Hay que poner los números del 1 al 9,
todos y sin repetición,
en los 3 lados del triángulo,
de forma que los 3 lados sumen lo mismo.
En cada lado se ponen 4 números del 1 al 9 y
hay 3 celdas que son comunes a 2 lados,
teniendo en total 9 celdas.
Las 3 hojas siguiente muestran las 3 soluciones posibles.
En principio no habría que verlas hasta haber solucionado
por uno mismo el problema del triángulo.
Las operaciones se corrigen automáticamente.
Si el número introducido sale azul es que está bien y
si sale en rojo es que está mal.
En la primera hoja hay una celda de control que permite fijar
la solución que hay que buscar de entre las 3 existentes
(sin contar giros).
Excel para resolver el triángulo mágico de la diosa hindú Durga
PDF para resolver en papel el triángulo mágico de la diosa Durga
15 puzle (3x3) y 65 puzle (5x5)
realización: 5 de mayo de 2007 | actualización: 22 de abril de 2011
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.
Excel con el 15 puzle (3x3) y 65 puzle (5x5) resueltos
Mini sistema de flujo de datos
realización: 5 de noviembre de 2006 | actualización: 21 de abril de 2011
Fichero con dos hojas Excel (Libro de Excel 97-2003)
para practicar suma y resta con un mini sistema de flujo de datos.
Las dos hojas Excel contienen el mismo flujo de datos,
sólo difiere su anchura.
Las celdas de fondo verde claro son las que contienen los datos de partida.
En las celdas de fondo azul claro es en las que hay que introducir los resultados.
Las operaciones se corrigen automáticamente.
Si el número introducido sale azul es que está bien y
si sale en rojo es que está mal.
En la hoja hay dos celdas negras de control,
arriba a la izquierda, que
permiten fijar la complejidad de las operaciones (máximo) y
generar diferentes conjuntos de operaciones.
Descargar el Excel con el sistema de flujo de datos
Operaciones básicas + - x /, disposición horizontal
realización: 4 de noviembre de 2006 | actualización: 21 de abril de 2011
Fichero Excel (Libro de Excel 97-2003) con 4 hojas de cálculo
para practicar sumas, restas, multiplicaciones y divisiones básicas.
Las operaciones se corrigen automáticamente.
Si el número introducido sale azul es que está bien y
si sale en rojo es que está mal.
En cada hoja hay dos celdas negras de control que
permiten fijar la complejidad de las operaciones (máximo) y
generar diferentes conjuntos de operaciones
(actuando de semilla para la generación aleatoria de operaciones).
Descargar el Excel para practicar la operaciones básicas
Operaciones básicas + - x /, disposición vertical
realización: 3 de noviembre de 2006 | actualización: 21 de abril de 2011
Fichero Excel (Libro de Excel 97-2003) con 7 hojas de cálculo
para practicar las operaciones básicas en disposición vertical:
-
Hoja de sumas básicas.
-
Hoja de restas básicas.
-
Hoja para practicar las tablas de multiplicar.
-
Dos hojas de multiplicaciones básicas.
-
Dos hojas de divisiones básicas.
Las operaciones se corrigen automáticamente.
Si el número introducido sale azul es que está bien y
si sale en rojo es que está mal.
En cada hoja hay una celda negra de control que
permiten generar nueve diferentes conjuntos de operaciones.
Descargar el Excel para practicar operaciones básicas
First Forecasting Event
realización: 29 de junio de 2006 | actualización: 20 de diciembre de 2010
Desde Cetiver,
participación junto con Luis Torrijos en el First Forecasting Event de SAS Institute.
Ambos trabajamos sobre una presentación conjunta
a partir de la cual cada uno realizada su ponencia.
La mía titulada
«Automatización a gran escala de previsiones de base estadística:
Soluciones racionales a problemas de incertidumbre masiva».
La portada de la presentación corresponde a un diseño de Luis Torrijos
a partir de su idea de las gafas y la carretera.
-
Speaker,
«First Forecasting Event»,
SAS Institute,
Madrid,
June of 2006.
-
Ponente,
«Primer Evento sobre Previsión»,
SAS Institute,
Madrid,
Junio de 2006.
Imágenes como tablas en HTML
realización: 7 de enero de 2006 | actualización: 2 de septiembre de 2011
Hace unos meses me encontré con el problema de tener que realizar
páginas HTML de texto puro sin poder incrustar imágenes.
Sin embargo, había que insertar un pequeño logotipo del cliente.
El problema puede resolverse convirtiendo la imagen del logotipo en una
gran tabla HTML de celdas de tamaño de 1 pixel por 1 pixel y cada una
del color de fondo de su pixel asociado.
En la imagen de este post puede verse el logotipo en imagen PNG,
en este caso de ejemplo mi propio logotipo, no el del cliente, y
abajo la misma imagen como tabla.
Como para esta publicación no he utilizado el logotipo original de la
empresa que me lo encargó, sino el mio, y para simplificar el ejemplo
sólo he utilizado 3 colores en la tabla,
es por eso que se nota el pixelado.
Pero si se usan más colores el resultado puede se muy parecido al
logotipo original en imagen.
En estos casos, y limitándome a 16 colores, suelo convertir las imágenes
en formato BMP (bitmap) a especificaciones en texto utilizando el
conversor
Bmp2Ico
realizado por Juan Ramón Miráz y por mi.
Incluyo dos realizaciones del mismo código fuente:
con CSS sólo para la página y con CSS para las celdas de la tabla
por lo que el tamaño del código a 1/3.
Como página HTML de resultado sólo incluyo en el PDF la última,
por ser más reducida.
A continuación se muestra parte del código TOL utilizado para esta
conversión, aunque reducido en la parte del mapa de letras del
logotipo para no saturar el post.
En el código PDF que se adjunta a este post se puede ver el código
fuente completo.
Set repTab =
[[
[["+", "<td class='r'></td>"]],
[[".", "<td class='b'></td>"]],
[["-", "<td class='s'></td>"]]
]];
Set picSet = [[
"+++++++-..................++++++++++++++++++++++++++++++++++",
"++++++-................+++++++++++++++++++++++++++++++++++++",
"++++++-...............++++++++++++++++++++++++++++++++++++++",
"+++++-..............++++++++++++++++++++++++++++++++++++++++",
... recortado ...
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
]];
Set repCic = EvalSet(picSet, Text(Text lin)
{ // Replace 1 time
" <tr>\n "+ReplaceTable(lin, repTab, 1)+"\n </tr>\n"
});
Text outHtm =
"
<html>
<head>
<style type='text/css'>
body { margin: 20px 20px 20px 20px; background-color: #ffffff; }
td.b { width: 1px; height: 1px; background-color: #ffffff; }
td.r { width: 1px; height: 1px; background-color: #ff0000; }
td.s { width: 1px; height: 1px; background-color: #ff9090; }
</style>
<title>Imagen en tabla</title>
</head>
<body>
<img src='logo.bmp'>
<br>
<br>
<br>
<table bgcolor='+ffffff' cellpadding=0 cellspacing=0 border=0>
"+
BinGroup("+",repCic)+
"
</table>
</body>
</html>
";
Text WriteFile("logocss.htm", outHtm);
Código fuente TOL completo y resultado en HTML con CSS
Mi página web profesional ASolver.com
realización: abril de 2005 | actualización: 19 de septiembre de 2011
Realización del registro del dominio
ASolver.com,
diseño, maquetación, desarrollo y mantenimiento en internet
de mi propia página web profesional
ASolver.com.
En el principio esta página web estaba albergada en mi proveedor de internet Bitmailer,
empresa que posteriormente fue comprada por Sarenet.
Actualmente sigue en Sarenet que es uno de mis cuatro proveedores de internet.
La imagen de la página que aparece a la derecha de este post es de una versión más actual de
esta página web.
De la página web original, cuya estructura era más apaisada,
sólo conservo los diseños iniciales.
La página está desarrollada a mano,
no se cuantos seguimos haciendo páginas webs a mano,
pero no quedamos muchos,
en HTML y Cascading Style Sheets (CSS) y
es ya una página completamente desarrollada con estructuras div,
a diferencia de las que clásicamente, y con anterioridad,
desarrollaba con estructuras table.
Ver el versión actual de ASolver.com
Manual Básico de Programación en TOL
realización: febrero de 2005 | actualización: 10 de octubre de 2010
Los autores de este libro son, con su posición en el momento de publicación:
Clara Simón de Blas (profesora ayudante doctor de la Universidad Rey Juan Carlos),
Ana García Sipols (profesora titular interina de la Universidad Rey Juan Carlos),
Raquel Montes (Profesora Contratada Doctor de la Universidad Rey Juan Carlos) y
Antonio Salmerón (doctor por la Universidad Politécnica de Madrid) que aporté,
fundamentalmente, los ejemplos y el material de base que dan soporte al libro.
Descripción completa del libro
{
Título: Time oriented language (F/TOL): manual básico de programación;
ISBN (13): 978-84-96285-10-1;
ISBN (10): 84-96285-10-3;
Depósito legal: M 37389;
Ref: Libro;
Clave: L;
Lengua: publicación: Castellano;
Edición: 1ª ed., 1ª imp.;
Publicación: Madrid. Maths Universidad SL, 01/2005;
Descripción: 130 p. ; 29x21 cm;
Encuadernación: rústica;
Materias: Ciencia y tecnología de los ordenadores, Informática;
CDU: 004
}
El objetivo de este manual es orientar a las personas que comienzan a programar en TOL,
que es un lenguaje creado como Open Source por la empresa Bayes Inference SA,
para la modelización del comportamiento temporal
y fui unos de los 3 miembros del equipo inicial de ideación y creación del lenguaje.
El manual comienza con una descripción del lenguaje,
cómo obtener el software y el entorno de trabajo.
Los dos siguientes capítulos están dedicados a la programación con el lenguaje TOL.
Los capítulos restantes describen los tipos de objetos propios de TOL
para la explotación de la información temporal.
El libro incluye ejemplos de programación a lo largo de todo el manual.
-
Coauthor,
«Time Oriented Language (TOL): Basic Programming Guide»,
book with 130 pages,
Madrid,
February of 2005.
-
Coautor,
«Time Oriented Language (TOL): Manual Básico de Programación»,
libro de 130 páginas,
Madrid,
febrero de 2005.
Ver la portada del libro en PDF
Electrical data modelling, UPM
realización: 2004 | actualización: 20 de diciembre de 2010
-
Speaker,
«Electrical data modelling»,
Industrial Engineering School (Technical University of Madrid),
Madrid,
2004.
-
Ponente,
«Modelización de la demanda eléctrica»,
ETSI Industriales (Universidad Politécnica de Madrid),
Madrid,
2004.
Level 10 of 10 in the hacking test, Instisec
realización: 2003 | actualización: 20 de agosto de 2011
La dirección del Instituto para la Seguridad en Internet es
http://www.instisec.com.
-
«Internet Application Security» and
level 10 of 10 in the hacking test
of the Internet Security Institute,
Madrid,
2003.
-
«Aplicaciones seguras en internet» y
nivel 10 de 10 en el test de hacking
del Instituto para la Seguridad en Internet,
Madrid,
2003.
Architecture for time oriented systems
realización: 2000 | actualización: 25 de enero de 2011
Organizado por mi amigo y antiguo socio Manuel Alonso,
Doctor por la Universidad Politécnica de Madrid y,
por entonces, profesor de la Universidad Antonio de Nebrija.
-
Speaker,
«Architecture for time oriented systems»,
Antonio de Nebrija University,
Madrid,
2000.
-
Ponente,
«Arquitectura de sistemas orientados al tiempo»,
Universidad Antonio de Nebrija,
Madrid,
2000.
Dynamic modelling of markets
realización: 1999 | actualización: 20 de diciembre de 2010
Participación en 2 ediciones de las jornadas organizadas por
Departamento de Estadística de la Universidad de Salamanca.
-
Speaker,
«Dynamic modelling of markets»,
Salamanca University,
Salamanca,
2 editions, 1999 & 2001.
-
Ponente,
«Modelización dinámica de los mercados»,
Universidad de Salamanca,
Salamanca,
2 ediciones, 1999 y 2001.
Advanced forecasting, IIR
realización: 1996 | actualización: 20 de agosto de 2011
Ponencia para el Institute for International Research (IIR)
y en calidad de Director General y socio de Bayes Inference SA.
-
Speaker,
«Advanced forecasting»,
Institute of International Research (IIR),
Madrid,
1996.
-
Ponente,
«Modelos avanzados de previsión»,
Institute of International Research (IIR),
Madrid,
1996.
Diccionario de informática
realización: 1996 | actualización: 20 de agosto de 2011
-
Coauthor,
«Computer science dictionary»,
Foundation for Industrial Innovation &
Computer Sciences School (UPM),
Madrid,
1996.
-
Coautor,
«Diccionario de informática»,
Fundación para la Innovación Industrial y
Facultad de Informática de Madrid (UPM),
Madrid,
1996.
Investigación Operativa, UNED
realización: 1995 | actualización: 20 de agosto de 2011
-
Collaborator
in forecasting programming
with the Department of Operations Research,
UNED University,
Madrid,
1988-1989.
-
Colaborador
en programación de previsiones
con el Departamento de Investigación Operativa,
UNED,
Madrid,
1988-1989.
MAP y Fundación Ortega y Gasset
realización: 1995 | actualización: 15 de noviembre de 2010
Profesor de la asignatura «Conceptos fundamentales de informática»,
del Curso de Postgrado en Administración Pública,
del Ministerio para las Administraciones Públicas (MAP),
el Instituto Nacional de Administraciones Públicas (INAP) y
la Fundación Ortega y Gasset,
dos ediciones, Madrid, 1995 y 1996.
-
Teacher,
«Computer science concepts»,
Ministry of Public Administration &
Ortega y Gasset Foundation,
Madrid,
2 editions, 1995 & 1996.
-
Profesor,
«Conceptos fundamentales de informática»,
Ministerio para las Administraciones Públicas y
Fundación Ortega y Gasset,
Madrid,
2 ediciones, 1995 y 1996.
De BMP Windows a ICO Unix
realización: 24 de agosto de 1994 | actualización: septiembre de 2011
El programa de conversión de Bitmaps (BMP) de 16 bits de Windows
al formato ICO (de icono) de Unix
lo comenzó a desarrollar Juan Ramón Miraz, al comienzo de los noventa,
y la versión final que se adjunta en este post la terminé yo.
El formato ICO de Unix especifica un mapa de bits como una matriz de
caracteres ASCII,
donde cada letra se asocia con el color del pixel de su misma fila y columna.
Hubo una época que los bitmaps de los botones de los interfaces de usuario
yo lo pintaba así,
utilizando el editor vi de Unix y letra a letra.
Por ejemplo, asociaba
la v al verde, la b al blanco, la r al rojo, etc.,
para que me fuera más fácil,
e iba poniendo letras, una a una, hasta que el botón quedaba bien.
Para mi era una gratificante labor artesanal.
A partir de este programa también desarrollé el que convierte del formato
BMP al formato BIF, que era un formato propio mio, que
utilizaba en combinación con Clipper.
Aunque ahora se podrían recompilar estos dos códigos fuente
para las versiones de Windows de 64 bits,
sigo utilizando los ejecutables originales de 16 bits.
Antes estos ejecutables de 16 bits podían correr mediante emulación
en Windows de 32 bits,
pero ahora el Windows de 64 bits ya no emula al de 16 bits.
Para poder seguir ejecutando estas pequeñas joyas históricas,
sin necesidad de recompilarlas
(y más aun en aquellos casos en el que el compilador es también de 16 bits)
utilizo el emulador de x86 con DOS de
DOSBox
que se publica con licencia GNU GPL y aceptan donaciones
(yo se la di).
Aunque adjunto en PDF el código fuente completo de
los 2 programas de conversión y
un ejemplo del formato ICO generado con mi logotipo personal,
pongo a continuación el ciclo fundamental de extracción de pixels de
un Bitmap (BMP) de 16 colores.
Como curiosidad, en esta época,
por razones de normalización con el equipo de software con el que trabajaba,
los corchetes { } están en la vertical del bloque de código y
no dos caracteres antes como es mi costumbre habitual:
for (Y=0, YMax=Bmih.biHeight; Y < YMax; Y++)
{
fseek(Bmp, RowStart, SEEK_SET);
for (X=0, XMax=Bmih.biWidth; X < XMax; X++)
{
Arg = fgetc(Bmp);
H = (Arg >> 4) & 0x0F; H = Color[H];
L = Arg & 0x0F; L = Color[L];
X++;
fprintf(Pix,"%c%c",(char)H,(char)L);
}
RowStart -= RowBytes;
fprintf(Pix,"\n");
fputc('.',stdout); fflush(stdout);
}
Bmp2Ico, Bmp2Bif código fuente completo y ejemplo de icono ICO
Master de Ingeniería de Tráfico, DGT
realización: 1994 | actualización: 25 de enero de 2011
Profesor de la asignatura «Panorámica del hardware»,
en el Master de Ingeniería de Tráfico,
organizado por
la Asociación para la Carretera,
la Dirección General de Tráfico (DGT) y
la Universidad Politécnica de Madrid (UPM).
Impartido en la Escuela Universitaria de Ingeniería Técnica de Obras Públicas (UPM).
Participé las dos ediciones de 1994 y 1995.
-
Teacher,
«Hardware concepts»,
Master of Traffic Engineering,
DGT,
2 editions,
Madrid,
1994 & 1995.
-
Profesor,
«Panorámica del hardware»,
Master de Ingeniería de Tráfico,
DGT,
2 ediciones,
Madrid,
1994 y 1995.
Herramienta TIRS, IBM
realización: 1993 | actualización: 10 de octubre de 2010
Profesor del curso «Desarrollo de sistemas basados en el conocimiento con la herramienta TIRS».
Dos ediciones,
la primera para El Corte Inglés y
la segunda para el Instituto Nacional de Estadística (INE).
-
Teacher,
«IBM Tirs Tool»,
National Statistics Institute &
El Corte Ingles,
2 editions,
Madrid,
1993.
-
Profesor,
«Herramienta Tirs de IBM»,
Instituto Nacional de Estadística &
El Corte Inglés,
2 ediciones,
Madrid,
1993.
Sigart Bulletin, ACM Press
realización: 1993 | actualización: 15 de noviembre de 2010
Referencia de mi tesis doctoral en
el número 1, del volumen 4, de la revista Sigart Bulletin,
de ACM Press.
Edición al cuidado de W. Lewis Johnson, USC, Information Sciences Institute, California, USA.
-
Doctoral thesis referenced in the «Sigart Bulletin», volume 4, issue 1,
ACM Press,
Information Sciences Institute,
California,
January of 1993.
-
Referencia de mi tesis doctoral en el «Sigart Bulletin», volumen 4, número 1,
ACM Press,
Information Sciences Institute,
California,
enero de 1993.
Equiparación de perfiles de personalidad
realización: 18 de noviembre de 1992 | actualización: 20 de diciembre de 2010
Colaborador del trabajo
«PCCP: Una aplicación de la ingeniería del conocimiento para
la evaluación de cuestionarios de personalidad de las Fuerzas Armadas»,
bajo la dirección de Miguel Ángel Núñez del
Centro Regional de Psicología (CREPSI)
durante mi servicio militar
(este fue uno de los trabajos que realicé dentro de las áreas
de las aplicaciones a la psicología militar y
de la captura óptica de datos).
Este trabajo galardonado con
el 2º Premio de Investigación en Psicología Militar «General González del Pino»,
del Ministerio de Defensa en 1992
(BOE número 282, del martes 24 noviembre 1992,
Resolución 421/39369/1992, de 18 de noviembre, de la Secretaria de Estado de Administración Militar,
por la que se otorga el Premio de Investigación Psicológica «General González del Pino»).
Resumen:
Para dicha aplicación desarrollé el módulo de equiparación de patrones
de perfiles de personalidad de los individuos a evaluar
con los individuos ya evaluados y clasificados en un banco de datos histórico.
Los nuevos individuos podían entrar a formar parte de este banco de datos
tras su evaluación, clasificación y seguimiento,
con lo que se producía un enriquecimiento constante del banco de datos inicial.
La equiparación se realizaba a través de la definición de una medida de distancia
entre todos los atributos de la personalidad que medía la aplicación y
los de los individuos registrados en el banco de datos.
Para optar al premio, también participé en la redacción de la parte de
la memoria correspondiente a este módulo de equiparación de perfiles de personalidad.
-
Collaborator
of Miguel Angel Núñez,
«Application of the knowledge engineering for the evaluation of personality questionnaires»,
Awarded with the second prize in military psychology research,
Ministry of Defence,
Madrid,
1992.
-
Colaborador
de Miguel Ángel Núñez,
«Aplicación de la ingeniería del conocimiento para la evaluación de cuestionarios de personalidad»,
Galardonado con el 2º premio en investigación en psicología militar,
Ministerio de Defensa,
Madrid,
1992.
Ver la publicación en el BOE de noviembre de 1992 en PDF
PhD, Inteligencia Artificial, UPM
realización: 1992 | actualización: 20 de abril de 2011
-
Doctor Cum Laude
in Artificial Intelligence / Computer Science,
Technical University,
Madrid,
2+3 years,
1986-1988, 1989-1992.
-
Doctor Cum Laude
en Inteligencia Artificial / Informática,
Universidad Politécnica,
Madrid,
2+3 años,
1986-1988, 1989-1992.
Cuerpo Superior de Técnicos en TI
realización: 1992 | actualización: 20 de agosto de 2011
Temario de la oposición al Cuerpo Superior de Técnicos en Tecnologías de la Información.
Inicialmente se hizo un sólo tema coordinado por Francisco López Crespo,
luego se ampliaron a cuatro temas (coordinados por mí) y,
a partir de ahí,
el contenido de estos módulos fue reutilizado por los organismos
encargados del temario de forma independiente a los autores iniciales.
Estos autores iniciales fueron, por orden alfabético:
Manuel Alonso González,
María Jesús Díaz García,
Ana García Serrano,
Martín Molina González,
Eduardo Izquierdo Lázaro,
Sascha Ossowski y
Antonio Salmerón.
Tengo conocimiento de, al menos, cuatro ediciones,
cuya historia describo a continuación,
aunque es posible que haya habido muchas más.
Cuatro ediciones:
-
Coautor del tema 15, Inteligencia Artificial y Sistemas Expertos,
coordinado por Francisco López Crespo,
Ministerio para las Administraciones Públicas (MAP),
Madrid 1992.
-
Coautor y coordinador técnico de los temas 24, 25, 26 y 27 del nuevo temario de 1996,
también para el Ministerio para las Administraciones Públicas (MAP).
-
En la edición de 2002, los temas anteriores, se volvieron a editar
con los números 19, 20, 21 y 22,
siguiendo el orden de la convocatoria del Boletín Oficial del Estado (BOE) 215 de 2002/09/07,
en una edición que corrió a cargo de la
Asociación Profesional del Cuerpo Superior de Sistemas y Tecnologías de la Información de la Administración del Estado (ASTIC).
-
Finalmente en 2009, esto temas, se refundieron en el tema 65,
«Gestión del conocimiento: Representación del conocimiento. Sistemas expertos. Herramientas»,
del segundo volumen de la edición de ASTIC.
-
Coauthor and technical coordinator,
«Modules of artificial intelligence & experts systems»,
Ministry of Public Administration,
4 editions,
Madrid,
1992, 1996, 2002 & 2009.
-
Coautor y coordinador técnico,
«Módulos de inteligencia artificial y sistemas expertos»,
Ministerio para las Administraciones Públicas,
4 ediciones,
Madrid,
1992, 1996, 2002 y 2009.
Ver el apartado de restricciones del temario de la oposición
Arquitecturas de 2ª generación de diagnóstico
realización: 1992 | actualización: 15 de noviembre de 2010
Ponencia titulada
«Arquitecturas de segunda generación para el diagnóstico profundo en instalaciones industriales»,
dentro del curso sobre Técnicas Avanzadas de la Inteligencia Artificial,
de la Universidad de Extremadura (UNEX) en 1992.
Pertenece al conjunto de ponencias realizadas ya cerca, y en el marco, de la presentación
de mi tesis doctoral. Cada ponencia representaba un paso adelante en el refino de las
ideas de la tesis.
-
Speaker,
«2nd generation architectures for the deep diagnosis in industrial plants»,
Universidad de Extremadura,
Caceres,
1992.
-
Ponente,
«Arquitecturas de 2ª generación para el diagnóstico profundo en instalaciones industriales»,
Universidad de Extremadura,
Cáceres,
1992.
Centro Superior de Investigaciones Científicas
realización: 24 de octubre de 1991 | actualización: 20 de agosto de 2011
Presentación científica titulada
«Arquitecturas de segunda generación para el diagnóstico profundo en instalaciones industriales»,
realizada en el Centro Superior de Investigaciones Científicas (CSIC),
en Madrid el 24 de octubre de 1991,
en la IV Reunión Técnica de la Asociación Española Para la Inteligencia Artificial (AEPIA).
El artículo, escrito con mi director de tesis José Cuena,
que da soporte a esta presentación científica está publicado
en las Actas de la IV Reunión Técnica de la AEPIA,
en la sección IV de «Arquitecturas Avanzadas»,
de las páginas 351 a 365.
Es una de las presentaciones de la que guardo más grato recuerdo,
tal vez por el entorno del salón de actos del CSIC,
por la presencia de mi director de tesis José Cuena
(que fue Presidente AEPIA de 1983 a este año 1991) y
por la de Felisa Verdejo
(directora del Departamento de Lenguajes y Sistemas Informáticos de la UNED y
del grupo de investigación Procesamiento del Lenguaje Natural),
sentada junto a él y que luego formaría parte de mi tribunal de tesis.
El mosaico de la portada de las Actas,
que combina en verdes el logotipo de la AEPIA,
y su versión en grises del Programa de mano de la reunión es
una creación mía realizada con un Apple Macintosh.
Este mosaico también fue utilizado para
la V Conferencia de la AEPIA en 1993 pero en naranjas.
-
Coauthor,
«2nd generation architectures for the deep diagnosis in industrial plants»,
Papers of the 4th Technical Meeting of the AEPIA,
Scientific Research Council,
Madrid,
1991.
-
Coautor,
«Arquitecturas de 2ª generación para el diagnóstico profundo en instalaciones industriales»,
Actas de la IV Reunión Técnica de la AEPIA,
Centro Superior de Investigaciones Científicas,
Madrid,
1991.
Representación en restricciones
realización: 2 de octubre de 1991 | actualización: 25 de enero de 2011
Ponente de la conferencia titulada
«Representación en restricciones de conocimiento profundo sobre instalaciones industriales»,
centrada en la «Programación con restricciones».
La ponencia está basada en artículo del mismo nombre,
escrito con José Cuena,
que se publicó en las actas de las jornadas de Programación Declarativa,
Universidad de Málaga,
Málaga, celebrada del 2 al 4 de octubre de 1991.
-
Coauthor,
«Constraint programming»,
Papers of the Declarative Programming Symposium,
Malaga University,
Malaga,
October of 1991.
-
Coautor,
«Programación con restricciones»,
Actas de las Jornadas de Programación Declarativa,
Universidad de Málaga,
Málaga,
octubre de 1991.
Sistemas expertos en la empresa
realización: 1991 | actualización: 25 de enero de 2011
Profesor y coordinador técnico master de «Sistemas expertos en la empresa»,
impartido durante 5 ediciones de 620 horas cada una.
Organizado por la Comunidad Autónoma de Madrid, Consejería de Educación, Instituto Madrileño de Formación (IMAF).
Fue impartido primero en
la Universidad Carlos III de Leganés, curso 1990-91.
Posteriormente en
el Centro de Enseñanza de las Tecnologías de la Información (CETICAM) de Carabanchel, cursos 1991-1992, 1992-1993, 1993-1994 y 1994-1995.
Fui profesor de las asignaturas
Conceptos básicos de informática,
Conceptos fundamentales de Inteligencia Artificial,
Diseño y construcción de sistemas expertos.
Profesor de los laboratorios de lenguaje C, lenguaje Lisp, lenguaje Clipper y de proyectos de fin de master.
En los tres últimas ediciones fui coordinador técnico del master.
-
Technical coordinator and teacher,
«Master in commercial expert systems»,
IMAF, Community of Madrid,
5 annual editions of 620 hours each,
Madrid,
1991-1995.
-
Coordinador técnico y profesor,
«Sistemas expertos en la empresa»,
IMAF, Comunidad de Madrid,
5 ediciones anuales de 620 horas,
Madrid,
1991-1995.
Referencia en The 1991 AI Directory
realización: 1991 | actualización: 20 de agosto de 2011
Referenciado en «The 1991 AI Directory: The Directory of the Artificial Intelligence Industry»,
en la página 69,
directorio editado por
American Association for Artificial Intelligence (AAAI, Menlo Park, California),
Association for Computing Machinery Special Interest Group on Artificial Intelligence (ACM-SIGART),
Canadian Society for Computational Studies of Intelligence (CSCSI) y
Sociedad Mexicana de Inteligencia Artificial (SMIA)
en 1991.
-
Referenced in
«The 1991 AI Directory: The Directory of the Artificial Intelligence Industry»,
page 69,
AAAI, ACM-SIGART, CSCSI y SMIA,
California,
1991.
-
Referenciado en
«El Directorio de la IA, 1991: El Directorio de la Industria de la Inteligencia Artificial»,
página 69,
AAAI, ACM-SIGART, CSCSI y SMIA,
California,
1991.
IA y sistemas basados en el conocimiento
realización: 1991 | actualización: 15 de noviembre de 2010
Ponencia titulada
«Inteligencia artificial y sistemas basados en el conocimiento»,
en la Facultad de Ciencias Físicas y Matemáticas de la Universidad Complutense
de Madrid.
-
Speaker,
«Artificial intelligence & knowledge based systems»,
Complutense University,
Madrid,
1991.
-
Ponente,
«Inteligencia artificial y sistemas basados en el conocimiento»,
Universidad Complutense,
Madrid,
1991.
Servicio militar en psicología
realización: 18 de julio de 1990 | actualización: 10 de octubre de 2010
-
Developer
of systems for electronic capture (OMR, Optical Mark Reader) and
reporting and diagnostic for a military psychology centre,
Ministry of Defence
Madrid,
1990-1991.
-
Desarrollador
de sistemas de captura electrónica (OMR, lectura óptica de marcas) y
de generación de informes y diagnósticos para un centro de psicología militar,
Ministerio de Defensa,
Madrid,
1990-1991.
Modelling of industrial problems, INCOM’89
realización: 1989 | actualización: 10 de octubre de 2010
En 1989 escribí el artículo
«A knowledge based environment for artificial intelligence modelling of industrial problems: Preliminary concepts»,
bajo la dirección de José Cuena,
que se publicó en Preprints of the 6th Symposium on Information Control Problem in Manufacturing Technology (INCOM’89)
de la International Federation of Automatic Control (IFAC).
Esta fue una de las primeras veces que tuve que presentar un artículo
en una conferencia internacional.
Al llegar la hora de la inscripción me pidieron pagar la entrada al curso.
Era incapaz de comprenderlo,
expliqué una y otra vez que iba de ponente, no de asistente,
yo no concebía que además de que no me pagaran por hablar tuviera que pagar por asistir.
Armé tal lío que tuvo que llegar mi tutor José Cuena a pagar mi entrada y
hacerme pasar, pues llegaba tarde a mi ponencia.
Han pasado los años y sigo creyendo que
si lo que vas a contar tiene contenido hay que negarse a pagar
y si no tiene contenido entonces ni hay que hablar.
-
Coauthor,
«A knowledge based environment for artificial intelligence modelling of industrial problems: Preliminary concepts»,
INCOM’89,
IFAC,
Madrid,
1989.
-
Coautor,
«Un entorno basado en el conocimiento para la modelización con IA de problemas industriales: Conceptos preliminares»,
INCOM’89,
IFAC,
Madrid,
1989.
Herramienta Guru, IBM
realización: 1989 | actualización: 15 de noviembre de 2010
Profesor de la «Herramienta Guru»
en el Curso de Formación Continua
«Sistemas Expertos, Conceptos, técnicas y métodos básicos»,
de la Escuela Universitaria de Informática
de la Universidad Politécnica de Madrid
en 1989.
Guru era una herramienta desarrollada por IBM
para la construcción de sistemas expertos.
-
Teacher,
«IBM Guru tool»,
University School of Computer Science,
Technical University,
Madrid,
1989.
-
Profesor,
«Herramienta Guru de IBM»,
Escuela Universitaria de Informática,
Universidad Politécnica,
Madrid,
1989.
Reasoning over the behaviour of physical systems
realización: 1989 | actualización: 20 de agosto de 2011
Autor del artículo
«Reasoning over the behaviour of physical systems»,
en Civil Engineering Expert Systems,
Civil Engineering European Cursus,
Programa COMET,
Madrid, 1989.
Fui sólo el autor del artículo,
porque no pude asistir a la conferencia como ponente y
lo tuvo que presentar por mí Manuel Alonso,
compañero en el Laboratorio de Inteligencia Artificial y
luego socio de la empresa EQ Sistemas Inteligentes.
-
Author,
«Reasoning over the behaviour of physical systems»,
Civil Engineering Expert Systems,
Civil Engineering European Cursus,
Madrid,
1989.
-
Autor,
«Razonamiento sobre el comportamiento de sistemas físicos»,
Sistemas Expertos en Ingeniería Civil,
Curso Europeo de Ingeniería Civil,
Madrid,
1989.
Diagnóstico profundo y simulación cualitativa
realización: 1988 | actualización: 2 de mayo de 2011
-
Researcher
in deep diagnosis and qualitative risk simulation
for Repsol (petro-chemical industry),
Tarragona,
1988-1989.
-
Investigador
en diagnóstico profundo y simulación cualitativa de riesgos
para Repsol (sector pretro-químico),
Tarragona,
1988-1989.
Optimización de queries a bases de datos
realización: 1988 | actualización: 25 de enero de 2011
Publicación del artículo titulado
«Optimizadores: Mejorar el acceso a los datos»,
en la revista Chip, número 76, páginas 37-47, Ediciones Arcadia,
Madrid, 1988.
Artículo escrito con y bajo la dirección de Adoración de Miguel Castaño,
por entonces mi profesora de bases de datos y modelos de datos.
Los ejemplos para ilustrar la lógica de la optimización estaban
programados en Prolog.
-
Coauthor,
«Database query optimization»,
Chip Magazine, number 76, pages 37-47, Arcadia Editions,
Madrid,
1988.
-
Coautor,
«Optimizadores: Mejorar el acceso a los datos»,
Revista Chip, número 76, páginas 37-47, Ediciones Arcadia,
Madrid,
1988.
Sistema de Ayuda Inteligente al Diseño
realización: septiembre de 1987 | actualización: 10 de octubre de 2010
Coautor con José Cuena de «Sistema de ayuda inteligente al diseño»,
publicado en Contributes Papers of the International Conference on Artificial Intelligence,
II World Basque Congress,
que se celebró en San Sebastián del 31 de agosto al 22 de octubre de 1987.
Allí expuse el sistema de ayuda al diseño de estructuras creado en mi proyecto de fin de carrera.
Cuando escribí mi proyecto no disponía de un buen procesador de textos
(WordPerfect 1.0 empezó a popularizarse hacia finales de los ochenta y yo no lo tenía),
por lo que para poder hacer la memoria del proyecto tuve que construirme
mi propio procesador de textos (del que yo fui su único usuario) junto con
un módulo gráfico para que el Sistema de Ayuda Inteligente al Diseño
pudiera imprimir gráficamente las estructuras que él creaba.
Años después, me plantee que dicho procesador de textos y el módulo gráfico de impresión,
valían, como proyecto de fin de carrera, mucho más que el propio proyecto presentado.
Sin embargo, este artículo ya estaba escrito con el procesador de textos de un Apple Macintosh.
-
Coauthor,
«Intelligent computer-aided design»,
Contributes Papers of the International Conference on Artificial Intelligence,
II World Basque Congress,
Donosti,
September of 1987.
-
Coautor,
«Sistema de ayuda inteligente al diseño»,
Documentos de la Conferencia Internacional en Inteligencia Artificial,
2º Congreso Mundial Vasco,
San Sebastián,
septiembre de 1987.
Licenciado en informática, UPM
realización: 1987 | actualización: 20 de agosto de 2011
-
Software engineer,
Computer Science School,
Technical University,
Madrid,
5+1 years,
1981-1986, and 1987.
-
Licenciado en Informática,
Facultad de Informática,
Universidad Politécnica,
Madrid,
5+1 años,
1981-1986 y 1987.
Diseño y fabricación asistida por computador
realización: julio de 1986 | actualización: 2 de mayo de 2011
-
Manager of the
Computer-aided Design and Manufacturing Group
in Amper (electronic industry),
Madrid,
1986-1987.
-
Administrador del
Centro de Diseño y fabricación asistida por computador
en Amper (sector de la electrónica),
Madrid,
1986-1987.
Tesis de Francisco Javier Gisbert Cantó
realización: 1986 | actualización: 15 de noviembre de 2010
Francisco Javier Gisbert Cantó es (2011)
Vicedecano Secretario de la Facultad de Informática
de la Universidad Politécnica de Madrid (UPM).
Presentó su tesis doctoral titulada
«Contribución para una nueva generación de sistemas de diseño asistido por computador basados en inteligencia artificial»
en 1986.
Con Ana García Serrano y Rafael María Gosálbez
colaboré en esta tesis que dirigió mi director José Cuena.
-
Cited
by Francisco Javier Gisbert
as collaborator
in his doctoral thesis about «Intelligent computer-aided design systems»,
page V,
Technical University,
Madrid,
1986.
-
Citado
por Francisco Javier Gisbert
como colaborador
en su tesis doctoral sobre «Sistemas de ayuda inteligente al diseño»,
página V,
Universidad Politécnica,
Madrid,
1986.
Ver la tesis en PDF en el archivo digital de la UPM
Lenguaje Prolog, AEPIA
realización: 1985 | actualización: 20 de diciembre de 2010
Jesús García San Luis y yo colaboramos con
nuestra tutora Ana María García Serrano
en la preparación y presentación de la ponencia denominada «Prolog II»
en las Jornadas de Inteligencia Artificial de
la Asociación Española Para la Inteligencia Artificial (AEPIA),
que se celebró en 1985,
en el Rectorado de la Universidad Politécnica de Madrid (UPM).
Ana María García Serrano es (2008)
profesora asociada del Departamento de Inteligencia Artificial de la Facultad de Informática de la UPM y
Jesús García San Luis es (2008)
Director de Exploración y Producción I+D de Repsol.
El Rectorado de la UPM está en la calle Ramiro de Maeztu,
en la Ciudad Universitaria,
allí también pasé ese verano trabajando como becario,
donde disponía de una máquina Digital Vax,
a veces para mí solo,
cuando en la Facultad,
en los inviernos anteriores,
había que hacer largas colas a primera hora de la mañana
para conseguir sólo un poco de tiempo en otro Digital Vax de menor potencia.
-
Coauthor,
«Prolog II language»,
Artificial Intelligence Symposium,
AEPIA,
Madrid,
1985.
-
Coautor,
«Lenguaje Prolog II»,
Jornadas de Inteligencia Artificial,
AEPIA,
Madrid,
1985.
Web de la AEPIA
Riesgos de crédito para el Banco de Santander
realización: 1985 | actualización: 15 de noviembre de 2010
Como becario trabaje
en el desarrollo en Prolog II de un sistema experto de la clase MYCIN
para la evaluación del riesgos de crédito para el Banco de Santander,
en el área de créditos a empresas.
La beca estaba dentro del marco de colaboración entre el Banco de Santander
y el grupo de investigación creado por José Cuena
en la Universidad Politécnica de Madrid (UPM).
Prolog es un lenguaje de programación lógico e interpretado con un
mecanismo de inferencia mediante encadenamiento en profundidad de reglas.
Por estas fechas,
al poco tiempo de aprender a programar en Prolog (en especial Prolog II de Marsella),
cree dos reglas capaces de procesar a otro conjunto de reglas,
que recibían como argumentos de entrada,
pero lo hice de forma que la exploración de dicho conjunto de reglas realizaba en anchura, no en profundidad.
Mi director José Cuena me dijo divertido:
«le dejo un motor de inferencia y
lo primero que hace usted es cambiarle la dirección».
Aquellas dos reglas ayudaron a la creación de
sistemas expertos de acumulación y transmisión de evidencia
(del tipo MYCIN, con una orientación semibayesiana)
a partir de los a priori
de los expertos, ya que la acumulación de la evidencia
aportada por un conjunto de reglas necesita su evaluación conjunta,
esto es en anchura,
para poder ser combinada.
-
Scholar,
«Risk assessment expert system»,
Santander Bank,
Madrid,
1985-1986.
-
Becario,
«Sistema experto de evaluación de riesgos»,
Banco de Santander,
Madrid,
1985-1986.
Miembro de la primer claustro democrático y constituyente de la UPM
realización: 1984 | actualización: 2 de mayo de 2011
Fui miembro de la primer claustro democrático y constituyente
de la Universidad Politécnica de Madrid y
participé en la redacción de sus primeros estatus democráticos
(aprobados por Real Decreto 2.536/1985, de 27 de diciembre).
-
Students' representative in the Legislative Congress of the
Technical University,
Madrid,
1984-1985.
-
Miembro de la primer claustro democrático y constituyente de la
Universidad Politécnica,
Madrid,
1984-1985.
Claustral de la Facultad de Informática
realización: noviembre de 1983 | actualización: 2 de mayo de 2011
-
Students' representative in the Council of the Computer Science Faculty,
Technical University,
Madrid,
1983-1984.
-
Miembro del claustro de la Facultad de Informática,
Universidad Politécnica,
Madrid,
1983-1984.
Delegado de 3º de la Facultad de Informática
realización: octubre de 1983 | actualización: 2 de mayo de 2011
-
Students' representative of the third course of the Computer Science Faculty,
Technical University,
Madrid,
1983-1984.
-
Delegado del curso 3º de la Facultad de Informática,
Universidad Politécnica,
Madrid,
1983-1984.
Sistema operativo RPS, Series/1 de IBM
realización: 1983 | actualización: 20 de agosto de 2011
En 1983 colaboré como
profesor ayudante de prácticas del
Sistema operativo RPS (Real-time Programming System) del Series/1 de IBM,
en el Centro de Cálculo de la Facultad de Informática,
de la Universidad Politécnica de Madrid (UPM),
bajo la dirección de Arturo Ribagorda Garnacho.
Arturo Ribagorda Garnacho es, actualmente (2010),
Catedrático de Ciencia de la Computación e Inteligencia Artificial en
la Universidad Carlos III de Madrid (UC3M)
en el Campus de Leganés.
Por aquel entonces empezaba a utilizar
discos flexibles de 8 pulgadas como el que aparece en la imagen,
aunque todavía no habían salido de mí vida
ni la programación ni con cinta, ni con tarjetas perforadas.
-
Teacher assistant,
«IBM Series/1 RPS operating system»,
Computer Science School,
Technical University,
Madrid,
1983.
-
Profesor ayudante,
«Sistema operativo RPS, Series/1 de IBM»,
Facultad de Informática,
Universidad Politécnica,
Madrid,
1983.
Series/1 de IBM en Wikipedia