El detalle maligno de WebClient

Que el diablo está en los detalles es algo que, tarde o temprano, terminas aprendiendo por las buenas o por las malas. Por suerte esta vez traigo un caso de los primeros, donde, tirando un poco del hilo, pude llegar a buen puerto sin arrancarme un solo pelo de desesperación. Os pongo en situación: un día cualquiera resulta que tienes a un grupo de usuarios que pueden seguir operando sin problemas cierto software que se conecta a un servicio online a través de una API REST, y otro grupo de usuarios que, utilizando la misma versión del software, no pueden tan siquiera autenticarse.

Piensas que, a lo mejor, ha cambiado algún endpoint en la API por el motivo que sea para este grupo (son usuarios nuevos, el servicio les ha dado una dirección diferente para introducir en la configuración…), y que a ello se deben los problemas de conexión. Extraño, pero entra en el abanico de posibilidades. Así que, antes de dar vueltas como un loco, intentas reproducir el problema. Te creas una cuenta de pruebas, enchufas el depurador, y a ver qué sucede.

Sigue leyendo

Jugando con el Big Red Button

Durante los últimos meses ha estado rondando por la oficina un Big Red Button, un producto que vende DreamCheeky. Un botón USB con una caja protectora que recuerda mucho a los que se pueden ver en las películas de acción. El jefe –normalmente alguna especie de General en el Gobierno estadounidense- sopesa todas sus opciones mientras se seca el sudor de la frente, y, viéndose encerrado, le dice a su subordinado en un tono ceremonial “Está bien, hazlo”. Este, entonces, después de intentar tragar saliva, levanta lentamente la tapa del botón, lo pulsa, y cierra la tapa de nuevo, con la sensación de que el último puente ha sido quemado con ese sencillo acto. De que la opinión pública no les perdonará sus crímenes, pero ellos sabían que no quedaba otra solución.

big-red-button

Ilustración 1, Big Red Button

El caso es que cuando tienes a mano un botón con un aspecto tan peligroso, lo programas para que haga cosas peligrosas. Bueno, todo lo peligrosas que se pueden hacer sin romper nada. Nada importante, al menos.

Sigue leyendo

Traduciendo morse con Prolog

Ayer estaba tumbado en la cama pensando en nimiedades (qué nos depara el futuro, cuál es el sentido de la vida, a qué huele un Cloud Computing…) cuando pensé lo mucho que molaría aprender morse. Así que saqué una cheatsheet del lenguaje y me interrogué, ¿cuál puede ser la forma más fácil de aprender? Está claro que siguiendo el orden alfabético no. Una A es un punto y una raya, mientras que una E es solo un punto, y dos puntos hacen una I, y… No, no es la forma más fácil. En un primer momento pensé que representar el lenguaje en una especie de autómata que cambiase de estado con puntos, rayas y tiempos haría un buen mapa que poder aprender por secciones. Pero, por supuesto, hay una forma más fácil. Si únicamente tenemos en cuenta los puntos y los espacios para cambia el autómata de estado, ¿qué tenemos? Un árbol binario. Así que tras una breve búsqueda, resulta que sí, que morse se puede representar como un árbol binario bastante bien equilibrado.

Figura 1: la codificación morse como árbol binario

Figura 1: la codificación morse como árbol binario

¿Y en qué lenguaje de programación es muy sencillo representar árboles? Efectivamente, Prolog. Mediante el predicado transition(Origin, Character, Destination) representamos las transiciones dentro del árbol. Por ejemplo, transition(start, ‘.’, e) o transition(e, ‘-‘, a). Si introducimos una secuencia morse mal codificada, en algún momento se caerá en una transición que no esté entre los hechos y el predicado no unificará, por lo que la traducción sencillamente fallará sin tener que preocuparnos más del resto.

Sigue leyendo