13 March, 2009

Otra de prototipos en papel

¿Que eres de los que todavía no puede pasar de los prototipos a papel y lapiz? ¿Estas cansado de dibujar siempre el mismo marco (ventana, barra direcciones, pestaña) de tu navegador?

He aquí la solución :-D

Vale que son 29$ y solo trae 45 páginas con navegador y 15 con popups, pero no me digais que no quedarían curiosos los bocetos.

http://www.merchline.com/paranaiv/productdisplay.8328.p.htm

22 February, 2009

Issue 1081 google maps

Al final les envie una notificación de lo que me había pasado con la codificación de lineas (en un penoso inglés, tengo q ponerme con el :-( ): http://code.google.com/p/gmaps-api-issues/issues/detail?id=1081, que está aceptada.

Efectivamente parece que el paso 2 está mal documentado, no se redondea a la baja, en inglés ya solo tienen:

Take the decimal value and multiply it by 1e5, rounding the result

en lugar de:

Take the decimal value and multiply it by 1e5, rounding down the result

También dicen:

The visual results should look pretty much the same for the viewer, however.

Pero claro un pequeño error sobre otro pequeño error… al final es un gran error. Recordemos que cuando codificamos una polilinea el único punto original codificado es el primero, para los siguientes simplemente se codifica la distancia desde el punto anterior, con lo que cualquier tipo de error se multiplica y al final las diferencias pueden ser enormes.

Debido a esto y que me encontrado con otras pequeñas diferencias entre la herramienta de codificación y mi algoritmo, finalmente he decidido no gastar ni 1seg mas de mi escaso tiempo. Representaré las lineas con los puntos originales sin codificación, y codificaré toda la lógica de carga y presentación de las diferentes líneas en base a posicion del mapa y zoom básicamente.

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

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