Archivo de marzo 2010


Tip: recover to_xml serialized latin chars

marzo 24th, 2010 — 2:21am

I am generating an XML file for dumping some data from one application to another. Yes, I know it’s nicer to build a RESTful API, but it’s for a very custom scenario and the shorter way is to write an XML based interface. So I simply export some contents:

def show_some_content
  @content = Content.find(:all)

  respond_to do |format|
    format.xml
  end
end

For my view:

<%= @content.to_xml %>

The problem then is the resulting XML has not only escaped the HTML entities, but also latin characters (ie accents and tildes). After googling for an hour I’ve found some people blaming to_xs method (HTML escaped version of to_s, as its definition says) used for XML serialization.

Well, from the other app I need to parse this XML and get the original text. How the hell do I get latin chars unescaped again?

require 'cgi'
require 'iconv'

encoded_text = "ram&#243;n"
# some fucking encoded text coming from the XML

puts "#{Iconv.iconv('UTF-8', 'ISO-8859-1', CGI.unescapeHTML(encoded_text)).to_s}"
# => "ramón"

That’s it :-)

Comentar » | Programación, Ruby on Rails

Recursive crop with Imagemagick

marzo 4th, 2010 — 2:12am

A very simple and tiny shellscript for cropping images recursively with Imagemagick on Linux. In my case I am working on a Ruby on Rails website, managing images and its thumbnails with attachment_fu. After some months I decided to convert all user stored thumbnails to a cropped format. This is what this script was for.

#!/bin/bash
#
# very little and tiny shellscript for cropping images
# massively and recursively with Linux and Imagemagick
# Make sure you have Imagemagick installed (ie: try to
# execute "convert" binary)
#
# USAGE: place this script in your images parent directory,
# edit and change the size names and widths
#
# Ivan Belmonte <ivan@ivanhq.net - http://ivanhq.net>

SIZES="icon:48 thumb:120" # change them for your needs
FORMATS="jpg JPG jpeg JPEG gif GIF png PNG"


# remove previously sized files
for SIZE in ${SIZES}; do
  SIZENAME=`echo ${SIZE} | cut -f 1 -d :`
  find . | grep -i _${SIZENAME} | xargs rm -f
done


# start resizing and cropping
for FORMAT in ${FORMATS}; do

  for FILE in `find . | grep ${FORMAT}`; do

    for SIZE in ${SIZES}; do

      SIZENAME=`echo ${SIZE} | cut -f 1 -d :`
      SIZEWIDTH=`echo ${SIZE} | cut -f 2 -d :`
      FILENAME=`echo ${FILE} | sed s/".${FORMAT}"//g`

      convert ${FILE} -resize \
      "${SIZEWIDTH}^>" ${FILENAME}_${SIZENAME}.${FORMAT}

      convert -gravity Center -crop \
      ${SIZEWIDTH}x${SIZEWIDTH}+0+0 \
      ${FILENAME}_${SIZENAME}.${FORMAT} \
      ${FILENAME}_${SIZENAME}.${FORMAT}

    done

  done

done

echo "OK"

# enjoy :-)

Comentar » | Linux, scripts

Back to last.fm

marzo 2nd, 2010 — 4:18pm

Tal como anunciaba hace exactamente un año, last.fm cerró el servicio gratuito de radio para prácticamente todo el mundo, a excepción de los Estados Unidos, Alemania y Reino Unido. Argumentaban que esos países eran en los que su modelo de nogocio funcionaba por su propio pie, debido a la retribución por licencias y el modelo de publicidad. En el resto de países las restricciones por licencias y la baja cota de suscriptores de pago hacían que la compañía perdiese dinero. Bien, ése era su argumento.

last-fm_logo

Personalmente defendí (y sigo defendiendo) que es una guarrada que medio mundo pague por un servicio para que el otro medio lo tenga de gratis. Y con esas, busqué una alternativa que se ajustase a mis necesidades: necesito una radio personalizada, sin publicidad y que mantenga una línea fiel desde que la enciendo hasta que la cambio. Por supuesto probé varios servicios online, y argumenté a bombo y platillo en favor de Jamendo. Finalmente mis expectativas se vieron reducidas a dos: Jamendo y Spotify.

  • Jamendo: La música es libre, puedo descargar los álbums que me gusten, y sobretodo me siento bien contribuyendo a consumir y dar a conocer muchas bandas que de no ser por esta plataforma lo tendrían un poco más difícil. Estoy de acuerdo en que existe Myspace, pero si el modelo de last.fm no me gusta, el de Myspace me resulta ofensivo: la compañía se queda con parte de los derechos que las obras publicadas, es algo que se firma mediante el acuerdo de uso durante el proceso de alta.
    En Jamendo las bandas publican su música, la regalan, y se dan a conocer a cambio tan sólo de compartir los beneficios de la publicidad y el merchandising. Es perfecto. Además cuenta con la movilidad que proporciona una aplicación de iPhone y otra de Android, ni que decir tiene que dispongo de ambas.
    El problema es que la radio de Jamendo no me sirve para cubrir esa necesidad de la que hablaba. De entrada no dispone de un player de escritorio, con lo cual tengo que tener abierto el navegador para escuchar la radio. Si bien ésta se ejecuta en un popup que puedo tener en un escritorio aparte, cualquier enlace que abra en un navegador puede ir a parar a ese popup, lo puede cerrar, o el picar en un botón del player puede cambiar la página que tengo abierta en un momento dado en la ventana principal… total: es incómodo.
    Por otro lado, la radio de Jamendo dispone de poco contenido. Creo que en su colección existen aproximadamente 20.000 discos, pero eso no es suficiente para elegir una temática y mantenerla ininterrumpidamente durante una jornada laboral de 17 horas. Así, es fácil que uno sintonice una radio de lounge y en medio se le cuelen temas de música electrónica o incluso metal. No puedo trabajar así.
  • Spotify: Este servicio es genial, dispongo de una discografía inmensa de bandas comerciales cuyos discos comprados valdrían una fortuna. No hace falta que explique de que va… todo el mundo lo sabe. De hecho, tanto me gusta el servicio y su aplicación para escritorio, que me aboné con pago por suscripción. De esta forma disfruto de toda la discografía que me da la gana online, al momento, con buena calidad y sin tenerme que descargar nada de forma ilegal. Y por supuesto sin publicidad.
    No sólo eso, Spotify también dispone de aplicación para iPhone y para Android, que se sincroniza como si de iTunes se tratase para poder llevarse la música a otra parte. Es fácil que un día en mi coche suenen los Doors y al día siguiente una compilación de Trip Hop con Portishead, Massive Attack y Morcheeba. Siempre de forma legal y con inmejorable calidad de sonido.
    El problema que tiene Spotify, similar al de Jamendo, es que su sistema de radio falla como una escopeta de feria. Si pido una radio al estilo de Vive la Fete, es muy fácil que a la cuarta o quinta canción suene Queen. Y no es que no me guste Queen, es sencillamente que quiero escuchar una emisora al estilo Vive la Fete, porque es lo que me apetece en ese momento y es lo que em ayuda a trabajar concentrado. Conclusión: la radio de Spotify falla, y tampoco cubre mis necesidades.

Des esta forma, tras haber pasado un año buscando alternativas (Shoutcast, las radios de iTunes, haciéndome playlists en Spotify a mano, encolando temas de Jamendo…) he llegado a la conclusión de que el mejor sistema de radio a la carta, es Last FM.
Me fastidia reconocerlo, y estoy completamente en contra de la forma en que marginaron a medio mundo en favor del otro medio, pero llegado al punto en que no existe una alternativa factible tengo que reconocer que como todos, yo también soy pop. Y necesito música comercial, y me gustan los estilos populares, y me encanta trabajar con música de fondo. Así que he vuelto, y pago 3€/mes desde ayer.

Si alguien quiere saber lo que escucho, mi perfil sigue disponible aquí.

4 comentarios » | lastfm, música

Nexus One: review personal

marzo 2nd, 2010 — 3:36pm

Bueno, como lo prometido es deuda, aquí voy con la review del último teléfono que adquirí: un Nexus One de Google.
Como ya expliqué en el unboxing lo compré a un vendedor de Ebay por 465€. Actualmente está a la venta en Media Markt a 800€, y según los últimos rumores va a llegar a España a través de operadora con Orange y Yoigo, a unos precios que oscilarán entre los 390€ y los 690€ dependiendo de la tarifa contratada. Lo cierto es que lo veo exagerado en todos los casos, pues se supone que cuando entre a través de operadora también se podrá adquirir directamente a Google a través de su site, y el precio debe rondar entre los 400€ y los 500€.

google-nexus-one

En cuanto al hardware, es un terminal completísimo. No voy a enumerar todas las specs porque hay 200 blogs que lo hacen cada 3 días con una excusa distinta. Una de las cosas que a mí más me ha gustado es la pantalla amoled de 3’7, que es suficientemente grande para navegar y para leer Ebooks de forma cómoda sin que moleste su tamaño en el bolsillo. A este respecto me ha encantado encontrar el widget superior que viene por defecto con el sistema operativo, que es una pequeña barra con switches para encender y apagar las cosas que gastan batería. Ya hay muchos así en el market, pero este es bonito, rápido y además tiene una cosa que me encanta, y es que el icono del brillo tiene tres posiciones: picando una vez se pone al mínimo, volviendo a picar se pone al nivel personalizado por el usuario, y picando otra vez se pone al máximo. De esta forma puedo tenerlo siempre al mínimo, ya que suelo vivir el 95% del tiempo en espacios cerrados, y las pocas veces que salgo a la calle, con sólo un tap puedo aumentar el brillo levemente para ver mejor lo que necesito. Si hace mucho sol y me cuesta mucho verlo, con otro tap pongo el brillo al máximo. Cuando termino lo que estaba haciendo, otro tap y lo vuelvo a poner al mínimo. La batería lo agradece muchísimo.

Evidentemente la batería es uno de los aspectos delicados. Si bien el sistema operativo está en la versión 2.1 y supuestamente gestiona mejor la batería, la pantalla es más grande, el procesador también, y además lo llevo permanentemente conectado a internet por 3G. Es lógico que la batería dure poco.
Aunque en realidad este hecho no me preocupa… es decir: se acabaron los días en los que cargabas el teléfono el lunes y aguantaba hasta el jueves. Los teléfonos de esta gama hacen mil cosas más, y también consumen mucha más batería.
Yo he llegado a hacerla aguantar casi 72 horas, a base de no encender wifi, bluetooth, el brillo de la pantalla al mínimo, cogerlo solo para recibir alguna llamada y conectarlo sólo a 2G. No es cuestión de vivir así, pero lo hice para probar cuánto podía estirar en caso de emergencia.
En la actualidad lo cargo por las noches y lo uso durante todo el día. Una de las cosas que más me gusta es que si bien se descarga rápido, se carga en un tris… alrededor de una hora y poco para la carga completa.

Los botones de búsqueda, menú, home y vuelta atrás son hápticos. Esto es, no son presionables sino táctiles. Cuando se tocan el teléfono emite una pequeña vibración que proporciona la impresión de haber pulsado un botón físico.
Hay quien dice que no le gustan, a mí personalmente sí. Me gustan mucho, entre otras cosas porque le dan al teléfono una línea más bonita, y personalmente me da lo mismo apretar un butón que tocarlo.

La cámara tiene flash led. Hay teléfonos que tienen dos led’s, pero para mis fotos un led es más que suficiente. No sé mucho de fotografía y lo que más suelo retratar son los momentos con los amigos etc, fotos fáciles que no necesitan ninguna iluminación especialmente fuerte. Lo que sí me va muy bien para el pulso roñoso que tengo, es el autofocus, que por supuesto tiene.
También suelo grabar algún vídeo cuando encuentro algo que me parece curioso, y no sé decir si el vídeo se graba mejor o peor que en otros teléfonos. Yo luego cuando miro lo que he grabado lo veo muy bien…
En todo esto lo que más aprecio es el flash, el autofocus, y sobretodo la opción de compartir al momento las fotos y vídeos con Twitter y Facebook. Para los usuarios de Flickr: también hay soporte de esa red.

Evidentemente hablando de hardware, la joya de la corona: el procesador de 1Ghz, frente al de 528Mhz del HTC Hero. También los 521Mb a los 256Mb del susodicho. Los efectos gráficos son perfectos, las aplicaciones se abren al momento, y aunque tengo instalado un software de gestión de procesos no lo he usado ni una sola vez para matar ningún programa. Todo es ágil e instantáneo, la sensación de fluidez ha superado de largo a la de un iPhone (lo digo sin ninguna tirria y completamente en serio).

En cuanto al software, en realidad utilizo las mismas aplicaciones que con el HTC Hero. Destacar básicamente dos o tres cosas de la versión 2.1 de Android:

  1. Todo es mucho más rápido y fluido, aunque no sé si éste teléfono se lo debe al hardware en gran parte…
  2. La aplicación del correo (Gmail) ahora permite configurar múltiples cuentas, tanto de Gmail como de Google Apps. En android 1.5 sólo podía configurar una, y el resto (tengo 6) las tenía que configurar en un cliente de correo distinto. Las dos aplicaciones funcionaban de diferente forma y tenían distintas alertas de notificación, así que era un poco incómodo. Éste es uno de los cambios que más he agradecido.
  3. De la misma forma, el calendario permite sincronizar múltiples cuentas, tanto de Gmail como de Google Apps. Ésto ha supuesto un salto enorme en la calidad de mi gestión del tiempo, contando con que también he actualizado mi Macbook Pro a Sonow Leopard, que incorpora sincronización de 2 vías con Google Apps y Gmail de forma nativa. Es decir, tomo las notas en iCal distribuídas en 5 calendarios distintos, y dispongo al momento de ellas en mi teléfono, organizadas en esos mismos 5 calendarios. FULL OF WIN!!
  4. Una verdadero fail, que no tiene nada que ver con Android. En mi HTC Hero podía marcar números en la aplicación del teléfono, y con las letras que corresponden a cada número se iba formando una palabra. El resultado es que mientras tecleaba se iba mostrando un live search encima de los números, con los nombres de mis contactos que coincidían con esa palabra. Es decir: marcando números en el teléfono podía teclear un número cualquiera o el nombre de un contacto. Esto no lo tiene Android 2.1 y desconozco si alguna aplicación lo hace…. el caso es que ahora tengo que ir a la agenda de contactos para buscarlos. No dispongo de ellos desde el teclado del teléfono. Y creo que ésta característica era propia de HTC Sense, de la que por el momento carece la ROM oficial del Nexus One.
  5. De la misma forma, las fichas de los contactos no tienen integración con Facebook, Twitter ni Flickr, como pasaba en el HTC Hero… otra de las aportaciones de la interfaz HTC Sense. La verdad es que la echo mucho de menos, me había acostumnbrado a ella.

Por el tema de los backgrounds animados, la verdad es que me dan bastante igual. No me gustan especialmente, y conservo el que viene por defecto porque no me parece demasiado feo.

En resúmen: es el mejor teléfono que he tenido en mi vida, supera con creces a cualquier otro. Es el teléfono que más recomiendo actualmente a cualquiera que quiera actualizarse y tenga el dinero para adquirirlo. No obstante, lo que me queda más que claro y quiero destacar por encima de todo en este post, es la grandeza de Android.
En breve llegarán nuevos terminales que dejen atrás al Nexus One, pero Android es de largo el mejor sistema operativo del mercado, y si bien todavía no es el más usado (cosa que personalmente me importa un carajo) va a ser MUY difícil que un competidor le quite ese honor en los próximos años. Por lo que a mí respecta, en la actualidad no compraría ni loco un teléfono que no tuviese sistema operativo Android.

18 comentarios » | Nexus One, opinión

Volver arriba