24 febrero 2008

Huevos de pascua

Huevos de pascua...


ximo@cagallon:~$ apt-get moo
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
...."Have you mooed today?"...

ximo@cagallon:~$ aptitude moo
No hay ningún huevo de pascua en este programa.
ximo@cagallon:~$ aptitude -v moo
Realmente no hay ningún huevo de pascua en este programa.
ximo@cagallon:~$ aptitude -vv moo
¿No le he dicho ya que no hay ningún huevo de pascua en este programa?
ximo@cagallon:~$ aptitude -vvv moo
¡Deje de hacer eso!
ximo@cagallon:~$ aptitude -vvvv moo
Vale, vale, si le doy un huevo de pascua, ¿se irá?
ximo@cagallon:~$ aptitude -vvvvv moo
De acuerdo, usted gana.

/----\
-------/ \
/ \
/ |
-----------------/ --------\
----------------------------------------------
ximo@cagallon:~$ aptitude -vvvvvv moo
¿Qué es? Es un elefante que está siendo devorado por una serpiente, por supuesto.

16 febrero 2008

registros en página

Tuve la suerte o la desgracia de registrarme en gmail a los pocos días de publicarse la beta gracias a una invitación. Tuve la suerte o la desgracia de poder elegir un nombre para la cuenta corto y gracioso (no como en hotmail que prácticamente sólo puedes registrar nombres tipo algo3748329).

Hasta aquí todo bien. No suelo entrar mucho en esa cuenta y mucho menos la doy en ninguna página pero desde hace unos meses han llegado como 10 o 15 emails de bienvenida a distintas páginas o servicios que yo no había solicitado.

Es decir, la gente cuando se registra a algún sitio y no quiere dar su email pues en vez de usar mailinator o cualquier servicio similar ¡pone mi dirección!

Me he "apuntado" al Carrefour Baby Club (supuestamente porque tengo una hija desde enero), me he "registrado" en Flixster que es una web de comentar películas que no conocía, me he "registrado" en Facebook, a myspace y a algunas páginas más.

Por lo que he visto, algunas de estas páginas envían el típico email de confirmación antes de activar la cuenta. Con esas páginas símplemente borro el email. Pero hay otras que no. Con sólo dar un email ya tienes tu cuenta activada. En estos me tengo que tomar la molestia en recuperar la contraseña del chaval, entrar en la página y buscar cómo darme de baja. En estos casos suelo enviar un email a alguna dirección que encuentre explicando cómo tienen que validar que las cuentas de email son de quien las pone.

El caso más flagrante es el de Telecinco. Alguien se apuntó con mi cuenta a un concurso de la Fórmula 1 y desde entonces me llegan montones de emails de todos las series de T5. Cada uno de estos emails viene desde un dominio distinto "yosoybea.com", "tele5esunamierda.com", etc. Además ningún email (ni siquiera el primero) ofrece forma de darse de baja. Ya no sé si quejarmea la AGPD o qué hacer.

Bueno todos estos lloros han venido porque me he "registrado" en una página de citas ¡meetic!.

13 febrero 2008

El "algoritmo" del buscaminas

Hace una semana o dos programé un pequeño buscaminas para la Nintendo DS. Hoy me ha dado por añadirle la opción de poner banderitas pero... ¡en el lápiz no hay botón derecho!

En su día me bajé 3 versiones distintas del buscaminas para la DS (creo que todo aquél que ha programado algo para la DS su primer programa ha sido un buscaminas). En todos esos juegos para poner banderas se usaba L+click. Esta forma es buena para los diestros pero muy incomoda para los zurdos como yo. Los buscaminas más currados que se han hecho no discriminan a los zurdos y permiten también R+click para poner banderas. Al final he utilizado estos 2 botones también.

Tras programar lo de las banderitas me he encontrado con que la función que se llama al hacer click en un cuadrado empezó siendo super simple y ahora ya no hay quien la entienda. Cada vez que surgía un fallo añadía un nuevo if y después de corregir varios fallos ya se nota el caos.

Algún día la reescribiré mejor (por lo tanto crearé nuevos fallos) o le pondré comentarios...


void checkPosition(int y, int x, int action) {
if (y >= ROWS || x >= COLS)
return;

if (estate == VICTORY || estate == DEAD)
return;

lastX = x;
lastY = y;

if (action == FLAG && opened[y][x] != OPENED) {
if (opened[y][x] == FLAGGED)
opened[y][x] = HIDDEN;
else
opened[y][x] = FLAGGED;
} else if (opened[y][x] == FLAGGED) {
// nada
} else if (map[y][x] == MINE) {
estate = DEAD;
opened[y][x] = OPENED;
} else if (opened[y][x] == HIDDEN){

opened[y][x] = OPENED;
numOpened++;

if (map[y][x] == 0)
dfsOpen(y, x);

if (numOpened == (COLS*ROWS - NMINES)) {
estate = VICTORY;
}
}

printMap();
}


Por si a alguien le interesa:
action: vale FLAGGED si se ha puesto una bandera y DISCOVER si es para abrir una casilla.
lastX, lastY: Guarda la posición del último click. No recuerdo ahora para qué...
estate: Indica en que estado se encuentra el juego: PLAYING, DEAD, VICTORY, CREATING_GAME, etc.
map[y][x]: puede valer 0,1,2,...,8 o MINE.
openen[y][x]: puede valer HIDDEN si aun no se ha abierto esa casilla, FLAGGED si se le ha puesto bandero u OPENED.

Ocurren 2 cosas:
opened se usaba para indicar si una casilla habia sido abierta o no. Ahora que también sirve para indicar si tiene bandera el nombre no es muy acertado. Esto me ocurre en 2 o 3 sitios más del código.

Cada vez que añado alguna cosa al programa, aunque sea una gilipollez añado también varios fallos. Por ejemplo con lo de las banderas me pasaba que a una casilla descubierta le podias poner la bandera y después al quitársela pasaba a estar tapada de nuevo. Como yo cuento el número de casillas destapadas (numOpened) para calcular cuando ha ganado se podría estar abriendo todo el rato la misma casilla con este método y ganar.

09 febrero 2008

aMSN: enviar ficheros arrastrando a la ventana

He conseguido hacer funcionar el "drag'n'drop" para enviar ficheros con el aMSN (en Debian con KDE 3.5.X, debería ir en todos lados). Explico ahora cómo lo he hecho:

Pasos simplificados:
1 - Instalar la versión en desarrollo de aMSN. Se puede descargar de su web
2 - Instalar el paquete tkdnd (la versión 1.0a2, la 2.0 no funciona)

Pasos para Debian (y *ubuntu, supongo):

1 - Instalar la versión en desarrollo de aMSN. Se puede descargar de su web

2 - Instalar el paquete tkdnd (la versión 1.0a2, la 2.0 no funciona). No lo he encontrado en los repositorios así que he buscado el .deb y lo he encontrado aquí El fichero es tkdnd_1.0a2-1_i386.deb.
Ahora como root: dkpg -i tkdnd_1.0a2-1_i386.deb


Problemas:

Al instalar el .deb me pedía el paquete xlibs que no tenía. Me ha dado muchos problemas y al final no he podido instalar. Tampoco lo he encontrado por internet. Al final lo que he hecho ha sido instalar un paquete que se parecía mucho el nombre xlibs-static-dev y después instalar el tkdnd ignorando las dependencias.

dkpg --force-depends -i tkdnd_1.0a2-1_i386.deb

Tras esto, reinicio el aMSN y ya puedo enviar ficheros arrastrando a la ventana. Mucho más cómodo.

Comics de Heroes

Para aquellos que les mole la serie Héroes por si no lo saben, el canal que emite la serie en USA publicada cada semana un pequeño cómic de varias paginas contando cosas que no salen en la serie y desvelando algunas cosas. He ojeado un par de ellos y el estilo del dibujo parece el mismo que el del pintor ese de los ojos blancos. Que yo sepa no siguen ningún orden, a veces cuentan cosas de años antes de la serie, a veces de cosas que ocurren a la vez...

Bueno si alguien se aburre y le interesa que los lea y que me cuente. Están en la página de la serie pero en la Wikipedia hay una lista mejor con enlaces directos a los pdfs.

Temporada 1
Temporada 2

04 febrero 2008