Calcula cuanto te debe tu empresa

Si te pasa como a muchos de nosotros, que tenemos una empresa que no paga sus nóminas pendientes, quizá esta utilidad (chorra) te ayude a pasar el día a día.

Se trata de http://medeben.sukiweb.net, una web que te ayuda a calcular cuanto te debe tu empresa (las nóminas, claro).

El funcionamiento es muy simple, pon la fecha desde que no cobras, el sueldo que percibes y te realizará el cálculo pertinente. Así, sin más.

Además, puedes compartirlo con tus amigos pasandoles el enlace (que te saldrá cuando lo pruebes).

Por ejemplo, si yo cobrase 1.300 euros y no hubiese cobrado desde el 1 de enero del 2009, este sería el resultado:
http://medeben.sukiweb.net/?d=1&m=1&y=2009&sueldo=1300.

¿Cuanto te deben a ti?

Mapas de OpenStreetMaps con GeoIP simples

Hace ya un tiempo monte un sistema de mapas de Google Maps simple para que cualquier persona con conocimientos básicos pudiese implementarlo.

Hoy en el trabajo ha surgido la posibilidad de implementar mapas en una de las aplicaciones que está en proyecto y he aprovechado para implementar de forma muy sencilla OpenStreetMaps con GeoIP para el posicionamiento.

El funcionamiento es muy sencillo, se le pasa a una función una IP o un host y ésta nos devuelve un mapa de OpenStreetMap posicionado según la posición de esa IP.

Para preparar nuestro servidor simplemente haremos los siguientes pasos (Versión Debian, claro):

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

mkdir /usr/share/GeoIP/

gunzip GeoLiteCity.dat.gz /usr/share/GeoIP/
gunzip GeoIP.dat.gz /usr/share/GeoIP/

ln -s /usr/share/GeoIP/GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Además, nuestro servidor necesitará el soporte de GeoIP en PHP. Esto es muy sencillo en Debian

aptitude install php5-geoip

/etc/init.d/apache2 restart

Listo, ya tenemos nuestro servidor preparado para utilizar GeoIP. Ahora simplemente llamamos a la función que he creado con la ip o el host que queremos localizar. Esto es un ejemplo de tres peticiones distintas:

osm_map(‘meneame.net’);
osm_map(‘130.206.130.95’);
osm_map(‘sukiweb.net’);

Y esta es una imágen del resultado:
osm1

La función es realmente simple, se puede descargar de aquí:

Otros ejemplos de uso:

//Mapa de BolsaPHP (400×400)
osm_map(‘bolsaphp.sukiweb.net’, ‘400’, ‘400’);

//Mapa de la DNS de telefónica 195.235.113.3 con debug
osm_map(‘195.235.113.3’, ‘400’, ‘400’, TRUE);

¿Que os parece? ¿Simple verdad? Pasadme los enlaces si lo utilizais en algún sitio y evidentemente, sed libres de mejorar y optimizar el código. :)

Máquina Enigma

Ayer mi mujer, Neithan y yo nos reunimos con unos cuantos compañeros de profesión que hacía algún tiempo que no veíamos. Estas reuniones de informáticos suelen resultarme amenas y fructíferas, ya que siempre tienes algo que aprender de alguno, o como mínimo, divertirte un rato con las narraciones de las aventuras laborales de cada uno.

Hablamos del tema profesional, de niveles técnicos, entrevistas de trabajo y requisitos que se buscan en un nuevo empleado. Luego, una vez de vuelta, Mónica y yo seguimos hablando del tema, el hilo de la conversación nos llevo a la universidad, las clases universitarias y los profesores, los temas que se tocan en las distintas carreras…

La conversación dió para bastante y terminamos hablando de John Von Neumann, quién nos llevo a Alan Turing, el cual me llevo a recordar la máquina enigma.

Y como en la reunión de la tarde me había tomado un café y la lectura del detalle de como funcionaba la máquina enigma era tan interesante, no he podido evitar escribir mi propio código que simula el funcionamiento de la máquina para cifrar y descifrar mensajes de texto.

El código es muy sencillito y no tiene apenas complicación de uso, se puede ver y descargar además de probar una pequeña demo que lo utiliza:

He utilizado el modelo de tres rotores. Pero el código es sencillo si quieres añadirle alguno más. En el ejemplo los rotores tienen una variación muy simple. Para su utilización, recomiendo darle algo de complicación a los arrays de los rotores. ;)

Puedes utilizarlo para enviarte mensajes cifrados con tus amigos o incluso para intentar encontrar mensajes secretos dentro de los MD5 que se utilizan para firmar cada uno de los paquetes Debian. :P

Al final me han dado más de las seis de la mañana entretenido y divertido en la cama con el portátil, leyendo sobre la máquina y programando esta chorrada. Supongo que este tipo de cosas confirman mi nivel de frikismo. :P