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

Hablemos de serialización

Gracias a $root, normalmente no hay una única forma de afrontar una tarea. Eso ya lo hemos visto aquí, en posts tales como La taza de café de la vergüenza o Tres funciones de pertenencia (la fea, la guapa y la estúpida). El objetivo primordial suele ser buscar la opción que sea más sencilla de entender, o aquella que sea más mantenible (aunque normalmente sencillez y mantenibilidad van de la mano). Sin embargo, en algunas ocasiones, la solución que ha de primar por encima de todas las demás es la eficiente.

Ilustración 1, un fragmento del algoritmo de compresión LZ4

Ilustración 1, un fragmento del algoritmo de compresión LZ4

Hay escenarios en los que no podemos entregar velocidad de ejecución o tamaño en memoria a cambio de legibilidad. Un ejemplo de ello que me encanta son los algoritmos de compresión con aritmética de punteros. Que me aspen si los puedes entender al vuelo, pero seguro que funcionan a las mil maravillas.

Sigue leyendo