sábado, noviembre 29, 2008

8 damas, avancemos un poquito más...

Sí, vuelvo a la carga.

Al mediodía os proponía una forma de empezar a resolver el problema.

He seguido colocando damas y ha ocurrido lo siguiente:

O sea, que nos hemos encontrado sin salida. Hemos colocado 5 damas y ya no podemos continuar porque la sexta la pongas donde la pongas estará amenazada.

Os preguntaba como continuar y no ha habido respuesta. Así que lo continuo como se me ocurra a mi.

Este algoritmo que hemos seguido se parece mucho a una búsqueda en un árbol. Para el que no haya estudiado esto de grafos y árboles os lo explico:

Ante un callejón sin salida, volvemos atrás y miramos si la última dama colocada se puede poner en otra casilla.

Llegamos al punto en el que colocamos la dama en E4. La siguiente dama no la podemos poner.
Volvemos atrás y buscamos otra opción. Encontramos la casilla E8 donde podemos colocar dama.
Continuamos como siempre y vemos que se puede colocar una dama en F4.

Con esta técnica hemos podido poner una dama más aunque no nos ha servido demasiado por encontrarnos en otro callejón sin salida.

Como no podemos continuar más, hay que retroceder hasta ir agotando todas las posibilidades.

El grafo es un diagrama de líneas y el árbol es un tipo de grafo especial en el que un padre tiene 1 o varios hijos, pero un hijo sólo tiene un padre. El dibujo que hemos elaborado es un árbol.

Cuando nuestros programas tengan que recorrer un árbol hay dos estrategias diferentes:

La búsqueda que hemos visto se llama búsqueda en profundidad porque avanzamos todo lo que podemos por una rama hasta el callejón sin salida. Si hay que retroceder retrocedemos lo mínimo necesario para encontrar una rama lo más profunda posible. Esta es una buena estrategia cuando la profundidad máxima está controlada (en nuestro problema hay 8 niveles) y nuestro algoritmo no se va a perder por esos caminos.

Con grandes profundidades, si no queremos ver nuestro programa perdido en una rama profundísima podemos emplear la búsqueda en anchura. Se trata de retroceder hasta el nivel superior y empezar por otra rama antes de empezar a indagar en las profundidades.

Saludos.

Antes de empezar con las 8 damas...

Advertencia: Es muy importante que no busquéis la solución. Hay que conseguirla sin ser contaminado por estructuras de datos y programas (algoritmos) de otros.

Yo hace muchos años que no he visto la solución y aún así creo que ya no es lo mismo. Ver el programa que lo resuelve es como cuando te explican un truco de magia. Ya no tiene ningún interés.

Además hay otra cosa:

Gauss, el más grande entre los grandes no consiguió dar con el método para obtener todas las soluciones.

En un primer momento presentó 72 casos de éxito que luego amplió a 76.

Sería muy interesante encontrar el fallo de Gauss. No somos tan grandes como él, pero tenemos alguna ventaja como el conocimiento la programación estructurada y un ordenador.

Después de todo este rollo voy a entrar en materia.

Un tablero de ajedrez es así.
De esos tableros que ha encontrado Google, muchos están mal colocados. Aunque no importe para este problema, si puede influenciar en otros, y es muy importante en el juego del ajedrez:

Siempre que veais un tablero, en la primera fila (la más cercana a vosotros) el cuadro más a la izquierda debe ser una casilla negra. Luego la dama va en la casilla de su color.

Volvamos al problema.

El tablero de ajedrez tiene 8 filas y 8 columnas. Queremos colocar 8 damas. Cómo las damas se amenazan vertical, horizontal y diagonalmente, está claro que en todas las soluciones sólo puede haber una dama en cada fila y una dama en cada columna.

Esto nos da un inicio. Para ver mejor las explicaciones voy a dibujar el cuadro:

Empezamos fila a fila. Lógicamente da igual columna a columna pero psicológicamente es como más sencillo ya que normalmente trabajamos así (leyendo fila a fila).

Empezamos por la fila de arriba (la A y vamos hacia la H). Sólo puede haber una dama en cada fila.

Colocamos la primera en la primera columna. Por lo tanto está en A1.

Ahora tenemos que anular las casillas amenazadas por esa dama. O sea, anulamos toda la columna 1, toda la fila A, y la diagonal B2, C3, D4, etc.

Vamos a la fila 2 y ponemos la siguiente dama en la primera columna donde podamos: B3.

Igual que antes hay que anular las casillas amenazadas y etc. etc. hasta llegar a colocar las 8 damas.

De esta forma encontramos una solución.

Ahora hay que pensar la forma de proseguir. O sea, una vez encontrada una solución ¿cómo seguimos buscando?

¿Parece un programa recursivo?

Saludos.

El gran Gauss

Hace tiempo que no hago nada de programación...

Probablemente Gauss sea el mayor genio matemático de todos los tiempos.

Os voy a contar la historia de las ocho damas.

En la wikipedia inglesa viene bien explicada: http://en.wikipedia.org/wiki/Eight_queens_puzzle

Resumiendo, el jugador de ajedrez Max Bezzel propuso el problema en 1848.

Se trata de colocar en un tablero de ajedrez 8 damas de forma que no se amenacen entre ellas. Recordad que las damas se mueven en diagonal como los alfiles, y en horizontal y vertical como las torres.

Según la wikipedia inglesa en 1850 la primera solución la aportó el doctor Nauck. El caso es que Gauss se interesó por el problema y buscó una forma automática de encontrar todas las soluciones. Llegó a encontrar 76 soluciones diferentes.

Al final fué el doctor Nauck el que encontró las 92 soluciones posibles.

Hoy es demasiado tarde (2:38 a.m.), pero mañana (o pasado si hay contratiempos) publicaré el programa en VB.NET (con mi nuevo Visual Studio 2005) que consigue descubrir las 92 soluciones.

jueves, noviembre 27, 2008

Emotiva hibernación de Kriptopolis


Yo hablando del polvo que somos y la idea de lo efímero de la vida o algo así, y el admin de http://www.kriptopolis.org/ anuncia una nueva etapa.

No es una despedida pero suena a algo parecido. Sólo hay que leer unos cuantos comentarios para darse cuenta del vacío que provoca la decisión.

La dedicación diaria que exige un sitio como Kriptópolis es demasiada para una sola persona.

Aún trabajando en equipo es difícil pensar que las circunstancias de cada miembro vayan a permanecer inmutables a lo largo de varias semanas, años, o lustros como los que lleva Kriptópolis.

Espero que admin@kriptopolis recupere la ilusión y consiga continuar con el proyecto a pleno rendimiento. Pero si no es así sólo queda agradecerle el gran trabajo que ha realizado todos estos años.
pd: conocí kriptopolis en la universidad. De eso hace más de 10 años. ¡Cómo pasa el tiempo!

miércoles, noviembre 26, 2008

Los elementos


¿Tenéis la típica tabla periódica de los elementos?

¿No?, pues no pasa nada, aquí hay una.

Os voy a contar una curiosidad. Tal vez no valga para nada, o tal vez te haga pensar algo (no se el qué).

El Hidrógeno y el Helio son los elementos más abundantes del universo.
Estos elementos no se generan en las estrellas. Más bien es lo contrario, la fusión de las estrellas consume estos dos elementos.

Se crearon en la Nucleosíntesis, más o menos desde el segundo número 1 al 180 después del big bang.

Las estrellas "queman" helio e hidrógeno y "fabrican" los elementos pesados. Cuando las estrellas mueren se generan las supernovas y esos elementos pesados se "liberan" por el universo.

¿Y que tiene que ver eso con nosotros? Pues TODO.

Los elementos más pesados que el hierro que hay en nuestro cuerpo, y la mayoría de los elementos más pesados que el helio, se han elaborado en estrellas y han sido esparcidas por supernovas. Piensa en el calcio, hierro, carbono, etc.
Sí, como dijo Carl Sagan "Todos somos polvo de estrellas".
O como dice la Biblia "polvo somos y en polvo nos convertiremos".
Saludos.

Creación del FileSystem en Linux

Foto de un día aburrido en el parque.

Hace unos meses preparé un nuevo file system para Oracle en un servidor Linux. Se trataba de un Red Hat ES 4.


Creo que puede ser útil para alguien, por lo que ahí va eso...


PRIMERO.-Comprobamos los discos disponibles en el sistema.

Vamos al navegador de hardware (Inicio, Herramientas del Sistema) del menú de configuración.


En mi servidor me encuentro lo siguiente:


El disco en uso (el del sistema) es /dev/cciss/c1d0. Tiene 72 GB. Realmente son 2 discos de 72 GB en Raid 0+1.


El disco no utilizado es el /dev/cciss/c1d1. Tiene 410 GB. Realmente son 4 discos de 146 GB en Raid 5.

SEGUNDO.-Un poco de observación...
Vamos a /dev/cciss y vemos todos los devices.

Ejecutamos el comando vgscan.

Ahora podemos hacer pvdisplay (physical volume), vgdisplay y lvdisplay (logical volume) para ver como está el sistema.

TERCERO.-Ahora la creación.

Creamos el volumen físico: pvcreate /dev/cciss/c1d1.

Obtenemos algo así: Physical volume “/dev/cciss/c1d1” successfully created.

Creamos el Volume group: vgcreate vg01 /dev/cciss/c1d1 –s 32.

La opción –s 32 es para indicar que las extensiones PE SIZE sean de 32 MB (en mi servidor igual que en vg00).

El resultado: Volume group “vg01” successfully created.

Creamos el Logical Volume en el nuevo Volume Group:

lvcreate –L 410,09G vg01 –n lvoradata


De estar forma se crea el lvoradata con 410,09 Gbytes.


Preparo también un LV para el motor Oracle en los discos del sistema (VG00):

lvcreate –L 10G vg00 –n lvoracle.

El resultado es: Rounding up size to full physical extent 410,09G Logical volume “lvoradata” created.

Creamos los puntos de montaje para los dos File system:

mkdir /oradata

mkdir /oracle

Creamos el File System:

mkfs –t ext3 /dev/vg01/lvoradata

mkfs –t ext3 /dev/vg00/lvoracle

Montamos los File System:

mount /dev/vg01/lvoradata /oradata

mount /dev/vg00/lvoracle /oracle

Podemos ver los File System montados con df –k o df –h.

Hacemos que se monten los nuevos File System al arrancar el servidor. Para ello editamos el fichero /etc/fstab y añadimos una nueva línea por cada File System.



Otros comandos de interés:

Para eliminar el vg creado: lvremove, vgremove.
Para modificación por medio de herramienta del /etc/fstab: fstab-sync.
Para desmontar file system: umount.
Para crear particiones: fdisk, cfdisk, sfdisk.
Para chequear y reparar File System dañados: fsck.
Para gestionar los logical volume: lvm (Logical volume manager). Previamente hay que hacer el pvcreate a mano.
Otros comandos: vgscan

domingo, noviembre 23, 2008

Liando al personal

Foto para alexav8. Mira, he encontrado una foto del mack. Ahora está en el carrocero pintando. Saludos.

Estaba leyendo unos cuantos periódicos digitales y me he llevado la siguiente sorpresa:

Es una noticia publicada en El Correo digital y dice lo siguiente:

"La piratería informática provoca pérdidas de dos millones en La Rioja".

En el cuerpo de la noticia detallan que el Business Software Alliance (BSA) les ha informado del dato. Su presidente en España es el que aporta algunos datos, motivaciones, pero lo más sorprendente es esta frase que dice:

"Asimismo, aseguró que el uso de programas gratuitos como Linux es una vía de entrada para la piratería, por lo que pidió a las administraciones que aumenten los controles cuando se use software gratuito."

¿Comorrr? ¿Que Linux es vía de entrada para la piratería? ¡Y se queda tan ancho el tio!

Les he dejado el siguiente comentario:

Menudo cuento eso de que Linux es vía de entrada para la piratería. Como se nota que Microsoft y Apple son miembros de BSA y Linux su mayor competencia. La vía de entrada de la piratería es Windows ya que la gran mayoría de software pirateado es para este sistema operativo.

¡Que pena!, se me ha olvidado ponerles el enlace de los miembros de BSA.

Si queréis podéis poner vuestros propios comentarios o votar el mío aquí.

Saludos.

sábado, noviembre 22, 2008

Juego de caracteres en Oracle

Hola,

Aquí estoy, viernes noche moviendo una export Oracle para empezar luego la importación en un servidor nuevo (una migración en toda regla). Voy a aprovechar este tiempo muerto para terminar con el tema del juego de caracteres...

Ayer ya adelantaba algunas cositas. Voy a hacer un resumen y el que quiera profundizar puede ir a la nota Oracle que le indico).

El juego recomendado por Oracle es el Unicode. Es el denominado juego universal (estándar de facto en HTML, XML, etc.) y con él no nos va a faltar ningún carácter porque incluye todos los demás. Oracle lo recomienda en las notas 333489.1, 227330.1.

Básicamente nos dicen que no tendremos ningún problema para soportar cualquier cosa.

También remarcan que nos podemos arreglar muy bien con otros juegos, pero consideran que a la larga no elegir Unicode es un error.

Mitos y leyendas sobre Unicode:

1.-Hay gente que piensa de la siguiente forma: Unicode soporta todo, por lo que necesita muchos bytes para representar cada carácter, por lo tanto, la base de datos será muchísimo más grande.

La base de datos aumentará, pero no en esa medida. Los caracteres unicode tienen longitud variable. Los caracteres ASCII ocupan 1 byte. Los caracteres con tilde, el alfabeto árabe, el griego, el hebreo,... ocupan 2 bytes. Los caracteres chinos, indios, japoneses y coreanos ocupan 3 bytes, y el resto de caracteres complementarios 4 bytes.

2.-Otros dicen que afecta al rendimiento Oracle.

Sobre este tema la gente de Oracle asegura que en cada release que lanzan se ha optimizado el manejo de los caracteres unicode. Dicen que generalmente el "performance" de una base de datos Unicode es similar al de una base de datos "single-byte".

3.-Para los que piensan que hay problemas de integración.

Nos dicen que al ser Unicode un super-conjunto del resto de juegos no hay mayores problemas.

4.-¿Entonces no hay ningún problema con Unicode?

Para que se vea que no es cierto que todo es perfecto con Unicode la nota 119119.1 es muy clarificadora.

La nota 119119.1 trata de los juegos UTF8 (Unicode 2.1 en Oracle 8.0-8.1.6 y Unicode 3.0 de Oracle 8.1.7 a 10g) y AL32UTF8 (Unicode 3 en Oracle 9, Unicode 3.1 en Oracle 9.2 y Unicode 3.2 en Oracle 10.1).

Entre otras cosas se mencionan los siguiente problemillas:

  • Problemas en el acceso a bases de datos AL32UTF8 desde versiones 8i y anteriores.
  • Todo crece algo en comparación con juegos de 1 byte como son los populares WE8ISO8559P1 o WE8MSWIN1252. Sobre todo crecen los alfabetos diferentes a los idiomas occidentales.
  • Como los campos "crecen" al hacer la conversión se tiene que tener en cuenta el tamaño de las columnas (Recordemos que las columnas se especifican por defecto en bytes y no en número de caracteres).
  • Cuidado con las funciones ASCII y CHR. El código de un caracter depende del juego de caracteres.
  • El código del punto decimal también cambia.
  • Ahora en lugar de CHR() hay que usar Unistr() ya que Unistr devolverá el mismo valor para cualquier juego de caracteres que soporte el carácter.
  • El popular Toad no es capaz de tratar bases de datos UTF8 o AL16UTF16 (por lo menos en el momento de elaboración de la nota Oracle).
Bueno, no os quiero aburrir más. Sólo era eso. Una cosa es lo recomendado, pero antes de cambiar nada estudiarlo bien.

Ya sabéis la primera regla de la informática: Si funciona no lo toques :-)

Saludos.

P.D.: Ya he lanzado la importación y va bien. Mañana cuando termine esto retoque final y descanso merecido.

jueves, noviembre 20, 2008

El juego de caracteres de una base de datos



Hola, después del bonito fin de semana...vuelvo a la carga...

¿Quien no ha tenido problemas con el juego de caracteres de un móvil, de un sistema operativo, de una aplicación, de una base de datos,...?

Voy a hablar del caso concreto de Oracle, aunque lo importante es el concepto, y el concepto vale para cualquier base de datos.

En Oracle (y en el resto de base de datos) se establece un juego de caracteres para toda la base de datos.

Esta es una de las decisiones más importantes cuando creamos la base de datos ya que puede suponer importantes problemas o limitaciones en el futuro.

Como es obvio, dependiendo del juego elegido, unos caracteres se verán bien y otros no. Pero no sólo es eso.

Hay juegos de todo tipo, los hay estándares de sistemas operativos propietarios y no propietarios, estándares ISO y extendidos como los del fabricante Microsoft, para idiomas como el chino, el hebreo, el arabe o el japonés, etc. etc.

El problema es más complejo de lo que parece, porque podemos elegir un juego de caracteres muy completito, pero ¿qué ocurrirá cuando queramos exportar datos e importarlos en otra base de datos? O ¿si utilizamos productos de replicación (Oracle streams por ejemplo) como solución para contingencias? Pues lo primero que hay que comprobar es si hay compatibilidad entre los juegos de caracteres.

En un caso tipo de export-import, importarse se importarán los datos pero puede que no se importen bien las "ñ"-s, las "ë", los numeritos decimales y cosas por el estilo. Caracteres válidos en nuestro sistema pueden no serlo en otro y viceversa.

Además, al principio, la base de datos se contempla como algo aislado en la organización y es después cuando nos piden la interrelación con otra B.D.
El ejemplo típico es el de una fusión de empresas, un entorno de colaboración, o una internacionalización de nuestra organización, que de repente tiene que ser capaz de recoger información escrita en chino.

Mañana escribiré un post en detalle, pero de momento hoy empezaremos a aclarar unos conceptos básicos:

¿Qué es un juego de caracteres?

Un juego de caracteres es una correspondencia entre caracteres y valores binarios.

En juegos de caracteres de 8 bits podemos manejar 256 caracteres diferentes. Bueno, resumiendo es un sistema de codificación.
¿Por qué es importante?

Sólo podrás almacenar en la base de datos los caracteres admitidos por el juego de caracteres. También determinan los caracteres que se pueden utilizar en los procedimientos almacenados, etc.

¿Qué juego de caracteres tengo yo en mi base de datos?

En Oracle el juego de caracteres se almacena en el diccionario de datos. Se puede hacer la siguiente consulta para conocerlo:

SQL>select * from nls_database_parameters
where parameter='NLS_CHARACTERSET';
¿Qué juego de caracteres recomienda Oracle?

Yo aquí pongo lo que recomienda Oracle. No lo que recomiendo yo, que quede claro. Mañana lo explico mejor.

Oracle recomienda Unicode.

Si un juego de caracteres es un conjunto de caracteres, Unicode es el super-conjunto que agrupa a todos ellos.

Es un juego de caracteres universal. Incluye todos los caracteres de todos los idiomas.
En la actualidad hay más de 250 juegos de caracteres diferentes. Oracle considera que Unicode es el recomendado para la mayoría de clientes.

¿Qué problema se le puede ver al Unicode?

Para empezar no hay un Unicode. Hay varias versiones, y para una misma versión Oracle se han implementado diferentes versiones Unicode.

El tipo Unicode se incorpora a Oracle con la versión 7.2. Desde entonces Unicode ha ido modificándose continuamente.

Versiones 7.2 a 8.1 de Oracle: Juego de caracteres AL24UTFFSS que es Unicode version 1.1.

Versiones 8.0 a 10G: Juego de caracteres UTF8 que es Unicode 2.1 de 8.0 a 8.1.6 y Unicode 3.0 de 8.1.7 a 10G.

Versiones 9.0 a 10G: Juego de caracteres UTFE que es Unicode 2.1 de 8.0 a 8.1.6 y Unicode 3.0 de 8.1.7 a 10G.
Versiones 9.0 a 10G: Juego de caracteres AL32UTF8 que es Unicode 3.0 en 9.0 y unicode 3.1 de 9.2 a 10.1.

Versiones 9.0 a 10G: Juego de caracteres AL16UTF16
Menudo lío el Unicode ¿eh?

miércoles, noviembre 19, 2008

Políticos jetas

Imagen de la portada del diario Gara del 19-11-2008.

Vergüenza ajena es la que dan los políticos que lejos de tener el objetivo de solucionar problemas y vocación de servir a los ciudadanos se han metido en "esto" para su propio provecho personal.

¿Qué nos ocurriría a nosotros si decidimos marcharnos del trabajo sin causa justificada unos pocos días? El despido procedente sin indemnización.

Los políticos se lo han montado mejor. Parece que ni siquiera es necesario que vayan al trabajo y algunos de ellos fichan y todo para poder cobrar las dietas del día.

¡De vergüenza!

lunes, noviembre 17, 2008

ERD Commander y Hirents Boot CD

Hola, ¿que tal?

Aquí sigo, todo el día disfrutando de los amigos catalanes y ahora a dormir en el hotel.

Herramientas hay muchas, sin ir más lejos este mes he comprado dos revistas informáticas cada uno con su CD/DVD con software. Uno de ellos tenía un bonito CD de rescate. Pero el problema es que no lo he probado y prefiero hablar de estas dos que sí he visto en acción:

ERD COMMANDER 2007

Muy útil y fácil de utilizar.

CD bootable que arranca una interfaz que imita totalmente el escritorio de Windows XP.

Es la forma más sencilla de resetear la password de Administrador de la máquina si es que se nos ha olvidado (ocurre en las mejores familias).

También viene bien para acceder a carpetas de un usuario y nos da "acceso denegado".
Esta necesidad suele ocurrir por ejemplo cuando tenemos nuestros documentos en un disco duro externo y formateamos el XP para reinstalarlo otra vez. Entonces conectamos el disco y ¡sorpresa! Metemos el ERD Commander y asunto solucionado (Lo comenté en un post anterior)


HIRENTS BOOT CD 9.6

Super CD de arranque para cuando el Windows no llegue a arrancar.

Hace unas semanas se le cayó un portátil a un usuario. No arrancaba ni a la de mil. Ni siquiera llegaba al aviso de "iniciando Windows".

El intento de arranque iba extremadamente lento lo cual ya indicaba una avería hardware. De todas formas lo importante eran los datos.

Ni modo a prueba de fallos ni nada.

El ERD Commander se arrancaba del CD pero no conseguía acceder a los datos del disco duro. Se quedaba bloqueado.

Entonces se probó el Hirents boot y fue mano de santo. En el arranque detecto problemas con el disco duro y se puso a reconstruir bloques. La cosa iba lentísima y lo dejamos trabajando toda la noche. Al día siguiente Windows arrancó (lentísimos como consecuencia del golpe) y se recuperaron los datos.

Saludos.

sábado, noviembre 15, 2008

Saludos desde Barcelona

Hola amig@s,




Aquí estamos otra vez conectados. Esta vez en un Hotel de Barcelona. Es la boda de unos amigos y vine ayer viernes. El viaje bien pero tardé casi 2 horas en aparcar. Creo que lo dejé en un sitio que permite tenerlo aparcado el sábado por la mañana sin el papelito del parquímetro pero nunca se sabe. Antes de la boda pasaré a ver si el coche está donde debería.


Voy a aprovechar para quitarme unos papelitos con anotaciones que llevo desde hace semanas en la cartera. Hoy me quito un papelín y mañana intentaré quitarme el otro.



1-Recursos web Oracle que no requiere identificación de usuario (ni licencias ni contratos).



Para noticias, novedades, descripción de mejoras, enlaces a las descargas del producto, etc. tenemos la revista de oracle magazine: www.oracle.com/oramag


El sitio wiki oficial de Oracle: http://wiki.oracle.com/

Foros Oracle: http://forums.oracle.com/forums

Blogs ejecutivos, técnicos y de opinión: http://www.oracle.com/blogs/index.html

El Oracle Technology Network, que se repite un poco respecto a la revista oficial, pero parece algo más técnico y todo está más ordenado: http://www.oracle.com/technology/index.html

2-Recursos Oracle con contrato.


Para descarga de productos Oracle con licencia: edelivery.oracle.com


Base de datos de conocimiento Oracle, Parches, Descripción de Bugs, Notas técnicas, Descargas varias, etc. etc. Ahora se llama "My Oracle Support" metalink.oracle.com


Acceso a los servicios de soporte Oracle. Básicamente consiste en un sitio privado de nuestra organización accesible por nuestra empresa y soporte Oracle donde se va acumulando toda la información sobre instalaciones, máquinas, parches aplicados, etc.: osscp.oracle.com



Bueno, hemos aligerado un poco.

Nos vemos. Saludos.

P.D.
Empiezo el ritual con el afeitado, y luego el momento más divertido...el nudo de la corbata. Esta web siempre me salva: http://www.nudo-de-corbata.com/

Yo suelo llevar el número uno de los nudos de corbata: el nudo simple :-)

miércoles, noviembre 12, 2008

Historia de la informática capítulo II

Hace ya un tiempo hablé de el gran desconocido Frege y un resumen de su trabajo.


Os aseguro que Frege inició una aventura muy importante para la informática actual, aunque todavía no lo he explicado bien.


La otra vez puse un enlace a la Wikipedia, pero para lo que voy a contar creo que está mejor esta biografía.


Lo importante: Primero inventó una nueva notación que le permitió desarrollar la lógica.
Luego la desarrolló en una medida que no se ha vuelto a superar en casi 100 años y lo más importante, hizo que otros comprendieran las gran importancia de la lógica para las matemáticas (sobrevalorándolo incluso) y permitió años más tarde el desarrollo de toda una teoría de la computación.

Hasta Frege la lógica estaba muy limitada. Era una lógica Aristotélica (nacido en el 384 antes de Cristo) en la que se manejaban proposiciones. La proposición es una oración que puede ser verdadera o falsa.

Una proposición "p" podía ser: Laura es guapa.

Otra proposición "q" podía significar: las chicas guapas tienen novio.

y otra "r": Laura tiene novio.

Las proposiciones a su vez se pueden combinar entre sí utilizando conectivas binarias (y, o, implica, si y sólo si, o exclusiva) o unarias (negación).

Si p es verdadero y q es verdadero => r
o según notación Fregeriana: p ^ q -> r

Esas combinaciones forman las sentencias que pueden estar bien o mal construidas. A su vez, las que están bien construidas pueden ser verdaderas o falsas depediendo de la verdad o falsedad de cada proposición.

Un ejercicio bastante aburrido (pero fácil en un examen de lógica) es calcular la tabla de verdad de una sentencia. Es una tabla con todos los posibles valores de las proposiciones.

Hay sentencias que siempre serán verdaderas independientemente de las proposiciones. Por ejemplo: p o no p.

"No p" se escribiría con el símbolo vírgula que es como la S pero en horizontal. Yo utilizaré el símbolo -.

Según notación matemática: p v -p

A esto se le llama tautología. Es una porquería porque no aporta información.

También hay sentencias que siempre serán falsas como p y no p.

En notación matemática: p ^ -p

A esto se le llama contradicción. También es una porquería porque es imposible. Al menos en la lógica normal que estamos viendo.

Entonces ya se ve que lo interesante es la variedad.

Con Frege todo esto evoluciona. Por una parte se da cuenta de las limitaciones de la lógica de proposiciones para manejar predicados. De aquí surge la lógica de predicados que es una ampliación de la lógica de proposiciones.

¿Recordáis lo de sujeto y predicado ¿no?

Una proposición puede ser "Este cerdo está gordo".
Si enunciamos "Aquel cerdo está gordo" pues tenemos otra proposición.

En principio en lógica de proposiciones no hay relación entre las dos proposiciones. Esto nos limita.

Lo bueno de la lógica de segundo orden o de predicados es que tiene en cuenta que diferentes sujetos pueden compartir el mismo predicado.

Hay dos sujetos: Este cerdo y aquel cerdo. Y un predicado: Está gordo.

Si los cerdos son pepe y luis. Podemos representar que están gordos como G(luis) y G(pepe) y que son cerdos como C(luis) y C(pepe).

Esto unido a los cuantificadores universales y existenciales le da una potencia bárbara:

Imaginaros una A invertida. Yo voy a representarlo como V (sólo le faltaría la rallita horizontal para ser el símbolo exacto). Eso significa "Para todo".

Ahora podemos decir "Para todo x que sea Cerdo, implica que x es Gordo", o sea, "Todos los cerdos son gordos":

Vx(C(x)->G(x))

Esto significa mucho más que una proposición. Significa que si pepe es un cerdo está gordo, si Luis es un cerdo está gordo y cualquier otro cerdo también está gordo.

El cuantificador existencia también es muy útil.

Se representa con una E justo al revés, con la línea vertical a la derecha. Yo pondré una E.

Ex(C(x)^-G(x))

Esto sería que existe al menos un elemento tal que sea un cerdo y no esté gordo.

Dejo para otro día la mayor aportación de Frege (por si todo esto no fuera poco).

Saludos.

martes, noviembre 11, 2008

Sapientia melior auro

universidad de deusto

El título de este post (el conocimiento es mejor que el oro) es el lema de la Universidad de Deusto donde estudié en los buenos años de la universidad. Sólo por esa oportunidad creo que yo y mis compañeros fuimos muy afortunados. No se si los chavales de hoy en día lo aprecian, aunque me imagino que yo tampoco lo apreciaba entonces.
Sólo es cuestión de tiempo. Recuerda que sabe más el zorro por viejo que por zorro.
Un libro de cabecera de aquella época era el Presman de la asignatura Ingenieria del Software. Han pasado años desde entonces y ahora tengo la quinta edición para el trabajo (por lo menos van ya en la sexta edición).
A veces cojo el libro y abro una hoja al azar. Siempre hay una nueva enseñanza. Os lo voy a demostrar.
Página. 37. Se expone un texto de Meiler Page-Jones:
"He visitado docenas de empresas, buenas y malas, y he observado a muchos administradores de proceso de datos, también buenos y malos. Frecuentemente, he visto con horror cómo estos administradores luchaban inútilmente contra proyectos de pesadilla, sufriendo por fechas límite imposibles de cumplir, o que entregaban sistemas que decepcionaban a sus usuarios y que devoraban ingentes cantidades de horas de mantenimiento."
Vemos que habla de administradores buenos y malos por lo que lo que describe no tiene que ver directamente con la sapientia de los mismos.
Más adelante suelta la clave..."si se hiciera una autopsia de cada proyecto, es muy probable que se encontrara un denominador común constante: una débil gestión.
Bueno, yo diría que un posible problema puede ser el auro del proyecto más que la sapientia, pero si no hay problema de auro, entonces SÍ, el problema es de gestión de proyectos.
Saludos.

domingo, noviembre 09, 2008

¿Cómo se reparte la tarta?

Hola,

A estas alturas todo el mundo sabe que cuando compras una cebolla no pagas una cebolla. En principio no es algo que me parezca bien o mal siempre y cuando al agricultor no le quede la impresión de que le estén timando. Al fin y al cabo es él y no los demás el que produce la mercancía.

Con la música pasa algo similar, pero en peor. Hay una cosa incomprensible. Con la compra del disco se paga al músico seguramente lo que haya firmado con la discográfica, pero, ¿también hay que pagar por derechos de autor? Me imagino que eso va a la SGAE, pero ¿qué sentido tiene pagar a una asociación compuesta por otros músicos que no son lo que he comprado?

Curiosamente a esa misma misteriosa asociación le he pagado al comprar un vídeo grabador, mi portátil, mis discos duros externos, cuando me casé (150 euros por la música del banquete) y al ritmo que vamos habrá que pagarles cuando vaya al cine, compre un tele nueva, o suba a un tranvía con hilo musical. ¡Menudo timo consentido!


precios
Fuente: Periódico El País.
Saludos.

Carrera mañanera

No es por presumir, pero tengo un Ferrari F355 que te quita el hipo.

ferrari


Jejeje, la foto engaña un poco...

Digamos que es verdad lo del Ferrari y que es mío, pero el tamaño en este caso sí que importa:

Hoy ha sido el cumpleaños del hijito de un amigo y le he prometido que pasaba a visitarlo mañana por la mañana. Su padre le ha regalado un deportivo y he pensado que estaría bien echar unas carreritas en el parque.

Ya he comprado tiza para dibujar el circuito, ¡con lo que me han gustado a mi los teledirigidos!

¿Recodáis los que se vendían a mediados de los 70? Con un rotor que los movía sin control hasta que se chocaban con alguna pared. Luego vinieron los teledirigidos por cable y por último años más tarde los radiocontrolados.

Este modelo es un mini Z. Con estos coches se suele competir y hay campeonatos nacionales y todo, pero bueno, el mío es un modelo antiguo desfasado para la competición porque creo que han vuelto a cambiar la escala.


ferrari
Para que veáis que corre realmente rápido os pongo esto del enlace de arriba (Wikipedia):

However, given the size of the cars, its scale speed would be equivalent to 980mph. At that speed, it would be impossible to negotiate corners. Most races are won with good cornering techniques rather than speed.

Saludos.

sábado, noviembre 08, 2008

Controla los procesos de la base de datos





Cuando tenemos procesos de usuario pesados es conveniente supervisar la ejecución activando las trazas de la sesión.

¡Ojo!, las trazas normalmente se almacenan en un fichero y llegan a tener un tamaño considerable.


Cómo se hace en Oracle


En Oracle por defecto las trazas se almacenan en /oracle/admin/instancia/udump y me imagino que si se llena el espacio del filesystem al no poder escribir en los logs, etc. tendríamos problemas con la base de datos.

Hay varias herramientas que permiten habilitar las trazas. Con el Grid Control de Oracle por ejemplo nos situamos en la pantalla de sesiones activas y hacemos clic en el botón de activar trazas.

El propio usuario puede habilitar las trazas de su sesión con Toad, SqlServer o lo que quiera. Esta opción es peligrosa porque puede que no tenga en cuenta que el espacio donde se van a almacenar es limitado.

Forma de activar las trazas:

Entramos en SqlPlus y ejecutamos:


EXEC DBMS_SUPPORT.START_TRACE_IN_SESSION(sid, serial#);





EXEC DBMS_SUPPORT.STOP_TRACE_IN_SESSION(sid, serial#);


Interpretación de las trazas:


Oracle trae un programita que obtendrá un informe a partir de la traza. De estar forma tendremos todas las SQL que se han ejecutado e información valiosísima sobre ellas como:



  1. Tiempo de ejecución de CPU en parsing, ejecución de sentencia, etc.


  2. Número de ejecuciones de la sentencia.


  3. Bloques leídos de memoria, de disco, etc.


  4. Si se han utilizado o no índices y cuales.


  5. Plan de ejecución.


  6. Eventos de espera.


  7. Etc. etc.


Lo que hay que hacer para obtener el informe .txt:


tkprof fichero.trc fichero.txt sys=no explain=usuario/password sort=criterio


sort=criterio es opcional. Para saber que poner en criterio ejecutar tkprof a secas y nos lo indicará. Esto sirve para ordenar las SQL por tiempo de ejecución u otro criterio.


Saludos.


miércoles, noviembre 05, 2008

¿habrá cambio?



Bueno, por fin se ha acabado este culebrón y hay ganador.
El señor Obama es el nuevo presidente y veremos en qué quedan todas aquellas promesas electorales. ¿Y que le puede importar a un informático que ni siquiera vive ni trabaja en EEUU?

Dejando de lado temas sociales y económicos que sí afectan a todo el mundo, hay una promesa que puede tener implicaciones informáticas:

La promesa de adoptar Open Office como estándar en las oficinas gubernativas.

Para que nadie se olvide hay un montón de referencias en google.

Esto se publicó en PCWord en junio.

Puede que si o puede que no, ya veremos.

De momento podemos acceder a http://www.opensecrets.org/ y enterarnos si ha recibido donaciones que alimenten la suspicacia...

Entre los 573 millones gastados en campaña seguro que hay empresas de todo tipo. Si seleccionamos los fabricantes de software vemos que los demócratas han recaudado más que los republicanos: http://www.opensecrets.org/industries/indus.php?ind=C5120&goButt2.x=12&goButt2.y=8

Aquí la aportación de Microsoft que también ha apoyado más a los demócratas: http://www.opensecrets.org/orgs/summary.php?cycle=A&type=P&id=D000000115

Que haga lo que pueda, pero no le van a faltar dificultades.




Como se suele decir, Obras son amores y no buenas razones.


lunes, noviembre 03, 2008

Nueva versión Ubuntu


Por si alguien se anima...

Cada 6 meses sale una nueva versión Ubuntu. Le asignan un nombre más o menos extraño y la numeración es del tipo año.mes. Por lo tanto la última versión es la 8.10 y la han llamado Intrepid Ibex.

La noticia la he leído aquí. El titular del Inquirer espectacular: "Ubuntu 8.10 supera en rendimiento a Vista".
Y lo que es más importante. Parece que "Durante la evaluación inicial, Ubuntu 8.10 ha conseguido un mejor rendimiento tanto en rendimiento como en integración WiFi, áreas donde había fallado anteriormente". La frase es un poco rara repitiendo dos veces la palabra "rendimiento" pero bueno se entiende que corre mucho y que el wifi solucionado (habrá que verlo).

La verdad es que ya estoy acostumbrado a ver el cablecito de red cruzando la habitación y no voy a instalarlo, pero una gran noticia sí señor.
Saludos.

domingo, noviembre 02, 2008

Breve crónica del fin de semana

Vuelvo a casa, pongo la tele y me encuentro con la última carrera del mundial de automovilismo por la mitad. Increible la forma en la que se ha resuelto. Primero Ferrari celebrando la victoria de Massa en el campeonato. Luego resulta que no, que Hamilton ha adelantado en la últimísima curva. Los comentaristas ni lo habían visto. Bueno, por lo menos creo que Massa ha ganado en carisma de campeón.

Ahí van unas fotos de Izaba. Que bonitos los colores de Otoño.