rmbit - La bitácora personal de Ricardo Martín

Batallitas con Turbo Pascal

Lunes, 24 de Noviembre de 2008

* * *

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í:

El infierno de la tipografía web

Domingo, 9 de Noviembre de 2008

* * *

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.

Azar e informática

Sábado, 11 de Octubre de 2008

* * *

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…

Poesía geek

Lunes, 28 de Julio de 2008

* * *

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”.

Nuestro propio servidor de vídeos Flash

Lunes, 28 de Abril de 2008

* * *

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).

Get the Flash Player to see this player.

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.

El “efecto 2038″

Jueves, 10 de Abril de 2008

* * *

¡É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″.

Claves: , ,

REALBasic: programación multiplataforma sin complicaciones

Miércoles, 26 de Diciembre de 2007

* * *

Una captura del interfaz del REALBasic

Este titular es lo que mejor define este fantástico entorno integrado de programación de la compañía REALSoftware. Primero, es multiplataforma. Esto implica que no importa el sistema operativo sobre el que estemos programando, ya que podremos compilar nuestra aplicación tanto en Mac OS X (Intel, PowerPC o binario universal), MacOS 9, Windows 98 y posteriores o Linux con GTK+ 2.x (librería gráfica) a partir de un sólo código fuente y sin tener que modificarlo. Esto supone una característica muy potente. Aunque por las pruebas que he hecho el interfaz no se ve exactamente igual, con un poco de práctica es fácil conseguir un look & feel similar en todas las plataformas.

Y segundo, es sencillo y rápido. REALBasic, como su propio nombre indica, está basado en Basic, más concretamente en Visual Basic, aunque mantiene importantes diferencias respecto a la herramienta de Microsoft. Reconozco que estoy muy acostumbrado a programar en Visual Basic y echo en falta muchas funciones que facilitaban bastante las cosas. Todo se soluciona teniendo el manual de referencia a mano. Cuestión de adaptarse. Una de las cosas que echo de menos es el autocompletar, que me ayudaba mucho a elegir la propiedad o el método adecuado de cada objeto.

Una captura del interfaz del REALBasic

Otra de las cosas relacionadas con la sencillez es que los ejecutables que genera para Windows no necesitan de ninguna librería externa. Todo va “empaquetado” en un archivo .exe. Esto implica un aumento de peso en el archivo, pero merece la pena sacrificar espacio en aras de una menor complicación.

En conclusión, REALBasic es una herramienta que ya es una seria alternativa a otro tipo de programación, sobre todo para Mac, donde no hay muchas alternativas para crear aplicaciones de escritorio más allá Cocoa, pero necesita todavía algunas iteraciones para ser una entorno “maduro”.

Página siguiente »
Categorías

Lecturas diarias

Calendario
Diciembre 2008
L M X J V S D
« Nov    
1234567
891011121314
15161718192021
22232425262728
293031  

Archivos


Licencia de Creative Commons

rmbit está bajo una licencia de Creative Commons.
Plantilla en constante evolución, diseñada y programada por mí mismo intentando seguir los estándares XHTML y CSS

Página servida en 0.968 segundos.
Gestionado con WordPress