lunes, 15 de noviembre de 2010

REST(full) web services

Colaboro con islamanzana y este es un artículo para la web. Ya que lo he escrito lo cuelgo también por aquí.

Los web services son servicios que se ofrecen de forma independiente a la tecnología en la que se han desarrollado. Son realmente una forma de intercambiar información, de pedir algo sin tener en cuenta el lenguaje de programación, para dar un servicio de forma independiente. Solo hace falta saber cómo invocar al servicio.

Dentro de las novedades de los web services, he descubierto hace poco los servicios REST(ful). Se basan en HTTP para intercambiar información y no necesita encapsulado extra para ello. Es más ligero, menos engorroso, pero al mismo tiempo tiene más limitaciones. Aquí podeis ver algo de información al respecto. En resumen, en vez de hacer peticiones encapsuladas en un sobre SOAP para solicitar un servicio para lo que es necesario el wsdl, en los REST las peticiones se hacen mediante el protocolo http, con GET, POST... sin necesidad de encapsularlo.

Recientemente he tenido que investigar si utilizar AXIS2 o Jersey para implementar un servicio web del tipo RESTFUL. Para ello he hecho lo siguiente:

Axis2:
Normalmente se utiliza en forma de aplicación independiente, un war que se despliega completamente dentro de nuestro servidor de aplicaciones, pero para agilizarlo, lo que he hecho yo ha sido descomprimir el war y copiarme solo las librerias necesarias que son las siguiente para un servicio REST.
                    |       axiom-api-1.2.9.jar
                    |       axiom-impl-1.2.9.jar
                    |       axis2-adb-1.5.2.jar
                    |       axis2-clustering-1.5.2.jar
                    |       axis2-jaxws-1.5.2.jar
                    |       axis2-kernel-1.5.2.jar
                    |       axis2-transport-http-1.5.2.jar
                    |       geronimo-stax-api_1.0_spec-1.0.1.jar
                    |       geronimo-ws-metadata_2.0_spec-1.1.2.jar
                    |       httpcore-4.0.jar
                    |       neethi-2.0.4.jar
                    |       woden-api-1.0M8.jar
                    |       wstx-asl-3.2.9.jar
                    |       XmlSchema-1.4.3.jar
Las librerías como no, van en WEB-INF/lib
Después, he modificado el web.xml de mi aplicación para que me coja el servlet de Axis que me va a redirigir a los servicios web que implemente con el siguiente código:




En mi caso, el parámetro load-on-startup tiene su sentido, y también tiene su sentido que tenga el valor tres, pero es opcional.
Una vez descrito el servlet de Axis2, me he generado un servicio mediante una clase java que por ejemplo puede tener esta pinta:
public class SimpleService {

    public String hola(String value) {
         return "hola" + value;
    }
}

También tengo el archivo axis.xml con la configuración por defecto pero añadiendo que puede servir servicios rest que por defecto creo vienen desactivados. Se puede ver la configuración en la web de axis2. Aquí mi linea para configurar los servicios REST en axis2 (primero el parametro de desactivar REST comentado y a continuación el parametro de activar REST).

y por último el descriptor del servicio, el service.xml donde le digo realmente donde y como se ejecutan los servicios:
Bueno, en este punto, me falta por describir donde va cada cosa:web.xml donde siempre, dentro del directorio WEB-INF
axis2.xml donde lo hayas configurado dentro del web.xml mediante una ruta absoluta o bien por defecto en WEB-INF/conf
services.xml dentro de WEB-INF/services
clase java con el servicio, en el paquete que se le haya descrito.

Y ya está! No hace falta wsdl porque en este caso, aunque axis2 necesita del descriptor, lo genera automáticamente. Si se quiere definir el método de entrada como POST o GET hay que hacerlo en el wsdl, aunque por defecto te lo genera como POST (y al mismo tiempo, si no hay get, también funciona como get)
Llamada GET de ejemplo en un navegador:
http://localhost:9082/MyWebApp/services/SimpleService/hola?value=Pepe
En la pantalla aparecerá Hola Pepe
wsdl, por curiosear
http://localhost:9082/MyWebApp/services/SimpleService/hola?wsdl

Ejemplo de un cliente en java:
public static void main(String[] args) {

    Client client = new Client();
    WebResource webResource = client.resource("http://localhost:9082/MyWebApp");
    String response = webResource.path("services").path("SimpleService").path("hola")
        .queryParam("value", "Pepe").get(String.class);
    System.out.println("Response: " + response);
}

Nota: MyWebApp es el nombre de la aplicación web donde he metido el Axis2 a funcionar.

En resumen: necesitmoas unos 6 megas en librerías para que funcione lo más light posible.
La información va empaquetada por debajo como SOAP aunque nosotros utilicemos una llamada web.
No hace distinción entre GET y POST, me explico, si pones un servicio descrito como POST pero no hay GET, y haces una llamada mediante http como un GET, al no encontrar el get, va a ir al POST
Los parámetros de entrada tienen que coincidir en nombre con los definidos en las funciones del web service.

Por otro lado tenemos JERSEY:
Está preparado únicamente para web-services del tipo REST, no es posible utilizar encapsulamiento SOAP, es más limitado en este aspecto pero como yo quiero utilizar REST, me vale me sobra.
Primera diferencia, todas las librerías necesarias pesan un único mega.
Segunda diferencia: cuidado con las versiones, a partir de una de ellas se han compilado utilizando java 6 y puede dar problemas. Yo he utilizado la 1.0.2 porque me vale y me sobra y necesito librerías compiladas en java5.
Una vez tengo las librerías, configuro el servlet de jersey para que me coja luego los servicios web mediante la siguiente configuración


Veis que es todo igual, solo cambia la clase del servlet.
Cuando tenemos las librerías y el servlet, solo nos queda la clase java que va a ser el servicio web y aquí es donde va toda la configuración ya que no necesita ni service.xml, archivo de configuración extra ni wsdl (ni siquiera lo genera automáticamente, no es necesario)
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;

@Path("/hola")
public class SimpleService {

@GET
@Produces("text/plain")
public String hola(@QueryParam("nombre") String palabra) {
return "Hola " + palabra;
}

}

Cosas importantes
1. @Path("/hola") – Es el path que hay que poner para invocar al servicio web. En nuestro caso, dada la configuración de Jersey sería algo así como
http://servidor:puerto/services/hola?nombre=Pepe
2. @GET – Identifica al método que será accesible mediante una petición http GET
3. @Produces("text/plain") – devolverá texto plano
4. @QueryParam("nombre") – se mapea mediante este parámetro el valor de los parametros de entrada al metodo del servicio web. En nuestro ejemplo se cogerá de la uri el paámetro con el nombre 'nombre', y su valor (es decir, 'Pepe') se le pasará como parámetro de entrada al método hola en el parámetro palabra. Es decir, los parámetros de la uri no tienen que llamarse igual que los parámetros de los métodos del web service, ya que se configura el mapeo en el mismo método:
Cosas importantes: cada clase de un servicio web, tiene definido solo un path, una ruta para llegar a el, que es a nivel de clase, no a nivel de método como podía pasar con axis. Por tanto, en cada clase solo se puede definir un método de entrada de tipo GET y un método de entrada de tipo POST (o un método que sea para ambos) pero nunca se podrá dentro de la misma clase configurar dos métodos de entrada diferentes para el mismo tipo de petición, ya sea post o get.
Se puede apreciar lo ligero que es, es mucho más sencillo.
Además no genera nunca un wsdl, no le es necesario.
No se encapsula la petición bajo SOAP, va directamente mediante http.
Url para solicitar el servicio:
http://localhost:9082/MyWebApp/services/hola?nombre=Pepe

Ejemplo de cliente para este web service de Jersey
public static void main(String[] args) {
Client client = new Client();
WebResource webResource = client.resource("http://localhost:9082/MyWebApp");
    String response =  webResource.path("services"). path("hola").queryParam("nombre", "Pepe").get(String.class);
            System.out.println("Response: " + response);
}

Nota: MyWebApp es el nombre de la aplicación web donde he puesto Jersey a funcionar.
Diferencias muy importantes:
- Axis2 necestia una configuración más completa y sirve para mas cosas que aplicacioes RESTFUL mientras que Jersey solo sirve para RESTFUL pero no hace falta casi configuración.
- Jersey pesa 1 mega, y Axis, capando las librerias para que solo utilice las necesarias para restful, 6megas
- Jersey no encapsula las peticiones HTTP en un envelope SOAP mientras que Axis si, en este aspecto, axis funciona en restful simulando que lo hace, pero por debajo funciona como SOAP aunque sea transparente para el usuario
- Axis necesita de wsdl aunque bien es verdad que lo autogenera si no lo tiene. Jersey no necestia wsdl
- Jersey no necesita service.xml, la configuración va toda en la clase java mientras que Axis si que necesita el service.xml
- Jersey solo permite definir un web service por clase, configurándolo directamente en la clase java. Solo se puede poner un punto de acceso para cada tipo de petición http. Axis permite configurar todo eso al gusto en los archivos de configuración pero no filtra peticiones por el tipo de petición http que sea. Es decir, una petición get, si no está del todo definido y no hay petición get configurada, puede entrar por el método post. Tal vez con una buena configuración y un wsdl escrito a mano correctamente no pase, pero podría pasar si no se hace bien.
- Jersey se come el nombre del metodo. En este aspecto no le da importancia y solo utiliza la configuración de la clase java mediante etiquetas predefinidas de forma que si un servicio web se define con el path "/hola", la limitación de acceso a los metodos que tiene dentro solo se podrá hacer por tipo de petición http, bien GET bien POST.
- Los nombres de los parámetros de los métodos del web service deben coincidir con los parámetros de la uri para axis (cosa normal para web services), aunque no es necesario para jersey ya que se pueden configurar. También se puede describir de donde se quiere recoger los datos en jersey, bien de la uri, del contenido de la petición post...
- Axis no me ha dado problemas con java 5, mientras que jersey tiene cada una de sus versiones compiloada solo en una versión de java siendo las últimas java6. Hay que tener cuidado con eso.
- Jersey tiene algún bug en alguna versión anterior, y como cada versión está compilada solo en una versión de java, hay que tener mucho cuidado con cual se utiliza.

Mi opinión, si te es suficiente Jersey (si solo necesitas web services REST), utiliza Jersey, sobre todo ahora que viene el invierno (tachan! chiste malo), es mas fácil de configurar, menos pesado, mas fácil para empezar con el... Axis es mucho más potente pero también necesita mucha más configuración y control sobre lo qué estás haciendo.

miércoles, 3 de noviembre de 2010

Se me ha terminado el tabaco

Si, ayer se me terminó y creo que no voy a comprar más. Espero no ser uno de estos gorrones que "dejan" de fumar para no comprar mas pero siguen ejerciendo el vicio a costa de otros.


Cuanto creeis que durare?

Mientras tanto tengo que retomar el ejercicio físico, que en esos días que estoy en forma no me apetece nada fumar.

Estoy preparando un monográfico de manualidades (punto y ganchillo) con las cosas que he hecho ultimamente, a ver si las cuelgo.

lunes, 25 de octubre de 2010

Fin monografico moto

Bueno para terminar esta aventura que es sacarte el carnet de moto, decir que ya hoy firmo con la aseguradora, y con el carnet provisional en la mano espero dar mi primer voltio sin incidentes.

Sobre seguros, mirando en la aseguradora donde tengo el coche (mutua madrileña), sin haber dado nunca un parte y teniendo el coche a todo riesgo (tiene 20 meses aprox), me piden por un seguro de moto de una honda cd500s 550 euros!!! que ladrones... y eso que ya soy mutualista. En el anuncio dice desde 150 pero claro, debes cumplir unas condiciones muy concretas (mas de 31 años, vivir en madrid, 4 años con la mutua, mas de 10 de carnet, moto pequeña...).

Asi que me he ido a preguntar a Axa, y el mismo seguro por 300 euros (que no me parece ningun chollo, por un terceros...) bueno, pues así tendra que ser. Ya vere si paso el de coche, igual me hacen un buen descuento y me sale mejor de precio.

Para terminar, ayer me vi la peli de Re-Animator (esta en la lista de las pelis que me compre hace ya unas semanas) y me ha gsutado. Es una peli gore clásica, con una trama basada en un cuento de H.P. Lovercraft. Esta curioso. No es una gran peli pero se ha convertido (creo recordar) en una peli de culto.

Muy entretenida.

viernes, 15 de octubre de 2010

Aprobado, por fin!

Ya he aprobado el carnet de moto. Si, después de unas cuantas penurias y unos euros, en breve circularé por la carretera con mi Honda 500 CB-s ^_^.

El examen... tengo que decir que esta vez los funcionarios se han portado. Quitando un pequeño retraso (yo tenía hora para las 9:30 pero fui antes, hacia las 9:15 para tomarme un cafe mientras esperaba y resulta que pillé a los del turno anterior y me adelanté a mi turno, pero los de mi turno esperaron una hora para circular), el examinador se portó bastante bien.

Os pongo el recorrido  para los que conozcais la ciudad, a ver que os parece.

Ver examen moto en un mapa más grande
La cosa comenzó bien, los dos chicos que iban dente de mi lo hicieron bien, y el examinador no les toco mucho las narices, las tipicas tranpas de gire cuando pueda cuando sabes que hay un giro prohibido y tienes que avanzar un poco mas...
Pero entonces llegué yo, cojo la moto en un parking, y en cuanto avanzo 1 metro, el coche que estaba delante comienza a dar marcha atrás para aparcar de culo. No pasa nada, pero veo que se me viene encima y me pongo nervioso.
Esquivo el obstaculo y en el mismo parking, una viejecita cruzando, o mas bien pululando por el asfalto... que no se decidía a cruzar... Salgo del parking, y en el ceda el paso de la salida, tengo una camioneta aparcada que me quita visibilidad... salgo un poco mas, un poco mas... un coche lanzado casi me quita las pegatinas y se me desequilibra un poco la moto... no pasa nada, adelante.

Seguimos avanzando sin problemas. Rotonda, callejuelas... otro paso de cebra y otro camión mal aparcado. Vaya, hoy es el dia de la poca visibilidad. Reduzco la velocidad, miro bien... no viene nadie. Avanzo y cuando voy ya por la mitad del paso de cebra, ya con velocidad, una bicicleta por el carril bici bastante deprisa... vaya! ya no puedo frenar, es mas facil salir del paso para peatones que parar! adelante.

Estoy jurando mas que nunca, lo bueno que ha tenido este examen, es que como aunque llevas intercomunicador (el examinadro va en un coche atrás, siguiendo la moto mientras me habla por un talkie) si no pulsas el botón de hablar, no te escuchan, puedes jurar y deseahogarte todo lo que necesites en el momento. Y vaya si lo hice... no he tenido la boca tan sucia en mi vida.

Bueno, nada, avanzamos ya hacia la autovia, que es donde me van a poner a prueba para ver si alcanzo los 120. Paso de cebra... abuelete... freno y paro. El abuelo dentro del paso de cebra quieto... y yo le miro, el me mira... y me hace el gesto que normalmente hace la gente mayor de "pasa pasa" en los pasos de cebra. Maldigo mi suerte una vez mas y aguanto como un campeon... quieto sin hacer aspavientos. Que ganas de gritar, de decirle cuatro cosas al señor... ya he parado, no ve que ya he parado? pase por favor... y nada, el abuelete por tercera vez me indica que pase. Pues nada, adelante, pero el muy cabron cruza detras de mi, sin dejar al coche del examinador cruzar... mierda, me pongo mas nervioso! yo he hecho bien, pero joder, si me ha dejado pasar a mi y al examinador no... a ver que va a pensar el hombre este!
Nada, llegamos cerca de la autovia y yo estoy como un flan... "haga un giro indirecto a la izquierda",  que es la forma que tienen de decir que te metas a la derecha en la siguiente isleta para luego cruzar a la derecha. Pues bien, estaba tan nervioso que lo que hice fue meterme en la isleta y hacer un cambio de sentido, es decir, deshacer el camino que tenía hecho.
Oigo por el pinganillo "En que estaba pensando! le he dicho que haga un giro indirecto, no un cambio de sentido!" el examinadro no tiene un tono agradable en este momento... ya doy por suspendido el examen pero sigo. Me mete otra vez por ciudad, he perdido la oportunidad de poner la moto a 120.
Cerca del punto donde se finalizan los exámenes, me dice, "haga un cambio de sentido cuando sea posible" que es una trampa. Hay sitios donde NO se debe cambiar de sentido aunque la gente lo haga. Por ejemplo el sitio donde me lo dijo. Como una persona delante de mi lo habia sufrido antes, estaba al tanto. Es una recta que tiene una señal de prohibido girar 180º, pero 5 metros despues, tiene una semal de ceda el paso en medio de la isleta... está en el mapa, cerca del final:

Ver examen moto en un mapa más grande
Podeis ver la señal del prohibido, y justo después del arbol hay un doble ceda el paso que en realidad es solo para los que vienen de la via que está situada en perpendicular, por la derecha, pero mucha gente hace la pirula.
El caso es que paso sin girar, y cuando voy a entrar en la rotonda que hay después, que es donde iba a hacer el cambio de sentido, el examinador me dice que ha cambiado de idea y que gire a la izquierda, que terminamos el examen. Yo una vez mas, siento que es lo típico que suele pasar cuando has hecho algo gordo, que te hacen bajar ipso facto para que otro tome el relevo. Si ya has suspendido para qué seguir? hago mi parada correctamente, bajo de la moto con una cara que era un poema... y 4 horas después me dan la buena noticia, he aprobado. No doy credito... pero bueno, es genial ^_^. Solo hice una cosa mal, cuando me dijo giro indirecto, hice un cambio de sentido, pero no infringí las normas de trafico, asi que... todo ok quitando los nervios que pasé claro esta.

Así que luego me fui al cine y vi Origen con un amigo. Muy cansado (el estres me tenía en tensión y al saberme aprobado... el cuerpo me pesaba el doble, estaba totalmente agotado).

La película me ha gustado. Hay un detalle con la música (no se si Ion, un amigo que me retó a descubrir algo concreto sobre la música que le llamó la atención, se referirá a esto), utilizan una canción

Y en ciertos momentos parece que se escucha esa misma señal digamos 20 veces mas lenta. Lo explico ahora en el spoiler.

******** SPOILER ********
Os habeis fijado que cuando ponen la musica para dar la patada, para salir del sueño, la música se oye también dentro del sueño, pero como el tiempo pasa mas lento dentro del sueño, esta como ralentizada 20 veces... curioso
******************************************************

lunes, 4 de octubre de 2010

Cine asequible

Todavía estoy esperando al examen de la moto. Mientras llega (que sieeeempre se retrasa, no se si el de la auto escuela me toma el pelo o los examinadores son tan impresentables como parecen), estoy viendo bastantes películas últimamente. No, no tiene nada que ver una cosa con la otra, pero algo os tengo que contar y no se me ha ocurrido enlazar esta entrada de otra forma!

La semana pasada, aprovechando que tenía que pasar por un centro comercial a comprar un par de cosas, me pasé por la sección de dvds, gran error. Siempre se me van los ojos a los saldos, pelis de 4-5 o 6 euros, o en su defecto, packs de varias pelis por un precio razonable. Si todas las pelis tuviesen ese precio se terminaba el problema de la piratería en cuatro días.

El caso es que me gasté unos 55 euros en 12 pelis, un poco de todo:

Conan el destructor (pensaba que era conan el bárbaro, pero no... ya conseguiré la otra también)



 El negociador (kevin spacey y samuel l jackson, me gustó, acción bien planteada)


 la torre de suso (española pero no una comedia soez, costumbrista y comedia-agridulce, mas agria que otra cosa, como la vida misma, se puede ver)




la mosca (un clásico)




believers (versión sin censura.. ?¿ va sobre una secta que piensa que ya ha llegado el fin del mundo o algo así, todavía ni idea)




apocalypse now



el cazador (un clásico también, con Robert De Niro)



nosferatu (¡peliculón del cine mudo! la peli de vampiros que mas miedito me ha dado nunca! también estaba blackula, pero no me he atrevido a cogerla jaja. Esta es cine serio, una gran película muda alemana)



El terror ?¿ (con boris karlof y JACK NICHOLSON, ni idea)



La noche de los muertos vivientes (primera película de zombies, Romero)



OTIS (WTF!! no tengo ni idea de que va, es rara de cojones)



Re-Animator (basada en H.P LOVECRAFT)


Ya veis, un poco de todo y nada en concreto...

Por ahora me he visto
-El Negociador que ya la tenía vista en televisión y con un gran recuerdo. No me defraudó (a veces pasa... a la segunda vez no te gusta).
-Conan el destructor que creo que no tenía vista.  Me suena porque la primera parte si que la vi hace tiempo aunque no recuerdo el argumento, la tengo que conseguir.
-La torre de Suso. No fui al cine porque me daba muuucha pereza. Pero lo reconozco, no está mal. Tal vez no como para ir al cine y gastarte 7 euros de entrada + X en palomitas (al cine siempre siempre siempre con palomitas, recordarlo) pero oyes, pasan un rato entretenido.

miércoles, 29 de septiembre de 2010

Carnet de moto, van dos de tres!

Aunque parezca pesimista en el titulo, no es así: he aprobado el primer examen práctico para obtener el carné A2 para motocicletas YUJUUUU!

Hoy era dia de huelga, pero los examenes han transcurrido con normalidad. Mañana mismo comienzo las clases. A ver si por fin POR FIN! puedo circular con mi futura moto!


Mañana primera práctica por ciudad... y dentro de una semana examen.

domingo, 26 de septiembre de 2010

George Clooney

Después de unas merecidas vacaciones, y de volver al trabajo, y de retomar mis prácticas de moto, y de recuperar mi tiempo de correr 10km (siii, 10km una hora!), de comenzar el nuevo curso en la tertulia de comic en la blioteca yamaguchi, empezar a ver pelis en el cine, proponerme correr una media maraton... que estoy de vuelta vamos!

Esta semana he ido al cine con unos amigos y para que? para ver El Americano, película clasificada como de autor (dirigida por Anton Corbijn). Sin meterte mucho en la cinta parece que el único atractivo va a ser el prota, George Clooney, pero no. Cinta que no es parte de la industria mas comercial del cine, donde se explota otra cosa, nada de tiroteos excesivos (de hecho creo que hay tres en toda la peli, o mejor dicho, dos y medio), nada de romanticismo excesivo, nada de tensión superflua... todo está en su justa medida.

Nada mas empezar la peli, en los dos primeros minutos, una parejita en una cabaña paradisíaca perdida en el monte, totalmente aislados, salen a dar un paseo y se te hiela la sangre. Ya te dan pistas de que no va a ser una peli al uso:

--------------- SPOILER -----------------------
Van unos a matar al prota, no lo consiguen y ella se queda flipando y va hacia la cabaña para llamar a la poli porque el prota se lo pide. En cuanto le da la espalda el prota le pega dos tiros! pero si estabas en la cama con ella hace 10 minutos! se supone que por lo menos es una amiga, llevas perdido en la montaña una temporada con ella... por qué la matas? WTF!!!! algo raro hay en la peli, no es de las standar.
-------------------------------------------------

Aunque me gustó la peli, eso si, no entiendo las criticas tan fantasticas que ha obtenido, para mi gusto es excesivamente lenta. Muy lenta.... leeenttiiiiiiissssiiiiiiiimmmmmaaaaaaa!

Otro punto en contra, es que creo que tiene demasiados desnudos innecesarios. A él lo tienen que sacar de vez en cuando (sigue siendo uno de los mayores atractivos de la peli, George Clooney por ahi semi desnudo haciendo ejercicios... y menudos ejercicios! este ya casi cincuenton esta muy en forma) pero luego salen de vez en cuando unas tetas que no siempre están justificadas. Me da que va unido a lo de peli de autor.

Por último, voy a explicar un concepto cinematográfico llamado "salto de eje". En un plano de cine, se puede dibujar un eje virtual, invisible en diferentes elementos del fotograma. Por ejemplo en una conversación, donde dos personas hablan, hay un eje invisible que uniria a las dos personas, digamos que podría ser la mirada que une a dos personas que estan hablando.
No se si os habeis fijado, pero cuando hay una conversación y la camara va saltando de un protagonista al otro, siempre siempre siempre se mantiene en el mismo lado del eje. Es decir, si un prota está a la derecha y el otro a la izquierda, durante toda la conversación, aunque la camara solo muestre un primer plano de uno de los dos, siempre estará al mismo lado. Si la camara se salta el eje algo raro pasa y el espectador se siente desconcertado y no sabe por qué.

Esta explicación viene porque en un momento de la peli, creo que hay un salto de eje. No estoy muy seguro que sea un fallo ya que no es en una conversación sino cuando el prota está viajando en coche, aparca en la plaza de un pueblo y de repente... la camara se salta el eje y te sientes como que algo va mal.

Y siguiendo con Clooney, resulta que hoy mismo me he visto la peli de "Los hombres que miraban fijamente a las cabras". Me ha hecho mucha gracia, una comedia nada convencional... con McGregor haciendo de pseudosoldado jedi en irak... un notable según mi criterio. Me he reido y eso que tampoco es una gran peli. Muy entretenida.