sábado, noviembre 27, 2010

Manifestación en Dublín

Pues hoy hemos tenido manifestación. La gente no estaba nada contenta con los recortes anunciados esta semana así que han salido a la calle a ver si se enteran los que manda.

Según la organización 110.000 personas (muchas de ellas de fuera de Dublín) han recorrido las calles desde el ayuntamiento hasta la Oficina central de correos (el lugar donde acaban todas las marchas en Dublín).

Ha sido una manifestación muy controlada, en todo momento hombres y mujeres con un chaleco naranja rodeaban a los manifestantes haciendo que la policía tuviera poco trabajo. A la cabeza de la marcha iba un grupo de gaiteros que animaban el asunto porque la verdad que ha sido la manifestación más aburrida que he visto. Nadie gritaba consignas ni nada parecido. Con los carteles ocurría justo lo contario, eran todos muy originales como: Wbankers o Fiona Failed entre otros.

Al final de la marcha los de los sindicatos han dado un discurso al que se ha unido entre otros Frances Black cantando "Legal Illegal".

Para terminar os pongo un enlace a una foto que ha sacado un amiguete.

lunes, agosto 30, 2010

El arte de negociar y persuadir

El arte de negociar y persuadir es un libro escrito por Allan Pease de unas cien páginas que se lee fácilmente en una sentada.

La primera impresión al empezar a leer es que nos hemos equivocado de libro y deberíamos parar. Nos habla de estructuras piramidales (con un nombre más cool) y parece que nos va a enseñar a tener exito en este tipo de negocios. Si continuamos leyendo vemos que los que nos enseña se puede aplicar en cualquier negocio, reunión, charla o momento del día. Nos enseña como hablar, comportarnos, interpretar a nuestro interlocutor, etc...

Es un libro básico, sencillo de leer y nos dejará cuatro o cinco detalles que puede ser interesante recordar. Por ejemplo:
  • Asentir con la cabeza: hace que el interlocutor también lo haga y el mismo se reafirme.
  • Espejo espejo: imitar la postura.
  • Señalar con la palma hacia arriba: para no ser dominante.
  • Dirigir la mirada con, por ejemplo, un bolígrafo.
  • Hablar más despacio que el cliente.
  • Y sobretodo lograr que el cliente hable, hable, hable y el mismo se venda el producto.
Si os estáis preguntado si deberiais leerlo ya os digo que no os perdéis nada. Si lo tenéis por casa o lo cogéis en la biblioteca pues leerlo porque no está mal pero no os recomiendo que gastéis dinero en él.

jueves, julio 29, 2010

Edimburgo

Vaya días que llevo, el martes pasado volví de Edimburgo y mañana me voy para Bélgica y Holanda. Esto del turismo puede ser relajante para algunos pero yo acabo más cansado, mucho más, que en un día de trabajo. Cada vez que voy a un sitio me propongo ir de tranquilo disfrutar y ver lo que de tiempo pero al final siempre trato de comer rápido para poder ver más sitios, museos, etc...

Como os iba diciendo pasé cuatro días en Edimburgo, una ciudad que hay que visitar al menos una vez. Es pequeñita, limpia, tiene mucho encanto.... vamos que da gusto pasear por la "Royal Mile"(la calle principal).

Si por algo es conocido Edimburgo (a parte de por ser la capital de Escocia, el Whisky y los hombres con falda) es por su castillo, el cual podéis ver en al foto.
Si os digo la verdad el castillo es lo que menos me gusto, quizá porque al ser caro, tener que hacer cola y tardar 2 horas en verlo te vas con la sensación de que tampoco es tanta cosa, y que esta muyyy reconstruido.

La gente es muy maja, aunque la verdad es que entre tanto turista es dificil reconocer a los escoceses. Además su acento no es tan malo como lo pintan.

Hicimos un tour histórico por la ciudad la primera mañana lo cual os recomiendo ya que así te situas en la ciudad, te enteras de que es cada cosa, y aprovechas a preguntar al guía por un buen restaurante típico y barato escoces (el Royal McGregor en Rose Street).

La semana que viene os contaré que tal por Bélgica y Holanda.

miércoles, julio 14, 2010

viernes, julio 02, 2010

La lógica oculta de la vida

La lógica oculta de la vida es el segundo libro escrito por Tim Hardford después del éxito que tuvo con El economista camuflado.

En este libro sigue con la misma temática que el primero, tratando de explicar para profanos las reglas económicas que explican la mayoría de nuestros actos, por supuesto usando otros ejemplo y explicando otros comportamientos.

Algunos ejemplos serían porqué nuestro jefazo cobra mucho más que nosotros cuando parece que trabaja menos. O porque la gente prefiere vivir en Manhattan cuando podría ahorrar más dinero viviendo en otra ciudad más pequeña. También nos explica que, aunque parezca extraño, las adicciones como la ludopatía son completamente racionales y explicables. Y lo más peligroso de todo: el racismo racional y porque es necesaria la discriminación positiva para solucionar este (y otros problemas).

Este es un libro que me ha costado de leer, quizá porque he tenido poco tiempo libre o porque habia secciones "no muy divertidas", es un libro peor que el primero y peor que Freakonomics. Por supuesto si habéis leido esos dos libros y os han gustado os recomiendo que leáis también este. Es curioso.

viernes, junio 18, 2010

Cargador de coches eléctricos

El otro día me encontré con esto cerca de donde trabajo en el centro de Dublín. Me paré a echarle un vistazo y al parecer es una "gasolinera" para coches eléctricos. Yo no había visto ninguna hasta ahora y no se si en España abundan o no.

Al parecer necesitas una tarjeta para que se abra la tapa y poder enchufarlo pero la verdad es que no ponía más instrucciones o explicaciones.

Me pareció curioso así que lo pongo aquí para que vosotros tambien lo veáis.

lunes, junio 14, 2010

Cambiar la pestaña seleccionada en un TabPanel usando javascript

Creo que el título lo deja bastante claro, voy a mostraros como podemos cambiar de pestaña en un TabPanel (un componente de la librería Richfaces) usando javascript.

Esta primera forma sólo funcinara en modo client, es decir, con toda la información cargada en el cliente:

RichFaces.switchTab('TabPanelId','TabId','TabLabel');

otra forma que siempre va a funcionar sería la siguiente:

document.getElementById(FormId:TabId_shifted').onclick();

Atentos a que en este segundo caso tenemos que concatenar "_shifted" al identificador de la pestaña.

miércoles, junio 02, 2010

El anuncio de Bocatta censurado

Hace años que censuraron este anuncio porque según decían no mostraba la realidad de la vida en el campo de hoy en día... a mi es uno de los anuncios que más me gustaban.

lunes, mayo 31, 2010

Final Magners League

Al final no pudo ser. Después de haber terminado primeros en la liga regular, el Leinster perdió en la final de los play offs contra los Ospreys.

Para colmo el partido fue bastante malo y el equipo de Dublín nunca dió muestras de poder remontarlo.

Muy espectacular el comienzo, con fuego mientras salían los jugadores y una banda de samba tocando (qué pinta una banda de samba en Dublín en lugar de un grupo celta?).

En fin... en otra ocasión será.

viernes, mayo 28, 2010

lunes, mayo 17, 2010

Leinster vs Munster

Por segunda vez he ido a ver un partido de rubgy en directo y por segunda vez ha sido para ver un Leinster - Munster. En esta ocasión fué para las semifinales de la Magners League.

En está ocasión el partido fué muy diferente a aquel 30-0 que le endosó el Leinster hace ahora unos seis meses pero, otra vez, el Leinster ganó.

Ahora a esperar a la final. Espero poder conseguir entradas.

sábado, mayo 15, 2010

Future Of Web Apps

Hoy ha tenido lugar en Dublín la conferencia que podríamos traducir "el futuro de las aplicaciones web" (FOWA). Bueno, para ser rigurosos diremos que han sido 12 conferencias a lo largo de un día que, si bien ha comenzado a las 9:00 y ha terminado a las 18:30, me ha dejado destrozado.

Las charlas han sido en la UCD al sur de Dublin y he de decir que el sitio estaba bastante bien a pesar de que las sillas eran un poco incómodas. Las instalaciones de diez y el que nos dieran cafés, galletas, comida, etc, todo gratis es un gran punto a favor.

Muy bien pensado el tema del networking con descansos largos cada tres charlas donde no te quedaba otra que relacionarte y conocer gente del sector (además había una fiesta esta noche a la que no he podido asistir).

Pero vamos a lo que nos interesa el cómo han estado las conferencias... y he de decir que ha habido de todo.

Comencemos por lo bueno: Christian Heilmann de Yahoo! Una charla divertida, entretenida, interesante y dirigida a personas técnicas. El nombre de la charla era: "Powerful Tools that You Need (and Probably Don´t Know About)" y nos ha hablado de muchas librerías, principalmente de Yahoo! (YUI, YQL...). Me sigo preguntando como Yahoo! puede tener una página tan mala y a su vez algunas de las mejores librerías y herramientas de internet.

Otra charla divertida pero que no me ha aportado nada ha sido la de Simon Wardley (de Canonical) que nos ha hablado de Cloud Computing. La charla ha sido yo creo la más currada y profesional. A este tipo se le ve un experto hablando en público pero claro... lo que él ha dicho yo ya lo había escuchado en un podcast de debug_mode=ON hace más de un año en el que entrevistaron a gente de Abiquo. En resumen: que la nube no te tiene porqué salir más barata, que la nube no es la panacea, que la nube todavía no esta muy claro que es y un largo etcétera acompañado de un: pero como no te subas al carro de la nube te vas a quedar obsoleto. Para el que no supiera de esto creo que le habrá resultado interesante.

Raffi Krikorian, de Twitter, nos hablo de Geolocation. Interesante el tema de la privacidad y el geoposicionamiento. Una charla que si bien no merece la pena ir a una conferencia sólo por ella pues... tampoco molesta... interesante.

A nivel técnico también hemos tenido a Chris Lea hablando de NoSQL, vamos más de lo mismo. Que si MySQL no es lo mejor para aplicaciones en las que no necesitamos transacciones, que si MongoDB es muy bonita, que no tiene SQL y que está orientada a documentos. Que no todas las bases NoSQL funcionan de la misma manera, etc. Charla introductoria a este tipo de tecnologías que si lees internet todos los días pues no te aporta cosas nuevas. Por otro lado, al que no las conociera supongo que le habrá resultado interesante.

Lo demás, pues si hacemos una excepción con Owen DeLong y la basura que ha soltado como conferencia sobre IPv6 que a mí se me habría caído la cara de vergüenza, pues a estado a un nivel digamos de 3-4 sobre 10. Volvemos a lo de siempre, o eran contenidos muy superficiales o eran charlas aburridas, o quizá yo no era el arquetipo al que iban dirigidas pero vamos, tener que tragarme un screencast de como hacer una "aplicación" con Ajax.org y luego al preguntar al tipo descubrir que con este IDE online (que tiene muy buena pinta) sólo haces aplicaciones Javascript que luego necesitan consumir Servicios Web para poder hacer algo...

Mención especial a Robin Christopherson, un invidente que nos ha hablado y mostrado temas relacionados con la accesibilidad. Me ha resultado curioso ver a un ciego usando un ordenador y los problemas a los que se enfrenta. Digo los problemas reales, no los que buscamos y tratamos de solucionar los que vemos (ya se sabe que somos muy dados a aplicar la máxima del Despotismo Ilustrado: todo para el pueblo pero sin el pueblo).

En resumen, un día interesante pero no por las charlas que en general han sido de un nivel bajo, es cierto que alguna ha estado bien y alguna (más bien una) bastante bien.

Y dejo lo mejor para el final... los amigos de Paypal (ahí os atropelle un coche a vosotros y vuestro iPad que tendría que haber sido mio). Durante todo el día había un concurso organizado por Paypal. Se necesitaba un iPhone, una cuenta Paypal y la aplicación para el iPhone... yo tenía los tres. Consistía en que una cantidad de 2,54 € iban a ir rulando de iPhone en iPhone (si los tenías más de 20 minutos estabas obligado a darlos si te los pedían) y al final del día quien los tuviera ganaba un iPad. TODOS ENTENDIERON ESTAS REGLAS INCLUSO EL PRESENTADOR. Pues bien... ¿adivinaís quien tenía y tiene esos 2,54 € en su iPhone? Yo, yo los tengo. A las 18:30 ha subido al escenario un tipo de Paypal para anunciar el ganador... y dice que ha ganado John pero que no está, que se ha marchado ya. Coje el tio se baja del escenario y se larga con el iPad... resulta que alega que han hecho un sorteo y que han salido las 12:00 y que un tal John tenía los 2,54€ en ese momento. ESTO NO LO SABÍA NADIE, NI EL PRESENTADOR. El lunes escribiré a Paypal quejandome porque cuando dijeron las reglas fueron muy claros diciendo que el que los tuviera al final del día era el ganador... pues bien, yo sólo he ganado 2,54€ que aun los tengo.

lunes, abril 19, 2010

Cómo Skype evita los cortafuegos

Interesante artículo sobre como Skype se las apaña para evitar los cortafuegos (está en inglés pero se entiende muy fácil):

http://www.h-online.com/security/features/How-Skype-Co-get-round-firewalls-747197.html

jueves, marzo 25, 2010

No hay ninguna burbuja en la tecnología

Vía jlbelmonte me he encontrado con este video:

domingo, marzo 21, 2010

Martín (padre)

Eso de extrañar, la nostalgia y todo eso es un verso. No se extraña un país, se extraña el barrio en todo caso, pero también lo extrañás si te mudás a diez cuadras. El que se siente patriota, el que cree que pertenece a un país, es un tarado mental. ¡La patria es un invento!... Uno se siente parte de muy poca gente; tu país son tus amigos, y eso sí se extraña.

viernes, febrero 26, 2010

Algo para no olvidar

"En una partida de póker, si no sabes quién es el pardillo, el pardillo eres tú"

miércoles, febrero 24, 2010

Mi estantería

Bueno, hace tiempo que quiero poner este post. Es muy offtopic pero estoy muy orgulloso de ella: Mi estantería.
Al minipiso donde vivo le faltaba espacio para colocar libros y otras cosas y al estar de alquiler no quería comprar un mueble pero un día al salir de casa me encontré unas tablas que alguien había tirado. Estaban casi nuevas y eran parte de un armario bastante alto.
Resumiento, para no alargarme, cogí las tablas que mejor estaban, las corte, las agujereé y, con la ayuda de mi novia monté la estantería que podéis ver en la foto.
Ni IKEA ni nada, todo contruido, que es muy diferente a montado, por mi.

viernes, febrero 19, 2010

La Web 4.0

Desde el Reino de Oregón, y antes que nadie, se ha definido el que será en el futuro no muy lejano el nuevo paradigma de la Web en Internet, la que será conocida como: Web 4.0.

Si la Web 2.0 era la Web del contenido, donde toda la gente podía de forma fácil crear contenido (en blogs, etc) y despreocuparse por el estilo, la Web 4.0 supondrá una revolución pues superpondrá el estilo sobre el contenido.

La nueva Web 4.0 tiene dos desencadeantes:
  • El hecho de estar definida en España, país que gusta de llevar la contraría al resto del mundo. Así por ejemplo si el mundo trata de salir de la recesión creando empleo... en España la solución pasa por facilitar el despido.
  • El recorte en I+D.

Cómo ocurría con la Web 2.0 será AJAX la técnica utilizada para revolucionar de nuevo Internet pero en esta ocasión no será para traer el contenido sino para traer nuevos estilos. Así pues, cada vez que el usuario haga click en algún botón o hipervínculo se modificará de forma automática el estilo (CSS) dando la sensación de encontrarnos en otra Web y manteniendo al lector/usuario en nuestro sitio dispuesto a volver a tragarse nuevos anuncios de AdSense.

Una gran revolución: con casi ningún contenido (fruto de la decisión de recortar presupuestos en I+D) podemos conseguir los mismos existos que con él. ¿Quién dijo que el contenido era necesario o importante?

Expertos en Internet capaces de pronosticar el futuro como E. Dance ya han dado su opinión al respecto mostrándose muy de acuerdo a este nuevo paradigma.

Así pues, y adelantandome a todo el mundo, queda inagurada la Web 4.0 y no, no es Creative Commons así que todo aquel que quiera usar este termino tendrá que pagarme Royalties.

lunes, febrero 15, 2010

Cómo detectar si un punto esta fuera o dentro de un polígono en Google Map

Cuando estamos trabajando con Google Maps puede que nos encontremos con la situación de querer detectar si un determinado punto (una coordenada) está fuera o dentro de un área que hayamos delimitado con un polígono (una serie de puntos).
Por defecto el API de Google Map no soporta esta opción (o yo no se la he encontrado). La única opción es usando la función getBounds() pero esta no tiene encuenta todos los puntos sino que trata el polígono como si de un rectángulo se tratara.

La función que os pongo a continuación y que no he escrito yo pero que no recuerdo donde la encontré os solucionará este problema:

// The problem with the default functions in Google Map API is they only use two points for the polygon.
// With this new function we are going to use all the points.
GPolygon.prototype.containsLatLng = function(latLng) {

// Firstly we try with the bounds (remember, it's a rectangle). We can avoid to do the calculation.
// If the point it's outside of the rectangle then it's outside of the polygon.
var bounds = this.getBounds();
if(!bounds.containsLatLng(latLng)) {
return false;
}

// Now we know the point is inside of the rectangle but we have to check if it's inside of the polygon

var numPoints = this.getVertexCount();
var inPoly = false;
var i;
var j = numPoints-1;

for(var i=0; i < numPoints; i++) {
var vertex1 = this.getVertex(i);
var vertex2 = this.getVertex(j);

if (vertex1.lng() < latLng.lng() && vertex2.lng() >= latLng.lng() || vertex2.lng() < latLng.lng() && vertex1.lng() >= latLng.lng()) {
if (vertex1.lat() + (latLng.lng() - vertex1.lng()) / (vertex2.lng() - vertex1.lng()) * (vertex2.lat() - vertex1.lat()) < latLng.lat()) {
inPoly = !inPoly;
}
}

j = i;
}

return inPoly;
};

lunes, febrero 01, 2010

New year´s resolutions

En algunos blogs que sigo, como el de Alberto Gimeno o Daniel Latorre, sus respectivos autores publicaron sus objetivos para 2010.

Como nunca es tarde si la dicha es buena voy a poner aquí los mios:
  • Hacer deporte. Es algo que siempre digo y luego me cuesta cumplir. Me he propuesto ponerme en forma antes de que venga el buen tiempo ya que tengo intención de buscarme un equipo de tagrugby.
  • Objective-C & Cocoa. Más concretamente quiero aprender a programar aplicaciones nativas para el iPhone O.S. (iPod Touch, iPhone y iPad). Con esto mato varios pájaros de un tiro: aprendo un nuevo lenguaje, aprendo un nuevo framework, me abro nuevas puertas cambiando las aplicaciones empresariales por los dispositivos móviles. ¿algún libro aconsejable para esto?
  • Java. No hay que olvidar al que me da de comer. Maven es algo que conozco pero que nunca utilizo (siempre acabo usando Ant) y quiero hacer algo usándolo. Y Spring siempre Spring. Leo libros, hago pruebas pero nunca saco tiempo para programar algo serio con él. Me propuse poner algo en el AppEngine de Google hecho con Spring… veremos si este año lo hago.
  • Inglés. Tengo una oportunidad única de mejorar el inglés (ya sabéis que vivo y trabajo en Dublín). Viviendo aquí se aprenden expresiones que nunca hubiera aprendido estudiando o viendo peliculas desde España, sólo con comentar la película de ayer noche con un compañero de trabajo descubres nuevas expresiones, tengo que aprovechar cada minuto.
No son objetivos muy ambiciosos de hecho diría que es el año que me he propuesto los objetivos más asequibles y es porque espero cumplirlos y además hacerlo con nota.

jueves, enero 28, 2010

Steve Jobs y su iPad

Han pasado ya 24 horas desde que el iPad fue presentado y las reacciones a favor o en contra no han hecho más que agravarse. Yo soy de los que se sienten decepcionados. No se si el culpable fui yo o fue Steve Jobs pero yo esperaba más. Esa es la palabra "más". Nos habían prometido algo increible, lo mejor hasta la fecha, y nos encontramos con el iPad.

Cuando acabó la presentación sólo podía pensar una cosa: "nos están tomando por tontos". Por lo noche le di otra vuelta de tuerca: "quizás este enfocado a un mercado minoritario, como lo está el Macbook Air". Pero esta mañana me he dado cuenta de que estaba equivocado. Como dijo Steve Jobs el iPad ha venido a ocupar el hueco entre los ordenadores y los móviles. Ha venido a competir contra los netbooks... y tendré que creermelo.

Hace unos minutos leí el post escrito por Gimente en su blog. Os recomiendo que lo leáis porque así me ahorro escribir aquí mucho de lo que él ya dice en su blog.

Empecemos a analizar que es el iPad:
  • Un dispositivo muchísimo más portatil que un sobremesa, más portatil que un laptop pero menos que un móvil.
  • No cabe en un bolsillo.
  • No utiliza stylus sino que usamos el dedo para utilizarlo (existen stylus especiales en vez del dedo pero son del mismo grosor que este).
  • No tiene cámara integrada.
  • Una pantalla de un tamaño óptimo para la mayoría de aplicaciones que usamos en un ordenador convencional.
  • No tiene teclado físico (aunque tiene un gadget para suplir este deficit).
  • No tiene puerto USB.
  • No usa tinta electrónica sino una pantalla LCD.
  • No soporta multitarea (esto significa que sólo podemos estar ejecutando una aplicación)
Y ahora pensemos como se comporta en los diferentes escenarios para los que la gente cree que puede servir:
  • Para profesionales de la medicina sería perfecto para visualizar información (i.e. expedientes con textos e imagenes) pero que ocurre si dicho profesional quiere hacer una anotación? no dispone de un stylus convencional y no creo que ningún médico se ponga a escribir con el dedo, haciendo trazos de 1 cm de gordos, delante de un paciente.
  • Para comercionales puede ser un acierto. Llega a las oficinas del cliente, enciende el iPad sin tener que esperar, muestra su catálogo vía 3G o WiFi, usa una aplicación coorporativa diseñada para el iPad y queda como Dios.
  • Igual que lo anterior es aplicable a otro tipo de profesional, como un ortodoncista que en la reunión inicial quiere mostrar (y sorprender) al cliente mostrandole como le quedarán los dientes. No tiene que girar su monitor, sólo necesita mirar el iPad junto a él. Pero volvemos a lo mismo de antes, sólo sirve para mostrar información y usar aplicaciones que requieran introducir pocos datos. Es incomodísimo escribir una página en un dispositivo de ese tipo.
  • Como videoconsola he llegado a leer que va a arrasar con las Nintento DS y PSP. Me parece una tontería. El iPad no es tan portátil como estas videoconsolas y tampoco puede competir con las Xbox o PS3, está en el medio, es decir, es un dispositivo con el que además de otras cosas podremos jugar pero nadie se comprará el iPad para jugar.
  • Como lector de libros tampoco sirve porque su pantalla LCD cansa la vista de forma que en leer un libro de 500 páginas nos podemos dejar media dioptría... en leer 20 de esos libros nos hemos quedado ciegos. Otra vez a la de siempre, un dispotivo en el que además de otras cosas podemos leer libros.
  • Para uso doméstico, para sustituir los netbooks, ya tiene un problema de salida: la cámara. Como vamos a hacer videoconferencia con Skype si no tiene cámara. Tampoco tiene puerto USB así que nos olvidamos de pincharle un pendrive y ver las fotos o la pelicula que allí teníamos. Lo que nos venden desde Apple es muy bonito: tenemos un iPad por casa que usan todos los miembros de la familia y lo usamos de comodín. Si queremos oir música cojemos el iPad. Que queremos ver las fotos de las vacaciones... el iPad. Ver una peli tumbados en la cama, leer un libro, conectarnos rápidamente a internet para consultar Wikipedia... el iPad. Y es verdad, para eso si que sirve, es algo que podemos usar para todo pero que a su vez no es perfecto en ninguna de esas cosas. Que ocurre si queremos escribir una carta? pues que preferimos encender el sobremesa y escribir con un teclado de verdad o que ocurre si queremos leer durante 2 horas? pues que preferimos un libro de papel o la tinta electrónica... y así con todo.
Al igual que los netbooks no sustituían nada (sólo complementaban) el iPad no es un gadget a comprar en lugar de otro. Es un dispositivo que compraremos una vez tengamos un iPhone, un Macbook y un iMac, entonces, cuando tengamos todos los segmentos cubiertos será cuando podamos pensar que el iPad nos facilitaría la vida en muchos momentos. Si cometemos el error de comprar el iPad pensando que así no necesitamos el iMac veremos que nos quedamos cojos en determinadas ocasiones.

Por otro lado y conociendo a Apple me huelo que van a hacer como hicieron con el iPhone. Lanzar una versión como globo sonda y un año o dos después lanzar el dispositivo con el que dejarnos con la boca abierta. Digo esto porque al igual que ocurría con el primero iPhone todo el mundo está diciendo las cosas que le faltan para ser perfecto y eso me hace retroceder 3 años atrás.

Por último, y a modo de opinión personal, antes que vayáis acomprar un iPad echarle un ojo a esta maravilla.

lunes, enero 11, 2010

Usando Cobertura con TestNG

Como podemos leer su web, Cobertura es una herramienta que mide el porcentaje de líneas de código accedidas por los test. Esto no significa que un código este bien o mal testeado, lo que nos dice es que líneas de código ni siquiera están siendo testeadas.

Por internet podemos encontrar muchos ejemplos de como usar Cobertura con JUnit pero no hay tantos ejemplos de como usar Cobertura con Ant y TestNG (otro framework para testing muy extendido).

En resumen tenemos que hacer tres tareas: instrumentar las clases, correr los tests y generar el informe con los resultados. Vamos a ver un ejemplo:

<target name="instrument" depends="buildtest">
<taskdef resource="tasks.properties" classpathref="cobertura.classpath"/>

<mkdir dir="${deployCobertura.dir}" />

<delete file="cobertura.ser"/>
<delete dir="${deployCobertura.dir}/instrument" />

<cobertura-instrument todir="${deployCobertura.dir}/instrument" datafile="${deployCobertura.dir}/cobertura.ser">
<ignore regex="org.apache.log4j.*" />

<fileset dir="${test.dir}">
<include name="**/*.class" />
<exclude name="**/*Test.class" />
<exclude name="**/*Test$*.class" />
</fileset>
</cobertura-instrument>
</target>

<target name="coverage" depends="instrument">
<taskdef resource="tasks.properties" classpathref="cobertura.classpath"/>
<taskdef resource="testngtasks" classpath="${testng.jar}" />

<path id="test.path">
<path refid="cobertura.classpath" />
<path path="${deployCobertura.dir}/instrument" />
<path path="${test.dir}" />

<fileset dir="${lib.dir}/test">
<include name="*..jar"/>
</fileset>

<path path="${bootstrap.dir}" />
<path refid="build.classpath" />
</path>

<testng outputdir="${basedir}/test-report">
<sysproperty key="net.sourceforge.cobertura.datafile" file="${deployCobertura.dir}/cobertura.ser" />

<classpath refid="test.path" />

<xmlfileset dir="${test.dir}" includes="*Test.xml" />
</testng>
</target>

<target name="coverageAndReport" depends="coverage" description="Run cobertura and generate the report">
<taskdef resource="tasks.properties" classpathref="cobertura.classpath"/>

<cobertura-report format="html" datafile="${deployCobertura.dir}/cobertura.ser" destdir="${deployCobertura.dir}/html">
<fileset dir="${src.action.dir}">
<include name="**/*.java" />
<exclude name="**/*Stub.java" />
<exclude name="**/*Test.java" />
<exclude name="**/*Test$.java" />
</fileset>
</cobertura-report>
</target>

miércoles, enero 06, 2010

Cómo elegir el zoom óptimo en Google Maps

Cuando estamos trabajando con Google Maps usando el objeto GClientGeocoder y más concretamente su función getLocations nos encontramos con el problema del Zoom. Esta función nos devuelve las coordenadas en las que se encuentra una dirección pero no nos dice el zoom idóneo para mostrar el mapa. Necesitamos un zoom diferente si estamos buscando un país como España o una calle como la Gran Vía de Madrid.

Si buscáis por internet veréis que hay gente que utiliza el campo Accuracy para tratar de calcular el zoom. Esto es un error. Viene a ser como mezclar churras con merinas.

Aunque en la documentación no aparezca, el objecto JSON que devuelve la función trae un atributo ExtendedData que es el que usaremos para calcular el mejor zoom.

function _getOptimumZoomForGMap(placemark, objMap){
var optimumZoom;
var bounds = placemark.ExtendedData ? placemark.ExtendedData.LatLonBox : undefined;
if (bounds) {
var llbounds = new GLatLngBounds(
new GLatLng(bounds.south, bounds.west),
new GLatLng(bounds.north, bounds.east));
optimumZoom = objMap.getBoundsZoomLevel(llbounds);
}

return optimumZoom;
}

martes, enero 05, 2010

Un Mundo sin Fin

Un Mundo sin fin es la segunda parte de la famosa novela Los pilares de la tierra. Está escrita por el mismo autor, Ken Follet, y a lo largo de sus más de 1.100 páginas podremos leer las aventuras y desventuras de los ciudadanos de una ciudad llamada Kingsbridge, sí, la misma que en la primera parte. De hecho los protagonistas son descendientes de Jack Builder y su cuadrilla.

¿Qué me gusta de este libro? Pues que es fácil de leer, es interesante, te haces una idea (espero que real) de como era la vida en la Edad Media y por supuesto, a los que nos gusto Los pilares de la tierra teniamos ganas de más y este libro nos lo da.

¿Y qué es lo que no me gusta del libro? Pues que viene a ser lo mismo que la primera parte pero peor. De nuevo tenemos adversidades que cuando logran superar aparece otra desgracia. Que los protagonistas se comportan en parte como los de la primera parte. Qué la gran baza de la Peste no se describe tanto como me habría gustado, se malgastan muchas páginas explicando como la monja-médico-feminista cura de forma innovadora a los pacientes y se enfrenta a los estándares establecidos en vez de describir como afectó la Peste a Europa y que consecuencias tuvo.

Sinceramente, es un libro que me ha gustado bastante pero que no se si recomendaría. Si no habéis leído Los pilares de la tierra leed ese libro primero. Si habeís leído Los pilares... pues os aviso que son muchas páginas, que os va a entretener, que os va a gustar pero que al final notaréis que no os ha llenado como Los pilares de la tierra.

lunes, enero 04, 2010

Feliz Año 2010

Con un par de días de retraso, debido a que he estado de vacaciones por España sin ordenador, os deseo a todos mis lectores un Feliz Año Nuevo.