lunes, abril 30, 2012

Desentrañando... Ojo de Halcón

Clinton Francis Barton, mejor conocido como Ojo de Halcón, fue un huérfano que viajó con un circo en el cual aprendió a usar el barco ayudado por el Espadachín y Trick Shot. Sin embargo, las actividades criminales de ambos hombres hicieron que acabaran convirtiéndose en enemigos.
Con el paso de los años, Clint se vio envuelto en muchas situaciones que lo hicieron hacer parecer un criminal, algunas de ellas por culpa de la espía soviética Viuda Negra, que lo engañaba para que le ayudara a robar la tecnología de Industrias Stark. Por suerte, tras salvar a Jarvis, el mayordomo de los Vengadores, Clint tuvo una ocasión de limpiar su nombre y, de hecho, junto a la Viuda Negra, la Bruja Escarlata, Mercurio y el mismísimo Capitán América, se convertirían en la segunda encarnación de los Vengadores, además de uno de los miembros más constantes del equipo.
Su larga permanencia con los Vengadores le han permitido participar en toda clase de aventuras, enfrentándose a enemigos como Cabeza de Huevo, Korvac, los Skrulls, o incluso sus dos mentores. También a lo largo de su carrera Ojo de Halcón ha probado otras identidades, aunque tanto Goliath como Ronin fueron nombres "robados" a otros héroes.
El hermano de Clint, Barney Barton, que se había unido al circo junto con el arquero, volvió tras muchos años a la vida de Clint, descubriendo el héroe que se había convertido en un mafioso, aunque tras la muerte de Barney por culpa de Cabeza de Huevo, Clint acabaría descubriendo que Barney en realidad era un agente del FBI encubierto. La muerte de Barney sería vengada tiempo más tarde cuando, por accidente, Clint hiciera explotar uno de los inventos de Cabeza de Huevo mientras éste lo llevaba en la mano.
A lo largo de toda su carrera, Clint también ha tenido muchos intereses románticos: la Viuda Negra, la Bruja Escarlata, la Avispa, Piedra Lunar... Pero sin duda, el eterno amor de Barton será siempre Pájaro Cantor, cuya relación incluso continuó tras la desaparición de la chica durante años por culpa de los skrulls.
Además de pertenecer a los Vengadores, Barton ha liderado otros dos equipos: los Vengadores de la Costa Oeste y los Thunderbolts, una vez se libraron de la influencia del Barón Zemo. Pero el lugar de Barton siempre ha estado entre los Héoes Más Poderosos del Mundo.
El nombre de "Ojo de Halcón" no ha sido llevado sólo por Barton, aunque sí es verdad que ha sido el que más tiempo lo ha llevado. Sin embargo, cuando Barton asumió la identidad de Ronin, primero Kate Bishop y luego el villano Bullseye (como parte de los "Vengadores Oscuros" de Norman Osborn) tomaron el manto de Ojo de Halcón.

domingo, abril 29, 2012

Segunda interrupción de The CubesPaper

Por segunda vez desde que he llegado a este país tengo que interrumpir la publicación de The CubesPaper por problemas con internet. La cosa, como se imaginarán, no es tan fácil como cuando estaba en Las Palmas, pero bueno, si queréis conocer la actualidad del cómic podéis visitar las páginas a las que siempre os enlazaba todos los domingos. Espero, para la semana que viene, que vuelva a estar ésto operativo.

sábado, abril 28, 2012

Un Cubo en Alemania, Semana III


¡Hola! Casi no llego para el post de esta semana... Bueno, aquí estamos otra semana más comentándoles mi experiencia en tierras alemanas, una vez más sin fotos, ya que el ordenador con el que me estoy conectando es bastante viejo, por lo que me da bastantes problemas al intentar subir las fotos. Espero poder subirlas tarde o temprano, pero no prometo mucho. Al menos, en Facebook sí he podido subirlas a mi perfil, y, ya que están en público, las podréis ver sin problema si me buscáis por ahí.
Esta semana ha sido ya bastante rutinaria: nos estamos acostumbrando a este sitio. Ya está empezando a desaparecer la sensación de novedad y empieza a parecer todo como que es "normal" (que lo es, pero no para nosotros).
Como creo que ya mencioné en el post anterior, esta semana he cambiado mi horario de trabajo, de modo que me paso programando desde las 8 de la mañana hasta las 4 de la tarde, teniendo así la tarde libre para hacer lo que quiera. Y estoy aprovechándola, ya que todos los días he hecho cosas: visitar el Estadio Olímpico y el East Side Gallery, pasarme por otra tienda de cómics (y adquiriendo "Superman: Was Wurde Aus Den Mann Von Morgen?", o en inglés "Superman: Whatever Happened To The Man Of Tomorrow?", el clásico de Alan Moore que tiene bastante mejor pinta que el "JLA Classified: Cold Steel" que había comprado la otra vez), descubrir dónde hay un cine con películas en V.O. para poder ver los Vengadores y la nueva película de Batman... La verdad, no he desperdiciado ningún día.
Aparte, hoy sábado por fin Moi y yo nos hemos animado y nos hemos dado un salto al lugar turístico que más cerca tenemos, el Zoo de Berlín (Berlin Tierpark), el cual es enorme y, por lo visto, tiene ya bastantes años y prestigio. Elefantes, jirafas, rinocerontes, leones, cocodrilos, llamas, osos... La verdad es que me ha encantado, aunque cierto es que nunca había estado en un zoológico "grande" (sólo un par de zoológicos de Canarias que se especializan más que nada en aves autóctonas) y, por lo tanto, no había visto a la mayoría de estos animales.
Además, tras estas dos semanas y media que llevo aquí, ya me siento bastante animado de hablar alemán, e incluso puedo entender regularmente a la gente que me habla, así que a partir de este lunes, el chaval que aquí escribe empieza a repartir currículums en esta ciudad con intención de conseguir algo a media jornada que pueda compatibilizar con las prácticas. Porque sí, no tengo ninguna intención de volver a España (bueno, de visita de vez en cuando), así que, ¡deséenme suerte!

viernes, abril 27, 2012

(Reseña de serie) The Walking Dead, 1ª temporada

En 2010 empezó a emitirse una serie que adaptaba el popular cómic de Robert Kirkman The Walking Dead ("Los Muertos Andantes", traducido al español como "Los Muertos Vivientes"). Recientemente ha terminado su segunda temporada, pero, antes de reseñarla, prefiero hacer la reseña de su primera temporada.
Al igual que en el cómic, la serie The Walking Dead nos hace seguir a Rick Grimes, un policía que, tras pasar un tiempo en coma debido a un disparo que recibió, despierta para encontrarse en medio de un apocalipsis zombi, sin idea de lo que ha pasado o de dónde están su familia y amigos. De este modo, Rick empieza a intentar encontrar a sus seres queridos mientras intenta sobrevivir en este nuevo y horrible mundo, donde todas las reglas han cambiado.
Los seis capítulos que componen esta primera temporada no sólo son muy buenos, sino que crean unas historias casi completamente nuevas, aún cuando usan muchos personajes y conceptos del cómic, pero realmente sólo el primer capítulo sigue la misma historia que la de la fuente original, desviándose por completo desde el segundo capítulo. Pero, a pesar de ello, guarda el espíritu del cómic, con lo cual los seguidores de los cómics podemos agradecer ver nuevas historias en las que no podremos predecir qué va a ocurrir. Desgraciadamente, hay muchos diálogos bastante tontos a lo largo de la temporada que muchas veces hacen sentir vergüenza ajena por los guionistas.
Ninguno de los actores tiene una interpretación especialmente reseñable, aunque tampoco lo hacen especialmente mal, salvo por Laurie Holden (Andrea), cuya inexpresividad la acompaña durante los seis episodios.
Especial mención merecen los zombis, muy bien hechos en su mayoría, aunque con una representación un tanto irregular. Mientras que en los primeros episodios veíamos zombis muy activos, capaces de correr, saltar o incluso interactuar con objetos como picaportes o usar piedras para intentar romper unos cristales, en la segunda mitad de la temporada se convierten en los clásicos zombis lentos y torpes que ya conocemos.
En conclusión, una primera temporada bastante digna aunque con algún que otro errorcillo perdonable. La semana que viene hablaré de la segunda temporada.

jueves, abril 26, 2012

(Reseña de película) Batman Forever

Tras las dos exitosas películas basadas en el popular caballero oscuro de DC Comics, en 1995 se estrenó una tercera parte en la que se sustituyó no sólo al director (aunque Tim Burton seguiría como productor de la película) sino también al actor protagonista. De este modo, con Joel Schumacher a la dirección y Val Kilmer en el papel principal llegó Batman Forever ("Batman para siempre").
En esta tercera película, Batman se enfrenta a un criminal que lleva tiempo dándole problemas, Dos Caras, también conocido como el antiguo fiscal del distrito Harvey Dent, teniendo que acoger a un joven acróbata llamado Dick Grayson al que el mafioso deja huérfano al irrumpir en el circo donde trabajaba. Mientras tanto, el doctor Edward Nigma, un científico que trabaja para Industrias Wayne, ve como su trabajo de manipulación de ondas cerebrales es rechazado por el propio presidente de la compañía, por lo que una vez renuncia comienza una cruzada contra su ex-jefe al adoptar la identidad del Enigma.
Batman Forever es considerado por muchos el comienzo de la decadencia de esta saga, pero lo cierto es que para mí no es mucho peor que las anteriores. Por un lado agradezco a Schumacher haberse decidido por fin a profundizar en el protagonista, dando bastante tiempo para desarrollar a lo largo de la película a cuatro de los cinco protagonistas, ya que Dos Caras ve robado su protagonismo por la doctora Chase Meridian, el nuevo interés romántico del héroe. De hecho, en esta película ocurre lo contrario que en las anteriores: los villanos (sobre todo Dos Caras) son los más maltratados, teniendo unas tramas y unos diálogos de lo más absurdos.
Cabe destacar la trama de Robin, un personaje muy diferente al de los cómics, intentando ser una mezcla entre los dos primeros Robin pero sin llegar a parecerse a ninguno realmente. Sin embrago, su historia por lo general está bastante bien llevada y es una lástima que al director no se le haya ocurrido incluir una escena epílogo para cerrar su trama, algo que creo hubiera sido necesario. Por el resto, chascarrillos malos y clichés que hacen recordar bastante a la serie de los 70's, aunque con un Robin con bastante más mala leche.
De las actuaciones sólo destacan las de los dos héroes, interpretados por Val Kilmer y Chris O'Donnell, además de, una vez más, Michael Gough en su papel de Alfred Pennyworth. Sobre todo Val Kilmer ha demostrado ser unos Bruce Wayne y Batman mucho más convincentes de lo que fue Michael Keaton. Es una pena que dos actorazos como son Jim Carrey (Enigma) y Tommy Lee Jones (Dos Caras) hayan tenido que sobreactuar tanto en sus papeles, sospecho que por órdenes del director, y Nicole Kidman en su papel de la doctora Meridian tampoco hace gran cosa. El resto del reparto no hace gran cosa, sólo destacando que se le dé un papel tan mínimo a Drew Barrymore, haciendo de "Azúcar", una de las dos chicas de Dos Caras (la del lado "bueno"), y el hecho de que Pat Hingle ha visto por fin más de dos líneas de diálogo al volver a repetir su papel de Gordon, aunque tampoco ha hecho mucho más.
La ambientación intenta continuar el estilo bizarro de Burton aunque dándole un tono un tanto más llamativo, esto sobre todo debido a los coloridos estilos de los dos villanos. Afortunadamente, las escenas de la Batcueva y similares tienen unas iluminación y tonalidad bastante menos molestas.
Curiosos me parecieron un par de momentos en la película. Por un lado, que la doctora Meridian hable de las preferencias de Batman en el campo amoroso, haciendo evidentes referencias a Catwoman, lo cual hace preguntarse si Batman y la gata habrán tenido más encuentros desde la última película (ya que en la segunda, el coqueteo de ambos personajes, además de ser bastante escaso, no fue especialmente público). Y, por otro lado, la mención de Metrópolis que hace Bruce Wayne en una de sus conversaciones con Dick, haciéndonos recordar que estamos viendo una película sobre un superhéroe DC.
En definitiva, aunque la gente despotrique tanto de esta película, en mi opinón no tiene mucho que envidiarle a sus predecesoras. ¿Que no es una gran película? No, pero las anteriores tampoco lo fueron. Sigue en la misma línea.

miércoles, abril 25, 2012

(Reseña de cómic) Superman/Batman #14-18

Tras unos aceptables primeros trece números, Jeph Loeb esta vez se acompañó del dibujante gaditano Carlos Pacheco para los siguientes cinco números en los que se trataría una trama titulada Absolute Power ("Poder Absoluto").
La Legión de Supervillanos, los criminales que mimetizan a la Legión de Superhéroes bajo los nombres de Cosmic King, Saturn Queen y Lightning Lord, viajan en el tiempo a los momentos claves de la vida de los dos protagonistas, matando a Jonathan y Martha Kent para hacerse cargo del pequeño Kal-El, y a Joe Chill justo después del asesinato de los Wayne, para también hacerse cargo del joven Bruce. De este modo, el trío cría a los dos futuros héroes como si fueran hermanos, y los hacen partícipes de su plan de controlar el mundo. Aunque el trío de villanos también visitan a algunos otros héroes en los momentos de sus orígenes para evitar que lleguen a convertirse en una amenaza algún día, todavía algunos otros héroes son capaces de plantarles cara y hacer ver a los dos iconos que algo está mal en esa línea temporal, por lo que ambos empiezan una serie de viajes por distintas líneas temporales intentando devolver todo a la normalidad.
Como decía al comienzo, los primeros trece números habían sido aceptables, incluso buenos, sobre todo considerando que el autor era Jeph Loeb. Pero en esta saga el autor vuelve a sus andadas y crea una trama demasiado compleja para poder llevarla. En primer lugar, la trama parece más una miniserie aparte que parte de una serie regular, ya que las pequeñas muestras de "continuidad" con lo ocurrido hasta ahora son bastante pobres e incluso forzadas en algún momento. Por otro lado, el papel protagonista de la saga no queda en ningún momento claro, pasando de unos personajes a otros, sin estar seguro en ningún momento de si considerar villanos a los que tienen su nombre en el título de la colección, sobre todo cuando estos, supuestos convencidos de lo que la Legión de Supervillanos les han hecho creer durante toda su juventud, cambian sin ningún motivo aparente de parecer y empiezan a intentar devolver el mundo a la normalidad de repente. Y, finalmente, ¿qué clase de ilógica hace que la Legión de Supervillanos intente criar a Superman y Batman, mientras que elimina a Flash, Linterna Verde, el Detective Marciano y Aquaman pero ni siquiera se haya planteado la amenaza que representa la Mujer Maravilla?
Reconozco que, por otro lado, el concepto es interesante y el comienzo de la historia es bastante bueno. También hay situaciones bastante entrañables y se finalizan algunas tramas que se habían abierto en los primeros números, lo cual se agradece, sobre todo para sentir esa continuidad que tanto falta en esa saga. Y, como criticaba en la anterior trama, por fin hay una trama que no se centra en el universo de Superman, sino que es una saga bastante genérica (que bien podría haberse llevado en las páginas de la JLA), algo que sería bastante de esperar en una serie centrada en ambos personajes.
Respecto al dibujo, aunque Carlos Pacheco no es santo de mi devoción, hace un trabajo aceptable pero irregular a lo largo de esta saga. A pesar de que es un dibujante con unos dibujos que suelen trasmitir mucha frescura, me da la impresión de que muchas veces descuida sus dibujos. Y en esta saga se nota que trabajó mcuho en el primer número pero poco a poco se fue dejando.
La verdad, una lástima de saga que estropea un trabajo que iba bastante bien. No sólo porque de por sí el trabajo tenga demasiados puntos flojos, sino por su dificultad de lectura para los pocos versados en el universo DC al aparecer tantos personajes y tantos universos paralelos con tan poca presentación (a mí mismo me costó y tuve que buscar información sobre algunos de los personajes que aparecían). Pero supongo que es a lo que te arriesgas si lees algo de Jeph Loeb.

martes, abril 24, 2012

Tutorial de desarrollo web, Parte XXIX: Strings

¡Seguimos adelante con el curso de JavaScript! Espero que todos estos posts que estoy dejando escritos antes de irme se estén quedando claros. Si no es así, no duden en dejarme comentarios y, cuando pueda, intentaré aclararlo en algún post (aunque tal vez tengais que esperar hasta mediados de junio, que vuelvo a España... en principio).
Bien, el ejercicio de la semana pasada prometí explicarlo en este post y por ahí es por donde voy a empezar. Como recordaréis, habíamos escrito un código JavaScript en el que se combinaban sumas y concatenaciones. En concreto era este código:

<script type="text/javascript">
var entero;
var real;
var caracter;
var booleano;
entero = 1;
real = 1.5;
booleano = true;
document.write('' + entero + ' es un entero. <br/> ');
document.write('' + booleano + 2 + ' son un booleano y un entero. <br/> ');
document.write(real + entero + ' es un número real.<br/>');
</script>
Al ejecutarlo, os habréis encontrado con este resultado:
1 es un entero.
true2 son un booleano y un entero.
2.5 es un número real.
 Habíamos visto que cuando dos valores numéricos se encontraban con un operador + en medio (contando como valores numéricos los valores "enteros", "reales" y "booleanos"), los valores de ambos se sumaban, mientras que si lo que se encontraba con dicho operador eran valores de texto ("caracter" o "ristra de caracteres"), sin importar si a ambos lados del operador habían valores de texto o sólo se encontraba en uno de los lados, ambos valores se concatenarían.
Sin embargo, en este ejercicio hay alguna excepción a esta regla. En la primera línea, todo ocurre como previsto. La cadena vacía '' se concatena con la variable "entero" que contiene un 1 y luego con la cadena ' es un entero <br/>' formando la frase que vemos más abajo. Sin embargo, en la segunda línea ocurre algo extraño.
En la anterior entrega habíamos visto que podíamos sumar números enteros (o incluso reales) a variables con valores booleanos, de modo que sus valores (0 ó 1 en el caso del booleano) se sumarían. Sin embargo, en esta ocasión, el valor del booleano, que puede ser interpretado como 1 y como "true", se está concatenando con el valor del entero literal 2. ¿Por qué? Simplemente por la cadena vacía '' que se concatena antes del booleano.
Como dije la semana pasada, JavaScript lee de arriba a abajo y de izquierda a derecha, así que al llegar a esa operación lo primero que lee es la cadena vacía y, al empezar la línea con una cadena, interpreta que todos los siguientes operadores + son de concatenación, por lo que hace eso.
Esto ocurrirá siempre a partir del primer valor de texto que incluyamos. Imaginemos que tenemos la siguiente expresión:

document.write(booleano + 2 + ' no es lo mismo que ' + booleano + 2);

Este código daría como resultado:
3 no es lo mismo que true2
 Y bien nos avisa el texto de que no es lo mismo. Como veis, al entrar en el "write", el navegador primero se encuentra con un booleano sumándose a un entero, y entonces asume que, por tanto, se trata de una suma numérica. Sin embargo, después de eso encuentra una cadena, y a partir de ese momento todo lo siguiente que encuentre en la línea será considerado una concatenación. ¿Existe alguna manera de que no lo concatenara? Sí, de la misma manera que haríamos en matemáticas: usando paréntesis. Veamos el siguiente ejemplo:

document.write(booleano + 2 + ' es lo mismo que ' + (booleano + 2));

El resultado de este código sería:
3 es lo mismo que 3
Efectivamente, es lo mismo. ¿Y cómo hemos conseguido arreglarlo? Simplemente: al igual que ocurría cuando resolvíamos operaciones matemáticas, el paréntesis es preferente en las operaciones, así que, aunque el navegador vaya ejecutando las operaciones de izquierda a derecha, en primer lugar busca si hay paréntesis y resuelve su interior, comprobando que no se trata de una concatenación sino de una suma. Después resuelve el resto, en primer lugar resolviendo la primera suma y finalmente, al encontrarse la ristra, concatenando todos los valores.
De todos modos, ya más adelante veremos la preferencia de operadores, donde hablaremos una vez más de los paréntesis, pero para situaciones como esta nos viene bien echarle un vistazo. Además, habrá veces que nos interesará concatenar valores numéricos, por los que el truco de usar la cadena vacía '' al comienzo de la línea nos vendrá bastante bien.
La última de las líneas tampoco tiene mucho misterio: sumamos un real y un entero, de modo que su valor final será real, y luego le concatenamos una ristra. Recordemos que la suma de dos valores numéricos siempre dará como resultado un valor del tipo más amplio (en este caso, el real, que acepta decimales, es más amplio que el entero, que no los acepta).
Y, como prometimos la semana pasada, hoy vamos a hablar de uno de los primeros tipos de datos complejos: los Strings o ristras de caracteres. Hasta el momento hemos visto muchas ristras de caracteres pero no hemos ni siquiera empezado a indagar en la cantidad de posibilidades que tiene. Así que, antes que nada, vamos a entender lo que es un String.
Los cuatro tipos de datos que vimos la semana pasada, como dije, eran los tipos básicos. Los tipos complejos, como los Strings, se forman al unir varios datos básicos. En el caso de los Strings, como podemos ver, son muchas variables de tipo caracter concatenadas. Sin embargo, su utilidad y su frecuente uso ha hecho que, a pesar de tratarse de un tipo de dato complejo, se suela aprender a usarlo casi al mismo tiempo que los tipos de datos simples.
Para declarar una variable de tipo String no hay que hacer nada especial. Declaremos, pues, en un nuevo documento, la siguiente variable, e inicialicémosla (recordemos el verbo "inicializar" porque lo veremos mucho: consiste en dar un primer valor a una variable):

var ristra;
ristra = 'Esto es una ristra';

Podemos ver que una String funciona, básicamente, del mismo modo que una variable caracter, sólo que conteniendo varios caracteres. Pero aún su valor puede estar entrecomillado. Si queremos mostrar su valor por pantalla sólo tendremos que hacer:

document.write(ristra);

Obteniendo por pantalla:
Esto es una ristra
Nada difícil, ¿no? De hecho, ya en el tercer número de JavaScript (la parte XVII cuando por primera vez hablamos de variables) habíamos usado una variable de tipo String (lo que obteníamos del "prompt" era un conjunto de caracteres, por lo tanto, una String). Sin embargo, las Strings poseen una serie de funciones asociadas que nos pueden resultar muy útiles a la hora de trabajar con ellas. Y sobre eso es sobre lo que vamos a trabajar ahora.
Antes que nada hemos de recordar que las funciones (también conocidas como métodos o procedimientos) son instrucciones de JavaScript con un objetivo concreto. Como ejemplo de funciones hemos visto hasta el momento el "write", el "alert" y el "prompt" que, como veíamos, requerían que le introdujéramos, dentro de los paréntesis que caracterizan a todas las funciones de JavaScript, una String que, como hemos podido comprobar con la función "write", puede ser una String literal, una variable String o incluso una concatenación de varios valores, que al final acabarán formando una String. Esta característica también está presente en los "alert", "prompt" y cualquier otra función que requiera un String.
A continuación vamos a revisar las más importantes de estas funciones de Strings:
  • La primera de las características de String que vamos a ver no es realmente una función sino un atributo. Las diferencias las iremos conociendo con el tiempo, pero de momento tenemos que saber, al menos, que los atributos no llevan paréntesis, al contrario que las funciones. Es el atributo length que devuelve el número de caracteres que contenga la String. Por ejemplo, en el caso anterior, si hiciéramos:
  • var tamanyo = ristra.length;
  • En la variable "tamanyo" (nótese que las variables de JavaScript no pueden tener caracteres españoles como la ñ o las vocales con tilde o diéresis) hemos guardado el valor de "ristra.length", que, como he dicho, guarda el número de caracteres que contiene la ristra. Si tomamos en cuenta que el espacio es también un caracter, si le hacemos un "write" a "tamanyo" comprobaríamos que en su interior se ha guardado el valor 18.
  • También me gustaría mencionar que, como podéis ver, en una misma línea podemos declarar e inicializar una variable sin problema.
  • Empezando ya con funciones de verdad, en primer lugar veremos las funciones "toLowerCase" y "toUpperCase". Sabiendo un poco de inglés (o si hemos investigado algo de CSS) podemos deducir que estas dos funciones convierten en minúsculas ("toLowerCase") o en mayúsculas ("toUpperCase") todos los caracteres de una función. Su uso sería el siguiente:
  • var ristraMayusculas = ristra.toUpperCase();
  • Ahora dentro de "ristraMayusculas" encontraremos guardado el valor 'ESTO ES UNA RISTRA'.
  • Como veis, el uso es muy parecido al del "length", solo que en este caso, al ser una función, cuenta con un par de paréntesis al final. Sin embargo, a diferencia de las funciones que habíamos visto hasta ahora, en esta no introducimos nada entre los paréntesis. Lo cierto es que la sintaxis de todas las funciones requieren llevar esos paréntesis, que es un hueco reservado para los "valores de entrada" a la función, pero no todas las funciones requieren valores de entrada. De este modo, cada vez que llamemos a una función deberemos saber cuántos y qué tipo de valores de entrada requieren (en los que habíamos visto hasta ahora requerían una String, que podíamos hacer todo lo larga que quisiéramos, pero siempre era una única String).
  • También hay que mencionar el hecho de que, al igual que ocurría con el "write" (pero no con el "alert" ni el "prompt") e incluso con el atributo "length", antes de la función hemos de escribir la variable sobre la que se va a realizar la función separándolas por un punto. El por qué algunas funciones necesitan una variable sobre la que realizar la función y otras no lo estudiaremos cuando aprendamos a hacer nuestras propias funciones personalizadas.
  • Por supuesto, 'toLowerCase' funciona exactamente igual pero al contrario.
  • Otra función que nos puede ser de utilidad es la función "indexOf". Esta función sí recibe un valor (de hecho, puede recibir hasta dos valores distintos, ahora hablaremos de eso), que será una letra que vamos a buscar en la String. Lo entenderemos mejor en un ejemplo:
  • var lugarR = ristra.indexOf('r');
  • De esta manera le estamos indicando al navegador que queremos que guarde en la variable "lugarR" la posición que ocupa la letra "r" en su primera aparición en la ristra. Teniendo en cuenta que esta variable cuenta la primera letra como la posición 0, el valor guardado en "lugarR" será 12.
  • Como anotación, en caso de no encontrar la letra, la función devolverá el valor -1.
  • Sin embargo, como digo, la función "indexOf" tiene una variante, que en este caso contendrá dos valores de entrada, en este caso la posición inicial a partir de la cual empezará a contar. Por ejemplo:
  • var lugarR = ristra.indexOf('r', 13);
  • Como vemos, cuando una función requiere que le introduzcamos varios valores, estos serán separados por comas. En esta función, haciendo "trampa" ya que vimos en la anterior que la primera "r" estaba en el lugar 12 le hemos dicho, en su segundo valor, que empiece a buscar a partir de la posición 13, y su resultado sería 16.
  • La siguiente función que vamos a definir es el contrario a la anterior: la función "charAt". En esta ocasión le diremos una posición a la función para que nos devuelva el caracter que se encuentra en esa posición.
  • var letra5 = charAt(5);
  • Al igual que ocurría con el "indexOf", las posiciones de la String empiezan a contar a partir del 0, de modo que esta función estaría devolviéndonos la letra "e".
  • Siguiendo con funciones similares al "indexOf", en este caso tenemos el "lastIndexOf", que, como su nombre indica, devuelve la última aparición del caracter que le introduzcamos:
  • var letraRFinal = ristra.lastIndexOf('r');
  • Como pudimos comprobar antes, este método nos devolverá el número 16 (encuentra la última vez que aparece, pero da la posición como si contara desde el principio). Sin embargo, al igual que el "indexOf" tiene una variante que, tal vez, es un poco difícil de comprender.
  • El "lastIndexOf" también se puede introducir con dos parámetros (o "valores de entrada"), aunque es un poco más difícil de entender que el "indexOf" ya que el segundo parámetro... ¡también se cuenta desde el comienzo!
  • var letraRFinalAt2 = ristra.lastIndexOf('r', 2);
  • Por ejemplo en este caso la variable guardaría un -1 ya que la función no encontraría la letra "r". ¿Por qué? Intentemos entenderlo de esta manera. Al indicarle la posición "2", la función se ha colocado en la posición "2" de la ristra (recordamos que la primera posición es la posición 0, así que la posición 2 sería la "t") y luego ha empezado a contar hacia atrás, no encontrando ninguna "r" en el camino (sólo ha encontrado una "s" y una "e"). ¿Cómo podemos hacer que encuentre alguna "r"? Por ejemplo, sabiendo que hay una "r" en la posición 12, podemos decirle:
  • var letraRFinalAt13 = ristra.lastIndexOf('r', 13);
  • Con esta función, la función empezará a contar hacia atrás a partir de la posición 13 de la ristra y, al llegar al punto 12, encontrará la "r", devolviendo dicho número.
  • y ahora vamos a comprender el concepto de Substrings. Las Substrings, como su nombre indica, son un subconjunto de Strings. Realmente, una Substring no es más que una porción de una String, y como nadie nunca ha definido el tamaño de una String (existe la String vacía: ''), realmente una Substring es una String en todo derecho, pero así se llama al método con el que se crea esta String porción de otra.
  • var subristra = ristra.substring(3, 10)
  • En la variable "subristra" se guardará una String que equivaldrá a todo el contenido desde las posiciones 3 hasta la 10 (ambas inclusive) de la ristra que ya teníamos. Como siempre, hay que empezar a contar por el número 0 como primera posición de la ristra, de modo que esta substring tendrá el valor 'o es un '.
Existen muchas otras funciones aplicables a las Strings, pero de momento con esa creo que tenemos bastante. Al igual que ocurre con HTML y CSS, dar una lista completa de las funciones de cada objeto de JavaScript sería casi imposible, por lo que intentaremos comprender algunos conceptos y, con el tiempo tal vez aprendamos alguna que otra función, pero para algo escribiré también la guía de referencia correspondiente cuando toque el momento.
Como última anotación, quiero señalar el hecho de que lo primero que vimos en este artículo, el atributo "length" de JavaScript, cuenta el número de caracteres que contiene la ristra, pero esto no se corresponde con la última posición de la String, ya que, como he repetido en varias ocasiones, las posiciones empiezan a contarse a partir del número 0. De este modo, la última posición de una String se puede definir como:

var ultimaPosicion = ristra.length - 1;

Simplemente es un truco que os será útil en muchas (demasiadas) ocasiones.

EJERCICIOS

Esta semana tenemos algo más de jugo para ir trabajando. Nuestro primer ejercicio de programación va a consistir en declarar en una página una ristra con el siguiente contenido:
Las monocotiledóneas tienen hojas no pecioladas y sus pétalos y estambres están dispuestos en grupos de tres.
Tendremos que conseguir extraer a una substring la palabra "pecioladas" pero, ¡ojo!, no se vale contar los puestos que hay, todo deberemos conseguirlo a través de programación (como si no supiéramos cómo es la frase).
En caso de que queráis hacerlo algo más difícil, intentadlo con "pétalos". Para ese segundo os doy una pista: la función "indexOf" no sólo busca letras, sino también substrings.

Y eso es todo por esta semana, la semana que viene empezaremos a ver las primeras estructuras, ¡estad atentos!

lunes, abril 23, 2012

Desentrañando... Capitán Marvel

Billy Batson era un huérfano que llamó la atención del mago Shazam, el cual le enseñó que, con sólo pronunciar el nombre del anciano, recibiría unos poderes otorgados por seis deidades, cuyas iniciales formaban dicha palabra mágica. De este modo, al decir "Shazam" Billy recibía la sabiduría de Salomón, la fuerza de Heracles, la resistencia de Atlas, el poder de Zeus, el coraje de Aquiles y la velocidad de Mercurio, convirtiéndose así en una versión adulta de sí mismo que se hacía llamar Capitán Marvel.
Gracias a estos poderes, Billy se pudo enfrentar al maléfico doctor Sivana y al que se convertiría en su némesis, Black Adam, un antiguo elegido por el mago Shazam que se había descarriado de la senda del bien y que muchos años antes había secuestrado a Mary, la hermana de Billy.
Con el tiempo, Billy no sólo encontraría a Mary, la cual se convertiría en Mary Marvel, la versión femenina del héroe, sino que se unirían a él otros héroes como los Generales Marvel, el Capitán Marvel Jr. o el Tío Marvel.
Desde muy pronto, Billy empezó a trabajar en la radio WHIZ, donde contaba las aventuras de su alter-ego, donde conocería a su jefe Mr. Morris y a Joan Jameson, su secretaria y una de sus pocas confidentes. Aparte de los amigos hasta ahora mencionados, el Capitán Marvel también se alió con otros héroes al formar parte de la Sociedad de la Justicia de América, donde incluso tuvo que hacer equipo con un supuestamente reformado Black Adam.
Cuando el mago Shazam y el Espectro se enfrentaran durante el Día de la Venganza, la Familia Marvel tuvo que participar en la búsqueda de los Siete Pecados Capitales que se habían desprendido de la Roca de la Eternidad, tras lo cual el Capitán Marvel tomó el puesto de sucesor de Shazam, perdiendo momentáneamente la cordura. Recientemente, y siendo Billy el nuevo Shazam, Freddy Freeman, anteriormente conocido como Capitán Marvel Jr., se ha convertido en el nuevo Capitán Marvel.

domingo, abril 22, 2012

The CubesPaper, Número XXVI (22/04/2012)

Bueno, después del problemilla de la semana pasada, todavía la cosa no está del todo estable con el internet por aquí, pero al menos he podido recopilar alguna que otra noticia que aquí les dejo. Espero que la semana que viene, The CubesPaper vuelva a la completa normalidad.

Se desvela el misterio tras "Spider-Men"
Como ya se sospechaba, la trama juntará a Peter Parker y Miles Morales
Más información: ActualidadComic

Nueva serie de Gámbito
El mutante con poderes kinéticos tendrá serie propia en agosto.
Más información: ActualidadComic

Hannibal Lecter salta a la pantalla pequeña
El famoso caníbal de "El Silencio de los Corderos" tendrá una serie de televisión propia.
Más información: Alt1040

sábado, abril 21, 2012

Un Cubo en Alemania, Semana II

¡Hola! Aquí estamos en mi segundo sábado en Alemania, aún sin subir ninguna foto, pero en estos días espero hacerlo (hoy no toca, que el Barça-Madrid es en un rato y, aunque no me gusta el fútbol, el acto social no me desagrada). Pero aún así, aquí les cuento lo que me ha ocurrido a lo largo de esta semana (esta vez sí, semana completa).
Después de haber ido al cíber la semana pasada para subir el post, donde comprobé lo basura que eran los ordenadores de allí, volví a la residencia listo para salir de fiesta, aunque la fiesta "normal" del lugar no me gustó demasiado. Por suerte, me había informado y había encontrado un par de garitos metaleros, así que hacia el Rock und Wikingerbar, un local que, como su nombre indica, llevaba una ambientación vikinga bastante curiosa. Allí fue donde Rayco y yo acabamos mientras Saul, Rubén, Javi y Martín se quedaban en una discoteca del centro bastante más cool. Tras conocer a un grupito de aficinados al billar (y, por descontado, a la cerveza), acabamos en el Paules Metal Eck, otro bar metalero bastante curioso.
El domingo fue bastante casero, aunque por la tarde aproveché para conectarme un rato (sin aún poder subir fotos... como ya sabéis) para luego irme a buscar la universidad donde iba a hacer las prácticas... tardando la eternidad para encontrarla (y que luego no me sirviera para nada, como ahora les contaré).
Llega el lunes, un día tan esperado como temido, ya que por fin empezaban las prácticas. Poco a poco vamos abandonando los pisos, en mi caso acompañado por Saul ya que habíamos quedado con Inés para que nos guiara hasta nuestros trabajos ya que ambos teníamos unas situaciones "especiales"... ¡y tan especiales! Debido a problemas de organización, ninguno de los dos trabajamos este primer día, e incluso yo me encontré con que mi lugar de trabajo no era el que me habían dicho originalmente, sino otro que estaba aún más lejos.
Así que el resto de mi lunes consistió básicamente en pasearme por la puerta de Brandenburgo y Tiergarten e ir en busca de una tienda de cómics que me habían mencionado y comprar un cómics en alemán para intentar practicar (en concreto, uno de la JLA llamado Kalter Stahl (en inglés Cold Steel), que ya reseñaré en un par de meses.
A partir del martes empezó el trabajo, de 10 de la mañana a las 6 de la tarde de lunes a viernes, un horario que, si bien no es malo, no da margen para hacer mucho más. Por suerte, este viernes he preguntado y me han dicho que, mientras haga mis ocho horas, puedo entrar desde las 7 si quiero. Así que supongo que a partir del próximo lunes cambiaré mi horario. Por el resto, un ambiente de trabajo bastante relajado y en el que me han mandado un proyecto que, básicamente, es programar una página web para ayudar a un proceso de una web de ventas que tienen ellos. Así que tendré que aplicar todo lo que os estoy enseñando en el tutorial de HTML.
Además, a lo largo de la semana he logrado comprarme un stick con el que conectarme a internet con mi portatil, por lo que este artículo... ¡lo estoy publicando desde la residencia! La verdad, se hacía necesario, sobre todo para las noches aburridas en la residencia. Aunque tengo una limitación de 5 GBs de descargas al mes (a menos que me pague una recarga), pero bueno, menos da una piedra.
Además, este viernes he vuelto a salr por el Rock und Wikinger y tengo intención de convertirme en un habitual del local. Y hoy sábado por fin he podido salir a hacer turismo, junto a Rubén, Javi y Martín, y además de visitar (de nuevo) la puerta de Brandenburgo, el Parlamento y Tiergarten, también hemos visto parte de lo que queda del muro de Berlín, la "Topografía del Terror", el Checkpoint Charlie, Postdamer Platz y probablemente algo más que se me olvide. Todo bastante espectacular, sin duda, aunque, como ya me ocurrió en Hamburgo, se me ponen los pelos de punta y da mucho mal rollo saber lo que ocurrió aquí hace tantos años.
Y, bueno, de momento eso es todo lo que ha ocurrido esta semana, un poco por encima. A partir del lunes intentaré hacer cosas por la tarde aprovechando que saldré antes, y, por supuesto, esta noche habrá fiesta como debe de ser siempre. Esta vez sí, a lo largo de la semana prometo subir fotos a los dos artículos, que hay cosas bastante curiosas. ¡Hasta la próxima!

viernes, abril 20, 2012

(Reseña de serie) Friends, 2ª temporada

Tras el éxito de la primera temporada de Friends, la NBC se pudo permitir una segunda temporada, teniendo a todo el reparto de vuelta (como ocurriría durante todas las diez temporadas que duró la serie). Aprovechando que ya conocemos a los personajes principales y sus situaciones, como en toda sitcom que se precie, en esta segunda temporada las tramas empiezan a ser más complejas.
La temporada comienza justo donde acabó la anterior, cuando Rachel descubría los sentimientos de Ross hacia ella cuando él estaba de viaje, y a su vuelta lo espera en el aeropuerto con intención de corresponderle, sin imaginarse que Ross no va a bajar solo del avión. A partir de entonces la situación de la primera temporada se muestra a la inversa, en la que Rachel intenta ocultar los celos hacia la nueva novia de Ross hasta que, en estado de ebriedad, se lo confiesa por teléfono. Respecto a los otros personajes, Joey por fin consigue su primer papel importante en el culebrón "Los Días de Nuestra Vida" lo cual lo acaba llevando a abandonar el piso que comparte con Chandler, mientras Phoebe descubre dónde se encuentra su padre y Monica empieza a salir con un oftalmólogo amigo de su padre a pesar de la diferencia de edad.
Esta temporada, en mi opinión, mejora en calidad con la anterior. Aunque los primeros episodios, la mayoría centrados en el triángulo Rachel-Ross-Julie, siguen tomando esta relación como única trama a seguir, mientras los otros personajes todos tienen tramas autoconclusivas en cada episodio, esto cambia y todos los personajes empiezan a tener unas tramas más largas, siendo tal vez Phoebe la que tiene la trama menos explorada, al haber sólo dos capítulos que sigan esta trama. Pero, de hecho, durante la segunda mitad de la temporada, Ross y Rachel son dados un poco de lado mientras se exploran estas otras tramas, dándole bastante frescura al asunto. También el humor mejora bastante en esta temporada debido precisamente al hecho de que ya conozcamos a los personajes y los guionistas no necesiten tener tanto cuidado para que sus comentarios o formas de actuar nos parezcan demasiado extraños. Desgraciadamente la finale no es tan buena como la de la primera, a pesar de que cierra un par de tramas, alguna que estaba pendiente desde la primera temporada (la de la huída del altar de Rachel), pero se siente más como un capítulo cualquiera que como una season finale en condiciones.
Las actuaciones siguen siendo geniales y encima el éxito de la serie les permite tener más a menudo a actores de renombre (aunque en la primera temporada ya contaron con George Clooney en un episodio), como Julia Roberts, Jean-Claude Van Damme, Charlie Sheen o incluso Tom Selleck, que interpreta a Richard, el novio maduro de Monica, durante casi toda la segunda mitad de la temporada.
En conclusión, la serie de momento sólo mejora y dejan ganas de seguir viendo capítulos para ver cómo continúa la trama (a pesar de saber a grandes rasgos lo que va a ocurrir, por haber visto tantas veces la serie aunque de manera desordenada).

jueves, abril 19, 2012

(Reseña de película) Batman Vuelve

El éxito de la película Batman dirigida por Tim Burton y protagonizada por Michael Keaton, Jack Nicholson y Kim Basinger en 1989 permitió al director rodar una secuela que se estrenaría tres años más tarde, aunque del trío protagonista sólo regresaría Keaton, aparte de varios de los actores secundarios. De esta manera, en 1992, llego a los cines Batman Returns (en España conocida como "Batman Vuelve"), siendo otro éxito para el director.
Esta segunda película nos presenta a otros dos villanos clásicos del personaje. Por un lado, tenemos al Pingüino, el líder de una banda criminal criado por los animales por los que recibe su apodo, que busca compensación por haber sido abandonado nada más nacer debido a sus deformaciones, aunque la "compensación" que busca no es la que en un principio hace creer a Gotham. Por otro lado, tenemos a Selina Kyle, la secretaria de un poderoso empresario que, tras descubrir ciertos secretos sobre su jefe, es empujada desde una ventana, aunque milagrosamente sobrevive, eso sí, con la cabeza un tanto trastocada y una cierta obsesión con los gatos. Estos dos personajes tendrán como nexos por un lado a Max Shreck, jefe y atacante de Selina que intenta manipular a Oswald (el Pingüino) para que se convierta en alcalde y le conceda los permisos que desea, y por el otro lado, como no, el justiciero Batman, que intenta parar los pies a ambos.
Al igual que hice con la primera película, no voy a tener compasión con esta segunda parte por mucho que la gente la admire tanto. La película es tal como la he descrito en la sinopsis anterior: si en la primera película el papel de Batman estaba bastante eclipsado por el del Joker, en esta segunda parte está casi a punto de ser considerado un secundario, si no fuera porque a partir de que empieza la acción se le empieza a tener un poco más en cuenta. Sin embargo, la película sigue flojeando bastante en intentar meternos lo más mínimo en la psique del personaje, concentrándose sobre todo en explorar a los villanos. Además, el tiempo en la película ocurre de un modo muy raro y desordenado, cometiendo muchos errores a la hora de intentar llevar varias tramas a la vez, lo cual no sería tan grave si no fuera porque Shreck está metido en todas las tramas y, por lo tanto, no guarda ninguna lógica (entre que lanza a Selina por la ventana y la vuelve a ver vivita y coleando pasa un día entero si analizamos las escenas; sin embargo, todos los diálogos indican que ocurre al día siguiente). De este modo, la película se gana un suficiente raspado en historia, y es sólo por los papeles de los villanos.
Por otro lado, y ahora concentrándonos en lo que viene siendo la "adaptación", si en la primera película, Batman se convirtió en un personaje aún más oscuro que en los cómics al atacar al Joker con intención de matarlo, en esta segunda hace todo lo contrario, y le queda muy poco para parecerse al Batman de Adam West. La relación entre Batman y Catwoman tampoco está especialmente explorada, e incluso hay una conexión mucho más seria entre sus otras dos identidades, completamente el contrario de lo que suele ocurrir en los cómics. Y, finalmente, el hecho de que los dos villanos de esta película, dos de los enemigos más cuerdos que tiene Batman (recordemos que la mayoría de sus enemigos están bastante mal de la azotea), aparezcan esta película con unos desequilibrios mentales muy superiores al que tenía el Joker en la primera película, termina de borrar cualquier esperanza de que fuera a darle un aprobado en este aspecto.
La ambientación... Bueno, es Tim Burton. No me gusta el estilo de Tim Burton. Y en esta película su estilo oscuro, exagerado y cuasi-caricaturesco se nota incluso más que en la anterior película, además de que, debido a esto, los dos villanos han sufrido la gran degeneración que comenté en el anterior párrafo. Sé que mucha gente piensa que Burton es indicado para llevar una película de Batman, pero lo cierto es que para mí una ciudad oscura, corrupta y decadente y un circo macabro no son lo mismo, y esto último es lo que intenta mostrar Burton en estas películas.
Los actores... Una vez más, Michael Keaton demuestra no pegar con el papel, sobre todo cuando falla tanto al interpretar a Wayne como a Batman. Michelle Pfeiffer hace un papel horrendo como Selina Kyle, y relativamente aceptable como Catwoman, Christopher Walken (Max Shreck) no muestra sentimientos en toda la película, y es el genial Danny DeVito la auténtica estrella de la película, interpretando de fábula esta versión tan bizarra del Pingüino. Respecto a los secundarios, una vez más es Michael Gough (Alfred Pennyworth) el único destacable, mientras que el comisario Gordon (interpretado pésimamente por Pat Hingle) sigue esperando tener un papel mínimamente importante algún día.
En conclusión, una película en la misma línea que la primera parte, ya que, aunque en algunas cosas mejora algo, en otras pierde completamente. Y es una lástima ya que, con este par de villanos, la película tenía mucho potencial.

miércoles, abril 18, 2012

(Reseña de cómic) Superman/Batman #8-13

Tras haber reseñado la primera trama de esta serie que ocupaba sus primeros siete números, hoy me toca hablar de los siguientes seis números, donde ocurre la trama conocida como The Supergirl from Krypton (que sería adaptada en la película Superman / Batman: Apocalypse), una vez más de la mano de Jeph Loeb, esta vez acompañado por Michael Turner.
Continuando la lluvia de meteoritos que ocurrió al finalizar la anterior saga, Batman y la JLA están intentando limpiar toda la kriptonita que ha caído mientras obligan a Superman a permanecer en su Fortaleza de la Soledad, cuando Batman descubre una extraña nave que cayó con los meteoritos. En dicha nave hay una chica que, una vez el Supes habla con ella, descubren que es su prima, Kara, que por algún motivo ha tardado todo ese tiempo en llegar. Sin embargo, la historia de la chica y su "conveniente" pérdida parcial de memoria no convencen a Batman, sobre todo sabiendo que Darkseid sabía algo sobre este asunto, como Luthor reveló en la anterior saga...
La historia la verdad es mejor que la anterior, las loebeadas no son tan bestias en esta ocasión aunque su mano llena de intentos de referencias y forzando un intento de "familiaridad" con la interconección de todos los elementos de DC se sigue notando. Además, continúa mostrándonos continuamente los pensamientos de ambos personajes en pos de mostrarnos el contraste entre ambos personaje, algo que durante el primer número o incluso durante la primera saga podía llegar a ser divertido, pero ya en este punto cansa mucho. Pero a su favor diré que la historia es entretenida, se hace amena de leer, tiene una buena estructura (salvo por el segundo clímax, que no nos sumerge tanto como el primero, y realmente sobra) y maneja bastante bien a los personajes, además de reintroducir de una manera más que correcta a un personaje que llevaba desde su muerte en la Crisis en Tierras Infinitas (casi veinte años antes) sin tener una versión definitiva en el universo Marvel.
Sin embargo, tengo que criticar el hecho de que, a pesar de que la serie se titule Superman / Batman, hasta el momento el auténtico protagonista de la saga ha sido Superman, mientras que Batman parece una especie de sidekick crecidito y con mala leche. Que la primera saga se centrara en Superman me parece bien e incluso podría servir para establecer la asociación que se debería iniciar en este cómic (sobre todo si siguieran con la trama de Metallo, que espero que en próximos números sigan por ese camino, para darle algo de sentido). Sin embargo, de momento la serie parece una serie de Superman en la que aparece Batman (cuyo papel hasta el momento no es mucho mayor de los que han tenido Power Girl, la Mujer Maravilla o Supergirl, con la única diferencia de que Batman ha aparecido en ambas sagas hasta el momento).
También el trabajo de Michael Turner supera al de McGuiness, ya que, manteniendo todos los puntos buenos de McGuiness, añade un estilo de dibujo bastante menos caricaturesco, aunque sus acabados son un poco más sucios, único punto tal vez en contra del dibujo.
En general, una historia bastante buena que hace que me apetezca seguir leyendo esta colección a pesar de que Loeb no sea un autor que me haga ilusión generalmente. Y sigue convirtiendo la colección en un perfecto punto de partida para aquellos que sean nuevos en los cómics de estos personajes.

martes, abril 17, 2012

Tutorial de desarrollo web, Parte XXVIII: Tipos de datos básicos

Una semana más estamos aquí para el curso de desarrollo web, aunque en esta ocasión yo estoy ya en Alemania así que no estoy controlando si esto se publica, pero no creo que Blogger me defraude. O eso espero. Bueno, sea como sea, aquí están los ejercicios de la semana pasada, para empezar ya con el nuevo tema.
La semana pasada decíamos que el JavaScript nos permitía mucha libertad con respecto a las variables. Eso es porque JavaScript es lo que se llama un lenguaje de programación no tipado. "¿Y qué nos quieres decir con eso?" os preguntaréis. Vamos parte por parte.
En los lenguajes de programación tipados, a la hora de declarar una variable tenemos que especificarle qué tipo de dato se va a guardar en esa variable, y sólo se le podrán introducir datos de ese tipo y aplicar funciones relacionadas con ese tipo. En JavaScript (como ejemplo de lenguaje no tipado) no funciona así, ya que nuestra variable es sólo un hueco de memoria esperando recibir un dato, sin importarle qué tipo de dato sea, lo cual es un arma de doble filo.
Pero que no necesitemos declarar qué tipo de variable es cada cual no significa que en JavaScript no existan los tipos de datos. Todo lo contario, están ahí y nos podrán dar problemas si no los tenemos en cuenta. Por ello es que esta semana vamos a intentar entender cuales son los tipos de datos básicos.
  • Uno de los tipos de datos que podremos guardar en nuestras variables serán los valores enteros (mejor conocidos por los programadores como int o Integer, dependiendo del lenguaje). Si recordamos nuestras lecciones de matemáticas, los números enteros son todos aquellos números finitos que no tengan parte decimal, da igual que sean positivos o negativos. Unos cuantos ejemplos de números enteros serían:
  • 28
  • -19
  • 0
  • 32
  • -130
  • 1822
  • De este modo, si en una variable guardamos cualquier número entero desde -∞ hasta ∞ (sin incluir a ninguno de estos dos valores) decimos que en esa variable tenemos guardado un valor de tipo entero, y por tanto podremos aplicarle todas las operaciones que se le aplican a las variables de tipo entero (aunque en JavaScript no existan los tipos de variables).
  • Subiendo un nivel por encima de los valores enteros tenemos los valores reales (para los programadores habitualmente conocidos como float o double). Los números reales engloban a los enteros, pero además les añaden todos aquellos números con decimales. De este modo, ejemplos de números reales serán los siguientes:
  • 32.0
  • -15.6
  • 37.043
  • -1.0
  • 0.0
  • -0.7
  • Una curiosidad que tienen los valores de tipo entero, sobre todo importante en lenguajes no tipados como es el JavaScript, es que, como veis en nuestros ejemplos, absolutamente todos tienen parte decimal, incluso aunque esta sea 0. En lenguajes tipados esto no tiene tanta importancia en un primer momento, pero en JavaScript, en caso de querer guardar un valor real, debemos recordar siempre incluir su parte decimal incluso aunque no tenga, ya que si no, al no tener definido un tipo para la variable, el lenguaje lo interpretará como un entero.
  • En tercer lugar, tenemos el tipo caracter (char o Character), el cual, como su nombre indica, se trata de un simple caracter que podamos incluir con el teclado. Ejemplos de caracteres son lo ssiguientes:
  • a
  • ?
  • 2
  • -
  • J
  • º
  • \n
  • Como veis, el tipo caracter es el más "dinámico" de todos. Sin embargo, este tipo de datos tiene dos cosas importantes a tener en cuenta. El primero es que todos y cada uno de los caracteres deben ir rodeados por comillas simples (por ejemplo: 'a'). Esto es importante no sólo por el hecho de que nos ayuda a no confundir caracteres con variables, sino que, en caso de querer introducir un caracter numérico (como el 2 que tenemos en el ejemplo), en caso de no entrecomillarlo sería guardado como un entero.
  •  En segundo lugar que cada variable caracter sólo puede guardar un único caracter. Por eso en todos los ejemplos no hay ninguna palabra formada. Tal vez digáis que entonces por qué el último ejemplo tiene dos caracteres ('\n'), de eso hablaremos con el tiempo, pero por lo general la barra inversa (\) se usa en JavaScript para representar caracteres especiales. En el caso de este ejemplo, '\n' representa el caracter "salto de línea" (sí, un salto de línea para un ordenador es un caracter).
  • El último de los tipos básicos es el tipo booleano (bool o Boolean), el tipo de dato binario. Las variables booleanas (cuyo nombre es en honor a George Boole, importante matemático que creó la que se conocería como "Álgebra de Boole") sólo pueden tener dos valores: verdadero o falso. De este modo, sólo existen dos ejemplos de este tipo de variable:
  • true
  • false
  • Los lenguajes de programación suelen aceptar estos valores sin comillas ya que se consideran palabras reservadas del sistema operativo y se reconocen como valores booleanos. Sin embargo, cabe remarcar, por si algún día interactuáis con otros lenguajes de programación, que hay lenguajes donde los valores booleanos son interpretados como 0 (falso) ó 1 (verdadero).
Y tal vez os preguntéis en qué van a afectar estos tipos a la hora de programar. Os voy a dar el ejemplo más básico: el operador +.
Todos hemos usado el operador + alguna vez en nuestra vida. Sirve para sumar dos números, ¿cierto? Pues en programación también es así... casi siempre. Creemos un nuevo documento y démosle una estructura básica HTML para luego abrir una etiqueta <script> en el "body" y empecemos a introducir código:

<script type="text/javascript">
var entero;
var real;
var caracter;
var booleano;
</script>

Bien, hemos declarado una variable de cada uno de los tipos con los que estamos trabajando. Nuestro siguiente paso ahora va a ser asignarle valores. Así que vamos a por ello:

<script type="text/javascript">
var entero;
var real;
var caracter;
var booleano;
entero = 1;
real = 1.0;
caracter = '1';
booleano = true;
</script>

Bien, ahora todas nuestras variables tienen valores, que realmente son bastante similares entre ellos (como dije antes, el valor booleano "true" equivale a 1). Ahora vamos a mostrarnos los valores por pantalla:

<script type="text/javascript">
var entero;
var real;
var caracter;
var booleano;
entero = 1;
real = 1.0;
caracter = '1';
booleano = true;
document.write(entero  + '<br/>');
document.write(real  + '<br/>');
document.write(caracter  + '<br/>');
document.write(booleano + '<br/>');
</script>

Como vemos, he incluido un salto de línea al final de cada write para ver las cosas más claras (si no, todos los resultados habrían salido en una sóla línea). Recordemos que la semana pasada vimos que, para el "document.write", el operador + podía significar concatenación. Aunque no siempre. Ahora lo veremos.
En primer lugar, abramos nuestra página y veamos que nos ha dado este resultado:
1
1
1
true
 Podemos ver que tres de los valores parecen ser exactamente iguales. De hecho, JavaScript ha eliminado la parte decimal de la variable "real" al comprobar que es 0 (otros lenguajes de programación lo habrían guardado, todo depende del lenguaje). De este modo, la variable entera y la variable real vienen a tener el mismo valor exacto. Sin embargo, la variable "caracter" tiene un valor distinto, aunque parezca que es la misma, y finalmente, la variable "booleano" es evidente que tiene otro tipo de valor... Aunque se parece más al valor de "entero" y de "real" que lo que la variable "caracter" se parece a ellas, aunque a primera vista parezca lo contrario. Vamos a comprobar a qué me refiero sumándole uno en el "write" a cada uno de esta manera:


<script type="text/javascript">
var entero;
var real;
var caracter;
var booleano;
entero = 1;
real = 1.0;
caracter = '1';
booleano = true;
document.write(entero + 1  + '<br/>');
document.write(real + 1 + '<br/>');
document.write(caracter + 1 + '<br/>');
document.write(booleano + 1 + '<br/>');
</script>

Como veis, a cada una de las cuatro variables le hago un "+1" en el momento de imprimirlo. Por lo que sabemos hasta la fecha, esto debería "concatenar" sus valores con el 1. Sin embargo, el 1 no es un caracter ni un String (no está entrecomillado). ¿Qué ocurrirá? Ejecutémoslo:
2
2
11
2
¿Pero qué leches ha ocurrido aquí? ¿2? ¿11? ¿De dónde sale todo esto? Bueno, vamos paso a paso para intentar entenderlo.
En primer lugar tenemos que entender que el operador + en JavaScript sirve tanto para concatenar fragmentos de texto (como ya habíamos visto) como para sumar números. Por eso ha reaccionado de manera distinta en cada uno de los cuatro casos depende del tipo de datos que hubiera guardado en la variable. También hay que entender que el JavaScript actúa de arriba abajo y de izquierda a derecha, lo que significa que lo primero que encuentre es lo primero que ejecuta (salvo que encuentre paréntesis, tal como ocurre en matemáticas, pero ya hablaremos de eso). Pero, ¿qué  ha hecho exactamente?
En el primer "write" el navegador se ha encontrado que la primera variable tiene almacenada un valor de tipo entero, así que interpreta que el símbolo + de a continuación debe de ser una suma. Y de hecho, encuentra que el siguiente valor, un 1 literal, también es un valor entero (un número sin entrecomillar es siempre un valor numérico), por lo que toma el valor de la variable "entero" (1) y el valor literal encontrado a continuación (1) y los suma. Finalmente, cuando encuentra el segundo + sigue esperando un entero, pero en su lugar encuentra una ristra de caracteres, momento en el que se da cuenta de que, tal vez, no se espere sumar los valores sino concatenar (ya que una ristra no se puede sumar), pero, como ya sumó lo anterior, a lo hecho pecho, y coge el valor entero obtenido (2) y lo concatena con el salto de línea <br/>.
En la segunda línea le pasa básicamente lo mismo. Encuentra el valor entero (que, recordemos, él había transformado a entero al ver que no tenía decimal) y se lo suma al siguiente valor, también entero, y luego es cuando reacciona para concatenar.
La tercera línea nos muestra ya algo distinto. En este caso, el navegador empieza por encontrar la variable caracter en la que habíamos guardado un caracter '1'. Ya desde el momento en que el navegador comprueba que lo que hay guardado en esa variable es un caracter (como dije antes, se guardó de manera distinta al ser un caracter en lugar de un número) decide que los "+" que aparezcan a partir de entonces serán concatenaciones y no sumas. Por ello, concatena el valor de tipo caracter que hay en la variable "caracter" ('1') con el valor literal que recibe a continuación (1) a pesar de que no sea un caracter, pero, al no ser capaz de sumarlo (ya que no es capaz de ver que el caracter '1' es en realidad un número), lo concatena, y por eso ese resultado tan curioso ("11").
Finalmente, uno de los resultados más sorpresivos es el último, el de la variable "booleano". Pero, tal como había dicho antes, los valores booleanos equivalen a 0 y a 1, de modo que no es difícil imaginar cómo lo ha interpretado el navegador si hemos leído lo anterior.
Y, bueno, hasta aquí los tipos de datos básicos, la semana que viene veremos el primer tipo de dato no básico (y el último durante un tiempo) que son las variables Strings (de las cuales ya hemos hablado por encima).

EJERCICIO


Esta semana no hay realmente material como para mandar un ejercicio, así que propongo simplemente probar el siguiente código e intentar entenderlo. La semana que viene lo explicaremos en detalle al comienzo del post:

<script type="text/javascript">
var entero;
var real;
var caracter;
var booleano;
entero = 1;
real = 1.5;
booleano = true;
document.write('' + entero + ' es un entero. <br/> ');
document.write('' + booleano + 2 + ' son un booleano y un entero. <br/> ');
document.write(real + entero + ' es un número real.<br/>');
</script>


Y, con esto lo dejamos por esta semana, la semana que viene más y mejor.

lunes, abril 16, 2012

Desentrañando... Doctor Extraño

Hijo de Eugene y Beverly Strange, el hechicero conocido como el Doctor Extraño fue una vez un cirujano de renombre llamado Stephen Vincent Strange que perdió completamente la coordinación en sus manos debido a un accidente. Frustrado al ver que su exitosa carrera desaparecía, Strange probó todos los tratamientos posibles, entregándose finalmente a las artes místicas del que llamaban el "Anciano", un hechicero que vivía en el Tibet, quien lo tomó como su discípulo después de que Strange descubriera cómo el actual discípulo del anciano, el Barón Mordo, conspiraba contra su maestro, y Strange intentara prevenir al hechicero supremo (aunque éste conocía perfectamente los planes de su discípulo).
De este modo, Strange empezó a entrenar con el Anciano, quien desde muchos años antes incluso de su primer encuentro tenía pensado convertirlo en su sucesor. Tras muchos años, durante los cuales Strange conoció todo tipo de hechizos y de criaturas sobrenaturales, por fin volvió a los Estados Unidos, donde estableció su Sanctum Sanctorum en Nueva York, acompañado por Wong, el descendiente de una larga dinastía de sirvientes de los hechiceros supremos.
A partir de entonces, el Doctor Extraño empezó a enfrentarse a todo tipo de criaturas místicas, como Pesadilla o el temible Dormammu, en muchas ocasiones aliándose con otros héroes como Spiderman o Thor para derrotar a estos enemigos. También durante esta época, Strange conoció a Clea, una habitante de la dimensión de Dormammu con quien Strange comenzó una relación.
Strange se uniría a distintos grupos de héroes, destacando sobre todo los Defensores, con quienes incluso recibió una maldición por la que deberían aparecer allí donde hubieran crisis, e incluso se acabarían descontrolándose convirtiéndose en un grupo dictatorial llamado la "Orden". También, con el tiempo, Strange se uniría a algunos de los seres más poderosos de la Tierra, cada uno en un campo distinto, y se unió a ellos como representante de las artes místicas, formando el grupo conocido como los Illuminati.
Strange alcanzaría el rango de Hechicero Supremo cuando tuviera que matar al Anciano para evitar que Shuma-Gorath, una malvada entidad mística, accediera a la Tierra, y el propio hechicero lo pidiera directamente a su aprendiz, heredando de esta manera el título de su maestro.

Lecturas recomendadas:
Strange Tales #110
Strange Tales #130-141
Marvel Feature #1
Dr. Strange and Doctor Doom: Triumph and Torment
The Order

domingo, abril 15, 2012

Interrupción de The CubesPaper

Si estais viendo esto es porque esta semana no he podido actualizar The CubesPaper por problemas con la conexión a internet aquí en Berlín (ya mencioné ayer los problemas que había)... Espero arreglarlo para la próxima semana.

sábado, abril 14, 2012

Un Cubo en Alemania, Semana I

Aún sigo sin poder subir fotos. Espero en unos días que la cosa se aclare. Mientras tanto, sigan disfrutando con los posts programados.

Como ya les anuncié hace una semana, desde el pasado miércoles 11 de abril me encuentro en Alemania donde estoy llevando a cabo el módulo final de mi ciclo formativo, la Formación en Centros de Trabajo, formando también parte del programa Erasmus al que hasta hace unos años sólo podían optar los universitarios. Como prometí, los posts diarios seguirán apareciendo gracias al curro que me pegué los meses anteriores al viaje y, aunque tener un acceso propio a internet se está viendo peliagudo, al menos me las apañaré para publicar los sábados y domingos los correspondientes artículos, siendo los sábados (como hoy) los días de contar mis experiencias como estudiante de intercambio.
Aclararé que, en esta aventura vamos a participar ocho personas, que estaremos divididos en dos pisos. En uno de los pisos nos quedamos: Saul, Alejandro, Moisés y un servidor. En el otro se quedan: Rayco, Rubén, Javier y Martín. Para que sepáis de lo que hablo.

MIÉRCOLES 11 DE ABRIL

Este fue el día en que comenzó todo. Habiéndome levantando a las 6:30 de la mañana para prepararme, meter alguna cosa en la maleta, sacarlo todo para volver a meterlo comprobando que estuviera todo, prepararme algo de comer para el día (que ya desde entonces sabía que no iba a ser poco ajetreado), volver a asegurarme de que me llevara todo lo necesario, y despedirme ya de parte de mi familia (en concreto de mi hermana, Krisna-chan), parto con mi madre hacia el aeropuerto de Gran Canaria, donde me encuentro a los otros siete chavales que me acompañarían en esta aventura, además de un par de sorpresas con los nombres de Merky e Ismath, dos grandes amigos que madrugaron sólo para darme una última despedida (como si no nos hubiéramos despedido varias veces ya la semana anterior).
Tras unas despedidas que intentaban ser lo menos emotivas posibles (aunque no terminaban de lograrlo), el Cubo junto a los otro siete chavales del programa nos dirigimos a la terminal del aeropuerto, donde, ya notando como los nervios se hacían presa de nosotros, esperamos a que saliera el avión, mientras alguno calmaba su apetito. Por fin montamos en el primer avión que nos llevaría hasta Madrid con la compañía Air Europa. Algunos sucumbían al sueño, otros no podíamos hacer otra cosa que intentar tomárnoslo todo con el mayor humor posible incluso cuando el avión empezara a hacer cosas extrañas al acercarse al destino, notando como de repente tenía triple nuez después de que empezaran a oírse ruidos extraños y las luces empezaran a fallar mientras el viento no paraba de azotar al avión. Por suerte, y como podrán suponer ya que estáis leyendo esto, todo salió bien y aterrizamos sin mayor problema en Barajas, el aeropuerto de Madrid.
Recogidas las maletas, el grupo se dividió una vez más, algunos buscando amistades que teníamos en la capital del país. En mi caso, había aprovechado para avisar a otra gran amiga, Desa, que se pasó por el aeropuerto tras salir de clase para hacerme compañía unas horas y, de paso, dejarme un par de recetas que me servirían para no alimentarme de fast food los dos meses que me esperan en Alemania (como mínimo). Tras facturar y despedirme de esta señorita, me reencontré con los otros siete en la terminal, donde montamos en el siguiente avión.
Tras la incómoda experiencia con el anterior avión, cortesía de Air Europa, subir a un avión de Lufthansa fue todo un placer. No sólo el avión era incomparablemente más cómodo, sino que, por ser vuelo internacional, nos dieron de comer, aún cuando el vuelo era ligeramente más corto que el anterior que habíamos hecho (donde por darnos, casi no nos dieron ni las gracias). Por supuesto, recordé la fucking food fucking free que ya cierta otra amiga, de nombre Paula, me había comentado hará unos cuatro años cuando el viaje al Wacken, ya que ella fue con esta compañía hasta allí. Definitivamente, el servicio de Lufthansa fue magnífico a pesar de que nos colocaron en asientos ilógicos ya que aquellos que habían facturado juntos no necesariamente estaban juntos, mientras que los que habíamos facturado por nuestra cuenta sí que lo estábamos. No lo entiendo.
El caso es que llegamos a Munich, donde por fin ponemos pie en territorio alemán (o no, ya que se supone que es zona internacional) y empezamos a flipar cuando Rayco aparece contándonos cómo en los lavabos, no contentos con tenerlo todo automatizado, también tenían incluso una pantallita para que dieras tu valoración del servicio en la entrada. Si es que lo que no se les ocurra a estos alemanes... Además pudimos comprobar cómo los clientes de Lufthansa teníamos derecho a algunos servicios como periódicos o café gratis, aunque nadie se hubiera percatado si, sin ser pasajero de dicha compañía los hubieras cogido, lo cual nos empezó a demostrar la presunción de civismo que muestran los alemanes hacia la gente de a pie... soprendentemente justificada ya que la gente, de verdad, ¡es civilizada!
Último avión, una vez más de Lufthansa, donde en esta ocasón, por ser un vuelo nacional, sólo nos dieron un pequeño aperitivo (sigue siendo más de lo que nos dieron en Air Europa), y llegamos a Berlín, donde tras algún que otro jaleo y comprobar que las cabinas de teléfono alemanas son igual de tragaperras que las españolas, nos encontramos por fin con Inés, la profesora del instituto alemán con la que Miguel Peña, coordinador Erasmus del I.E.S. El Rincón, ha contactado para que nos ayude. De este modo y mientras nos iba explicando un poco cómo funciona la cosa en Alemania, esta chica nos guía hasta nuestra residencia en Tierpark, donde tenemos la primera sorpresa: ¡nos falta una cama, no tenemos sábanas, y tenemos sólo dos llaves, una para cada piso! Eso sí, en mi habitación tengo un cuartito de unos 3 metros cuadrados de lo más mono. Inés nos promete que al día siguiente se encargará de estos problemas mientras Saul se ofrece a dormir en el sillón, comprobando que no es especialmente cómodo aunque recibió alguna que otra ayudita. Y, así, tras echar un vistazo a la televisión alemana y sus "excentricidades", nos vamos todos a dormir para al día siguiente empezar a organizarno.

JUEVES 12 DE ABRIL

Relativamente temprano nos vamos levantando todos para poder ir a hacer una pequeña compra, aprovechando que teníamos un Lidl no muy lejos de la residencia, aunque encontramos otro supermercado, de nombre Alvil, aún más cerca, y empezamos también a comprobar que los precios aquí están mucho mejor que los que hay en España (al menos en Las Palmas de Gran Canaria). Acercándose el mediodía manda Inés un mensaje por el que tenemos que acercarnos a la residencia ya que el casero va a llevar la cama, y de paso habrá que explicarle lo de las sábanas y las llaves. De este modo, Moisés y yo vamos para allí e intentamos hablar con él, pero, ¡premio! El casero no entiende ni papa de inglés. De este modo, mediante gestos y chapurreando alemán consigo hacerle entender que necesitamos más llaves, pero el tema de las sábanas no hubo manera de hacérselo entender, aunque, tras la noche anterior y viendo que tenemos calefacción en el piso, de momento no se hace urgente.
Almorzamos y a la tarde, tras ver un reality show bastante perturbador por la tele, Inés llega y nos explica cómo llegar a cada uno a nuestro puesto de trabajo para luego guiarnos hasta la estación de Lichtenberg donde compramos las tarjetas de transporte con las que esto nos saldrá bastante más baratos. Inés se despide de nosotros y seguimos por nuestra cuenta, dividiéndonos en dos grupos, de modo que Alejandro, Rayco, Saul y yo nos dirigimos a Alexanderplatz, lo que de momento, en nuestra actual ignorancia, tenemos como el centro de la ciudad (al menos en lo que a comercios se refiere), a intentar contratar internet, pero nos encontramos con unas condiciones un tanto extrañas, por lo cual hasta día de hoy aún no hemos contratado (y no sé cómo acabaremos haciéndolo o si lo haremos).
Lo cierto es que, tras esto, decidimos dar un paseo, encontrándonos con una librería bastante agradable donde compramos algún diccionario Inglés-Alemán y, en el caso de Ale, una guía de Berlín, para luego comerno un kebab y dirigirnos de vuelta a la residencia, no sin ejercer nuestro "derecho" como ciudadanos alemanes de ir tomándonos una cerveza en el metro (aunque yo no ejercería dicho derecho hasta el día siguiente debido a que, de momento, no me gusta dicha bebida... acabará gustándome, lo sé). Destacar que, en uno de los metros, al ver a un "peludo" y preguntarle en inglés por garitos metal para este fin de semana salir a dar un garbeo ya, el tipo en seguida se nos mostró como español y nos indicó por dónde tendríamos que ir. A ver si esta noche puedo visitar dichos locales. Y ya de vuelta en la residencia, tras un rato de cachondeo y un poco de pelea de mis compañeros de piso con mis cubos de Rubik, cerramos el chiringuito y nos vamos todos a dormir.

VIERNES 13 DE ABRIL

La mañana de este día realmente fue bastante aburrida, ya que cuando realmente hicimos algo fue por la tarde, cuando el mismo cuarteto de ayer decidimos ir a ver dónde estaban las empresas de Alejandro y Saul (ya que Rayco y yo teníamos unas condiciones un tanto "especiales"... en mi caso que la propia Inés me llevará el lunes hasta allí). Primero tenemos que llegar hasta el norte de la ciudad, bajándonos en la estación de Schönholz, encontrándonos con un barrio con un cierto toque rústico que lo hacía bastante pintoresco.
La odisea se montó cuando fuimos a buscar la empresa de Saul, la cual se encontraba en una calle llamada Pascalstrasse. Siguiendo las indicaciones de Inés, llegamos a la estación de Tiergarden y empezamos a caminar, encontrándonos no sólo con algunos monumentos interesantes que tendré que consutar qué son, sino con una serie de empresas de automoción a cada cual más lujosa: Harley Davidson, Mercédez-Benz, Lamborghini... Tras mucho caminar y tras preguntar a mucha gente, finalmente logramos encontrar la dichosa empresa, escondida más o menos al suroeste de Mordor, y empezamos a preguntarnos si realmente no habrá una manera de llegar sin caminar tanto (seguramente exista algún bus que lo acerque hasta ahí).
Agotados y tras cenar en un burguer (comida típica alemana donde las haya, ¿eh?) volvemos a la residencia donde yo, como suele ocurrir, tenía ya ganas de salir de fiesta, pero la mayoría estaban muy cansados así que decidimos dejarlo para el día siguiente, aunque yo tengo claro que esta noche, como que me llamo Eme, que me doy una vuelta por los bares que me mencionó el "jevata" de ayer.

SÁBADO 14 DE ABRIL

Esta mañana tampoco hicimos gran cosa, aunque ya comprobamos alguna zona donde podíamos encontrar wi-fi (como Moi nos había comentado el día antes), aunque debido a lo "particular" de mi portatil (que, vamos, está hecho polvo), no puedo usarlo, aunq

ue, afortunadamente, el muchacho también encontró un locutorio, que es donde esta tarde planeo subir este artículo. Además, preguntando en un par de librerías me dieron la dirección de una tienda de cómics, ¡por fin! Sabíais que no podía vivir sin ello.

Y esta es la experiencia de estos primeros cuatro días, la semana que viene contaré los próximos siete días, aunque tal vez no tan detallado como esta vez. La verdad es que esto me está gustando, se está bastante bien y, encima, estoy empezando a poder comunicarme bien en alemán sin tener que recurrir demasiado al inglés. Y ahora me despido, que me voy al locutorio a subir esto y probablemente esta noche, mientras este post se publica, yo ya esté preparándome para conocer la vida nocturna e Berlín. ¡Hasta pronto!

viernes, abril 13, 2012

(Reseña de serie) Friends, 1ª temporada

Sé que ya hace unos ocho años que esta serie terminó, pero, tras mucho tiempo de verlo de forma salteada debido a la manera de emitir las series en España, he decidido empezar a verla en orden, y dar aquí mi opinión de cada una de las temporadas según las voy viendo.
Como la mayoría sabrán, Friends (en su primera temporada traducido como "Colegas" en el doblaje español) es una serie producida por la NBC que comenzó en septiembre de 1994 y que duró 10 temporadas. Se centraba, como su nombre indica, en un grupo de seis amigos, cada uno con su personalidad y sus problemas particulares, y cómo se apoyan y relacionan los unos con los otros a medida que se van dando distintas situaciones.
Al comienzo de la temporada (y de la serie de por sí), el grupo está formado por cinco personas: Ross Geller (David Schwimmer), un paleontólogo con pocas capacidades sociales; su hermana Monica (Courtney Cox), una cocinera obsesionada con el orden; Chandler Bing (Matthew Perry), un sarcástico oficinista; su compañero de piso Joey Tribbiani (Matt LeBlanc), un aspirante a actor bastante ligón pero con muy pocas luces; y Phoebe Buffay (Lisa Kudrow), masajista, cantautora, vegetariana, mística, antigua vagabunda y, en general, una chica con una personalidad completamente extravagante. Al grupo se le une en el primer episodio Rachel Green (Jennifer Anniston), una pija antigua compañera de Monica y amor "secreto" de Ross que acaba de darse a la fuga de su boda. Unido al reciente divorcio de Ross, al descubrir su esposa que prefiere a las mujeres que a los hombres, los sentimientos de Ross hacia Rachel reaparecen y, a lo largo de toda la temporada, intenta buscar la forma de salir con la chica, mientras su ex-mujer le revela estar embarazada de él y el resto de personajes cada uno tiene sus pequeños problemas que se van resolviendo sin demasiada complicación.
Supongo que no hace falta decir que la serie fue un éxito y no es difícil adivinar por qué: personajes frescos, historias divertidas y situaciones que, a pesar de rozar a veces el surrealismo, no terminan de ser especialmente extrañas para nadie. Todos en algún momento nos sentimos identificados con alguno de los personajes o con los dilemas con que se van encontrando. La única pena es el hecho de que, durante esta primera temporada, los personajes de Ross y Rachel son los únicos que tienen tramas a seguir (aparte de la trama conjunta, Ross tiene la trama de su futuro hijo y la del mono que cuida, mientras que Rachel tiene que ir lidiando con su nueva vida sin depender de sus padres mientras ve cómo su ex-novio y su dama de honor se van a casar), mientras que los otros cuatro personajes van lidiando con un problema nuevo en cada capítulo, presentando sólo pequeños casos de continuidad (como el ascenso de Chandler o sus repetivas rupturas con Janice).
Todos los actores, por este tiempo ninguno especialmente conocido, actúan de maravilla, lo cual siempre en las sitcom habla bastante bien de ellos al ser series en las que las escenas se intentan grabar en pocas tomas. Tampoco los secundarios lo hacen mal, incluso la sobreactuación de Maggie Wheeler (que interpreta a Janice Hosenstein) es evidentemente hecha por motivos humorísticos.
Como curiosidad, Lisa Kudrow anteriormente había participado en la serie Mad About You interpretando a la olvidadiza camarera Ursula Buffay, y de esta manera en esta serie convierten a Phoebe en la hermana gemela de Ursula, incluso haciendo crossovers entre ambas series en uno de los capítulos. Como no he visto Mad About You no he podido pillar las referencias, pero es una curiosidad interesante.
Bueno, concluyendo, es sin duda una gran serie y comienza de una forma muy buena. Además, el cliffhanger de final de temporada es brutal y te deja con ganas de ver lo que ocurre en la próxima con un cierto nudo en la garganta. Así que, aunque probablemente todos la hayais visto, en caso de no haberlo hecho, os recomiendo que lo hagáis si queréis pasar un rato divertido con humor despreocupado y sin demasiadas pretensiones.

jueves, abril 12, 2012

(Crítica de cine) Batman

Tras las primeras adaptaciones del Cruzado de la Capa a la pequeña y gran pantalla, basadas todas ellas en el personaje de las edades de oro y de plata, por lo cual el ambiente era bastante alegre y colorido (o lo colorido que permitiera la época, ya que las primeras series fueron en blanco y negro), en 1989 Tim Burton nos trajo la primera adaptación del personaje mostrando el ambiente oscuro que lo caracteriza, sobre todo desde los años 80's. Aunque la película la había visto hace muchos años, recientemente he decidido revisarla y aquí va mi opinión.
La trama tiene tres protagonistas principales, y curiosamente, de los tres, el que menos protagonismo lleva es Bruce Wayne, alias Batman, cuya trama es la que ya todos conocemos: traumatizado por la muerte de sus padres ha iniciado una cruzada para acabar con todo el crimen de las calles de Gotham. Los otros dos protagonistas son el Joker, a quien en esta película le dan un origen basado en parte en The Killing Joke de Alan Moore, e incluso un nombre, Jack Napier, siendo un mafioso que, durante un enfrentamiento con Batman, cae en un tanque de ácido lo cual lo desfigura, tras lo cual intenta convertirse en el rey del crímen de Gotham. Y finalmente tenemos a la fotógrafa Vicki Vale, la cual, junto al periodista Alexander Knox, intenta descubrir la verdad sobre el hombre murciélago, aunque poco a poco se va interesando también por el filántropo Bruce Wayne y no sólo de manera profesional, sin sospechar la relación del millonario con el vigilante.
Sé que mucha gente tiene esta película en muy alta estima, pero voy a ser completamente objetivo con ella. La trama de la película flojea a ratos, las motivaciones de los personajes no se quedan claras en ningún momento, la relación romántica entre los protagonistas pasa de repente de la nada al todo y encima los guionistas asumen que todo el mundo debe saber que Bruce Wayne es el alter ego de Batman, ya que se echa en falta una escena en la que se "revele" al espectador esta verdad, la película se comporta como asumiendo que el espectador ya lo sabe. Y es probable que lo sepa, pero aún así, creo que es importante, sobre todo en una primera película, dar ese dato de una forma tal vez no completamente explícita, pero sí en una escena en la que un espectador completamente ignorante sea capaz de darse cuenta de ese detalle y a partir de ese momento contar con ese dato para el resto de la película. Por otro lado, aunque no me molesta el que hayan hecho desaparecer a Joe Chill y colocar a Napier como asesino de los Wayne (es más, me parece una manera muy buena de fabricar un antagonismo entre los dos personajes que en los cómics sólo se ha logrado a través de muchos enfrentamientos), sí que me parece que la actitud de Batman y su actuación final, en la que le dice al Joker literalmente que le va a matar, y lo intenta más de una vez hasta que lo logra, está muy fuera de lugar y cambia al personaje de un "vigilante justiciero" a un "vengador", destrozando por completo al personaje.
De las actuaciones de los actores, creo que el único que hizo un papel medianamente decente fue Jack Nicholson en su papel de Joker. Ni Michael Keaton (Batman) ni Kim Basinger (Vicki Vale) actúan lo más mínimo, y entre los secundarios sólo podemos destacar a Michael Gough (Alfred Pennyworth), ya que tampoco Pat Hingle (Gordon) o Billy Dee Williams (Harvey Dent) tienen un papel lo mínimamente amplio para ser tomados en cuenta. Y, por la parte visual... es Tim Burton y, lo siento por todos sus fans, pero odio la ambientación Burton, no la aguanto. De lo exagerado que es con sus planos y sus contrastes siempre me da la impresión de que es más una parodia que una película seria.
En resumen, que a pesar de que sea una película "de culto", a mí no me gusta especialmente. No digo que sea mala, y tiene momentos muy buenos y muy memorables, pero por lo general la película se puede sumar a una larga lista de adaptaciones de cómics que no deberían pasar a la historia. Aunque, por otro lado y siendo justos, hay que reconocer que en su día fue un salto bastante importante para las películas de cómics, que hasta la fecha siempre habían sido bastante infantiles.