29 October 2009

Veo veo en Facebook



Interesante y muy recomendable el último artículo en BlogOff sobre la privacidad en Facebook, y extrapolable a cualquier otra red social. La idea es fácil de entender y de aplicar, organizar nuestros contactos en grupos o listas, y jugar con las opciones de privacidad de Facebook añadiendo o restringiendo permisos a dichas listas.

Las redes sociales están muy bien y pueden ser muy útiles para mantener el contacto con mucha gente y para comunicarnos con nuestros conocidos a través de Internet. El problema que hay con esto es que mucha gente no está lo suficientemente "educada" para utilizar este tipo de herramientas y no ve el peligro que hay al publicar en la web según que información personal (fotos, videos, mensajes, información de contacto, etc.) y dejarla accesible "a todo el mundo". Y ahora, 5 minutos de reflexión :)

27 October 2009

Libros sobre Java y cía

El otro día, buscando algo que leer llegué a esta página:


A simple vista parece una página de esas que dices "aquí no va a funcionar ningún link", pero sí que van. Y después de un par de saltos por otras webs podemos descargar el libro que queramos. Al menos yo lo he probado con algunos y me ha ido bien, aunque todos sabemos que eso tampoco quiere decir nada :)

22 October 2009

El Juego de Ender

Este post va dedicado a los dos últimos libros de ficción que me he leído: "El Juego de Ender" (Ender's Game) y su continuación "La Voz de los Muertos" (Speaker for the Dead), de Orson Scott Card.

Los libros datan de 1985 y 1986 respectivamente, recibieron unos cuantos premios importantes por aquel entonces, y se consideran (sobre todo el primero) unos clásicos del género mezcla de ciencia ficción y fantasía.

"El Juego de Ender" se sitúa en un futuro relativamente cercano y el protagonista es Ender, el tercer hijo de una familia (cuando sólo se pueden tener dos) y un niño prodigio. La Tierra, años atrás, sufre un ataque por parte de una especie alienígena (los insectores) pero por suerte se acaba con ellos al final. A partir de ese momento se empiezan a preparar a jóvenes soldados (niños) de cara a otro posible ataque en un futuro. La preparación, o lo que parece serlo, consta de una serie de juegos de ordenador y otros juegos de guerra en el espacio, y Ender como soldado y como estratega sobresale por encima de los demás. Para saber como sigue hay que leerse el libro, claro :P

"La Voz de los Muertos" se sitúa unos 3000 años depués del anterior, y también tiene a Ender, con unos 30 años, como protagonista (cosas de los viajes espaciales a velocidades relativistas). Después de lo que pasa en el primer libro, cuando la humanidad ha colonizado ya centenares de planetas, los humanos entran en contacto y conviven con otra especie extraterrestre (los cerdis), de una forma más amigable... o eso parece al principio. Hasta que debido a ciertos problemas, con muertos de por medio, Ender llega al planeta de la convivencia para esclarecer la situación y evitar que se repitan los errores del pasado. Como antes también, para saber más hay que leerse el libro ;)

El primer libro es un poco más "de acción" que el segundo, mientras que este último se pone un poco más "filosófico" en torno a si sería posible establecer contacto con una especie inteligente desconocida y estudiarla, pero a la vez no influir en ella y el por qué o cómo se debería hacer.

En resumen, muy recomendables y muy amenos de leer, por si a alguien le interesa. Además, después de leerlos me he enterado que la saga entorno a Ender contiene unos cuantos libros más, así que no descarto leer algún otro más adelante :)

20 October 2009

Blogger header with random background images

This post is a translation/summary of my original post in Spanish.

I will explain how to get a different random image as background image of the Blogger header. Searching a little bit on Internet I found 2 variants for achieving it, both with Javascript and CSS:

  • Defining for the header a CSS style (with a background image), and when the page is loaded, using Javascript for redefining the style (changing the image). This implies accessing to header's elements (through ID, objects, attributes...).
  • Assigning to the header a "new CSS style", and when the page starts loading, using Javascript for generating the "new CSS style" with the new background image.
I chose the second one for my solution. What we need:
  • Some knowledge about CSS and Javascript.
  • A background image for the header already set, and the rest of images with the same dimensions.
  • Some kind of hosting service in order to put the images (and a small Javascript file).
  • Free access to these images (and the file) trough URL like:
    • http://server/my/images/image0.jpg
    • http://server/my/images/image1.jpg
    • ...
How to proceed:
  • Publish our images.
  • Generate a Javascript file (I named it mylib.js) and publish it too. This file with the following content:
var NUMBER_OF_IMAGES = 5;

function createClassRandomImage() {
imgId
= Math.floor(Math.random() * NUMBER_OF_IMAGES);
document.write(
'<style type="text/css">\n');
document.write(
' .random_image { background-image: url("http://server/my/images/image' + imgId + '.jpg"); }\n');
document.write(
'<\/style>\n');
}

createClassRandomImage();

  • Inside Blogger template, add before the end of the HEAD the following line in order to load the Javascript file:
...
]]>
</b:skin>

<script src='http://server/my/images/mylib.js' type='text/javascript'/>

</head>
<body>
...

  • Also inside Blogger template (with widgets expanded), search the following piece of code, and edit it adding a new "class" attribute and removing the URL of the original image. That is, from this:
...
<div expr:style='&quot;background-image: url(\&quot;&quot; + data:sourceUrl + &quot;\&quot;); &quot;
+ &quot;background-position: &quot;
+ data:backgroundPositionStyleStr + &quot;; &quot;
+ data:widthStyleStr
+ &quot;min-height: &quot; + data:height + &quot;px;&quot;
+ &quot;_height: &quot; + data:height + &quot;px;&quot;
+ &quot;background-repeat: no-repeat; &quot;' id
='header-inner'>
...

  • to this:
...
<div class='random_image' expr:style='&quot;background-image: &quot;
+ &quot;background-position: &quot;
+ data:backgroundPositionStyleStr + &quot;; &quot;
+ data:widthStyleStr
+ &quot;min-height: &quot; + data:height + &quot;px;&quot;
+ &quot;_height: &quot; + data:height + &quot;px;&quot;
+ &quot;background-repeat: no-repeat; &quot;' id
='header-inner'>
...

  • Save the modifications... and it should work :)
In this case, there are configured 5 images (variable named NUMBER_OF_IMAGES inside Javascript file). In order to configure more it's necessary just editing this file and publishing new images in the same way.

14 October 2009

Y cayeron las temperaturas

Se acabó lo que se daba. Hace dos días empezó el frío en Sofía, como en gran parte de Europa parece ser. Viva el cambio climático! :D

La parte buena, las temperaturas agradables han durado un més más que el año pasado. La parte mala, hemos pasado de unos 20 ºC bien buenos de media, a menos de 5 ºC de la noche a la mañana.

Normalmente por aquí empieza a refrescar un poco antes, a primeros de septiembre, aunque de forma más gradual. Y a estas alturas, a mediados de octubre, el frío suele ser más intenso, claro, aunque menos de lo que está siendo a día de hoy.

Normalmente también suele pasar por estas fechas que, después de que haya hecho ya algo de frío, durante unos pocos días las temperaturas suben unos grados y vuelve a hacer "calor". A este fenómeno aquí lo llaman algo así como "veranillo gitano" (циганско лято, tsigansko lyato). Un nombre más divertido de los que se usan en España dependiendo de las fechas (veranillo de San Miguel o de San Martín) o en inglés en general (Indian summer).

Aunque este año tiene pinta de que el verano "normal" ha durado más de la cuenta, ahora ya va a empezar el frío de verdad, y no va a haber ninguna tregua. En fin, tocará abrigarse.

11 October 2009

Imagen de fondo aleatoria en la cabecera de Blogger

Siguiendo con la lista de cambios que llevo haciendo en diseño del blog esta nueva temporada, ahora he añadido el que la imagen de la cabecera del blog cambie aleatoriamente cada vez que se visita el blog o se accede a un post concreto. Y por si a alguien le interesa, voy a explicar la forma en que lo he hecho.

Buscando un poco en Internet para ver cómo lo habían hecho otras personas (no necesariamente con Blogger) me encontré con dos opciones. En las dos opciones intervienen tanto CSS como Javascript. Éstas son:

  • Predefinir con CSS un estilo (con una imagen de fondo) para la cabecera, y al cargar la página, mediante Javascript, redefinir ese estilo (para cambiar la imagen) accediendo a los elementos de la cabecera (a partir de identificadores, objetos, atributos, valores...).
  • Asignar a la cabecera un estilo inexsistente, y al cargar la página, mediante Javascript, generar un trozo de código CSS que defina ese estilo con una imagen aleatoria cada vez.
Yo me he basado en la segunda, que a mi juicio resulta mucho más sencilla y más "limpia".

Lo que necesitamos a priori es:
  • Saber un poco de CSS y Javascript.
  • Que el blog tenga ya una imagen de fondo en la cabecera, y que las imágenes que vayamos a usar tengan esas mismas dimensiones.
  • Disponer de un espacio público en Internet donde alojar las imágenes (y un pequeño fichero Javascript que facilitará el trabajo).
  • Que las imágenes (y el fichero Javascript) sean accesibles a través de URLs del estilo:
    • http://servidor/mis/imagenes/imagen0.jpg
    • http://servidor/mis/imagenes/imagen1.jpg
    • ...
Para el tema del alojamiento yo he usado una carpeta pública de DropBox, ya que por ejemplo hacerlo con PicasaWeb sería más complicado por el tema de los nombres de las imágenes y las URLs que tienen asociadas.

Entonces, la forma de proceder es la siguiente:
  • Publicar las imágenes que queramos.
  • Generar un fichero Javascript (yo lo he llamado mylib.js) y publicarlo también. El fichero Javascript con el siguiente contenido:
var NUMBER_OF_IMAGES = 5;

function createClassRandomImage() {
imgId
= Math.floor(Math.random() * NUMBER_OF_IMAGES);
document.write(
'<style type="text/css">\n');
document.write(
' .random_image { background-image: url("http://servidor/mis/imagenes/imagen' + imgId + '.jpg"); }\n');
document.write(
'<\/style>\n');
}

createClassRandomImage();

  • En la plantilla HTML de Blogger añadir antes del final del HEAD la siguiente línea para cargar el fichero Javascript:
...
]]>
</b:skin>

<script src='http://servidor/mis/imagenes/mylib.js' type='text/javascript'/>

</head>
<body>
...

  • También en la plantilla HTML de Blogger (expandiendo los widgets), buscar el siguiente trozo de código, y editarlo añadiendo un atributo class y quitando la url de la imagen original, para pasar de esto:
...
<div expr:style='&quot;background-image: url(\&quot;&quot; + data:sourceUrl + &quot;\&quot;); &quot;
+ &quot;background-position: &quot;
+ data:backgroundPositionStyleStr + &quot;; &quot;
+ data:widthStyleStr
+ &quot;min-height: &quot; + data:height + &quot;px;&quot;
+ &quot;_height: &quot; + data:height + &quot;px;&quot;
+ &quot;background-repeat: no-repeat; &quot;' id
='header-inner'>
...

  • a esto:
...
<div class='random_image' expr:style='&quot;background-image: &quot;
+ &quot;background-position: &quot;
+ data:backgroundPositionStyleStr + &quot;; &quot;
+ data:widthStyleStr
+ &quot;min-height: &quot; + data:height + &quot;px;&quot;
+ &quot;_height: &quot; + data:height + &quot;px;&quot;
+ &quot;background-repeat: no-repeat; &quot;' id
='header-inner'>
...

  • Guardar los cambios... y ya debería funcionar :)
En este caso hay configuradas 5 imágenes (variable NUMBER_OF_IMAGES del fichero Javascript). Para configurar más o menos imágenes simplemente hay que variar ese número y añadir las imágenes junto con las otras... sin tener que tocar nada más en la plantilla del blog.

08 October 2009

ProjectLocker: Hosting gratuito para Subversion (y Git)

En las últimas semanas he estado pensando en subir a "la nube" el código de los diferentes proyectos que estoy desarrollando. Por ahora tengo dos tipos de proyectos, por un lado aplicaciones y por otro webs. Para las aplicaciones creo que probaré con los servicios de Google Code o LaunchPad, enfocados más al hosting de proyectos. Pero para las webs estuve buscando simplemente algún tipo de hosting o repositorio gratuito para Subversion.

Entre las alternativas había sitios que ofrecían la posibilidad de crear más o menos proyectos, tener más o menos usuarios y más o menos espacio disponible. Las principales características del servicio que he escogido, ProyectLocker, son:

  • Hasta 5 usuarios. Para mí solo, me basta y me sobra.
  • Número indefinido de proyectos. Muchos de los otros servicios permitían un único proyecto por usuario, cosa que obliga a tener un usuario diferente para cada proyecto (demasiado complicado) o tener todos los proyectos dentro de uno único (un poco feo).
  • 500 MB de espacio. Para alojar los ficheros fuente de pequeñas webs estáticas es más que suficiente.
  • Acceso a través de Subversión o de Git (se elige en el momento de crear un proyecto) e integración con Trac, una Wiki, etc.
  • Es gratis (a cambio de un poco de publicidad en la web de gestión de proyectos). Tiene modalidades de pago que añaden más espacio, más usuarios, sin publicidad... lo típico.
El portal que tienen para la gestión de los proyectos no es demasiado "2.0" y parece un pelín lento, pero hace su función correctamente. Tengo que probar más la velocidad del repositorio en sí y ya lo iré comentando.

07 October 2009

Música mestro

Hacer alguna actividad cultural de vez en cuando nunca viene mal :)



El jueves pasado asistimos al primer concierto de la temporada de la Orquesta Filarmónica de Sofía (Софийска Филхармония). Era la primera vez que iba a un concierto de este estilo y no tenía muy claro si al final me parecería una pérdida de tiempo o si saldría encantado. Y la verdad es que me gustó más de lo que esperaba.

El precio, como casi todo lo cultural en Sofía, más que asequible. La mayoría de asientos en la sala entre 5 y 10 euros al cambio; por supuesto luego había algunos de más caros, para los más entendidos me imagino. El concierto duró unas dos horas y poco, que pasaron rápidas. Y el programa fue:
  • Improvisación y toccata, de Pancho Vladigerov (Панчо Владигеров), un búlgaro para empezar
  • Concierto para piano, violin y chelo en Do mayor, de Ludwig van Beethoven
  • Sinfonía fantástica, de Héctor Berlioz
Antes de entrar, al verlo, tuve la sensación de que me iba a aburrir si no escuchaba algo conocido, al estilo Las Cuatro Estaciones de Vivaldi, La Novena de Beethoven, El Bolero de Ravel o algún otro "clásico popular". Pero no fue así, las 3 piezas me gustaron, sobre todo la de Berlioz.

En definitiva, una experiencia muy interesante. Además fue la primera vez en que realmente me pareció que el director de orquesta hacía algo útil... por la tele parece que siempre hacen lo mismo :D

05 October 2009

ALBI Piscinas

Un poco de publicidad gratuita...


Si juntamos lo del amigo informático (sobrino informático en este caso) y que estoy un poco ocioso últimamente... el resultado es que mis tíos ya no podrán decir que no tiene web para su negocio de piscinas. Es una pequeña web estática, sencillita pero funcional.