2010

Buscando aparcamiento con Open Spot para android

Echando un vistazo a la web de Google Labs, me encuentro con una aplicación para Android que ha desarrollado Google bastante curiosa. La aplicación en cuestión es Open Spot, se trata de un programa, similar a un GPS con Google Maps, que nos indica plazas de aparcamiento libres para que podamos aparcar. El funcionamiento es muy sencillo, un usuario que va a desplazarse con el coche, indica al programa que va a dejar su aparcamiento libre, aunque supongo que también se puede hacer a pie si vemos un hueco, y automáticamente a los usuarios que esten cerca y tengan Open Spot para Android abierto, les aparecerá un POI en el mapa indicando que ahí se encuentra una plaza libre de aparcamiento. La verdad es que además de ser una aplicación bastante curiosa, es muy útil ya que para aquellos que vivimos en grandes ciudades, nos puede ahorrar mucho tiempo y gasolina que gastamos a base de dar vueltas a las manzanas para encontrar el dichoso aparcamiento. Resaltar también que el usuario puede recibir karma de otros usuarios que hayan encontrado aparcamiento gracias a el, por lo que puede resultar hasta divertido utilizarlo. Como nota restaltar que de momento solo se encuentra disponible en Estados Unidos, Canada y Paises Bajos, pero esperemos que llegue a España pronto. Si quereis echar un vistazo os dejo la web de Open Spot.

Open Spot marcando un spot

Open Spot recuperando Spots

Convertir un texto a mayusculas (toUpper) o minusculas (toLower) con transformadas xslt

Muchas veces, cuando necesitamos manipular texto desde transformaciones xsl, nos encontramos con el caso de que tenemos un texto en mayúsculas o un texto en minúsculas y queremos convertirlo a minúsculas o mayúsculas respectivamente. En cualquier lenguaje, solemos tener métodos para hacer un ToUpper, strtoupper o por el contrario ToLower, strtolower y similares, pero en xsl, al ser tan genérico, no disponemos de ese tipo de funciones, aunque si deberían de estar.

Para suplir esta necesidad, me he creado 2 funciones muy útiles que utilizan la funcion traslate, que comentare en otro articulo. Básicamente lo que hacemos es intercambiar una cadena por la otra en base a lo que va entrando por un texto. Con estas funciones podemos llamar a StringToLower o StringToUpper como si de un template normal se tratase, indicandole el texto que queremos convertir a mayúsculas o convertir a minúsculas y automáticamente nos convertirá la cadena.

El código seria el siguiente:

<!-- Variables globales -->
<xsl:param name="lower" select="'abcdefghijklmnopqrstuvwxyz'" />
<xsl:param name="upper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
 
<!-- Convierte una cadena de texto, todo en minusculas -->
<!-- @param string text Cadena a convertir a minusculas -->
<!-- @return Cadena en minusculas -->
<xsl:template name="StringToLower">
  <xsl:param name="text"/>
  <xsl:value-of select="translate($text,$upper,$lower)"/>
</xsl:template>
 
<!-- Convierte una cadena de texto, todo en mayusculas -->
<!-- @param string text Cadena a convertir a mayusculas -->
<!-- @return Cadena en mayusculas -->
<xsl:template name="StringToUpper">
  <xsl:param name="text"/>
  <xsl:value-of select="translate($text,$lower,$upper)"/>
</xsl:template>
 
<xsl:call-template name="StringToLower">
  <xsl:with-param name="text"
      select="'Mi texto que quiere ser Reemplazado a minusculas'" />
</xsl:call-template>
<xsl:call-template name="StringToUpper">
  <xsl:with-param name="text"
      select="'Mi texto que quiere ser Reemplazado a mayusculas'" />
</xsl:call-template>

El resultado de esta tranformacion del StringToLower seria «mi texto que quiere ser reemplazado a minúsculas» y la segunda llamada con el StringToUpper seria «MI TEXTO QUE QUIERE SER REEMPLAZADO A MAYUSCULAS». Esto es algo muy útil para trabajar con textos.

Publicado el plugin de WordPress UserAgent theme switcher 1.2

UserAgent theme switcherAyer publiqué la versión 1.2 del plugin de WordPress «UserAgent theme switcher». Es plugin para quien no lo conozca es un plugin de WordPress que mediante un sencillo administrador, nos permite indicar que tema se mostrara a que navegador. De esta forma podemos crear o descargar un tema especifico para dispositivos moviles y decirle que iphone o android utilicen este tema. Entre las principales novedades que se presentan en esta nueva versión, se encuentran:

  • Se ha mejorado el patrón de Safari Mobile, ya que este difiere levemente de si se trata de Android o iPhone.
  • Si usas el modo debug, ahora puedes eliminar useragents de la lista de no soportados.
  • Si usas el modo debug, ahora puedes reportar un useragent no soportado.

Aunque puede ser una tontería, usar el modo debug puede ser importante para el desarrollo y mejora del sistema, ya que ayuda a detectar y reportar useragents no soportados aun y que puedan ser añadidos en un futuro.

Skype Mobile para android

SkypeSi algo hecho en falta en Android es mi querido Skype, busque como loco en el market y en la web de Skype pero aun no hay una versión oficial para poder utilizar este programa en nuestros android. Según he visto por la web de skype, parece que hay algunas versiones de prueba beta para teléfonos de Verizon y también se encuentra skypelite que es digamos el chat de Skype pero no nos permite llamar por voip. La alternativa a todo esto viene de la mano de Fring, que si registramos nuestra cuenta de Skype podremos llamar a nuestros contactos. Teniendo en cuenta que la mayoría de los teléfonos nuevos que se compran, se hace mediante un contrato por tarifa plana de datos, Skype puede suponer una autentica revolución, ya que podremos aprovechar esa tarifa plana para realizar llamadas a nuestros contactos sin gastarnos un solo céntimo. Espero con ansias la versión definitiva y abierta de Skype para Android, que según parece aparecerá en otoño de este año, aunque hasta entonces habrá que conformarse con Fring.

Descodificar Quoted Printable para leer correos de GMail en Visual Basic

Un amigo esta realizando un proyecto en Visual Basic .Net, que entre otras cosas se conecta a GMail para recibir correos e introducirlos en una base de datos para mostrarlos en un panel de administración. Hasta aquí todo normal, el problema viene cuando en los correos utiliza caracteres, que vamos a llamar extraños, como tildes por ejemplo. Cuando recibimos por código un mail que por ejemplo contenía la cadena «conexión», este texto no se nos devuelve así, sino que nos devolvería «conexi=F3n» y he aqui el problema, ya que esto no es codificación normal de UTF-8 a ASCII o similares sino que es completamente diferente.

Los servidores de correo utilizan protocolos bastante antiguos, en los que todo se basta en texto. Para separar encabezados se utilizan saltos de linea tipo «rn» o «n» y por ejemplo para adjuntar archivos hay que declarar una marca y decirle que el contenido del archivo esta entre marca y marca. Como no, todo esta basado en texto ASCII por lo que los caracteres extraños, letras con acento, eñes y similares, suelen encontrarse en una codificación que se llama «Quoted printable».

Quoted Printable o simplemente acortado QP es un sistema de codificación de 8 bits compatible con ASCII que basa su codificación de caracteres extraños en un formato de un símbolo igual seguido de 2 posiciones hexadecimales. Se rige por el estándar RFC-1345. Aunque algunos lenguajes traen incorporado por defecto funciones o librerías para codificación y descodificación de caracteres, .Net no tiene nada para descodificar este tipo de codificación. A continuación os mostrare un ejemplo de función de Visual Basic para la descodificación de estos caracteres, que básicamente recoge estos caracteres hexadecimales, los convierte a entero y obtiene el caracter de ASCII extendido de 255 caracteres, no el tradicional de 128 caracteres. De esta forma, obtendrá el carácter correcto ya traducido. Os dejo el ejemplo de la función:

Función de descodificación de cadenas de texto Quoted Printable

Public Shared Function QuotedPrintableDecode(ByVal text As String) _
As String
  Dim i As Integer
  Dim DecodedString As StringBuilder
  Dim Chars As Char()
  Dim CharsValue As String
  Dim HexValue As Integer

  Chars = text.ToCharArray()
  DecodedString = New StringBuilder

  For i = 0 To Chars.Length - 1
    If Chars(i) = "=" Then
      CharsValue = Nothing
      HexValue = Nothing

      If Chars(i + 1) = "0" Then
        CharsValue = Chars(i + 2)
      Else
        CharsValue = Chars(i + 1) & Chars(i + 2)
      End If

      HexValue = Val("&H" & CharsValue)

      If CharsValue.ToUpper = Hex(HexValue) Then
        DecodedString.Append(ChrW(HexValue))
        i += 2
      Else
        DecodedString.Append(Chars(i))
      End If
    Else
      DecodedString.Append(Chars(i))
    End If
  Next

  Return DecodedString.ToString
End Function

Ahora solo hace falta llamar a esa función pasando la cadena a convertir:

Public Shared Sub Main()
  Dim text As String = "conexi=F3n"
  Console.WriteLine(Application.QuotedPrintableDecode(text))
End Sub

El resultado de aplicar esto seria la cadena «conexión». Para que funcione es necesario importar el namespace System.Text, pero solo para el StringBuilder

Imports System.Text

Espero que os sirva de ayuda.

Indalcasa ahora también en ingles

En mis esfuerzos por la promoción de este blog y de mejorar como profesional, darme a conocer y llegar a mas y mas público, he decidido que el blog que en español esta bastante bien posicionado y tiene un número de visitas aceptable, crear una rama del blog en ingles. El blog en español esta muy bien posicionado dentro de los buscadores, tiene casi 200 visitas únicas diarias y teniendo en cuenta que no tiro de amistades, sino que son visitantes reales interesados por el contenido y que acceden casi en un 100% de buscadores, salvo alguna excepción como twitter, facebook y rss, es el momento de seguir creciendo y llegar a otro tipo de publico.

Revisando las analíticas de la página, la inmensa mayoría de los visitantes son españoles, entorno a un 35% y el resto se reparte entre ArgentinaMéxico y Chile con un 20% mas o menos cada uno. Pero hay una minoría que no es despreciable si contamos el numero de visitas mensuales, que provienen de países como EEUU, Inglaterra u otros países. Es por esto que he decidido crear la rama o versión inglesa de este blog, para acceder a esos usuarios internacionales que quizás les cueste entender el contenido o que son minoría porque Google no muestre los mismos resultados desde EEUU que desde España cuando un usuario busca contenido en ingles y en el blog se encuentra en español. Por supuesto no voy a trabajar con 2 blogs diferentes, ya que sería una locura, sino que la versión inglesa simplemente seria un mirror del blog principal pero con el contenido integro en ingles. Actualmente me encuentro en proceso de traducción de los artículos mas antiguos para ir publicandolos poco a poco en la versión inglesa mientras esta es rastreada y posicionada poco a poco y cuando la versión inglesa alcance al blog principal, se escribirán los artículos en español y posteriormente se publicaran en su versión en ingles.

Para desarrollar esto he tenido varias opciones, una de las cuales era utilizar plugins de WordPress como WPML que nos permiten mostrar el contenido en multidioma traduciendo poco a poco el contenido que se desee, paginas, artículos, etc. Lo he estado probando durante un rato y aunque muy pero que muy interesante y esta muy bien estructurado y sencillo de utilizar, al final he decidido no utilizarlo. El final ha sido crear un subdominio en.indalcasa.com con la versión inglesa del blog, puesto que aunque WPML se adecuaba a mis necesidades básicas, por temas de publicidad, analíticas y demás, prefiero crear un espejo completo y no ensuciar la base del blog principal. De esta forma puedo poner códigos de analytics diferentes, publicidades diferentes adecuandose a cada idioma y algún detallito mas, puesto que existen ciertos problemas o errores que cometí en los comienzos de este blog que prefiero subsanar en la versión inglesa y no arrastrarlos conmigo.

Espero que disfrutéis o al menos los no hispanohablantes disfruten de la versión inglesa de Indalcasa o como lo diría ahora, Indalcasa english version.

Siguenos también en en.indalcasa.com

Publicada la versión 1.1.3 de UserAgent theme switcher

UserAgent theme switcherAnoche libere la versión 1.1.3 del plugin de wordpress UserAgent theme switcher en su versión 1.1.3 con algunas mejoras importantes sobre la versión 1.0.0. La principal mejora que se ha realizado es el numero de navegadores soportados, que se ha aumentado añadiendo Safari Mobile, Internet Explorer 6, Internet Explorer 7 y Internet Explorer 8 y Opera Mini. Tambien se han mejorado los patrones y arreglado algunas incidencias que provocaban errores bajo ciertas circunstancias.

Publicada la versión 1.0.0 de UserAgent theme switcher

UserAgent theme switcherEstoy que no entro en mi de la alegría. Hoy me han publicado y ya estoy trabajando desde los repositorios SVN de WordPress sobre el plugin «User Agent theme switcher». Este plugin que me ha llevado medio fin de semana de trabajo, es un plugin que tiene como objetivo poder variar el tema mostrado en WordPress en base al navegador que esta accediendo. De esta forma, con 3 clicks podemos establecer que un móvil con iPhone o Android por ejemplo, utilicen un tema que este mas preparado para mostrar contenido para móviles. Pero no solo queda ahí la cosa, las utilidades de este plugin no son infinitas, pero si pueden dar mucho juego, no solo para dispositivos móviles, sino que podemos tener un tema para cada navegador, por ejemplo usando un tema mas preparado para los dichosos Internet Explorer o una versión de solo texto y con menos maquetación para los bots que rastrean nuestra pagina como Google Bot o Yahoo Slurps.

Este plugin tiene un sistema de administración que he procurado que sea lo mas sencillo posible. Dispone de 3 partes, un listado de los navegadores soportados con los temas a los que aplica. Si el navegador no tuviera un tema preseleccionado, mostraría el tema por defecto. Desde esta sección podemos también desasociar un tema a un navegador pulsando sobre borrar. Por otro lado tenemos otra sección para asociar temas instalados contra un navegador, que al añadirse se actualizara automáticamente en el listado anterior. Por último está la sección de debug, esta sección tiene como único propósito la ayuda al desarrollo del plugin, mostrando los useragent que aun no están soportados en el plugin para poder ser detectados en un futuro.

Para versiones futuras tengo como propósito que los usuarios que activen el modo debug puedan enviar por mail el useragent detectado para poder mejorar el sistema, ademas de añadir nuevos navegadores y crear secciones, que no es otra cosa que categorizar los navegadores, por ejemplo pudiendo seleccionar Internet Explorer y que afecte a todos, o dispositivos móviles y que afecte a iPhone, Android, etc. pero eso es ya irme mucho al futuro, ahora mismo a mejorarlo un poco y esperar a ver el impacto que tiene dentro de WordPress.

Para el que quiera puede echar un vistazo en la web de WordPress donde esta alojado el plugin de User Agent theme switcher

Os dejo tambien un par de capturas de pantalla de como se ve.

UserAgent theme switcher cap

GMail con soporte para múltiples cuentas

GMailEn el blog oficial de GMail leo que desde hace unos días, los chicos encargados del desarrollo de GMail, anunciaron que ya tiene listo algo que llevábamos mucho tiempo esperando. Se trata nada mas y nada menos que el acceso múltiple, es decir, poder acceder desde 2 cuentas a GMail. Para hacer esto, solo debemos de acceder a nuestra cuenta desde el administrador de cuenta y activar el inicio de sesión múltiple.

GMail multiple

El inicio de sesión múltiple no solo permite acceder con múltiples cuentas a la vez a GMail, sino que nos permite hacerlo en prácticamente la mayoría de las aplicaciones de Google, una grandisima noticia. Eso si, no hay que olvidar el peligro que esto puede conllevar y por ello cuando nos disponemos a activarlo, Google nos advierte que es bajo nuestra responsabilidad si nos equivocamos al, por ejemplo, enviar un correo desde la cuenta que no era.

Siguenos en facebook

facebookHace algunas semanas anunciaba que desde twiter iba a ir escribiendo publicaciones del blog y otras personales. Ahora le toca el turno a facebook. Ayer cree un nuevo grupo en facebook llamado «Indalcasa», desde el que entre otras cosas quiero colgar las publicaciones de este blog. Aparte de colgar las publicaciones, espero estar mas cerca de los usuario si es que los hay, para poder comentar cosas sobre los articulos, y captar a mas usuarios para este blog. Aunque no voy a colgar todas las publicaciones de golpe, sino que las iré colgando poco a poco, en pocas semanas ya estará actualizado con el blog. Os espero en facebook.

Gmail con soporte videochat para Linux

GMailLeo en el blog oficial de Gmail que ya han implementado el soporte del videochat para Linux, en concreto para Ubuntu y todas aquellas distribuciones basadas en debian y paquetes deb. Están preparando los paquetes instaladores para rpm, por lo que pronto, distribuciones tipo Red Hat, Fedora y similares, estarán pronto disponibles. Para quien no lo conozca, cuando usamos el chat de Gmail o GTalk web, tenemos la opción de utilizar videochat, para lo que se instalaban unos paquetes en nuestro ordenador a modo de plugin y así poder realizar una videoconferencia. Desde hace tiempo, Windows y Mac OS X estaban soportados y ahora por fin, Linux. Ya era hora, que una empresa como Google, que toda su tecnología se basa en Linux, incluyendo los 2 sistemas operativos Android y ChromeOS que también se basan en Linux, sacara las aplicaciones para este sistema. Para cuando Sketchup!!!

Google TV

Google no para de crecer y para ello busca abirse a otras oportunidades de mercado. Despues del exito abrumador de Android, que tiene una cuota de crecimiento del 800% y tiene previsiones de pelear por ocupar la segunda posicion en el ranking de sistema operativo movil mas usado contra iOS de iPhone y siempre detras de Symbian con la todopoderosa Nokia a las espaldas. Es tanto el exito que esta teniendo Android que han firmado una serie de acuerdos entre Google, Sony, Logitech, Intel y DISH Network para empezar en breve a instalar Android como sistema operativo en televisores. Imaginad que estamos viendo la tele y sabemos un programa pero no en que canal lo emiten, pues ponemos el buscador y nos lo encuentra, o que por ejemplo hemos nos hemos perdido ese capitulo que queríamos ver y queremos verlo online o simplemente nos aburrimos y queremos jugar al farmville (no tenían otro ejemplo que poner!!!!). El caso es que todo lo que podemos hacer con un terminal Android, como jugar, instalar aplicaciones de Android market, mirar el correo, chatear, facebook, twitter, jugar a los juegos del facebook (no como en iPhone), todo lo podríamos hacer con el mando de la televisión. Esta claro que Google se esta haciendo poco a poco con el control del mundo, pero a diferencia de otras compañías, lo hace con calidad, tecnología y buen hacer aunque no siempre caiga bien o pueda resultar polémico. A continuación os dejo el video oficial que podreis ver en la web de Google TV.

Scroll al inicio