19 February, 2009

Problema codificando polilíneas (GPolyline) google maps

Llevo ya un buen tiempo jugando con google maps, es divertido, y si a eso le sumamos RoR, mas divertido todavía :-).

Para dibujar líneas sobre un mapa se utiliza el objeto GPolyline. Para construir esta línea lo que hacemos es unir puntos, representados mediante la clase GPoint, puntos que se construyen con 2 parametros (latitud, longitud). Bastante básico todo.

Imaginemos que tenemos una Polilínea con muchisisimos puntos, llegará un momento en el que nuestro navegador será inoperativo, demasiada carga javascript, demasiado lento. Además, seguro que con un zoom muy lejano no necesitaremos dibujar tantos puntos, mmm interesante, dependiendo del zoom dibujamos unos puntos u otros, a mas detalle mas puntos. Y además, solo necesitamos dibujar los puntos que se representen sobre la zona del mapa que visualizamos, aunque la polilinea recorra todo el planeta, si solo veo Galicia no quiero cargar la parte de la polilinea que pasa por Francia.

Todo esto lo podemos hacer manualmente registrando eventos de zoom y movimiento sobre el mapa, y cargando por llamadas callback ajax las partes de las lineas que necesitemos.

Pero hay otra forma, con la que además disminuimos la carga de javascript de nuestro navegador, que consiste en codificar, mediante este algoritmo propuesto por google, todos los puntos con los que dibujaremos nuestra polilínea. En esta codificación también incluiremos la definición de sobre que niveles del zoom quiero dibujar cada uno de los puntos.

Hasta aqui todo bien, nos ponemos a traducir el algoritmo (que por cierto podía estar mejor documentado), llegamos al punto 2:

2. Multiplica el valor decimal por 1e5, redondeando el resultado a la baja:
Fácil, -179.9832104*10^5=-17998321.04, redondeamos a la baja y nos queda -17998321.
Seguimos todos los pasos y al final nos queda ese punto codificado como: `~oia@

Aqui los pasos:

Los creo, pero debo asegurarme de que mi algoritmo está perfectamente traducido.

Así que ahora que mi algoritmo funciona con el punto anterior, probemos con otros, estemos seguros de que funciona bien. Tenemos una utilidad del mismisimo google para que codifiques tus puntos de forma manual, codificamos el mismo punto -179.9832104 en la longitud claro, y… uy, volvemos a hacerlo, vaya, resulta que el punto devuelto no es el mismo: b~oia@

Veis en verde el punto en la longitud, y abajo en verde también ya traducido, no es el mismo que el anterior:

Le damos una y otra vuelta, probamos una y otra vez, y finalmente encontramos el motivo, parece el rendondeo, resulta que en la explicación del algoritmo nos dicen que debemos redondear a la baja, y sin embargo aqui estan redondeando al alta, no tiene otra explicación, debe ser eso. Vamos a preguntarles, ya os contaré.

30 January, 2009

Volviendo a j2ee, comenzando con Maven (eclipse, tomcat)

Este pequeño descanso en la uoc esta viniendo muy bien, tanto para descansar como para probar cosillas que tenía en el baúl de los recuerdos, ya sabéis, para eso de "sentirse vivo" tecnológicamente hablando.

Después de 2 días iniciándome en RoR, en realidad de rails apenas he visto nada todavía, simplemente he preparado el entorno, familiarizado con ruby, me peleé un poco con las gemas y mysql, y ejecuté algunos de sus comandos para crear una aplicación rails, modelo, controlador.
Logo maven
Pues eso, que después de estos 2 días y por razones que no vienen a cuento he estado probando maven (desde el curso de j2ee tenía pendiente echarle un vistazo). La experiencia esta siendo muy satisfactoria, lejos de la complejidad de la que muchos compañeros me habían hablado.

Maven al igual que ant es una utilidad para... automatizar muchas de las tareas en el desarrollo de un proyecto (compilar, desplegar, descargar librerías, pasar tests de unidad, empaquetar, etc etc). Si conoceis ant estaréis pensando que no es nada nuevo, en realidad se podría decir que es una evolución de ant, incluso podemos integrar las dos utilidades para ejecutar tareas ant desde maven.

Comentar que un proyecto maven tiene una estructura global mas o menos fija (que se puede variar, pero ni lo he probado ni lo necesito). Cuando creamos un proyecto mediante la linea de comandos mvn archetype:create -DgroupId=net.jsanroman -DartifactId=aprendiendoMaven, o añadiendo el parámetro -DarchetypeArtifactId=maven-archetype-webapp para un proyecto web, se crea una estructura como la que podeis encontrar en la documentación.

Maven, además de la maravillosa funcionalidad de descarga automática de jars, bien de un repositorio externo, o de nuestra propia red local (típica situación de un equipo de desarrollo de muchas personas sobre un mismo proyecto), tiene preparadas para nosotros multitud de tareas y plugins, por ejemplo el despliegue de nuestro proyecto en un tomcat mediante el tomcat-maven-plugin, simplemente ejecutando mvn tomcat:deploy, aunque antes tendremos que configurar ciertos parametros en el fichero de configuración de maven pom.xml:
dentro de proyect>build:

  1. <plugin>
  2.    <groupId>org.codehaus.mojo</groupId>
  3.    <artifactId>tomcat-maven-plugin</artifactId>
  4.    <configuration>
  5.       <warFile>${project.build.directory}/${project.build.finalName}.war</warFile>
  6.       <update>true</update>
  7.       <path>/facturablock_plain</path>
  8.       <username>admin</username>
  9.       <password>admin</password>
  10.    </configuration>
  11. </plugin>

Configuramos por ejemplo en path de la aplicación a desplegar, el usuario y clave de nuestro manager de tomcat, y la localización de nuestro fichero war a desplegar, aquí mas documentación.

Para que maven sepa que jars debe descargar para nuestro proyecto también lo indicaremos en este mismo fichero pom.xml:

  1. <dependency>
  2.    <groupId>javax.servlet</groupId>
  3.    <artifactId>servlet-api</artifactId>
  4.    <version>2.4</version>
  5.    <scope>compile</scope>
  6. </dependency>

Le indicamos que se descargue la api de servlets. Tenemos un listado completo de librerias en http://mirrors.ibiblio.org/pub/mirrors/maven2/.

Maven se integra con diferentes ide's: netbeans, idea, eclipse. Yo solo he probado con eclipse, para el que hay varios plugins, aunque sin duda para mi el mejor es m2eclipse. No cometáis la misma torpeza que yo, que con las ansias de avanzar ni me fijé en el tipo de errores que daba su instalación, y simplemente que depende de otros plugins para poder ser instalado, aquí tenéis la lista http://docs.codehaus.org/display/M2ECLIPSE/Installation+Requirements.

Aunque todavía me quedan muchas cosas que ver de maven, métricas o integración continua, ya tengo lo básico en funcionamiento, y aquí dejo los 4 comandos básicos, en realidad son "mi recordatorio" que soy muy despistado :$:

  • Creamos nuevo proyecto: mvn archetype:create -DgroupId=net.jsanroman -DartifactId=aprendiendoMaven -DarchetypeArtifactId=maven-archetype-webapp
  • Compilamos proyecto: mvn compile
  • Empaquetamos proyecto: mvn package
  • Copiar jar de proyecto a repositorio local de maven: mvn install
  • Desplegar proyecto web en tomcat: mvn tomcat:deploy
  • Generar sitio web (si si como el de maven): mvn site:site

23 January, 2009

Evitando el dichoso spam

Y mira que soy poco partidario de los captchas y de poner trabas a la participación de la gente, pero dada la audiencia de este blog y los mas de 100 comentarios de spam que venía validando diariamente, con la consecuente perdida de tiempo que eso supone, no me ha quedado otra.

Después de probar varios plugins antispam me he quedado con Math comment spam protection, de lo malo, mejor una simple pregunta sobre una suma matemática básica en texto plano (1+1,3+2,etc), que la típica imagen deformada, muchas veces imposible de descifrar.

13 January, 2009

Desactivando spotlight, bienvenido quicksilver, ¿quicksilver para gnome=gnomedo?


Llevo un tiempo con problemas de rendimiento en mi nuevo macbook ocasionados por un proceso llamado "mdworker", el proceso que indexa el contenido de tu disco para spotlight. Este proceso llega a picos de cpu del 90% y no tiene fin, una vez termina de indexar vuelve una y otra vez.

Así que no me ha quedado otra que desactivar spotlight, ahora si es una máquina :-), lo que he hecho ha sido esto:

  1. sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist

para volver a activarlo simplemente debeis cambiar unload por load:

  1. sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist

Luego para quitar la lupa de la barra superior simplemente debemos renombrar o eliminar el fichero de aplicación: /System/Library/CoreServices/Spotlight.app reiniciamos y listo.

Ahora utilizo quicksilver, funciona muy bien y parece que es una de las mejores aplicaciones para "osx". Por lo menos no está dando problemas.

Y para terminar me acabo de encontrar gnomedo, parece el quicksilver para ubuntu, ya lo estoy instalando y si merece la pena dejaré mis impresiones.

12 January, 2009

Rediseño elmundo.es… ¿también será la crisis?

opinion

Ayer entro en www.elmundo.es y desagradable ¡sorpresa!, rediseño por todo lo alto.

Nuevas tipografías, nuevos colores, nueva posición en pantalla, diferente organización de contenidos. Tanto que ahora ni siquiera aparecen en portada las noticias/articulos mas importantes del navegante, la sección que visito mas frecuentemente. Hover de los enlaces solo diferenciados por el color, en momentos en los que la accesibilidad cobra cada vez mas importancia.

Pero lo peor ha sido sin duda la publicidad, intrusiva donde las halla, 3 grandes banners, a los lados y bajo la cabecera, que hacen que pierdas el norte, distraen, no te dejan centrarte en las noticias, que por otro lado es lo importante. Además, los tradicionales cuadros de publicidad que se siguen manteniendo, con lo que al final 3 cuartos de la web son PUBLICIDAD. ¿Tanto estará afectando la crisis a este periodico digital? y aunque así fuera, no veo forma mas sencilla de regalar audiencia a la competencia.

En fin, supongo que rectificarán, pero no creo en este tipo de rediseños tan agresivos y si mas en pequeños cambios frecuentes que mejoren lo existente pero que no te hagan sentir un extraño, ni pasar por un periodo de "adaptación" .

En mi opinión, todo un ejemplo de lo que NO se debe hacer, un sin sentido, completamene innecesario, no lo entiendo.

Publicidad intrusiva en elmundo.es

24 December, 2008

Nuevo macbook, nueva oficina: vuelta de tuerca al teletrabajo

Personal

Pues si, en los últimos tiempos ha habido cambios. El primero es que me hice con el nuevo macbook de 13' y un monitor dell ultrasharp de 20' :-D, no podía continuar dejandome la vista en mi 15', ni perder el tiempo mientras mi antiguo portatil volvía a la vida cada vez que ejecutaba un proceso mas pesado de lo normal.

El segundo cambio y no menos importante ha sido la adopción de oficina. Si alguna vez teletrabajais y sobre todo si es a tiempo completo, intentar diferenciar las 2 facetas: trabajo y ocio. El elemento mas importante que nos permitirá esta diferenciación son los espacios, intentar tener un espacio para trabajar y solo para trabajar es imprescindible. Después le seguirán los horarios, la confianza, las herramientas colaborativas, etc.

Sobre el macbook y osx, como siempre ha tocado configurar y instalar nuevas herramientas para poder trabajar como lo venía haciendo hasta ahora, eso incluye la instalación y configuración de php4&php5, mysql4&mysql5, todo lo estoy dejando como no en el wiki.

No me ha sorprendido pero si que me agrada las similitudes en muchos aspectos entre mac os x y muchas de las distribuciones linux. Aunque ya lo sé hay una diferencia de raiz, os x y el macbook continuarán siendo privativos. Pero por este motivo ya me he animado a instalar un arranque dual entre os x y ubuntu, y bueno, a falta de configurar la característica multituch del trackpad (indispensable por la falta de botón dcho), la isight, el airport y otros detalles como las lucecitas del teclado, lo demás parece ir bastante bien.

Pues eso, que comienza una nueva etapa, continuamos teletrabajando, continuamos en la recta final de la uoc, y por supuesto continuamos probando nuevas herramientas que nos hagan sentir vivos, pero ahora con nuevo portatil, nuevo monitor, y nueva oficina :-).

23 December, 2008

Twitter y el microblogin

opinion

Un nuevo medio de comunicación web, el microblogin. No escribimos grandes y elaborados posts sino que dejamos una simple frase que transmita algo con el número mínimo de palabras.

Este es el caso de twitter, tras la pregunta ¿que estas haciendo?, tienes 140 caracteres para dejar el comentario que desees. Esta claro que el uso puede ser múltiple y que el contenido de tu frase no tiene porque responder a la pregunta formulada.

El éxito de este medio radica en la forma tan directa y sencilla de comunicación (sobran las palabras superfluas), y por lo tanto la facilidad tanto de comunicar como de recibir esa información. A esto le sumamos los múltiples plugins y extensiones para mostrar esta información en diferentes medios, por ejemplo en la cabecera de este blog, en tu navegador preferido(firefox) o en tu móvil.

El sentido o no de twitter y otras utilidades de microblogin estará en el uso que le demos, podemos utilizarlo para publicar novedades o importantes acontecimientos (de nuestra empresa, producto, organización, etc...) y que todos los interesados esten informados de forma inmediata, o si queremos simplemente para comunicar lo que estamos haciendo tal y como proponen (pero no poner que estais desayunando o que os acabais de levantar todos los dias por favor, posiblemente no le interese a nadie, perdereis un tiempo precioso y acabareis por dejarlo).

En principio me habia creado una cuenta para probar, pero creo que lo utilizaré con mas o menos frecuencia, para dejar noticias interesantes, reuniones con amigos, momentos de aprendizaje de nuevas cosillas, o hechos mas o menos destacables.

Powered by WordPress
Bajo licencia Creative Commons
Contacto sanroman.javier at gmail.com