rmbit - La bitácora personal de Ricardo Martín
La bitácora personal de Ricardo Martín desde 2004.
14 de enero de 2009

D: Más allá de C/C++

Aunque en los últimos años estoy un poco desconectado de la programación, siempre me gusta estar al día de lo que se cuece. Hacía ya tiempo que sabía de la existencia de un lenguaje de programación todavía poco conocido llamado D. Para todos aquellos que saben algo de estos temas podrán deducir que tiene algún parentesco con C y C++. Así es. D lleva desarrollándose ni más ni menos que desde 1995 y su artífice es Walter Bright. A través de una anotación en Barrapunto recupero este tema para traerlo hasta vosotros.

A simple vista, echando una ojeada al código fuente de un programa escrito en D, podría pasar por C++ salvo en algunos detalles. Con esto quiero decir que no es un cambio radical. De hecho, D es una evolución de su predecesor hacia mejor. En su día muchos nos quejábamos de lo complejo que podían llegar a ser algunos aspectos de un programa en C++. Por ejemplo en lo tocante a control de memoria dinámica y punteros, a la portabilidad entre compiladores y plataformas o al acceso al bajo nivel del sistema operativo mediante bloques de ensamblador. D mejora muchas de estas cosas (sobre todo el primero) y las simplifica.

Desarrollar un lenguaje de programación no es ni sencillo ni rápido. Por eso queda mucho tiempo aún para que D sea un lenguaje de programación masivo. Ya se han dado los primeros pasos, con conferencias de expertos y varias ramas en desarrollo (Digital Mars, GDC y LDC) pero el camino que queda por delante es muy largo.

Un programa “Hola mundo” en D tendría este aspecto más o menos:

#!/usr/bin/dmd -run
/* HOLA MUNDO EN D */
import std.stdio;

void main(string[] args) {
       writefln("HOLA MUNDO");
}

24 de noviembre de 2008

Batallitas con Turbo Pascal

Me he enterado a través de Barrapunto que este mes se está celebrando (bueno, no sé si realmente alguien lo celebra) el 25 aniversario de la primera versión de Turbo Pascal. Para quien no lo sepa, se trata de un lenguaje de programación muy sencillo de la compañía Borland y con el que mucha gente aprendió a programar. Este no fue mi caso, porque yo empecé con Basic en 1986. No fue hasta 1995 cuando me adentré (o me adentraron) en el apasionante mundo del Turbo Pascal. Hasta la popularización de los IDE gráficos en Windows (sobre todo con Visual Basic), Turbo Pascal era el rey de los primerizos, los que querían tener un entorno integrado para programar, compilar, enlazar, depurar y ejecutar nuestras pequeñas aplicaciones.

En la carrera dimos a fondo Turbo Pascal y me di cuenta de la cantidad de posibilidades que puede tener. De hecho una de sus principales bazas era su potencia y su sencillez con capacidad para programación orientada a objetos. La herencia de Turbo Pascal la encontramos en Delphi, la versión con IDE para Windows, aunque la verdad es que hoy prácticamente ya no se utiliza.

En un ejercicio de nostalgia me he bajado el Turbo Pascal 5.5 y he programado un pequeñísimo ejemplo. El código fuente en el entorno integrado tenía un aspecto tal que así:

9 de noviembre de 2008

El infierno de la tipografía web

Una de las razones por las que he perdido el interés en el diseño web son las tipografías. Tras darme cuenta del verdadero problema que supone la existencia de tres plataformas diferentes (Windows, Mac y Linux), seis navegadores “mayoritarios” (Internet Explorer, Firefox, Chrome, Konqueror, Safari y Opera) y múltiples dispositivos móviles desde los que se puede acceder a la web, los desarrollos de mis webs se alargan casi hasta el infinito. Las pruebas que he de hacer para que todo tenga buen aspecto desde cualquier sitio se ha convertido en una obsesión.

Eso es justo lo que me está pasando ahora con la nueva versión de mi página personal rmweb, en plena fase de diseño. Precisamente el diseño había sido hasta hace no mucho tiempo mi etapa favorita y también la más satisfactoria. La desventaja es que en Mac OS X cualquier cosa se ve perfecta. Hasta la tipografía más horrenda tiene buen aspecto. La sorpresa viene cuando paso a Windows y abro la web con Internet Explorer. Normalmente me gusta tan poco el resultado que vuelvo otra vez a rediseñarla. He tomado la decisión de diseñar el CSS directamente en Windows y probar en el resto de plataformas. Curiosamente, en Ubuntu los resultados son bastante decentes, mucho más que en sistema operativo de Microsoft.

De momento, las conclusiones son usar fuentes personalizadas para cada plataforma. Es decir, usar fuentes excluyentes que sé que sólo tienen preinstaladas un determinado sistema operativo. Por ejemplo, sé que la Lucida Grande es la fuente del “sistema” en Mac OS X y que Windows no la tiene instalada, así que doy a este tipo la máxima prioridad. En segundo lugar utilizo la Arial para titulares grandes y la Tahoma para texto pequeño, ambas instaladas por defecto en Windows. Por último y sobre todo por seguridad, por compatibilidad con otros sistemas (Linux utiliza estas si no están instaladas las anteriores) añado Helvetica y la familia genérica sans serif. Al final, las instrucciones font-family del CSS de rmweb están quedando así:

Para titulares:

font-family: "Lucida Grande", Arial, Helvetica, sans-serif;

Para texto pequeño:

font-family: "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;

Todavía queda algún tiempo para que la nueva versión de rmweb vea la luz, pero en la foto podéis ver como está quedando. Admito sugerencias.

11 de octubre de 2008

Azar e informática

A lo largo de mis tiempos de programador, me he tenido que enfrentar varias veces con el azar. En algunas de las aplicaciones que he tenido que diseñar entraba el componente aleatorio en forma de un generador de números. Todos los que han programado alguna vez conocen funciones como rand() en PHP o C++ o rnd() en Visual Basic que teóricamente generan valores al azar entre 0 y 1 con varios decimales.

Hace unas semanas leí un artículo interesante en la web de Bo Allen sobre este tema. Y no hizo más que confirmar mis sospechas: la aleatoriedad generada por un ordenador no es realmente aleatoria, sino que sigue unos ciertos patrones que se repiten una y otra vez, de forma que a la larga pueden predecirse. No hay más que ver el gráfico que acompaña al artículo para darse cuenta.

Y es que el concepto de aleatoriedad no está tan claro. De hecho nadie sabe si realmente existe o si al final, igual que con el gráfico, siempre se repite un patrón. No voy a entrar en conceptos que nos llevarían a la filosofía o a la física. Si os interesa el tema, en la curiosa página web random.org han estudiado detenidamente el tema de la aleatoriedad y cuenta con un generador aleatorio de números no basado en los cálculos del procesador, sino en los ruidos atmosféricos, que se supone que son mucho más azarosos…

28 de julio de 2008

Poesía geek

Poesía y programación. Lo abstracto, lo inaprensible, lo irracional contra la funcionalidad máxima, la racionalidad extrema y la brevedad. Un choque de trenes. ¿O no? A juzgar por los poemas “traducidos” o directamente escritos en diferentes de lenguajes de programación parece que no tanto. Aunque el resultado es un poco chusco e invita a echar unas risas, me ha parecido curioso traer unos cuantos que he recopilado a lo largo y ancho de internet.

El primero es una traducción ingeniosa a C++ de los primeros versos de ‘La Canción del Pirata’ de José de Esprondeda (por Lady Benko):

//BenKo - demasiada Cafeína
#include 
using namespace pirates;

void pirate_song() {
	Ship.AddCannons(10);
	Ship.AddCannons(10);
	Wind.Blow("stern","maximum");
	Ship.CutSea(false); Ship.Fly(true);
	Ship.Type("Velero bergantín");
}

Vamos ahora con ‘Amor en PHP’ escrito por Lautreamont en (obviamente) PHP:

// Amor en PHP (PHP Love) v1.0
// Lautreamont 2006

if ($yourLove == true) {
	while (isset($me)) {
		&myLove = $myLove+1;
	}
} else {
	$me = null;
}

O lo que es lo mismo:

Si me quieres, te querré
más y más a cada instante mientras viva
porque si no me quieres no soy nada.

Loine en los comentarios del post anterior deja también su pieza sin título y escrita en Bash shell:

#/bin/bash

amame(){
	yes 2 `whereis $MY_LOVE`
	cat /proc/kore | grep $MY_LOVE
	cat /proc/mem | grep $MY_LOVE
	if !-z $MY_LOVE
		amame
}

Loine no deja traducción para este programa-poema, así que desempolvando mis conocimientos “viejunos” de Bash sería algo así como (admito correcciones):

Si buscas mi amor
búscalo en mi corazón
búscalo en mi recuerdo.
Si lo encuentras, ámame.

Alejo hace lo propio con su pieza en PHP:

$myHope = ereg($myLife,$you) && ereg($yourLife, $me)

Mi esperanza es ser parte de tu vida y tú seas parte de la mía.

Como véis esta gente no son precisamente Claudio Rodríguez, pero me ha parecido curioso traerlos, sobre todo para aquellos que, como yo, sacan a relucir de vez en cuando su faceta más geek/”friki”.

28 de abril de 2008

Nuestro propio servidor de vídeos Flash

Desde que leí un artículo en el blog de David de Ugarte sobre cómo construirse un servidor de vídeos Flash al estilo de YouTube no he hecho más que darle vueltas al asunto. Ahora que he tenido un rato he podido trastear con el tema. Siempre he querido ser lo más independiente posible de las plataformas masivas en la red, léase YouTube, Flickr y otras muchas. Más que nada porque al final son ellos los que deciden sobre tus contenidos y en el fondo hacen lo que quieren. La desventaja es el espacio en el servidor que ocupan los vídeos Flash, aunque también es verdad que hoy día los precios de los alojamientos están bastante baratos y ofrecen una capacidad respetable. Yo tengo 500 Mb ahora mismo, más de la mitad desocupados. Me sería muy complicado realojar todos los vídeos que tengo enlazados en mi cuenta de YouTube y en esta bitácora. Pero por lo menos que este post sirva para que los manitas de la web puedan experimentar un poco con esto de ser su propio servidor de vídeos.

Existen tres posibilidades, según lo que queramos hacer. La primera, y más sencilla, es utilizar un pequeño plug in para nuestra bitácora (en WordPress, aunque supongo que para otras plataformas también los habrá). Su nombre es Flash Video Player y lo he usado a modo de prueba. Como podéis comprobar abajo, funciona perfectamente y no he tenido más que seguir las indicaciones que vienen. Este accesorio permite insertar vídeos en nuestros posts a través de una simple etiqueta insertada en el cuerpo del artículo, y que viene a ser del estilo [ flashvideo filename="video/myvideo.flv" / ], donde "video/myvideo.flv" es la ruta (absoluta o relativa) y el nombre del archivo del vídeo. En el panel de control de WordPress podemos configurar la apariencia y el comportamiento del reproductor. De todos modos está muy limitado (color, botones y poco más).

[flashvideo filename=”http://www.ricardomartin.info/videos/broadcast_papercuts.flv” /]

La segunda opción es acudir al código fuente gratuito de alguno de los muchos clones de YouTube que circulan por ahí. En esta página hay catorce para elegir. Nos los bajamos y, siguiendo las instrucciones, conseguiremos instalarlos en nuestro servidor. La pega que les he encontrado es que los más completos incluyen un sistema propio de conversión de los vídeos a .flv, y para este proceso es necesario instalar una extensión de servidor. Lamentablemente muchos proveedores de hosting no permiten a sus clientes instalar complementos en sus servidores ni acceder a ellos. Luego veremos que la mejor opción será convertirlos en nuestro ordenador con un programilla y subirlos a una carpeta del servidor ya en formato Flash.

La tercera y última opción, para los más exigentes (y valientes), es obtener el código fuente del reproductor de vídeo Flash. Yo he conseguido el Media Player, que es de código abierto. Si tenemos conocimientos suficientes de Flash y ActionScript podremos modificarlo a nuestro antojo. En su página web puede consultarse la abundante documentación que lo acompaña y con la que es muy difícil perdernos. También hay algunos ejemplos que podemos utilizar en nuestros proyectos. Sólo recomendado para aquellos que tengan tiempo y ganas…

Conversión de ficheros de vídeo a .flv

Por suerte en el Mac es muy sencillo convertir a este formato, ya que el propio reproductor multimedia QuickTime tiene esta opción de serie. No hay más que abrir el vídeo y exportarlo (Archivo/Exportar…), seleccionando el formato flv. Para los desafortunados que no tengáis un Macintosh existen múltiples aplicaciones gratuitas para Windows y GNU/Linux que realizan esta tarea. No hay más que hacer algunas búsquedas por Google para dar con el programa adecuado.

10 de abril de 2008

El “efecto 2038”

¡Échense a temblar! ¿Alguien se acuerda de aquel famoso efecto 2000? Ya casi nadie. Ni siquiera yo, que en los últimos meses de 1999 me dedicaba a esto de la informática, he vuelto a recordar aquel timo que sirvió para que algunas empresas se forraran. En aquella ocasión no llegué a conocer ni un solo caso de fallo por culpa de esa anomalía. Y tampoco se cayeron los aviones, ni se colapsaron las redes informáticas, ni se fue la luz ni explotaron las centrales nucleares. Nada de nada. El tránsito entre el 31 de diciembre y el 1 de enero se produjo sin ningún incidente.

Pero los agoreros de la tecnología ya tienen pensado otro “efecto”. Esta vez la fecha será el 2038 (queda mucho todavía), y no el último día del año, sino el 19 de enero a las 3 horas 14 minutos y 7 segundos. ¿Y por qué esa fecha y hora concretas? Antes que nada hay que explicar algunos asuntos técnicos. Los lenguajes de programación con los que están construidas las aplicaciones y sistemas operativos que utilizamos tienen tipos de datos. Estos tipos sirven para almacenar información de uso interno para el programa (por ejemplo un contador que cuente el tiempo transcurrido, textos introducidos por el usuario o datos de control para el flujo interno de la aplicación entre otros). Pues bien, existe un tipo de datos donde se almacenan los segundos transcurridos desde el 1 de enero de 1970 a las 00:00. Es una forma de calcular la fecha actual en POSIX. Este sistema se da exclusivamente en UNIX y sus derivados.

La cuestión es que ese tipo de datos donde se almacenan los segundos tiene 32 bits (231 combinaciones, porque el bit 32 es el de signo -/+). Es decir, admite un rango de valores entre -2.147.483.648 y 2.147.483.647. El 19 de enero de 2038, el contador de los segundos llegará precisamente a 2.147.483.647. El siguiente segundo nadie puede prever lo que ocurrirá, pero es seguro que el tipo de datos se desbordará y dará un error. En el mejor de los casos, y si la aplicación está bien programada, la cuenta de segundos volverá a -2.147.483.648, lo que en cristiano sería el 1 de enero de 1970. Eso al menos son los resultados que se han obtenido en las pruebas que se han realizado. Y en el peor pues… mejor que no pensemos, pero puede producirse una hecatombe a niveles planetarios.

Aunque esto hoy puede alarmarnos, es posible que para entonces todos los sistemas informáticos hayan sido ya renovados y el sistema operativo y las aplicaciones estén preparadas contra el “efecto 2038”.

  • admin: Hola María. Gracias a ti por pasarte por mi humilde blog. Respecto a lo que preguntas, he revisado muchas...
  • María G.: Ricardo, me ha encantado descubrir tu blog. Estoy terminando mi Grado en Publicidad y RR.PP. y estás...
  • Jaqueline Contreras: Pienso que el ser humano es la invension de un ser superior. Yo en lo personal le llamo y lo...
  • Ricardo: Gracias a ti por compartirlos con todos nosotros. Un saludo.
  • Pablo: El primer televisor que hubo en mi casa, comprado por mi padre, fue un Enodyne como el del anuncio; creo que...
  • Ricardo: No, se trata de la desaparecida puerta del Mercado. Hay que fijarse en la pequeña parte de muro de piedra...
  • moral3jo: La imagen de cabecera de la izquierda que es? el arco del obispo? Creo poder leer que dice que es la puerta...
  • Ricardo: Tienes razón. Acabo de cambiarlo. Gracias por tu atención.
  • Beep: El 2744 no es el coche registrado 2744 es el 2745, la primera de cada “serie” es la 0000




  • Licencia de Creative Commons

    rmbit está bajo una licencia de Creative Commons.
    Plantilla de diseño propio en constante evolución.
    Página servida en 0,427 segundos.
    Gestionado con WordPress