25.10.06

Semáforos distribuidos con MySQL


Es común tener varios procesos que trabajan sobre un mismo recurso pero que no deben interferir uno con otro. En un solo procesador se resuelve facilmente (con los llamados locks o semáforos). Hacerlo en forma distribuida, cuando los procesos están en distintas CPUs es mas complicado. Con MySQL podemos implementar semáforos distribuidos de una forma extremadamente simple y que funciona en un solo servidor o en muchos.
Pongamos un ejemplo: tengo dos programas A y B. A quiere actualizar un stock sumandole 10 unidades y el B quiere dar de baja 3 unidades. El stock original es 100. Si A lee la cantidad 100, luego el B lee la misma cantidad antes de que A grabe 110 en la base de datos. Entonces A graba 110, pero B hace 100-3=97 y graba 97. Tendríamos que implementar algo que evite que B lea el stock antes de que A termine su operación (y no voy a hablar de transacciones, este es un ejemplo para ilustrar semáforos!).
Con las funciones de MySQL get_lock() y release_lock() podemos evitar estos conflictos.
Si A ejecuta algo como select get_lock('tocarstocks', 30) le va a devolver un 1 si el servidor le "otorga el lock". Cuando termina de trabajar tienen que hacer un select release_lock('tocarstocks').
Cuando B quiera tocar un stock tiene que ejecutar el mismo get_lock(). Si devuelve 1 significa que A no está ejecutando el código entre el get_lock() y el release_lock(), asi que es seguro modificar datos. Si A todavia no hizo el realease_lock() entonces B va a quedar bloqueado hasta que lo haga, o hasta que se supere el timeout (el 30 que pusimos como ejemplo). En este caso el select le va a devolver 0 (cero) y debe volver a intentar el get_lock o darse por vencido.

Lo interesante de esto es que funciona en una sola CPU, pero tambien cuando tenemos distintos procesos en distintos servidores y todos trabajando sobre la misma base de datos.

17.10.06

Nerd Spanglish: shhhiga, faiton, jíder!

¿Quien inventa estas pronunciaciones?
Shiga
(por Giga): O giga (como se escribe) o guiga si quieren ser mas american, pero shiga es un invento!

Faiton (por Python): "Páiton" está bien, o como dice Miguel : pitón

Jíder (
header): Creo que se remonta a un viejo profesor de ingeniería que pasó por FIUBA, ITBA y CAECE en las últimas décadas. Suficiente para desparramar la infección... No es tan difícil: header es encabezado, viene de cabeza, head, que se dice "jed", o sea, header se dice "jéder".

sáimantec (Symantec): una pavada, pero es simántec.

¿Alguna mas?

5.10.06

Blogger en Expocomm

Como será Expocomm de este año para que lo mas detacado sea queso y vino
Unos cuantos bloggers están cubriendo el evento, entre otros Alternaria y El Pelotero

4.10.06

Que access points Linksys funcionan con OpenWRT

La gente del stand de Linksys en Expocomm tuvo la amabilidad de explicarme qué modelo actual de access point permite instalar OpenWRT (un Linux completo).
El modelo actual (version 5) del WRT54G ya no permite que uno reemplaze el sistema operativo de fábrica por OpenWRT, pero como la demanda es grande sacaron el WRT54GL (será de Linux?), que si lo permite.

La diferencia de precio son 10 o 15 dólares.

Expocomm 2006

Estoy en la Expocomm de este año. La mayoría de las empresas son proveedores de hard de comunicaciones (antenas, cables, celulares), servicios y mucha telefonía.

Se dividen entre grandes empresas de telefonía o comunicaciones, como Telefónica, Arnet, Personal o Nextel, y pequeños stands de PYMES proveedoras de hard. Tampoco faltan los stands de prensa.

Que bueno sería tener una expo donde uno pueda ver stands de IBM, Microsoft, Oracle (creo que el año pasado estaba), Apple y tambien las empresas nacionales.

Algunos stands de empresas chicas se olvidan de poner algo fundamental. Mas allá de que tengan o no presupuesto o productos para impresionar a los visitantes, deberían tener un cartel que diga claramente qué hacen. Todos ponen carteles con el nombre de la empresa, despues un escritorio y unos folletos, pero en ningún lado dicen claramente a que se dedican. Sería mucho mejor tanto para visitantes como para expositores.

Lo que es deprimente es que no haya un enlace wifi como la gente para los visitantes. Hay unas cuantas redes, pero o son privadas con clave o no funcionan. En el stand de Arnet no solo no saben por qué no anda la red "Arnet WLAN" sino que ellos mismos tenian máquinas sin conexión.

2.10.06

Google Reader - reloaded

Cuando salió Google Reader lo probé y me pareció realmente malo. Parecía que habían querido inventar una nueva forma de leer noticias. El principal problema era que en vez de mostrar un arbol con los distintos feeds y marcar cuales tenían nuevas noticias para que uno pueda decidir que leer, el google reader original mostraba noticias en orden cronológico. Como si a uno le diera lo mismo leer el único post de la semana de un blogger que las 200 noticias que publica clarin por día.

La buena noticia fue que google relanzó Google Reader(en inglés), con una interface que ahora si lo posiciona como el Gmail de los lectores RSS. Release Early, Release Often...

Es EXCELENTE. Mejor que Sage, mejor que Bloglines.
Como un plus, el simbolo de "cargando" de Google Labs es una probeta con burbujas, muy simpático.