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.

Anuncios

SQL-Server: Rendimiento de los operadores en el WHERE

Un tip rápido sobre SQL-Server. De cara a mejorar el rendimiento de las queries es importante considerar qué operadores dentro del WHERE tienen mejor rendimiento:

  • La mejor respuesta siempre la conseguiremos usando el operador =
  • Después vendrían los operadores >, >=, <, <=
  • Tras esos estaría el LIKE
  • Finalmente tendríamos con el peor rendimiento el <> o los operadores !=, !>,!< que no forman parte de la especificación de TSQL.

Por eso recuerda que es importante construir las consultas de forma correcta para usarlos de la forma más optimizada posible.

 

Acceder a los atributos data de HTML5 desde javascript

Si eres lector habitual de este blog recordarás que no hace mucho vimos cómo hacer esto con jQuery. Vamos ahora a ver cómo hacerlo con javascript a pelo, sin tirar de esas librerías. Repitamos los mismos ejemplos pero sólo con javascript:

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

En el div con Idfruta” vamos a guardar un dato: que es una fresa (mismo ejemplo que en artículo anterior). ¿Cómo accedo a este valor usando javascript?

//opción A. A lo bruto
//funciona, pero no es elegante
window.alert(document.getElementById("fruta").getAttribute('data-fruta'));
//opción B. La buena
window.alert(document.getElementById("fruta").dataset.fruta);

Ahí tienes dos ejemplos en los que hacemos un alert() de los datos guardados en el atributo data. El primero, usando getAttribute(), en teoría es la opción “bruta” ya que en principio debería accederse a estos datos como en el segundo ejemplo, que se supone que sería el método correcto. El problema es que el acceso a dataset no está bien implementado en todos los navegadores, así que la opción de usar getAttribute() hoy por hoy, aunque no sea la correcta en la teoría, es la funcional.

¿Y cómo queda el tema de los guiones que habíamos visto en el ejemplo en jQuery? Bueno. Si usamos getAttribute() ponemos el nombre del atributo tal cual, si usamos dataset hacemos como en jQuery y quitamos los guiones (y el prefijo data) usando también notación camelCase:

<div id='fruta' data-fruta-oferta='pera'></div>
<script type="javascript">
//con getAttribtue
window.alert(document.getElementById("fruta").getAttribute("data-fruta-oferta"));
//mediante dataset
window.alert(document.getElementById("fruta").dataset.frutaOferta);
</script>

El Bandcamp de la Quincena: Xan Campos – ESD (15/10/2017)

Esta semana en El Bandcamp de la Quincena no volamos muy lejos, nos quedamos en Galicia con un disco complejo y tremendamente elaborado.

Xan Campos es un pianista nacido hace treinta años en Cangas, de formación académica como pianista clásico y de jazz y de sobrada y contrastada reputación en el mundo jazzero. A pesar de su juventud cuenta ya con una buena serie de álbumes publicados.Xan Campos

Pero en este disco, ESD, no vamos a encontrarnos a ese músico de jazz más clásico, pues aquí nos ofrece un trabajo más rockero, un rock instrumental complejo, progresivo, sinfónico y con influencias de su estilo jazzero, pero un disco de rock a fin de cuentas. Tenemos dos formaciones para el disco que, además, definen dos tipos de temas: hay tres temas grabados por Xan Campos y los guitarristas Virxilio da Silvia y Yoel Molina que se dejan llevar por ramas más atmosféricas y psicodélicas, con mucho improvisación y a veces adentrándose en sonoridades de eso que algunos llaman post-rock. Los otros seis temas están firmados grabados por los antes citados Xan y Virxilio, junto al guitarrista Wilfried Wilde y el batería Iago Fernández. En esos temas el sonido se mueve por unos derroteros más rockeros y sinfónicos clásicos, con la influencia de gente como Yes, Gentle Giant, los primeros Genesis o Emerson, Lake and Palmer más que presente en sus composiciones, con algún deje por momentos a Return to Forever o a los proyectos de Jan Hammer junto a guitarristas como Jeff Beck, Neil Schon o Steve Lukather.

Este ESD ya tiene un tiempo, se grabó a finales de 2015 y se publicó en diciembre de 2016, pero reconozco que no fue hasta este verano que pude disfrutar de su directo en el festival Feito a Man cuando les descubrí y pude disfrutar de su música.

Un disco variado, experimental, que se mueve entre lo progresivo clásico de los 70 y las tendencias avant-garde. Una pequeña joya, un regalo para los oídos y a su vez un disco que cuesta algo de “trabajo“, que no entra fácil pero que cuando lo hace se disfruta como una inyección de lujuria para los oídos.

¿Cómo hacer que sudo te insulte cuando te equivocas con el password?

Vamos con una entrada de sistemas completamente inútil. Sí, porque como humanos nos divierten las cosas inútiles pero chocantes. También puede valer como troleo de oficina, si gustáis: Hacer que sudo insulte al usuario cuando se equivoque introduciendo su password. Esto en principio funciona en los sistemas basados en Ubuntu, posteriores a Ubuntu 12.04 y que tengan sudo 1.8.3 instalado.

La cuestión es que tenéis que editar el fichero /etc/sudoers y buscar la línea que pone:

Defaults                env_reset

Y cambiáis esa línea por:

Defaults env_reset,insults

Tras eso, si queréis comprobar su funcionamiento, invocáis una instrucción con sudo y ponéis mal la contraseña. Recibiréis respuestas tan ingeniosas como: It can only be attributed to human error, Ying Tong Iddle I Po, Take a stress pill and think things over, He has fallen in the water, Have a gorilla…,The more you drive — the dumber you get, … and it used to be so popular… o BOB says: You seem to have forgotten your passwd, enter another!

Como ya dije, inútil pero divertido.

El Bandcamp de la quincena: Lâmina – Lilith (26/07/2017)

Otra vez llega tarde El Bandcamp de la Quincena, pero otra vez llega también cargado de calidad y con un disco recientito del todo.

Nos volvemos a Portugal esta semana, ya sabéis que en este blog nos encanta cruzar el Miño en dirección sur, para traer un disco largamente esperado… al menos por mi, que desde que vi a este banda en 2015 estaba esperando por una entrega en estudio de su música. Y es que Lâmina no se habían prodigado mucho en grabaciones, desde su nacimiento en 2013 y hasta este trabajo apenas había dos temas subidos a youtube, grabados en directo en su local de ensayo. Esos dos temas, Cold Blood y Big Black Angel, son los que abren ahora este Lilith.

Lâmina Lilith

Se han hecho esperar y han cocinado a fuego lento este disco debut, pero el resultado no podría haber sido más óptimo: siete piezas de contundente stoner doom, una ración de buen y sólido metal edificado sobre riffs a doble guitarra llenos de distorsión y wahwahs de alma psicodélica. La labor de frontman recae sobre Vasco Duarte, vocalista y guitarrista, aunque en sus directos es imposible no fijarse en la batería Catarina, aka Katari, una percusionista que no sólo empuja los temas con su contundente pegada sino que también aporta una dosis importante de carisma y presencia. Felipe Homem Fonseca completa la base rítmica con su bajo y Sérgio Costa se ocupa de la guitarra gemela que les da ese punto de fuerza.

Aunque su sonido bebe del rock duro de los 70, y los teclados añadidos al disco refuerzan esa influéncia, Lâmina tienen unos riffs y estructuras más metaleros que la mayoría de bandas de palo retro, valgan como ejemplo los riffs de los dos primeros temas antes citados o el de Education for Death. Tampoco temen lanzarse a largos desarrollos de temas complejos, presentando un tema de influencias indo-orientales y de más de 20 minutos como Maze o cerrando el disco con In the Warmth of Lilith, una canción de 9 minutos que han convertido en uno de los singles del álbum.  En total 7 temas para este LP.

 

Lilith es un gran disco debut para unos Lâmina que no han tenido prisa y han logrado grabar un trabajo excelso de calidad y sobrado de frescura. Una buena dosis de stoner doom pesado y metalero desde las orillas del Tajo.

Contar las palabras de un documento de Google Docs

Ok, os debo una crítica de un disco de este finde todavía… lo se. Pero mientras, minientrada ¿cómo se cuentan las palabras en un documento de Google Docs?

Navegador del ordenador:

  • Pulsa en Herramientas en el menú superior del documento
  • Pulsa en la opción Contar Palabras
  • También puedes pulsar Ctrl+Shift+C

App de Android o App de iOS:

  • Despliega las opciones del menú pulsando el icono de los tres puntos de la parte superior
  • Selecciona la opción Recuento de Palabras

Si no tienes texto seleccionado dará la cuenta de palabras de todo el documento, en caso contrario hará la de la selección.