sábado, 19 de septiembre de 2009

Star Wars (John Williams Is The Man) A Cappella Tribute

Os dejo este magnífico vídeo homenaje a John Williams hecho por Corey Vidal, un canadiense que ha triunfado en YouTube con sus grabaciones. Es de hecho uno de los usuarios más vistos y con más suscripciones.

Por otro lado, para el que no conozca a John Williams, decir que se trata de un compositor y director de orquesta de los más famosos. Estoy 100% seguro de que has escuchado alguna de sus más famosas obras, como son las bandas sonoras de Tiburón, La Guerra de las Galaxias, E. T.: El extraterrestre, Superman, la saga de películas de Indiana Jones, Parque Jurásico, La lista de Schindler, Memorias de una geisha o Harry Potter entre otras.

Además de este magnífico vídeo de Corey Vidal por cuatriplicado, os dejo la letra para que podáis seguirlo mejor.


[Close Encounters of the Droid Kind]
You must use the force (repeat ad nauseum)

[Raiders of the Lost Wookiee]
Long time ago, far far away (repeat)

Kiss a wookie, kick a droid
Fly the falcon through an asteroid
Till the princess is annoyed
This is spaceships, it's monsters, it's Star Wars, we love it!

Come and help me, Obi-Wan
X-wing fighter and a blaster gun
Dance with Ewoks, oh what fun!
This is spaceships, it's monsters, it's Star Wars, we love it!

[Super Han]
Get in there you big, furry oaf
I couldn't care less what you smell
I take orders from only me
Maybe you'd like it back in your cell
Your Highness, your worshipfulness, your highness, your worshipfulness

No one cares if you upset a droid
(nobody cares if you upset a droid)
That's because droids don't tear your arms out of socket.
(nobody cares)
I suggest a new strategy: let the Wookie win
That's because nobody cares if you upset a droid.

[ET the DiscoTerrestrial]
Now we listen to Luke whining:
One more season... One more season... One more season... One more season...

I was gonna go to Tosche Station for power converters
Now I guess I'm going nowhere.
It just isn't fair.

[Jaws: the Wookiee]
Woooooookiee (repeat)

Someone move this walking carpet (repeat)

Kiss your brother, Kiss your brother (repeat)

Princess Leia
Well I guess you don't know anything about women.

Who's your daddy? (repeat)

[Jurassic Darth]
Luke, I'm your father
(That's not true!)
It is useless to resist
(My hand!)
Come with me my son, We will rule
(I'll never join you!)
Search your feelings it is true

So you have a twin sister
Who Obi-Wan was wise to hide
(Is that Leia?)
If you will not turn
Then perhaps she will
Give in to your hate
You are mine

Long Long Long Time ago... Far Far Far Far Away

Long Long Long Time Ago, Far Far Far Away (repeat)

Kiss a wookie
Kick a droid
Fly the falcon
Through an asteroid
Till the princess is annoyed
(She's annoyed!)
This is spaceships, it's monsters, it's Star Wars, we love it, it's true

Episode 3
Coming to you
In 2005

So Let's go
(go go go to the movies)
Stand in line
(buy buy buy me some popcorn)
Cause it's al-
(please I'd like extra butter)
most the time
(Join the dark side...)
May the Force be with you all

John Williams is the man

lunes, 14 de septiembre de 2009

Pink Panther Theme

Continuamos con un poco de guitarra. Esta vez os dejo todo un clasico, La Pantera Rosa. Os dejo también una versión más rockera del mismo que me ha llamado mucho la atención. ¡¡¡Que los disfrutéis!!!



miércoles, 9 de septiembre de 2009

Optimización de un servidor MySQL

Las bases de datos MySQL son bastante utilizadas debido a que ofrecen una calidad bastante aceptable a coste 0. Por supuesto, no basta con instalar y listo. Hay que configurar y ajustar los parámetros adecuados al uso que se le vaya a dar. En cualquier caso, en entornos de producción los parámetros que trae por defecto no son suficientes.

En este post, explico una serie de pautas a tener en cuenta en la configuración que pueden servir de punto de partida para el ajuste fino de un servidor MySQL y el motor InnoDB, que es el que he utilizado mayormente ya que permite relación entre tablas.

-innodb_buffer_pool_size: se debe configurar al 70-80% de la memoria del servidor. Por ejemplo, si tienes un servidor de 4GB de RAM, 3G sería un valor adecuado.

-innodb_log_file_size: 256M parece un valor adecuado.

-innodb_log_buffer_size: 4M es un valor adecuado en la mayoría de los casos, a menos que uses grandes blobs. En ese caso, auméntalo un poco.

-innodb_flush_log_at_trx_commit=2 si no te interesan el ACID y puedes asumir que se pierdan transacciones en los dos últimos segundos en caso de fallo en el sistema operativo. Si usas replicación este valor debe estar a 1, tal y como comenté en el post sobre Replicación de bases de datos MySQL.

-innodb_thread_concurrency=8 Incluso con las correcciones sobre escalabilidad del motor InnoDB, tener limitada la concurrencia siempre ayuda. Puede ser mayor o menor dependiendo de tu aplicación, pero 8 es un buen comienzo.

-innodb_flush_method=O_DIRECT. Evita el doble buffer y reduce el uso de swap. En la mayoría de los casos mejora el rendimiento.

-innodb_file_per_table: divide el fichero de información InnoDB en varios, concretamente uno por tabla. Evita que toda la información vaya a un único fichero, aumentando el rendimiento.

Estos puntos anteriores los he sacado del MySQL Performance Blog. Te recomiendo que le eches un vistazo, ya que es posible que aspectos que he omitido porque no se adaptan a mi caso, sí que te interesen a ti. 

Ejemplo de configuración  

A continuación dejo un ejemplo de configuración en un servidor de 4 núcleos con 4MB de RAM y contiene el servidor dedicado únicamente a la base de datos MySQL.

El siguiente fichero ha de colocarse en /etc/mysql/conf.d .Yo lo he llamado innodb.cnf, por ejemplo.
#
# Configuración para optimización de la base de datos
#
[mysqld]
# ficheros de log
log_slow_queries=/var/log/mysql/mysql-slow.log
long_query_time=5 

innodb_buffer_pool_size=3G
innodb_log_file_size=512M
innodb_log_buffer_size=16M
innodb_file_per_table

key_buffer_size=64M
table_cache=1024
thread_cache=16
query_cache_size=256M
max_connections=300
max_user_connections=300
thread_concurrency=8
Puedes observar que se ha aumentado el parámetro innodb_log_buffer_size debido a que usamos gran cantidad de blobs.

Espero que os sirva como punto de partida. Por supuesto, el ajuste fino dependerá mucho del uso y de las aplicaciones.

lunes, 7 de septiembre de 2009

Dueling Banjos

Para continuar con la sección de guitarra, os dejo otro vídeo de mis favoritos. Se trata de una escena musical de la película Deliverance (1972) en la que hay un duelo de banjos entre el personaje de Ronny Cox, tocando la guitarra, y un extraño chico mentalmente discapacitado, pero muy habilidoso con el banjo.

sábado, 5 de septiembre de 2009

31 noches, de Nacho Escolar

El pasado 31 de agosto terminó 31 noches, la novela corta por entregas que Nacho Escolar ha estado escribiendo durante el mes de agosto para Público.

A mi me enganchó a mediados de agosto y no he podido parar de leerla hasta su fin. Se trata de una novela policíaca donde un periodista se ve envuelto entre la corrupción, las drogas y las mafias y nos cuenta como se desarrolla la historia que le conduce a su propia muerte (que conste que no he desvelado nada, esto aparece en el primer capítulo). Muy grata sorpresa la que me llevé con esta novela que encontré por casualidad en mis vacaciones. La recomiendo 100%. ;-)

miércoles, 2 de septiembre de 2009

Plugins de Firefox para el Desarrollo Web

Todo desarrollador web que se precie debe haberse hecho la siguiente pregunta en algún momento de su vida: ¿Por qué cada navegador web interpreta el html/css/javascript como le da la gana?¿No podrían hacerlo todos de la misma forma? y seguro que habéis maldecido más de una vez a los creadores de Internet Explorer. ¿No sería más feliz el mundo si no existiera el Explorer? Si nunca te has planteado estas preguntas, es que aún no has trabajado lo suficiente con html/css/javascript :-p

En este post no os voy a dar una solución definitiva a esta problemática, pero al menos sí os comento algunos plugins de Firefox que os pueden resultar útil para el desarrollo web. (Menos es nada ;-) )
  • Firebug: imprescindible para maquetación html y css. Te permite modificar el html y el css interpretado por el navegador. Ideal para hacer ajustes de css. Además, incorpora un depurador para javascript. Yo me pregunto, ¿qué hacíamos cuando no había Firebug?
  • Web developer tool bar: muy útil. Tiene un gran conjunto de funcionalidades, muchos de ellos son atajos a opciones del navegador como desactivar javascript, limpiar caché, ver código fuente. Entre sus funcionalidades destacadas está la posibilidad de ver todas las css, una regla para medir distancias en píxeles, información y edición de formularios html. La verdad es que desde que está Firebug la utilizo poco porque muchas de las cosas que antes hacía con este plugin las hago ahora con Firebug, pero creo que es útil tenerlo a mano para cuando se pueda necesitar.
  • LORI(Lifer-of-request-info): útil para mostrar información de la petición HTTP. Te muestra tiempos de carga de la página, tanto desde que se hizo la petición hasta recibir el primer byte como desde que se hizo la petición hasta la carga completa de la página; tamaño de la página, número de peticiones, ...
  • Live HTTP headers: útil para explorar las cabeceras HTTP, tanto en la petición como en la respuesta.
  • User Agent-switcher: te permite modificar el User-Agent del navegador. Útil si estáis realizando versiones para dispositivos móviles o PDAs.
Estos son los plugins que, por mi trabajo he utilizado, y encuentro más útiles. Supongo que dependiendo de lo que se trate habrá más plugins útiles. Si conocéis alguno más que pueda ser útil para el desarrollo web no dudéis en comentarlo.