miércoles, diciembre 31, 2008

¿Cual es el mejor GNU/Linux?




Esto es una pregunta con trampa porque no existe el mejor GNU/Linux a secas. Para la elección de tu distribución favorita hay que tener en cuenta un montón de factores que no voy a enumerar.

Ahora bien, el trabajo realizado por eWeek nos puede ayudar un poco si lo que buscamos es "la mejor alternativa a Windows y Mac OSX".

En este lugar (eWeek) después de un gran esfuerzo en laboratorio han resuelto que Ubuntu sigue siendo el mejor Linux para sobremesa. Por supuesto hay decenas de comentarios en contra de los cuales también se pueden extraer conclusiones.

Sin embargo, fruto del mismo trabajo, han llegado a la conclusión de que si hablamos de servidores hay otros mejor capacitados como Red Hat Enterprise Server y su primo-hermano libre CentOS.

Saludos.

lunes, diciembre 29, 2008

Sobre buscadores


Me imagino que como todos, tienes un buscador preferido. Lo que ocurre es que a veces te gustaría probar la búsqueda en varios a la vez.

En http://www.mysearchoff.com/ podemos consultar con los tres buscadores más utilizados a la vez: google, live search y yahoo. También se puede votar al mejor buscador y ver los resultados de la encuesta, donde por cierto machacan google y live search.

Saludos.

domingo, diciembre 28, 2008

La importancia de los metadatos

Hola,
Ayer tuve una jornada de reencuentro con viejos amigos a los que saludos desde aquí (por si acaso a alguno le da por leer esto). :-) Estuvo muy bien, sobre todo la sesión maratoniana de mus donde Castrol y yo arrasamos a la vieja usanza de nuestros años universitarios.

Os dejo esta foto de Castrol en Shanghai donde trabaja. Si queréis saber más hacer clic en el enlace de Castrol el loco. La foto la he bajado de su blog.


Bueno, entremos en materia...

¿Qué son los metadatos en el ámbito de documentos como el word, excel, etc? Pues son datos que se almacenan en el propio documento y que se refieren a características del mismo, el autor, la red, el sistema operativo, las impresoras, etc.

Desde hace unos meses Chema Alonso ha dedicado varios post a este tema donde se pueden ver los datos y como leerlos. Han creado incluso una herramienta llamada FOCA que facilita la labor de lectura de metadatos de diferentes archivos de diferente formato (Office, openoffice, ...).

Yo sólo quiero transmitir que existen los metadatos en todo tipo de ficheros y no sólo word.
Y también que importantes organizaciones han metido la pata por no haberlos tenido en cuenta.

EL DODGY DOSSIER

En el año 2003, el ministro británico de asuntos exteriores tuvo que comparecer ante una Comisión Parlamentaria encargada de investigar si el Gobierno manipuló el informe sobre las armas de destrucción masiva en Iraq.

El Gobierno había hecho público un informe (dodgy dossier) en un momento delicado, ya que en aquel momento era dudoso que la ONU fuera a respaldar una resolución para la invasión.

En EEUU Colin Powell presentó el informe como prueba ante el Consejo de Seguridad. Y días más tarde la prensa británica informó de que atendiendo a los metadatos del informe gran parte de él era una copia de una tesis de postgrado de un universitario estadounidense escrito 12 años antes.

El Ministro trató de quitar hierro, dijo que no era un informe sino un comunicado de prensa y que se había producido un error debido a la presión que ejercían los periodistas que querían comunicados diarios.

Cosas que pasan con los metadatos.

viernes, diciembre 26, 2008

Bonito regalo

Hola, que tal!?
Aunque no he escrito nada en dos días, no he dejado de aprender informática.
El olentzero ha dejado en casa un Mac Mini y me he pasado unos buenos ratos jugando con el aparatito, aunque realmente no es mío.

Ahí va un pantallazo. No había manejado nunca un MaxOSX pero la verdad es muy sencillo y tiene una buena ayuda.
De precio no se puede decir que sea excesivamente caro, y más aún teniendo en cuenta el software que trae de serie. El hardware me lo ha reconocido sin problemas por lo que compartirá discos externos, monitor, teclado y ratón con el PC Kubuntu.

Hay cosas que llaman mucho la atención. Por ejemplo que sacas el cacharro de la caja, lo enciendes, y con un par de preguntas ya estás navegando. La fecha, la hora las coge por su cuenta. El arranque y el apagado es increíblemente rápido.

Bonito, ¿eh?
No me van las guerras entre PC y Mac. Si utilizara habitualmente un Mac me gustaría jugar con un PC y viceversa. El mac tiene especial interés por ser un UNIX (sí, ya se que es discutible) con su comandos, editor vi, etc.

Este es un divertido vídeo sobre la pelea entre Bill y Steve.

martes, diciembre 23, 2008

Scripts windows

Los scripts en general suelen ser lenguajes interpretados.
Algunos son sencillos y limitados, aunque también muy efectivos como el los viejos .bat del ms-dos que sobreviven en los últimos Windows.

Tenemos potentes lenguajes como Perl, Python que se utilizan también como lenguajes de propósito general.

En windows hay un interprete poco conocido que nos puede facilitar mucho la administración de una gran de red de PC-s Windows. Quiero centrarme un poco en este potente lenguaje Windows para intentar sacarle provecho en el trabajo después de las vacaciones.

En Windows utilizaremos el notepad o el viejo Edit para editar un fichero de texto.
Por ejemplo:

WScript.Echo "Hola mundo"

Guardamos el fichero con nombre hola.vbs, abrimos una sesión de línea de comandos y...

cscript hola.vbs

La ventaja de utilizar Windows Script Host es que si nuestra red es Windows todos nuestros clientes lo tienen por defecto. Además tiene "objetos" preparados para Windows: acceso al registro, a la configuración del explorer, al controlador del dominio, etc. etc.

Ahora no puedo probar los scripts sobre los clientes de una red, pero pondremos este script que podemos utilizar para guardar la información del sistema de un PC:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colCSes = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem")
For Each objCS In colCSes
WScript.Echo "Computer Name: " & objCS.Name
WScript.Echo "System Type: " & objCS.SystemType
WScript.Echo "Number Of Processors: " & objCS.NumberOfProcessors
Next
Set colProcessors = objWMIService.ExecQuery("Select * from Win32_Processor")
For Each objProcessor in colProcessors
WScript.Echo "Manufacturer: " & objProcessor.Manufacturer
WScript.Echo "Name: " & objProcessor.Name
WScript.Echo "Description: " & objProcessor.Description
WScript.Echo "Processor ID: " & objProcessor.ProcessorID
WScript.Echo "Address Width: " & objProcessor.AddressWidth
WScript.Echo "Data Width: " & objProcessor.DataWidth
WScript.Echo "Family: " & objProcessor.Family
WScript.Echo "Maximum Clock Speed: " & objProcessor.MaxClockSpeed
Next
El resultado:


Por supuesto la salida del script se puede redireccionar a un fichero de texto sin problemas.
Fuente: http://www.microsoft.com/technet/scriptcenter/default.mspx

Saludos.

lunes, diciembre 22, 2008

Importante corrección

Hola amigos poco observadores...

El día después del post del día 15 (justo hace una semana) me di cuenta de un grave error.

Por un lado me daba pereza corregirlo dando esta explicación, y por otro tenía curiosidad por saber si alguien diría algo... hasta hoy :-(

Esto es lo que puse (dentro de unos minutos lo corregiré en el post original):



El círculo tiene un radio = 1.

Recordando un poco de geometría:

X^2 + Y^2 = 0 es la ecuación que cumplen los puntos de la circunferencia (el borde exterior).

Los puntos que cumplen X^2 + Y^2 <=1 son los que están dentro o en el borde del círculo.

Pues no. La ecuación es X^2 + Y ^2 = R^2
Aquí está perfectamente explicado.

La última conclusión si estaba perfectamente escrita. Los puntos interiores en una circunferencia de radio 1, son los que cumplen X^2 + Y^2 < 1. Si incluimos los puntos del borde cambiamos el "menor" por "menor o igual".

Saludos, despistados ;-)

domingo, diciembre 21, 2008

Visual Basic vs C#

Otra vez saltó la campanada.

El lenguaje maltratado por los grandes gurús, Visual Basic, esta vez es más rápido que C#.

El miércoles anunciaba cómo en el cálculo de pi por el método de Montecarlo el programa C# sobre XP se comportaba mejor que el mismo programa en FORTRAN sobre Kubuntu.

En agosto ocurrió que un mismo programa Visual Basic corría más rápido que el equivalente C++.
En aquellas fechas busqué referencias en Internet y publiqué que "A veces VB es más rápido que C++"

Tiempos de ejecución:

KUBUNTU + FORTRAN (GCC-F77): 1 minuto 37 segundos.
XP + C#: 50 segundos.
XP + VB.NET: 39 segundos.

El programa:


El resultado:

Saludos.

jueves, diciembre 18, 2008

La gran Digital Equipment Corporation

Ya se sabe que errar es de humanos, no voy a comentar el caso en detalle porque es como para comerse a alguien. Sólo diré que yo no he cometido el error. Aunque como responsable de la instalación he tenido que arreglarlo.

Buenos, el caso es que he ido al trabajo tan tranquilo, he entrado algo más tarde que las 8:00 a.m. y he salido algo antes que las 22:40.

Quiero documentar lo realizado porque hay cosas que no vienen en ningún sitio y sólo te lo puede explicar alguien a quien le ha ocurrido antes.

Empecemos por Tru64.


DEC (Digital Equipment Corporation) era una gran compañía creada en 1957. Os sonarán sus servidores PDP y VAX. El PDP-8 se suele considerar como el primer mini-ordenador. Se les denomina mini por comparación con los mainframes de la época pero eran auténticos cacharros.

En 1978 se lanza el VAX que fue una mejora consistente en una arquitectura de 32 bits. Se podía utilizar UNIX, aunque lo suyo era el super sistema operativo que todavía sigue vivito y coleando: VMS. Yo conocí el VAX/VMS en la Universidad y era robusto de verdad.

En 1992 lanzan los nuevos servidores Alpha que tenían arquitectura RISC (juego de caracteres reducido y ejecuciones en menos ciclos de reloj). En aquel momento había grandes debates y era la arquitectura que se iba a comer el mercado. La gran novedad era la arquitectura de 64 bits que también se considera como la primera del mercado. Funcionaban con UNIX (Digital-UNIX), VMS (lo ideal) o Windows NT. Yo he trabajado con un Alpha 4100 con VMS y era lo más duro que he visto en mi vida. A prueba de balas. Un día pongo las fotos. ¡Sniff!

En 1997, DEC demanda a Intel por violación de patente en sus nuevos micros Pentium.
Su RDB (base de datos relacional super-robusta) lo compra Oracle (OracleRDB).

En 1998 Compaq compró DEC. Y Compaq cambió el nombre del sistema operativo. Lo que hasta entonces era Digital UNIX pasa a llamarse Tru64 (sí, el 64 es para remarcar que es de 64 bits).

Se da la circunstancia de que HP compra-fusiona Compaq en 2001-2002 por lo que aunque todavía hoy (2008) le da soporte se puede considerar que muere ese año. Desde el momento de la fusión HP deja de lado el Tru64 en favor de su propio UNIX HP-UX. Muchos técnicos que han trabajado con ambos sistemas operativos (por venir de Digital) defienden la superioridad de Tru64 frente a HP-UX, pero lo comentaremos otro día.

Ya me he enrollado otra vez. Lo que quería decir es que el servidor con el problema es un Compaq Alpha Server ES40 y su sistema operativo es...Tru64. Mañana entro en detalles.

Saludos.

miércoles, diciembre 17, 2008

C# es el nuevo campeón

Hola,

Bueno, solucionados los pequeños problemas con el XP por fin he podido hacer la comparativa.

El campeón ha sido el portátil XP - C# con 50 segundos de ejecución frente al GNU/Linux - FORTRAN (f77-GCC) que ha tardado 1 minuto 37 segundos.

Algunos datos son:

del PC: Intel Pentium 4, 2.5 GHz. 512 Kb caché. 1 Gb RAM. Kubuntu. Compilador GCC (f77).

del portátil: Intel Pentium M 1.5 GHz. 1 Gb RAM. XP SP2. Visual Studio 2005.
Nota: Menos Gigaherzios esta vez no es peor procesador. Podéis verlo aquí.

Programa FORTRAN:


Resultado en Kubuntu con FORTRAN:

Programa C#:


Resultado en C#:

¿Y si hacemos el mismo programa en VB.NET? ¿No ganará el querido VB al feo C#?

lunes, diciembre 15, 2008

Comparativa C#, FORTRAN...mañana :-(

Hoy no va a poder ser.

No es culpa de Windows. Simplemente mi portátil está en estado crítico por desatención extrema.

Cada dos por tres se apaga solo. He pasado a C# el programita de pi con el método de montecarlo, pero no tengo ganas de estar arrancándolo cada 5 minutos para ver si termina la prueba.

Voy a aprovechar para explicar una cosa que igual no ha quedado clara.

Si alguien se fija en el programita FORTRAN verá que aleatoriamente genera un valor de 0 a 1 y se lo asigna a X. Luego hace lo mismo con la Y.

Esa X y la Y son la coordenada de un punto.

El círculo tiene un radio = 1.

Recordando un poco de geometría:

X^2 + Y^2 = R^2 es la ecuación que cumplen los puntos de la circunferencia (el borde exterior).

En una circunfernecia de radio 1, los puntos que cumplen X^2 + Y^2 <=1 son los que están dentro o en el borde del círculo.

Por eso en el programa se cuentan los casos que cumplen la condición anterior.

Saludos.

domingo, diciembre 14, 2008

Cálculo de Pi en Fortran

Actualizado el 5 de Febrero de 2012.

Hola,

Como os decía el otro día quiero hacer un programa en Fortran-Linux y el mismo en XP-C# y comparar los tiempos de ejecución.

Lo primero es encontrar un algoritmo matemático en Fortran con cierto interés.

He pensado en el cálculo de PI. Ya sabéis, ese número irracional (y por lo tanto con infinitos decimales).

Hay un bonito método llamado "Método de Montecarlo" que paso a resumir. Se llama montecarlo por su relación con juegos de azar como la ruleta.

Advertencia: He encontrado varias web donde se confunde este método de Montecarlo con otro llamado de las agujas propuesto por el naturalista francés conde de Buffon.

Supongamos que tenemos una diana que consiste en un círculo dentro de un cuadrado de 2x2 (me recuerda la cuadratura del círculo, pero eso es otra historia). El área total del cuadrado es 4, y el del círculo pi x r cuadrado. Al ser el radio del círculo 1, su área es pi.
Si tiráramos los dardos de forma totalmente aleatoria, la probabilidad de que los dardos se clavaran dentro del círculo sería pi / 4 porque el área total es 4 y el área del círculo pi.

Entonces lo único que hace falta es un programa que calcule valores de x,y aleatorios para un montón de tiradas. Multiplicamos el número de aciertos por 4 y dividimos entre el número total de tiradas. El resultado es una aproximación a pi.

probabilidad de acierto = pi / 4

pi = 4 x probabilidad de acierto

pi = 4 x (aciertos / tiradas)

En mi Kubuntu me he encontrado un bonito editor llamado Kate que reconoce perfectamente la sintaxis del Fortran:

El programa me lo he bajado de http://www.dartmouth.edu/~rc/classes/soft_dev/F77_simple_ex.html

Con 1.000 intentos me ha estimado un valor de pi = 3,176 (bastante malo) :-(
Con 10.000 intentos sale pi = 3,1444 (sigue siendo una ruina).

Podéis hacer unos cuantos intentos del método en este sitio, pero he probamos con 10.000 intentos por ejemplo y me da pi = 3,1248.

Ya vemos que esto no va a funcionar. Conseguir series de números realmente aleatorios no es fácil.

La importancia de este tipo de métodos (agujas, Montecarlo, etc.) es que abrió la posibilidad de utilizar el azar para cálculos analíticos. Algo que se puede utilizar en la práctica con los ordenadores.

Saludos.

Actualización del 5/2/2012:

A raiz del comentario de Miguel, me ha entrado la curiosidad. ¿Se conseguirá una precisión de 3 decimales con 1 millón de iteraciones?

El resultado que sí, con el millón se llega a pi=3,142. Exactamente lo que ha predicho Miguel.




Saludos,

Peliculón


Hola, ¿que tal?

He venido hace poco del cine donde he visto una película de esas que no te deja tranquilo después de verla. Sobre todo en estos momentos de crisis globalizado.

No voy a desvelar nada. Creo que es mejor que no leáis sobre ella hasta después de verla.

Simplemente decir que es alemana, se llama "La ola" y que está basada en hechos reales ocurridos en Palo Alto en 1967.

Muy recomendable verla.

Saludos.

sábado, diciembre 13, 2008

FORTRAN vs C#

Jeje, he perdido la forma. Hoy tenía comida con antiguos compañeros de trabajo y prácticamente sin beber nada ya tengo dolorcito de cabeza... No sé que va a ser de mi en la quedada que voy a tener el día 27 con mi amigo Castrol (ver el loco Castrol en la sección de enlaces que tiene un blog mucho más interesante que este).

Vayamos con el post...

Sí, Fortran es un lenguaje venido a menos como lenguaje de propósito general, pero en el ámbito científico creo que sigue con vigencia.

Tengo tres libros de Fortran y quiero hacer algo. Por ejemplo una comparativa de algún programa corto comparado con C#.

Para que haya cierta polémica no lo voy a hacer en condiciones iguales. Utilizaré mi viejo PC sobremesa con Linux y Fortran, contra el viejo portátil XP con Visual Studio 2005. Y que gane el mejor.

Lo primero la instalación del compilador de Fortran en el Kubuntu.

sudo aptitude install g77

De esta forma conseguimos:

/usr/share/doc/g77
/usr/bin/g77

Vamos al home del usuario y editamos (con el VI por ejemplo) el primer programita "Hola mundo".


c Nuestro primer programa Fortran77
program hw
write (*,*) 'Hola mundo'
stop
end

Ahora compilamos el programa objeto así:

g77 hw.f -o hw

Para ejecutar:

./hw

En la imagen una muestra del programa fuente, la compilación y la ejecución:



Saludos.

La instalación y prueba ha sido fácil, ¿no?

jueves, diciembre 11, 2008

Para terminar con el Ariane

Anteayer vimos una pequeña introducción sobre el caso Ariane-5.

Ayer hice un resumen del resumen del informe sobre lo ocurrido.

Hoy espero aclarar las dudas que pueda haber sobre el tema de las excepciones.

En Visual Basic.NET tenemos unas cuantas funciones de conversión:



En el siguiente código visual basic se hace una conversión como la que pudo ocurrir en el momento previo de la explosión del cohete.

Tenemos una variable entera llamada i.
Y una variable doble llamada z.

Dim i As Integer
Dim z As Double
z = 4.354354387594386E+25
i = CInt(z)

En Visual Basic, igual que en Ada (lenguaje utilizado en el Ariane-5) la variable z contiene un valor demasiado grande para que pueda convertirse al tipo entero. Lógicamente esto provocará un error.

Igual que en el caso del cohete Ariane, hemos introducido captura de excepciones, lo que ocurre es que no se capturan todas.

Try

Dim i As Integer
Dim z As Double
Dim streamEscritura As New System.IO.StreamWriter("c:\temp\dato.txt")

z = 4.354354387594386E+25
i = CInt(z)

streamEscritura.WriteLine(CStr(i))
streamEscritura.Close()

Catch ioe As System.IO.IOException
MsgBox("c:\temp no existe")

Catch se As System.Security.SecurityException
MsgBox("Acceso denegado.")

End Try

El programita después de la conversión imposible va a intentar escribir el resultado en un fichero de texto. Hemos capturado la excepción de "Error de Entrada/Salida" y la de "Seguridad". Veamos lo que ocurre:



Se ha producido un error "Overflow Exception" y la ejecución del programa se ha interrumpido. Esto es lo que ocurrió en el cohete.

La solución es evidente. Hay que capturar TODAS LAS EXCEPCIONES para que nunca se interrumpa de esa forma la captura de datos de los sensores. Si un valor es demasiado grande no debería ocurrir nada, se desecha el valor y el sensor ya nos enviará un nuevo dato.

En Visual Basic esto se hace con una captura de excepción genérica:

Catch ex As System.Exception
End Try



Bueno, la lección es la siguiente: Hay que pensar que siempre puede haber excepciones no previstas. Pensar la mejor forma de salir del error e implementarla en el lugar adecuado.

También es importante recordar que las conversiones de tipos suelen ser especialmente problemáticas.

Saludos.

miércoles, diciembre 10, 2008

El fallo informático más gordo

El Ariane-5 era algo más que la continuación de los anteriores. El diseño prácticamente era nuevo. La nueva lanzadera tiene dos secciones. La de abajo es la parte común para todas las misiones y la superior depende de la carga que se va a poner en órbita.

Las dimensiones, los motores, la fuerza de empuje, son datos impresionantes.

El 4 de junio de 1996, en su primer vuelo, la expectación fue enorme. Todo el mundo estaba observando. Despegó y a los 40 segundos, empieza a girar sobre si mismo hasta que explota.


A los pocos días se nombró una comisión de investigación formada por técnicos de diferentes países. Y esto fue lo que encontraron:

Datos de vuelo:

Hasta el segundo 42 tenían datos telemétricos remitidos a tierra, señales de radar e imágenes visuales.

1-Antes del despegue, todo normal.
2-Despegue, todo normal.
3-Hasta el segundo 36, todo normal.
4-Fallo del sistema de referencia inercial de reserva.
5-Fallo del sistema de referencia intercial activo.
6-La posición de las bocas de los propulsores y del motor van a la posición más extrema.
7-Autodestrucción de la lanzadera.

Con estos datos, ya vieron lo que falló: el sistema de referencia inercial.

Recogida de más datos:

La zona de despegue (Kourou, Guayana Francesa) estaba rodeada de árboles. La explosión fue sobre los 4.000 m. Los fragmentos se dispersaron a lo largo de 12 km cuadrados. Patearon toda la zona y encontraron los dos sistemas de referencia inerciales los cuales tenían datos valiosísimos que no se habían remitido a tierra. De esta forma se supo que primero falló el sistema de reserva y luego el principal.

El diseño

Lógicamente, lo primero que tenemos que saber es qué es eso del sistema de referencia inercial. Para decirlo con cuatro palabras. Parece un montón sensores (giroscopios láser y acelerómetros) conectados a un procesador. De esta forma se mide en todo momento el movimiento, orientación, velocidad, aceleración de la lanzadera.

Este sistema de referencia inercial provee de datos a la computadora de a bordo (sí, como los coches de ahora) a través de un bus de datos.

Esa computadora central tiene el programa de vuelo y va accionando las bocas de los propulsores, el motor, etc. por medio de elementos hidráulicos.

El hecho de que hubiera dos sistemas de referencia inerciales era para evitar el desastre en caso de que fallara el principal. El hardware y el software eran iguales. Como se suele decir ahora eran un activo pasivo y encargado de "switchear" es el computador de a bordo en caso de detectar algún fallo.

El computador de a bordo también estaba duplicado.

El fallo

La secuencia "marcha atrás" fue la siguiente:

  • A la velocidad que va el cohete y con una inclinación del 20 grados (y subiendo), los propulsores se separan. Eso hace que se active la autodestrucción.
  • Ese giro no planeado se produce porque las bocas de los propulsores y del motor se encuentran "a tope".
  • Estaban "a tope" porque así lo había ordenado la computadora de a bordo.
  • Los datos que cogió de referencia la computadora de a bordo eran los del sistema de referencia principal. No eran datos "buenos" pero los tomó como si lo fueran.
  • El sistema de referencia principal no enviaba datos "buenos" porque se había producido una excepción en el software.
  • Aunque había una excepción, el ordenador de a bordo no cambió al sistema de referencia secundario porque este había fallado antes que el principal. En el secundario se había producido la misma excepción.
  • La excepción se produjo en una conversión de datos de coma flotante (64 bits) a entero con signo (16 bits). Resulta que el número en coma flotante que se intentaba convertir no cabía en los 16 bits del entero. La excepción era un "Error de Operando". El código era Ada, y en esta parte del programa se habían tenido en cuenta otro tipo de errores de conversión, pero no el "Error de Operando".
Ya vemos el cariz que esta tomando esto, pero la realidad supera siempre a la ficción y lo que viene es flipante...

El módulo en el que ocurre el error es para una función de alineamiento que sólo es necesaria antes del despegue. Después del despegue ya no sirve para nada.

O sea, todo se fue al garete sin necesidad. Se trataba de un código que no debería estar ejecutándose.

La cosa es algo más complicada que eso. El Ariane-4 si que necesitaba esa función durante 50 segundos desde la activación del "modo de vuelo" de los sistemas de referencia inerciales. Esos 50 segundos se terminan sobre el segundo 40 desde el despegue. El Ariane-5 no necesitaba esa función en vuelo.
  • El Error de operando se produjo porque la función se encontró con un valor más alto de lo esperado. La variable está relacionada con la velocidad horizontal de la plataforma.
  • Era más alto que lo normal porque la trayectoria del Ariane-5 es diferente del Ariane-4 y lo que no era normal en el anterior sí era normal en el nuevo cohete.
00:30 a.m.
Hora de dormir.
Mañana continuo, porque en el informe se intenta justificar el motivo por el cual no se hicieron todas las comprobaciones necesarias. Decían que no se quería llegar al 80% de la capacidad de proceso del sistema de referencia inercial, pero algo huele mal si realmente estaban ejecutando código innecesario.

Saludos.

Fuente: http://www.upv.es/satelite/trabajos/pract_9/kike/paginas/accid.htm

martes, diciembre 09, 2008

¿Donde está el fallo?


Muy pocos recordaran el desastre del Ariane 5.

Es mucho más conocido lo ocurrido en 1986 con el Challenger. Por un lado, a diferencia del Ariane, éste era un vuelo tripulado. Además recuerdo que en aquel vuelo iba una civil (la primera civil en el espacio). Por si eso fuera poco, muchos vieron las imágenes en directo.

En la wikipedia hay un resumen y las posibles causas del accidente, así como detalles más o menos escabrosos como la posibilidad de que la causa de la muerte de los astronautas fuera el impacto con el océano. La falta de un sistema de eyección así como de paracaídas fue muy criticada y tuvo consecuencias para la NASA.

Hoy quiero hablar del Ariane ya que desde el principio se achacó el desastre a un "problema" informático.

En muchos sitios se habla del Ariane, al fin y al cabo es un cohete europeo con muchos años de vida, pero parece que se ha olvidado lo ocurrido en 1996. En la Wikipedia una simple oración lo recuerda, y en muchos sitios especializados ni mencionan aquel problema informático que originó una pérdida de millones de euros.

Ariane es una familia de cohetes europeos construidos por la Agencia Espacial Europea (ESA).
Esta agencia está formada por varios países. Entre otras misiones los Arianes se encargan de poner en órbita satélites.

El primer Ariane se lanzó en 1979. Tenía 47 metros de longitud y podía poner en órbita un satélite de unos 2.500 kg. En 1980 se encarga la construcción a la empresa Arianespace cuyo accionista mayoritario es el estado francés. Las diferentes series se van mejorando y se utilizan según necesidades. La serie 4 podía poner en órbita 4.400 kg.

En estas estamos cuando se llega a la serie 5. La decisión de una lanzadera-cohete más competitiva, con menores costes y mayor fiabilidad, la tomaron en 1987 los ministros de los estados miembros. El Ariane 5 podía poner en órbita 2 satélites de 3.000 kg cada uno, o uno solo de 6.800 kg. Puede transportar incluso vehículos tripulados.

Para el año 1996 se preparan los primeros dos vuelos de prueba: el ariane-501 (en mayo) y el ariane-502 (en otoño). Al final el vuelo 501 se lanza en junio y ocurre el gran desastre.

Al tratarse de un proyecto compartido entre varios países había que iniciar una investigación y hacer públicos los errores. El resultado muy sorprendente. Uno de los mayores fallos software de la historia en un sistema diseñado para que nada falle.

Este post ha resultado demasiado largo. Son las 00:43. Mañana el informe.

Saludos.

lunes, diciembre 08, 2008

Cuando un amigo se va...

...algo se muere en el alma.




Ha muerto mi fiel amigo Gorri. Después de 15 años (105 años perrunos) ha llegado su hora.

Murió el sábado 6-12-2008. Es el motivo de que no haya escrito nada estos días.


A pesar de que tenía muchos años, y tenía los achaques y manías propios de la edad, qué pena da pensar que no voy a verlo más. Un amigo excepcional, gran olfato, inteligente, sensible, deportista que nos ha acompañado en todo tipo de marchas de montaña..., siempre haciendo compañía, alegre la mayoría de las veces, triste cuando notaba que algo no iba bien. No habrá otro igual.


Goian bego.

sábado, diciembre 06, 2008

Fracaso europeo

Continuando con el tema de la semana, hoy quería comentar lo ocurrido hace seis años con el cohete Ariane.

El cohete europeo que explotó en el aire era un proyecto en el que colaboraban numerosos países y había que clarificar quien había metido la pata. Los resultados de la investigación eran públicos y al menos el año pasado estaba en Internet.



Imprimí lo que encontré del tema y lo guardé para cuando hiciera falta. Ahora no encuentro nada. Ni mis apuntes, ni el informe de lo ocurrido en la red.

En cuanto encuentre el material, lo analice y lo resuma lo publico en el blog.

Por el momento, sólo os diré que hubo un problema clásico que no se habría producido en caso de haber seguido las nociones más elementales de ingeniería del software.

Por otra parte se produjo un problema de redondeo que tiene relación con lo que hablábamos de las limitaciones en informática y por último, el sistema entero estaba duplicado pero el error de redondeo también se produjo en el sistema secundario con lo que no sirvió de nada.

La lección: por mucho dinero que metas en el proyecto, si te saltas a la torera la documentación de proyectos y das por hecho cosas que no son ciertas el fracaso te perseguirá. Además, luego todo el mundo te dirá a ver por qué no leíste la documentación, y por qué no hiciste las pruebas necesarias.

Saludos.

jueves, diciembre 04, 2008

Ya vimos ayer lo que le pasó a Hipaso por divulgar un descubrimiento secreto que hoy en día es inofensivo. De todas formas, desde el punto de vista de los pitagóricos la muerte de Hipaso no era tan grave. Ellos pensaban que al morir su alma se mudaría de cuerpo, sin más.

Probablemente mudaría a un cuerpo que no conocería el secreto, así que asunto arreglado.

Las consecuencias para la matemáticas griegas fueron que el descubrimiento se trató como un obstáculo infranqueable. Los griegos se centraron en el estudio de la geometría y dejaron de lado los números relacionados con áreas y longitudes.

El siguiente gran impulso relacionado con los números naturales se da con Euclides (sobre el 300 a.c.), pero esto es otra historia.

La verdad es que hoy en día el impacto sigue siendo fuerte aunque no tenga consecuencias prácticas.

En el triángulo de arriba si el cateto EA mide 1 metro y el cateto AB también mide 1, la hipotenusa mide 1,4142135623730950488... hasta el infinito.

O sea, que no puede existir un triángulo así.

Acabo de poner que no tiene consecuencias prácticas, pero ya me estoy arrepintiendo...

La informática, la electrónica, sirve para solucionar problemas, descubrir cosas nuevas,..., pero siempre tienen ciertas limitaciones como la memoria disponible, la longitud de los registros, la memoria máxima que se puede direccionar, los MIPS, la frecuencia máxima de reloj, la longitud máxima de cada tipo, etc. etc.

Hay cálculos que requieren gran precisión, y por otra parte hemos visto que en este universo (da igual lo avanzada que esté una civilización) surgen números indomables que requieren memoria infinita para ser almacenada.

Esto nos lleva inevitablemente al fracaso de grandes proyectos, especialmente con magnitudes increíblemente grandes, o increíblemente pequeñas.

En los próximos días pongo unos cuantos casos.

Pista: Observar estas imágenes e imaginaros lo lejos que pueden estar esas maravillas:



Saludos.

miércoles, diciembre 03, 2008

El primer disgusto de las matemáticas


Comentaba ayer que hace 2.500 años se hizo un descubrimiento sorprendente en las matemáticas. Es algo totalmente superado hoy en día, pero en aquel momento causo una gran conmoción.

Pitágoras (582 a.c.-507 a.c.) fue un gran viajero que aprendió matemáticas de Egipto, Mesopotamia, etc. Al regresar de sus viajes a Samos (lugar de nacimiento) fundó una escuela. Huyo de la tiranía y fundó una segunda escuela en Italia. También fueron expulsados de Crotona y fundo la tercera escuela en Tarento (también Italia).

En sus escuelas impartir conocimientos a los no iniciados estaba prohibido. Recibían el nombre de los Pitagóricos y consideraban que la base de todo el universo eran las matemáticas (aritmética y geometría).

Más que matemáticos o filósofos era una especie de religión con sus teorías de transmigración de las almas, un Dios con forma de esfera etc. etc.

El teorema de Pitágoras era conocido por otros pueblos (en Babilonia e India probablemente), pero se atribuye la demostración a los pitagóricos.

No sabemos la demostración exacta aunque hay varias que pudieron haber encontrado.

Ya se ve que esta gente SI pensaba que las matemáticas eran la realidad y todo se podía explicar por ellas.

En los tiempos de los pitagóricos ya habían descubierto los números racionales. Estos números tienen la particularidad de que se pueden mostrar como relación entre dos números naturales. O sea, que si "r" es racional r= p / q siendo p y q naturales. Racional se refiere a que es parte de otro número.

Para explicarlo de otra forma, los números racionales son aquellas soluciones de la ecuación a = bx cuando a y b son enteros.

Realmente el teorema de pitágoras y otras muchas de sus demostraciones se basaban en establecer relaciones entre ángulos, longitudes y áreas.

En esas estamos cuando un pitagórico llamado Hipaso, que se cree que fue maestro de Heráclito, encuentra la siguiente demostración:

Nota: la función sqr() es el cuadrado y sqrt() la raiz cuadrada.

Supongamos que tenemos un cuadrado cuyo lado mide 1.
Entonces la hipotenusa mide raiz de dos (sqrt(2)).

Como todos los números son racionales, sqrt(2) = p / q siendo p y q enteros.

Empezamos quitando todos los factores comunes entre p y q. Si los dos son pares sacamos el 2 como factor común y simplificamos. Se tiene que quedar uno de ellos como par y el otro impar, o los dos impares. No pueden ser los dos pares.

2 = sqr(p) / sqr(q)

O sea sqr(p) = 2 sqr(q)

Entonces sqr(p) es par.

Si sqr(p) es par entonces p es par.

Como p es par entonces habrá un número natural r tal que p = 2r

Como hemos dicho antes sqr(p) = 2 sqr(q)

Y eso lleva a sqr(2r) = 2 sqr(q)

4 sqr(r) = 2 sqr(q)

2 sqr(r) = sqr(q)

Esto quiere decir que sqr(q) es par por lo que q es par.

Pero es que como hemos dicho al principio no pueden ser los dos números pares por lo que hay una contradicción. Por eso sabemos que los números naturales p y q no existen.

Así son los números irracionales. No son parte de ningún otro número racional.

Para verlo más gráficamente, (y esto lo pongo de mi cosecha), así como no existe el círculo perfecto, tampoco existe el cuadrado perfecto, ya que raíz de 2 es irracional y eso implica que tiene infinitos decimales. Si tuviéramos que medir su longitud con una regla no terminaríamos nunca.

Esto lógicamente causó una gran conmoción entre los pitagóricos.
Hay varias teorías sobre lo que le pasó a Hipaso. Algunos creen que fue ejecutado por orden de Pitágoras. Otros que fue expulsado de la orden. Parece que hay algún documento de la época que habla de un naufragio en extrañas circunstancias.

martes, diciembre 02, 2008

Matemáticas y Realidad

Para entender lo que son las matemáticas nos podemos fijar en los dos primeros párrafos de la wikipedia:

La matemática es una ciencia formal que estudia las propiedades y las relaciones que se pueden establecer entre los entes abstractos, como los símbolos, los números y las figuras geométricas.[1]

Aunque la matemática sea la supuesta "Reina de las Ciencias", algunos matemáticos no la consideran una ciencia natural.

No, no es una ciencia natural. Se basa en conceptos abstractos que muchas veces no tienen reflejo en el resto de ciencias. Por ejemplo no hay ningún problema para representar un espacio vectorial con 1.384 millones de dimensiones. Dudo que el mundo físico en el que vivimos tenga justo justo esa cantidad de dimensiones.

Incluso cuando tratamos conceptos que se pueden extrapolar a la física, las matemáticas expresan cuestiones que sólo pueden existir en nuestra cabeza.

Por ejemplo un punto 0-dimensional.

¿Y algo que tenga que ver con la informática?

Pongamos un sencillo ejemplo. El siguiente programa en pseudocódigo calcula la circunferencia de un círculo con radio r.

Programa circunferencia
contante pi = 3,141592
variable radio: real

Escribe("Introduce el radio")
Leer(radio)

Devolver 2 x pi x radio

Observa el programa. Hemos puesto un pi con 6 decimales. Podíamos haber puesto un número pi todo lo preciso que queramos pero el programa nunca devolverá el valor exacto.

Esto sólo demuestra una cosa. Podemos acotar el error pero es imposible eliminarlo. Esto es lo que le pasó al cohete europeo Ariane V por un error de redondeo (un día de estos publicaré detalles técnicos recopilados desde hace tiempo).






Lo que hemos visto en el video anterior es el problema de la informática por basarse en la realidad física en lugar de en las matemáticas puras.

Pero hay más:

PI es un número irracional. Significa que no expresarse como una fracción p/q donde "p" y "q" sean enteros. Se caracterizan por tener infinitos decimales que no siguen un periodo definido.

Efectos prácticos: Imaginemos que encontramos un circulo perfecto en el mundo. Nos inventamos una unidad de media nueva de forma que el radio del círculo sea la unidad.

Entonces el diámetro es 2 x pi x r, y como pi es irracional y r es la unidad...

Tenemos que el diámetro es 2 x pi.
Y si pi tiene infinitos decimales, pi x 2 también.


Por lo tanto, no hay circulo perfecto en el mundo simplemente porque no podría haber una circunferencia con "longitud finita" que cumpliera la igualdad.


El circulo perfecto es una idea en nuestra cabeza nada más. Por eso decía que la informática se basa en la realidad física más que en las matemáticas.

Mañana os cuento lo que le ocurrió hace 2.500 años al matemático (entonces filósofo) que intentó que las matemáticas avanzaran admitiendo la existencia de esos números tan "irracionales" que no podían ser de este mundo.

Saludos.

lunes, diciembre 01, 2008

Matemáticas, Informática y Realidad


En un post de principios de octubre comenté algo que no tiene mayor importancia.

Sin embargo si hubo una reflexión interesante en forma de comentario por parte de Pokemon kamikaze. Decía algo así:

"la informática está basada en la matemática. Y la matemática es infalible. Otra cosa es que los componentes materiales (hard) o el soporte humano (human) no sean capaces de dar soporte a la necesidad matemática."
En aquel momento dije que "Este tema que has sacado merece un post." y ha llegado el momento adecuado.

Empieza el post...

La informática está basada en la realidad física de este mundo. Creo que esto es obvio y no admite discusión. Si esto no es así, yo también podría decir como Pedro Calderón de la Barca: "La vida es sueño" y debate terminado.

La matemáticas son algo más difícil de explicar. Como dijo el matemático Leopold Kronecker, "Dios hizo los naturales; el resto es obra del hombre".

Hay que entender el estado de las matemáticas en la segunda mitad del XIX. Los matemáticos debatían qué cosas debían ser consideradas como válidas y cuales no tenían sentido.

Los intuicionistas consideraban que conceptos abstractos como el infinito, conjuntos, etc. no tenían sentido. El intuicionismo es un tipo de constructivismo que son matemáticos que no reconocen la reducción al absurdo.

Sin embargo las matemáticas avanzaron por estos caminos aunque con algunos problemas. Uno de los problemas más graves fue la paradoja de Cantor y la paradoja de Russel. Durante esta semana explicaré estas paradojas que son muy sencillas de entender pero que tienen difícil solución.

Ha habido otras ocasiones en las que matemáticos se han escandalizado al descubrir/inventar algunos resultados como los Pitagóricos y los números irracionales.

Son casi las 00:05. Tengo que dormir que estoy reventado. Mañana continuo, pero aviso, lo que voy a contar es interesante y hará pensar.

Buenas noches o buenas tardes amig@.