Grand Magus – Wolf’s Return

Puede sonar arriesgado decir que Grand Magus es la mejor banda de heavy metal de la última década (2002-2012), pero si a los discos me remito es complicado competir con ellos. En 10 años han sacado media docena de discos, desde el inicial Grand Magus de 2002 hasta su último The Hunt de 2012, y mostrando una evolución desde un doom épico a lo Candlemass trufado con algún deje más stoner inspirado por Spiritual Beggars (donde su vocalista JB había militado varios años, y todavía lo hacía en aquel tiempo) hasta su sonido actual, con un deje más NWOBHM, con riffs que podrían haber salido de las mentes de unos Saxon o Judas Priest, pero a su vez con una producción más contemporánea.

Realmente me costó bastante elegir un disco para comentar aquí, dado que la mayoría son grandes trabajos muy disfrutables. Pero puestos a elegir me quedaré con Wolf’s Return, el que fue su tercer disco allá por 2005. Porque suele decirse que el tercero es el disco que confirma a una banda como tal, y en este caso todo lo apuntado en los dos primeros se confirmó. El disco se abre con el riff poderoso y más stoner de Kinslayer mientras la línea vocal nos reporta a un heavy metal más épico acompañada de un doble bombo poderoso. Da paso al riff a lo Candlemass de Nine donde casi te esperas escuchar a Messiah Marcolin, hasta que la voz de JB, más grave y profunda, desgrana lastimosamente la letra y nos transporta a un impresionante solo muy rockero. A estas alturas ya te han atrapado en su red, donde el stoner, el doom y el heavy metal se dan la mano. Blodörn es el primero de tres cortos temas instrumentales que sirven de medio intro/puente entre temas (¿claro guiño al Nightfall de los Candlemass?) y que da paso a Wolf’s Return (part I), una pieza más melódica que las tres anteriores y que juega a mezclar riffs oscuros con estrofas épicas. Blood Oath arranca con un riff 100% heavy metal clásico, casi podría parecer un tema de los Black Sabbath de Dio o hasta recordar a alguna cosa de los Judas Priest setenteros. Järnbornd, con toques de folk vikingo, es otra de las cortas instrumentales/interludio, que llega seguida por Replay in Kind, cuyo vertiginoso e hipnótico riff nos devuelve a la onda Candlemass jugando con melodías muy tensas y un doble bombo omnipresente. Hämnd es la tercera instrumental, comenzando con un bajo cargado de distorsión para dar entrada al resto de instrumentos dando paso a un pesadísimo riff que crea el ambiente para dar entrada a Ashes, con un riff 100% Black Sabbath clásicos que va derivando hacia fragmentos más épicos. Light Hater, penúltima pieza, nos presenta un tema oscuro, stoneriano y con dejes más atmosféricos que se torna poderoso en el estribillo pero que se hace un pelín lineal. Como cierre un outro pomposo pero pesado como Wolf’s Return Part II.

Un disco redondo dentro de una de las discografías más sólidas del siglo XXI. Discazo y grupazo, con la habilidad que pocos tienen de sonar clásicos sin dejar de ser frescos y contemporáneos.

La función IF de MySQL

En el SGBD MySQL existe una función bastante útil llamada IF. Obviamente no estoy hablando de una sentencia condicional if para el control de flujo como las que que tenemos en cualquier lenguaje de programación (Visual Basic, C, Java, PHP… y que en MySQL también existe), sino de una función que recibe tres argumentos: una condición a evaluar, un valor a devolver si se cumple y un valor a devolver si no.

Veámoslo ilustrado con el siguiente ejemplo. Tenemos una lista de productos con sus respectivos precios, y nos interesa saber simplemente si el precio es mayor de 60 euros, para separarlos así entre «caros» y «baratos». Aunque podríamos hacerlo con una par de consultas unidas imprimiendo una cadena, ahorraremos código haciéndolo de la siguiente forma:

Select IdProducto, NompreProducto, if(Precio>=60, 'caro','barato')
from tbArtículos

Incluso podemos usar la función IF con funciones de agregado, combinando. En el siguiente ejemplo supongamos que, con la misma tabla de productos, queremos saber si los proveedores nos sirven sólo un producto o si nos sirven más de uno, no nos importa la cantidad, sólo discriminaremos entre uno y más de uno.

Select Proveedor, if(count(*)>1, 'Más de uno','Sólo uno')
from Productos group by Proveedor

La idea es que la función evalúa si el primer parámetro recibido es verdadero y distinto de nulo, y en base a eso devuelve uno de los dos valores, el primero para TRUE y el segundo para FALSE.

Por cierto, la función IF también existe en el fork libre de MySQL MaríaDB, como otras muchas funciones del popular gestor de bases de datos. No está mal recordarlo, por si algún día Oracle se encabrona y nos deja tirados, ya que puede que algún día MaríaDB sea la mejor opción.

Gualberto – A la vida, al dolor

Dado que hoy los Alaplanch se ha han separado es momento para rendir homenaje a un clásico de la música española… Gualberto (¿estabas pensando que hablaría de un disco de Avalanch? jajajajajaja, pringao…).

A finales de los 60 Gualberto ya logró una cierta repercusión siendo guitarrista de los pioneros del rock andaluz Smash. Tras eso marchó a estudiar música a los EEUU, regresando a España en 1975, mejorado como guitarrista y además como consumado compositor y sitarista, para sacar este primer disco en solitario. Con una banda formada por músicos españoles y estadounidenses el disco se divide en dos partes (cada una de las caras del vinilo): La cara A, A la vida, y la cara B, Al Dolor.

La mitad A la vida está formada por temas en inglés, con un sonido similar a los temas más comerciales de Emerson, Lake and Palmer pero con un mayor colorido dado que a la formación de guitarra y batería se suman instrumentos como el sitar, la flauta o el violín, que añaden más riqueza a la composición. El rock progresivo se toca con el flamenco y la música hindú en unas magníficas composiciones que conforman una cara muy homogénea, donde el vocalista Tod Purcell acapara todas las voces. De hecho los tres primeros temas Canción de la primavera, Canción del agua y Canción de la nieve están construídos sobre una melodía muy similar, y podrían ser escuchados como una sola canción dividida en tres partes. Con Canción del arcoiris sigue esa tónica acústica, pero incidiendo más en lo hindú, y Canción de las gaviotas es una pieza impresionante, donde el violín crea una delicada atmósfera que acabará dando paso a una orgía de psicodelia y paranoia.

Por su parte Al dolor nos lleva a un sonido menos homogéneo, con temas muy diferentes entre sí, y mucho menos cristalinos y etéreos. La cara B se abre con la flamenca Terraplén, que fue uno de los singles de este disco, donde la guitarra, el violín y el sitar juegan a tejer melodías hasta que el quejío de Enrique Morente lleva la canción a terminar por bulerías, ¿flamenco progresivo hindú?… algo así. Prisioneros comienza con un riff más hard rock, que podría recordar a los primeros discos de Rush, que rápidamente se fusiona con el violín y los teclados, para dar en medio paso a una sección más suave que da entrada a los dos vocalistas, Morente con su impecable técnica flamenca y Purcell con su estilo rockero melódico, para ir de nuevo creciendo en intensidad. Tras esto el otro single del disco: Tarantos (para Jimi Hendrix), una pieza instrumental magnífica, deliciosa y excepcional, donde los acordes de hard rock se combinan con ritmos progresivos y flamencos y dejan que el violín dibuje unas fantásticas melodías, a veces incluso con algún deje al folk celta. Cierra el disco Diálogo interior donde la guitarra y el violín dialogan intercambiando melodías.

Si te quieres acercar a este trabajo debes hacerlo con la perspectiva de que no se trata de un disco de rock clásico ni al uso, ni tampoco de un disco de flamenco o de rock psicodélico. En este primer trabajo de Gualberto se mezclan múltiples estilos con elegancia y efectividad, llevándote a un paseo donde el Mediterráneo, la India y el rock anglosajón se dan la mano. Hay complejidad y técnica, pero no pajilleo de virtuoso de instituto, sino que todo está siempre al servicio de la melodía. Un discazo que no es el ideal para beber cerveza en la barra de un bar, sino más bien para degustar tranquilo en tu sofá, relajándote.

Datepicker fácil en tu web

¿Necesitas un «datepicker»? Con esto quiero decir necesitas introducir un calendario en un formulario web, a día de hoy hay muchos sencillos métodos para hacerlo. Pero estas son las dos más fáciles:

  • Campo date en HTML5: Un campo del formulario definido como de tipo date ya te arregla en gran parte el problema. Tiene el handicap de que cada navegador te saca el calendario con el formato que le da la gana
    <input type="date"/>
  • Calendario datepicker con jQueryUI: Esta opción incluye más opciones de personalización. Lo primero es descargar la librería jQuery y lo siguiente bajar los componentes de jQueryUI necesarios, incluyendo sus estilos. Luego para implantarlo debes cargar las dos librerías en la cabecera del documento, usar un campo input normal (en el ejemplo se llamará #calendario) y un script como el siguiente:
    <script>
    	$(function() {
    		$( "#calendario" ).datepicker({
    			changeMonth: true,
    			changeYear: true
    		});
    	});
    	</script>
    
    <div class="ejemplo">
    
    <p>Date: <input type="text" id="calendario"></p>
    
    </div>
    

En fin, para el caso del jQueryUI tienes muchos más ejemplos en la propia página con las distintas opciones.

Ñu – Cuentos de ayer y de hoy

Está claro que los 70 son la década dorada del rock and roll, desde el retorno a las raíces sencillas del rock and roll propuesto por el punk hasta lo más experimental y complejo del progresivo, desde lo más melódico del AOR a un naciente heavy metal. Y España no fue una excepción: Triana, Smash, Gualberto, Lone Star, Leño, Asfalto, Topo o los Ñu que hoy nos ocupan.

Cuentos de ayer y de hoy fue el primer LP de la banda de Jose Carlos Molina, y es todo un ejemplo de creatividad y de la mentalidad de la época, mezclando ansias de libertad, una defensa de la vida sencilla heredada del hippismo y momentos de oscuro pesimismo frente al futuro y la dirección de la humanidad.

Y es con pesimismo con lo que el disco se abre, con Profecía donde no aparece la mítica flauta de Molina, pero sí un violín de Jean Françoise André muy chirriante, creando una atmósfera profundamente tensa fundida con ritmos progresivos. La sigue Preparan, donde la flauta y el violín se entremezclan en un tema de nuevo oscuro y tenso, con un ritmo de batería machacón e hipnótico y con bellos pasajes de flauta por medio.  Algunos músicos fueron nosotros lleva en cambio un mensaje optimista, el citado espíritu jipioso, y trae además una muestra del ego de Molina, equiparándose en la letra a Bach, Beethoven o Hendrix. Se trata de un tema rockanrolero, que juega con muchas líneas melódicas entrelazadas (violín, flauta, guitarra, bajo, piano…). El tema título Cuentos de ayer y de hoy continúa con las reivindicaciones más jipis, alegando por la vida sencilla y contra el progreso técnico que destruye la naturaleza, y jugando además con melodías folk que se combinan con unos riffs 100% heavy metal. Bebiendo de la tradición más Jethro Tull nos llega El juglar, con una bella melodía de flauta y violín que nos transporta a una canción folk rock acústica de 8 minutos, con pasajes eléctricos por el medio que lo dotan de una gran fuerza. Cierra el disco Paraíso de flautas, conjunción de folk, rock progresivo y heavy metal. Un tema como pocos se han hecho en el rock español, de más de 9 minutos y con épicos pasajes.

Cuentos de ayer y de hoy debería ser piedra angular de todo rockero que pretenda decir saber algo de la escena española de los 70-80. Una obra maestra a cargo del temperamental Jose Carlos Molina, un disco indispensable del rock español.

Los cinco peores números uno del draft de la historia

La historia del draft de la NBA está llena de cagadas, desde luego. Darko Milicic número dos, Nikoloz Tskitishvili número cinco, Sam Bowie por encima de Michael Jordan… pero hay algunos casos sangrantes en el número uno que he recopilado aquí. Voy a obviar al pobre Oden, su caso es más mala suerte que cagada del ojeador, arrasó en la universidad y si no ha rendido en la NBA es por toda la ristra de lesiones que ha arrastrado desde su primera temporada. Así que vamos con los cinco peores números uno:

  • Kent Benson (1977): Pivot natural de New Castle, Indiana, estudió en la universidad de su estado (una de las más prestigiosas) haciendo en su cuarto año unos números de 19 pts y 10 rebotes.  Fue elegido por Milwaukee donde, en su año rookie, firmó unos decepcionantes 7.7 pts y 4 rebotes. En su segunda temporada subió hasta 12-7 pero fue un espejismo. Irregular, intercalando años más o menos buenos con otros decepcionantes, dejó su tope anotador en 15.7 puntos por partido en la temporada 1980-81, y 8.7 rebotes en la 1981-82. Se retiró con unos promedios de 9.1 puntos y 5.7 rebotes.   En su favor habría que decir que ese año no hubo grandes estrellas, aunque si jugadores más solventes como Otis Birdsong, Marques Johnson (que también fue elegido por Milwaukee), Walter Davis o Bernard King.
  • Joe Smith (1995): Fuerte ala-pivot que irrumpió con fuerza en la NBA, en los Golden State Warriors.   Venía de ser el mejor jugador de la NCAA y en su primer año no dio imágen de bluff: 15 puntos, 8.7 rebotes y elegido en el mejor quinteto de novatos. En su segunda temporada sube a 18.7 puntos, complementados con 8.5 rebotes. Su tercera temporada en Golden State tampoco iba mal, pero a media temporada le envían a los Sixers. A partir de ahí su progresión se corta y sus números empiezan a empeorar. Decía Andrés Montes Se dejaba llevar. Se mantuvo en activo hasta 2011 saltando por múltiples equipos sin volver jamás a los números de sus dos primeros años, retirándose a los 35 años con promedios totales de 11 puntos y 6.4 rebotes. Fue elegido por encima nada menos que de jugadores como Jerry Stackhouse, Michael Finley, Antonio McDyess, Rasheed Wallace y el enorme Kevin Garnett.
  • Michael Olowokandi (1998): Tras promediar 22 puntos y 11 rebotes en la universidad, el nigeriano se convertía en el número uno del draft del año del primer Lock-out. En su primer año unos decepcionantes 9 puntos y 8 rebotes  ponen la mosca tras la oreja a los seguidores de los Clippers, que empiezan a ver como el gafe de la franquicia se sigue cebando con ellos. Sus números mejoran un poco en su segunda temporada, pero sin mostrar tampoco una gran progresión. Bajan en su tercera temporada, y serán sus mejores años el cuarto y el quinto, los únicos en los que logra estar por encima de los 11 puntos y 9 rebotes. Pero ahí se le acaba la paciencia al equipo, dado que además de no haber logrado un rendimiento estelar su vida privada está rodeada de problemas. Recala primero en los T-Wolves y luego en los Celtics sin mucha chicha ni minutos, retirándose en 2007 a los 31 años con unos promedios en su carrera de 8.3 puntos y 6.8 rebotes. Por debajo de él quedaron gente de la calidad de Mike Bibby, Antawn Jamison, Michael Dickerson, Larry Hughes, Rashard Lewis, Cuttino Mobley y sobre todo el triunvirato formado por Vince Carter, Paul Pierce y Dirk Nowitzki.
  • LaRue Martin (1972): El año en que Bob MacAdoo y Julius Earving se presentaban al draft uno pensaría que el primer puesto se lo rifaron entre ellos. Pero no, de hecho Earving no fue elegido hasta el puesto 12, lo que le llevó a decantarse por jugar en la ABA (donde fue uno de los mejores jugadores de la historia de la liga hasta su fusión con la NBA en 1976) y McAdoo fue número dos, teniendo una carrera muy destacada hasta que las lesiones le lastraron (si bien luego lograría reciclarse como jugador de equipo para ganar dos anillos con los Lakers saliendo del banquillo, y acabaría con unos brillantes años en la LEGA italiana donde jugaría hasta los 42 años). Pero el número uno de ese año, elegido por Portland (que no tienen suerte cuando eligen pivots, sea porque son unos bluffs o porque se lesionan) fue este LaRue Martin, que apenas jugó cuatro años en la NBA.  Había sido un gran jugador en la universidad, consiguiendo en record de más rebotes capturados en una temporada…  pero en su mejor año en la NBA no pasó de 7 puntos y 5 rebotes por partido. Se retiró a los 25 años con unos promedios de 5.3 y 4.6 rebotes por partido.
  • Kwame Brown (2001): En un draft trufado de cagadas épicas el colega Kwame Brown fue número uno por encima de jugadores que posteriormente serían all star como Pau Gasol, Zach Randolph, Tony Parker, Gerald Wallace, Gilbert Arenas o Joe Johnson, o de jugadores solventes como Richard Jefferson, Jason Richardson o Mehmet Okur. Kwame, que todavía sigue en activo y se ha embolsado 58 millones de dólares a pesar de que su mejor temporada fue de 11 puntos y 7.4 rebotes. Este año ha jugado sólo 9 partidos con los Golden State Warriors y de momento acumula 6.8 puntos y 5.6 rebotes a lo largo de su carrera. Irónicamente los Lakers se deshicieron de él para fichar a Gasol (número 3 de su draft). Brown formó junto a Luke Walton una de las parejas interiores más patéticas que la NBA haya visto, con jugadas tan esperpénticas como esta.

En fin, que haya scouts cobrando millones para que estos tíos sean números uno y yo esté en el paro… Ok, puede que algunos fueran grandes jugadores universitarios pero es que hay casos muy sangrantes. ¿En serio Brown prometía tanto como para escogerle por encima de 6 futuros all star? ¿Realmente se podía pensar que Olowokandi podría ser mejor que  jugones como Paul Pierce, Nowitzki o Vince Carter (a pesar de que Carter nunca llegó a dar todo lo que prometía)?

Librería para usar MD5 y SHA 1 en Javascript

En fin, me he quedado sin ordenador el fin de semana… pero todavía me apaño para dejar una minientrada.

Hemos hablado ya en el pasado de criptografía y de algoritmos de hash e incluso de cómo usarlos en C o en Java así que hoy nos toca verlo desde otro ángulo. A la hora de usar estos algoritmos de resumen en una web, para almacenar una contraseña por ejemplo, nos podemos encontrar con la duda ¿encripto en el lado del servidor o en el del cliente? En fin, en el lado del servidor no tiene mucha ciencia ya que desde PHP 4 existen funciones MD5 y SHA1 de forma nativa. Pero ¿y si queremos hacerlo en el cliente?. Encriptar en el servidor implica que el mensaje viaje en texto plano desde el equipo hasta él. En cambio encriptando en el cliente esta ya saldrá encriptada del equipo.

Podría tirarme el moco y hacerme el pro copiando aquí un chorretón de código enorme, pero realmente os daré dos opciones:

  • PHP.js: Se trata de una librería libre de javascript que aporta a este lenguaje todas (o gran parte) de las existentes para PHP. Podéis descargarla desde la web oficial del proyecto, donde además podréis personalizar la librería eligiendo las funciones que os interesen (coged sólo lo justo, para aligerar la carga).
  • JSHASH: Esta otra , bajo licencia BSD, está en versión beta y se orienta totalmente al uso de  algoritmos de reducción (incluye además de las dos citadas sha256 y sha512). La recomiendan en varios blogs como muy fiable. Podéis descargarla de aquí, donde también hay tutoriales sobre su utilización.

En fin, con esto ya tenéis dos opciones para generar hashes con facilidad y sin romperos mucho la cabeza.

Lucifer’s Friend – Lucifer’s Friend

Corría 1970 y el rock más bluesero y duro comenzaba a apuntar hacia un naciente heavy metal en varios frentes: EEUU, Alemania y, sobre todo, Reino Unido. El blues, el hard rock, el jazz y el progresivo se fundían en las mentes de muchos compositores, dando lugar a un primigenio heavy metal, que tendría más que ver con el doom actual. Estos Lucifer’s Friend comenzaron su carrera bajo el nombre de Asterix, cambiándose de nombre tras un disco por el de Lucifer’s Friend. La banda era alemana, menos el vocalista John Lawton, inglés y más famoso por haber sido el cantante de Uriah Heep en la segunda mitad de los 70.

El sonido del grupo, como ya comentaba, podría relacionarse con facilidad con el de Black Sabbath, Deep Purple, Led Zeppelin o Uriah Heep: bajos con mucho ganancia, riffs pesados y muy distorsionados y órgano Hammond a punta pala. Este fue su primer album de una carrera más o menos prolífica entre los 70 y los primeros 80, aunque sin mucha repercusión fuera de Alemania.

El disco se abre con potencia y agresividad, con la cañera Ride in the Sky cuyo fraseo de teclado te recordará a Led Zeppelin (¿o será al revés?). La voz de Lawton suena perfecta, arropada por el hammond y el teclado en un tema soberbiamente épico. Everybody’s Clown lleva su voz a una tesitura más aguda recordando indefectiblemente a Deep Purple; en cambio Keep Going busca un sonido más bluesero y crudo, con un riff más pesado que da paso a una melodía más suave, más íntima y muy zeppelianaToxic Shadows  sigue con la tendencia al sonido Page/Plant, con pasajes casi psicodélicos por medio. Free Baby ya desde el primer segundo se lanza a un ataque de teclado con un estilo muy en la onda de los Uriah Heep más cañeros. Con un deje muy bluesero purpeliano llega a nuestros oídos Baby you’re a Liar, que dará paso al que para mi es el mejor tema del disco In the Time of Job when Mammons was a Yippie, una nueva muestra del rock duro épico y purpeliano. Cerraba el disco Lucifer’s Friend, otra pieza en la misma onda de rock duro y épico, con una intro más psicodélica y un ritmo pesado y poderoso.

La reedición que sacó Vertigo, y que es la que acabó en mis manos, además una remasterización muy decente incluye cinco bonus tracks extraídas de diversos singles, bastante curiosas. Rock and roll Singer es un rock and roll clásico con arreglos de viento a lo big band, y que me recuerda profundamente a lo que hicieron un par de años después los ELF de Ronnie James Dio en su primer disco.Our world is a rock and roll band más o menos va en la misma onda, muy cercano a los hits de las radios británicas de la época. Por su parte Satyr’s Dance descubre unas juegos de melodías bastante mediterráneas que se entralazan con maestría en una gran canción instrumental, con algunos dejes más experimentales. Horla es otro tema instrumental con solo de batería en medio, al estilo de The Mule de los Purple o TNUC de Grand Funk Railroad. Finalmente Alpenrosen es un tema que juega con el blues y el jazz, mezclando elementos de psicodelia y rock progresivo.

Resumiendo, los amantes del sonido Deep Purple/Uriah Heep disfrutarán profundamente de este gran disco, una obra de gran rock duro setentero, por desgracia olvidada por la mayoría de oyentes y periodistas.

Diferencias de comandos entre T-SQL y PL/SQL

Esta tarde estuve mirando un poco de PL/SQL porque estoy apuntado en un par de ofertas de trabajo donde piden conocimientos básicos. En principio esta versión de SQL de Oracle  tiene la misma lógica y funciona más o menos igual que Transac SQL, pero hay alguna pequeña diferencia. Por lo que he indagado, algunos comandos cambian de uno a otro, ahí os inserto una lista.

 

CONCATENAR COLUMNAS

T-SQL = +

PL/SQL = ||

COMPROBAR VALOR NULO

T-SQL = ISNULL

PL/SQL = NVL

CONVERSIÓN DE TIPO DE DATO

T-SQL = CONVERT ()

PL/SQL = TO_DATE, TO_CHAR, TO_NUMBER (dependiendo del tipo)

COMPARACIÓN CON EL VALOR NULL

T-SQL = =NULL

PL/SQL = IS NULL

EXTRAER UNA PARTE DE UNA FECHA (DÍA, MES O AÑO) el ejemplo será con año

T-SQL = DATEPART (yy, DATE)

PL/SQL = EXTRACT (Year from DATE)

CREAR UN EQUAL JOIN

T-SQL = SELECT t1.field, t2.field FROM table1 t1 LEFT JOIN table2 ON t2.field = t1.field

PL/SQL = SELECT t1.field, t2.field FROM table1 t1, table2 t2 WHERE t1.field(+) = t2.field

SELECCIONAR UN NÚMERO CONCRETO DE FILAS

T-SQL = SELECT TOP seguido del número de columnas

PL/SQL = SELECT * FROM tabla1 WHERE rownum <= seguido del número de columnas

INCLUIR UN TEXO O UN NÚMERO EN LA SELECT:

T-SQL = SELECT ‘texto’

PL/SQL = SELECT ‘Texto’ FROM dual

ASIGNAR VALOR A UNA VARIABLE

T-SQL = SET var = val

PL/SQL = var := val

IMPRIMIR EN PANTALLA

T-SQL = PRINT ‘texto’

PL/SQL = dbms_output.put_line(“cadena de texto”)

CONDICIONAL IF

T-SQL = IF condicion THEN BEGIN bloque instrucciones END IF

PL/SQL = IF Condicion THEN — END IF;

Luego además, existen algunos comandos propios de TS/SQL y algunas funciones que existen en MySQL o SQL-Server no existen aquí por ser propios de esos gestores, pero grosso modo esto es lo que hay. Espero que os sea de ayuda.

Diseño responsivo con media queries de CSS3

Siguiendo con los artículos de Web Designer wall, continuamos con el tema de las media queries de CSS3, en este caso con otra traducción/explicación de uno de sus artículos.

En este artículo comienza repitiendo lo que ya hablamos en la otra entrada sobre media queries, que el diseño responsivo a día de hoy cobra mayor imortancia por la variedad de resoluciones que pueden usar los usuarios, y que por tanto el aspecto tiene que adaptarse a la ventana. El ejemplo del resultado que se busca conseguir es este.

El conceto, como diría Manquiña (el conceto es el conceto), es el siguiente: La página tiene un contenedor de tamaño fijo (980px) optimizado par una resolución mayor de 1024 px. La media query se utiliza para saber si el tamaño es menor de 980px, en cuyo caso se pasa a un diseño fluido. Y si el caso es que es menor de 650px entonces, directamente se convierte en un diseño con una sola columna.

El marcado HTML es el siguiente, donde se ha creado un contenedor pagewrapper que envuelve cabecera, cuerpo y pie:

<div id="pagewrap">

	<header id="header">

		<hgroup>
			<h1 id="site-logo">Demo</h1>
			<h2 id="site-description">Site Description</h2>
		</hgroup>

		<nav>
			<ul id="main-nav">
				<li><a href="#">Home</a></li>
			</ul>
		</nav>

		<form id="searchform">
			<input type="search">
		</form>

	</header>
	
	<div id="content">

		<article class="post">
			blog post
		</article>

	</div>
	
	<aside id="sidebar">

		<section class="widget">
			 widget
		</section>
						
	</aside>

	<footer id="footer">
		footer
	</footer>
	
</div>

Como hemos comentado miles de veces, el marcado HTML5 no se lleva bien con las veriones de IE anteriores al 9, pero puedes solucionarlo introduciendo esta línea en la cabecera, que enlazan con una librería de javascript que subsanará el problema:

<!--[if lt IE 9]>
	<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->

Tras esto toca comenzar con el css, y lo primero es resetar todos los elementos de HTML5 a elementos de bloque:

article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { 
    display: block;
}

Y tras esto toca la estructura principal del css. El contenedor principal ha sido fijado en 980px, el header tiene una altura fija de 160px, el contente un ancho de 600px flotado a la izquierda y el sidebar, flotado a la derecha, de 280px.:

#pagewrap {
	width: 980px;
	margin: 0 auto;
}

#header {
	height: 160px;
}

#content {
	width: 600px;
	float: left;
}

#sidebar {
	width: 280px;
	float: right;
}

#footer {
	clear: both;
}

Todo esto, así de momento, daría lugar a un diseño estático tal que el de esta demo. Ahora toca la parte divertida: CSS3 Media Queries. Como el HTML5, CSS3 tampoco es que furrule muy bien en IE pre-9, así que de nuevo habrá que tirar de una librería de .js para solventar el problema.

<!--[if lt IE 9]>
	<script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
<![endif]-->

La idea es hacer un css externo con las media queries, introduciéndolo en el documento tal que así

<link href="media-queries.css" rel="stylesheet" type="text/css">

Luego vendrán las siguientes líneas para cuando la ventana donde visualicemos sea menor de 980px se aplicarán las siguientes reglas:

  • El contenedor principal se resetea al 95%
  • El contenedor de contenido pasa al 60%
  • El contenedor lateral pasa al 30%

El usar el % hace los contenidos fluídos:

@media screen and (max-width: 980px) {

	#pagewrap {
		width: 95%;
	}

	#content {
		width: 60%;
		padding: 3% 4%;
	}

	#sidebar {
		width: 30%;
	}
	#sidebar .widget {
		padding: 8% 7%;
		margin-bottom: 10px;
	}

}

Luego tocará hacer el media query para tamaños menores de 650px, con una única columna:

  • header = resetear la altura a auto
  • searchform = lo mandamos a una posición absoluta, a 5px del borde superior
  • main-nav = se reseta su posición a estatic
  • site-logo = lo mismo
  • site-description = lo mismo también
  • content = devolvemos el ancho a auto
  • sidebar = ponemos el ancho al 100% y quitamos la propiedad de flotado
@media screen and (max-width: 650px) {

	#header {
		height: auto;
	}

	#searchform {
		position: absolute;
		top: 5px;
		right: 0;
	}

	#main-nav {
		position: static;
	}

	#site-logo {
		margin: 15px 100px 5px 0;
		position: static;
	}

	#site-description {
		margin: 0 0 15px;
		position: static;
	}

	#content {
		width: auto;
		float: none;
		margin: 20px 0;
	}

	#sidebar {
		width: 100%;
		float: none;
		margin: 0;
	}

}

Finalmente tenemos la versión para menos de 480px, pensada para el iPhone. Implica evitar el zoom que automáticamente hace Safari sobre el texto y toquetear el menú de navegación principal:

@media screen and (max-width: 480px) {

	html {
		-webkit-text-size-adjust: none;
	}

	#main-nav a {
		font-size: 90%;
		padding: 10px 8px;
	}

}

Ahora toca el truquito para imágenes flexibles, con un pequeño hack para que funcione en IE8 (el width: auto\9; de la línea final):

img {
	max-width: 100%;
	height: auto;
	width: auto\9; /* ie8 */
}

Con los vídeos va igual, menos para Safari, dode max-width no va con vídeos (con fotos sí, extraño). Finalmente, y siguiendo con el iPhone de los huevos, toca metar una meta-tag de escala inicial, ya que el iPhone tiende a modificar las páginas para adaptarlas a la pantalla del dispositivo:

<meta name="viewport" content="width=device-width; initial-scale=1.0">

Y con esto está el tutorial terminado, en el artículo citado podrás encontrar además todo el código y las imágenes de la página de ejemplo. Un placer el haberos traducido esto, y todavía me queda al menos una tercera entrada sobre diseño responsivo. Esta semana creo que la cosa va a andar chunga para conectarme mucho rato, así que igual tarda hasta el viernes o sábado. O igual lo puedo hacer mañana, a saber. En todo caso, un saludo.