Consultas MySQL con muchos JOINs

A veces uso MySQL por elección. No por mi elección, sino por la de los clientes. 🙂

Una de las cosas que más me ha roto la cabeza es optimizar queries con muchos JOINs. Recientemente, un informe requería una consulta con 25 JOINs, y al tratar de ejecutarla nuestro servidor prácticamente lloraba que por favor parásemos. Sin embargo, me he topado (al decir verdad, fue mi jefe) con una variable de configuración muy interesante a la hora de encarar este problema.

Continuar leyendo «Consultas MySQL con muchos JOINs»

Emuladores 101

La emulación es una técnica muy usada en informática para poder dar soporte a software antiguo. Básicamente consiste en hacer que un sistema informático sea capaz de imitar a otro, normalmente con el fin de hacerlo compatible con el software de éste. Esta técnica puede implementarse tanto por software como por hardware, y de hecho puede usarse para imitar el comportamiento de ambos. Trataré en este artículo de dar una visión de los fundamentos de este fenómeno.

El ejemplo práctico más común de emulador sería un programa que se ejecuta en nuestro ordenador que permite utilizar software de un sistema antiguo. Tómese como ejemplo un emulador de Master System para ordenadores con Windows. Consistiría, pues, en un programa que se ejecutaría en nuestra máquina, ejecutaría un programa diseñado para esta consola, volcado en un fichero en nuestro PC. Mediante un mapeo de controles (por ejemplo, asignar los cursores de nuestro teclado al control direccional del mando de la consola) controlaríamos el funcionamiento de la misma. Es decir, podemos jugar al Alex Kidd in Miracle World (1986) en Windows.

Alex Kidd en Wakalabis
Alex Kidd en Wakalabis, un emulador conocido por su creador.

Continuar leyendo «Emuladores 101»

Blue Monday and the mother who gave birth to it

Según los tontólogos de toda España, hoy es el lunes azul, blue monday. Estos científicos de la gilipollez han desarrollado una fórmula des-matemática que relaciona los días de vacaciones, la posición del día del año y otras variables sin sentido para dar con el día más triste del año. Hoy es precisamente ese día.

Por supuesto, esto carece de toda validez científica, y el lunes azul es otro de esos memes que se propagan por el Caralibro a golpe de botón «compartir» que nos indican la capacidad cognitiva de nuestros congéneres. No obstante, sí que merece la pena aprovechar el día para rendir homenaje al éxito de New Order del mismo nombre.

A menudo se ha citado este tema como fundamental para la transición del sonido disco de los ’70 y el techno británico de los ’80. Su archiconocido inicio es uno de esos accidentes felices que a veces ocurren en la música, y su seña de identidad. Los que quieran hacer caso a supercherías, entristézcanse. Los que no, disfruten de esta melodía de Bernard Sumner.

Webcrawler java Hoverkraft

He estado trasteando una forma de simular un navegador en Java. Hasta ahora he usado JMeter, que es tremendamente potente, configurable y para pruebas de carga es imprescindible. No obstante hay dos detalles que no me convencen: a veces uno quiere algo programático en lugar de declarativo, y segundo el JMeter es durillo de entender y configurar. Además, no siempre es necesario tener métricas exóticas o peticiones de Ajax, a veces sólo queremos acceder a algún servicio web o analizar una web para bajar ficheros o automatizar tareas.

Aunque hay un montón de soluciones disponibles, me he propuesto hacer un pequeño simulador de navegador (un webcrawler) en Java, que permita fácilmente y de forma sencilla implementar tareas. Le he puesto a la criatura Hoverkraft. Dejo por aquí el código fuente.

Continuar leyendo «Webcrawler java Hoverkraft»

Converter JSF para SelectOneMenu

La principal característica de JSF (o, al menos, la que más me gusta) es la facilidad para enlazar atributos del bean controlador desde la vista xhtml. No obstante existe una limitación importante: en el estándar HTTP las claves y valores siempre serán cadenas porque así es como se transmiten. Sí, se puede serializar el objeto en base64, pero en casi cualquier circunstancia se debe huir de una salvajada así.

¿Cómo hacer, pues, que el valor de un control se enlace directamente con un objeto? Pues JSF provee para ello los converters. Bueno, permite que tú los programes, claro. Tampoco PrimeFaces, que es mi librería de componentes de eleción, incluye estos conversores. Así pues, he programado uno pequeño para los SelectOneMenu, los menús desplegables asemejables a comboboxes. Lo dejo aquí para referencia mía y por si puede servirle de algo a alguien.

Continuar leyendo «Converter JSF para SelectOneMenu»

Hideo Kojima y David Bowie

Cada vez que alguien famoso la espicha (máxime si se trata de alguien de la farándula o la música), pasa que Internet se vuelca con él, a pesar de que mucha gente jamás ha oído ni una canción suya. Pasó con B.B. King hace relativamente poco, y ahora pasa con alguien que considero uno de los grandes: David Bowie. Tras esta declaración, no soy menos que todos ellos. No soy el mayor fan, pero sí que conocía sus canciones más famosas.

Con la obra que sí estoy familiarizado es con la de Hideo Kojima, en concreto con Metal Gear. El productor, recién mandado a la Venta del Nabo, siempre ha sido un fan incondicional del colorido artista, y mostró su consternación tras el fallecimiento de Bowie. Pero entrando ya en el detalle, Kojima dedicó un montón de homenajes al artista, sobre todo en los últimos capítulos de la saga. ADVERTENCIA, SPOILERS: Los siguientes párrafos desvelan detalles de la trama de Metal Gear.

major zero Continuar leyendo «Hideo Kojima y David Bowie»

La mayor navaja suiza del mundo

Así se anuncia esta navaja suiza Wenger. No es para menos, sólo hay que echarle un ojo para darse uno cuenta que está ante un artilugio realmente notable.

supernavaja suiza

Pese a que parece algún artículo de broma, al parecer se trata de un caro artículo de exposición dirigido a profesionales que quieran adquirir navajas personalizadas con alguno de sus elementos. En tamaño normal, por supuesto. No obstante, lo mejor son los comentarios en Amazon de este increíble utensilio. Veamos algunos. Continuar leyendo «La mayor navaja suiza del mundo»

Los mejores GIFs de Internet, según Reddit

Algunos de los hilos más populares de Reddit son los que piden tu X favorito. En este caso, los GIFs favoritos del personal. He recopilado unos cuantos para disfrute del visitante, sin ningún orden en particular. También otros que, sin ser de hilos recopilatorios, me han parecido graciosos.

Continuar leyendo «Los mejores GIFs de Internet, según Reddit»

Juegos retro bien entendidos

La nostalgia vende, y mucho. Los videojuegos, al ser un arte relativamente joven, no había experimentado o necesitado de la nostalgia. Sobre todo teniendo en cuenta que comenzó como un pasatiempo para niños y habiendo sido una industria errática, que tuvo que ser reconstruida en 1983. Por supuesto, más de 25 años después, la cosa cambia.

Hay dos formas fundamentales, pienso, de explotar la nostalgia en los videojuegos. La primera es, por supuesto, realizar remakes y reediciones a cascoporrillo. Con una base de admiradores bien asentada, sacar un remake bien hecho es un negocio relativamente seguro. Tómese por ejemplo el Final Fantasy VII, con unos seguidores muy fieles que esperan con ansia revivir dicha aventura. Todo apunta de que va a ser un churro, pero igualmente va a vender como īdem. No voy a entrar a valorar este tema, sino la que considero que es, precisamente, la segunda forma de entrar al trapo de la nostalgia: los juegos «retro». Continuar leyendo «Juegos retro bien entendidos»