El Bandcamp de la Quincena: MCC [Magna Carta Cartel] – The Demon King

Esta semana con El Bandcamp de la Quincena nos vamos a las frías tierras suecas, a hablar de una banda prometedora que desapareció durante un tiempo pero que ahora está de vuelta para alegría de muchos seguidores.

Hace unos meses Martin Persner acababa con el anonimato de los Ghost. Tras una salida que podríamos definir como “borrascosa” en verano de 2016, admitió públicamente haber sido durante siete años el guitarrista Ω y, ya de paso, desenmascaró a Tobias Forge como el Papa Emeritus (cosa que era un secreto a voces en el mundillo musical). Y también aprovechó para anunciar el regreso de estos Magna Carta Cartel, obviamente sin contar con Forge en la presente formación, presentar el single Sway y confirmar el lanzamiento de este EP titulado The Demon King.

Magna Carta Cartel habían nacido en 2006 y ya contaban con dos registros discográficos: el EP Valint Visions Dawn de 2008 y el LP Goodmorning Restrained, que sólo apareció en formato digital. La aparición de Ghost dejó el grupo en hiato durante 8 años y las tensiones y disputas tanto creativas como económicas lo han vuelto a sacar a flote. En mayo de 2017 finalmente veía la luz este EP formado por 5 temas.

MCC The Demon King

Algunos definen el sonido de MCC como indie pop, pero en este EP los derroteros se mueven más, creo, por el pop sinfónico y progresivo. Desde luego que si vas buscando un deje más metálico como el de Ghost no lo encontrarás. El arranque con el tema título The Demon King destila influencias de los Pink Floyd de los 80 por todos sus poros, Persner no oculta en ningún momento su devoción por David Gilmour y arranca con una canción que perfectamente podría haber sido cantada por Kate Bush. Sway, un tema antiguo que han regrabado con nueva letra, arranque con un rasgueo de guitarra y una línea vocal propia de los REM para dejar paso a una melancólica melodía de guitarra con marcado acento shoegaze.  Los temas se centran principalmente en la guitarra y los sintetizadores, encargados de crear tanto las melodías como las atmósferas, el bajo es prácticamente inexistente y la batería extremadamente sencilla, aunque los temas tampoco piden una más compleja. El tercer tema, Turn, es otra canción recuperada de las demos y modificada y, seguramente, sea el tema que más pueda recordarte a Ghost, con un riff un pelín más pesado que el del resto de composiciones, un sintetizador oscuramente ochentero y la batería más intensa del álbum. En Jennifer abrazan el folk al más puro estilo Lindisfane y acaban el EP con una instrumental, Mayfire, donde se hace más patente el halo de Mike Oldfield, una influencia que en todo caso impregna todo el disco. Tal vez sean las líneas vocales el punto débil del disco, faltando un gran cantante (lo que podría haber aportado Forge, pero era evidente que el horno para bollos no estaba).

En resumidas cuentas, el regreso de MCC con este The Demon King, publicado por Lövely Records (en cuyo catálogo está todo el material del grupo), nos ofrece pop elaborado al detalle, minimalista, con atmósferas delicada y melodías de guitarra compuestas con mimo. Un trabajo cortito pero donde cada minuto cuenta mucho para nuestro disfrute.

Anuncios

SQL-Server: Anti-Join con NOT EXISTS()

Habíamos visto dos técnicas para hacer un anti-join en SQL-Server sin recurrir al NOT IN(): la primera con un left join y comprobando qué campos vienen a nulo y la segunda con el operado EXCEPT. ¿Hay una tercera opción? Sí, la hay: NOT EXISTS(). Como recordaréis ya habíamos visto por aquí que EXISTS() es una función de SLQ-Server muy bien optimizada, y en este caso podemos usarla también.

Vamos a poner un ejemplo: Tenemos la tabla Oficinas y tenemos la tabla Empleados. Las oficinas tienen un campo IdOficina que las identifica, los empleados también tiene un campo IdOficina que nos dicen en qué oficina trabajan. Queremos sacar en una consulta qué oficinas no tienen empleado. Veamos la consulta:

Select 
  o.IdOficina
from 
  Oficinas o
where 
  NOT EXISTS 
    (Select * from Empleados e where e.IdOficina = o.IdOficina)

¿Cual de los tres métodos es mejor? La recomendación es que le pegues un ojo al plan de ejecución para que veas cual tiene un menor coste.

SQL-Server: Hacer un anti-join con EXCEPT

El otro día os comentaba cómo hacer un anti-join en SQL-Server (a decir verdad con un método que valdría para cualquier SGBD), pero me dejé fuera otra forma de hacerlo en SQL-Server: con el operador EXCEPT.

La definción de EXCEPT vendría a ser la siguiente: Devuelve los valores distintos de la consulta situada a la izquierda del operando EXCEPT que no se devuelven desde la consulta derecha.

Vamos con un ejemplo: Tenemos la tabla Productos y tenemos la tabla Ventas, y el campo IdProducto existe en ambas, siendo la clave primaria de la tabla Productos y figurando como clave externa en tabla Ventas. Entonces ¿Podemos con EXCEPT sacar los Id de todos los Productos que no existen en la tabla Ventas? Podemos. Tal que así:

Select IdProducto from Productos
EXCEPT
Select IdProducto from Ventas

Al igual que ocurren con el operador UNION, el operador EXCEPT nos obliga a tener las mismas columnas, con tipos de datos compatibles, en cada una de las consultas.

SQL: cómo hacer un ANTI JOIN

Te habrá pasado más de una vez: necesitas sacar todos los valores de la Tabla1 que no aparezcan en la Tabla2. Es decir, la operación opuesta a un INNER JOIN. En muchos casos vemos que hay quien usa un NOT IN() como solución:

Nota: Asumimos que las tablas están bien formadas y que la Tabla1 se relaciona con la Tabla2 por medio de una clave externa (en el ejemplo será el campo IdClaveExterna en Tabla2 que está relacionado con el campo id de Tabla1)

SELECT * FROM Tabla1 
WHERE Tabla1.id NOT IN (SELECT IdClaveExterna FROM Tabla2)

Y esto está mal. Muy mal. Porque el IN() tiene un rendimiento muy bajo, como hemos visto en el pasado, y su negación pues todavía ofrece uno peor. Entonces ¿cómo lo hacemos? No tenemos una unión que sea ANTI JOIN, pero lo podemos resolver de la siguiente forma ya que tenemos un campo Id en cada tabla para cada fila sirviendo como clave primaria:

SELECT * FROM Tabla1 
LEFT JOIN Tabla2 ON Tabla1.id = Tabla2.idClaveExterna
WHERE Tabla2.id IS NULL

De esta forma cogemos todos los valores de la Tabla1 unidos a la Tabla2 por la clave externa, pero descartando de la consulta aquellos valores que nos devuelvan nulo el valor de la clave primaria de la Tabla2.

El Bandcamp de la Quincena: The Wizards – Full Moon in Scorpio (26/11/2017)

Esta semana nos hacemos una escapadita a Euskadi para paladear uno de sus más deliciosos platos: una ración completa de buen heavy rock, cocinado al viejo estilo de los 70 y aliñado con un poco de épica.

Wizards gif

¿Habéis visto Wizards, de Ralph Bashki? Es una peli fantástica de animación de 1977 que nos sitúa en un mundo futuro post-nuclear donde los humanos supervivientes a la guerra se han convertido en mutantes degenerados, donde diversas criaturas fantásticas han surgido de las entrañas de la tierra para ocupar las regiones libres de radiación (sí, los creadores de Hora de Aventuras seguro que la vieron como diez o doce millones de veces) y donde los pueblos libres están amenazados por las ansias del poder totalitario. Un mundo donde la magia se da la mano con la tecnología militar pre-apocalíptica y donde se nos presenta el clásico relato de enfrentamiento entre fuerzas del bien y del mal.

¿A qué viene el párrafo de arriba? A que la música de estos chavalotes de Bilbao va muy en sintonía con las sensaciones que transmite esa película. En la música de The Wizards podríamos usar muchas etiquetas: hard rock, heavy metal, doom metal, epic doom, proto-metal, metal setentero, stoner, occult rock... y podría darte una idea aproximada, pero no puedes prejuzgarlos en base a rígidos etiquetados. Ellos tienen momentos en los que rinden pleitesía a la oscuridad de Black Sabbath y Pentagram, tienen otros donde se acercan más al rock de Blue Oyster Cult, los primeros Kiss o Thin Lizzy, y por momentos las líneas vocales nos acercan a los primeros trabajos de Danzig o a Ian Atsbury de los esenciales The Cult. Un sonido pesado, épico y setentero que les emparentaría directamente con bandas contemporáneas como Orchid y The Sword.

Full Moon in Scorpio

Este Full Moon in Scorpio es el segundo larga duración de The Wizards y salió hace unos meses al mercado, a principios del verano, aunque se comenzó a grabar en abril de 2016 en los euskaldunes estudios Gaua y se ha masterizado en los estudios de Jessie Cannon en New Jersey. Han contado con la producción y los arreglos de Dean Rispler, que también toca la guitarra en un tema, y para el artwork no se la han jugado y han apostado por una garantía de trabajo profesional como es Branca Studio.

El disco se abre con dos cañonazos hardrockeros setenteros como Avidya y Calliope (Cosmic Revelations), un tema donde la voz nos lleva a una versión metalizada del Sonic Temple. Con Odinist cambian de tercio y se van a unos terrenos más heavies entre Cirith Ungol y la NWOBHM, un sonido que también muestran en Who are you, Mr Gurdjieff?. Stardust por su parte se muestra como un tema de cadencia pesada, una composición larga y épica que, junto con la final When we were gods nos muestra  claramente la influencia del primer Danzig sobre esta banda, mientras temas como Leaving the past behind (en el que cuentan con la colaboración de toda una leyenda como Ross The Boss) o Halftones to Eternity  encajan más en la onda del primer proto-doom setentero.

Un disco muy completo Full Moon in Scorpio, redondo, muy bien elaborado y finalizado. Un trabajo que guiña el ojo a ese olde 70’s heavy metal pero sin caer en la copia ni en lo repetitivo. Entre tanta banda que ahora pretende mostrarse como “auténtica” y “con raíces” estos The Wizards son una deliciosa píldora de realidad.

Modificar los atributos data de HTML5 con jQuery

Si en una entrada anterior vimos cómo leer los atributos data de HTML5 con jQuery hoy vamos a ver el otro caso: modificar dichos atributos.

El ejemplo va a ser el mismo que en el anterior artículo:

<div id='fruta' data-fruta='fresa'></div>

Ok, tenemos un div con el id fruta, el atributo data-fruta y en principio el valor fresa. ¿Cómo lo modifico haciendo uso de jQuery? Pues de nuevo con el método data(), pero en este caso pasándole dos parámetros en lugar de uno:

$("#fruta").data("fruta","pera");
window.alert($("#fruta").data("fruta"));

Si el método data() recibe solo el nombre del atributo al que queremos acceder nos lo devuelve, pero si recibe como segundo atributo una cadena entonces modifica el valor del atributo asignándole el de ese segundo parámetro que le pasamos.

Y voy a repetir exactamente el mismo párrafo que en el artículo anterior sobre la nomenclatura (para que no tengas que abrirlo): Fíjate que cuando le paso el nombre del atributo lo hago quitándole el prefijo data-. Y hay otra peculiaridad: si el nombre tiene varios guiones entonces estos desaparecen y escribimos el atributo siguiendo la convención camelCase.

<div id='fruta' data-fruta-oferta='pera'></div>
<script type="javascript">
$("#fruta").data("frutaOferta","fresa");
window.alert($("#fruta").data("frutaOferta"));
</script>

X11 forwarding sobre ssh

Llevo tanto tiempo lidiando con servidores Windows que se me empiezan a anquilosar las habilidades linuxeras más allá de lo que viene a ser el día a día. Creo que necesito preparar el LPIC aunque sólo sea para mantenerme en forma. El caso, que hoy tenía que ejecutar remotamente una aplicación con entorno gráfico de un servidor Linux y tuve que ir a ojear los viejos apuntes de sistemas operativos que guardo en una carpeta en la nube con manuales de todo tipo. Seguro que hay mil entradas por ahí pero yo os lo cuento igual:

Paso 1: Habilitamos el X11 forwarding en el servidor. ¿Cómo? Editando el fichero /etc/ssh/ssh_config y buscando allí la línea que pone X11Forwarding  para ponerle el valor en YES. Y tras esto reiniciamos el demonio de SSH.

Paso 2: nos conectamos mediante ssh pasando el parámetro -X:

ssh -X usuario@nombreEquipo

Y luego ya ejecutamos el programa en cuestión.

Si el cableado o la conexión es malo puede que te interese usar la opción que comprime los datos que te enviará el servidor. Carga más trabajo en la memoria del servidor y del cliente, pero reduce el tamaño del tráfico de red:

ssh -X -C usuario@nombreEquipo