Yearly Archives: 2010

Próxima actualización de Android Market

Google está preparando una actualización del Android Market con motivo de la nueva versión de Android Gingerbread 2.3. Esta actualización estará disponible en un par de semanas, es decir, antes de finalizar el año 2010 y ademas de mejoras visuales notorias, se han añadido nuevas categorías como widget y livewallpaper. Además de esto, se ha ampliado el tamaño máximo de las aplicaciones hasta los 50MB, lo que permitirá crear juegos para Android más ricos visualmente hablando. También se ha reducido el tiempo de devolución de las aplicaciones compradas desde las 24 horas actuales a los 15 siguientes minutos tras la compra, ya que según Google, los usuarios devuelven las aplicaciones en los 10 minutos tras su compra. Por último se añadirán los vídeos promocionales de las aplicaciones. Todo esto es poco, ya que según Google, aún no han terminado con los cambios aunque seguramente los cambios que tienen en mente realizar, los liberaran en futuras versiones del Android Market.

Os dejo un par de capturas de pantalla del nuevo Android Market de la mano de Google.

Google preview, capturas de pantalla de los resultados en Google

De casualidad, me he encontrado con algo que no habia visto hasta hoy. Últimamente, el buscador Google, ha experimentado ciertos cambios como actualizacion en pocos minutos u horas del contenido sin tener que esperar al Google Dance, Google Instant, que tambien esta para moviles y nos permite ver los resultados intantaneamente ademas de ofrecernos sugerencias de busquedas, una pagina nueva de resultados para imagenes, en fin mil cambios en poco tiempo. De casualidad, me pongo a buscar un texto sobre Bill Gates, y me encuentro con que al pinchar sobre el texto que suele aparecer debajo del link de la pagina en Google, aparece un cuadro a la derecha con una captura de pantalla o snapshot. Que es esto, ni idea y la verdad es que me he puesto a buscar un poco y viendo la hora no me he esforzado mucho, pero no he visto nada. Vamos a llamarlo Google Preview por llamarlo de alguna manera, como siempre Google innovando y mejorando dia a dia. Dejo una captura de pantalla donde se puede ver el snapshot de Google. Por cierto, que tambien resalta el texto buscado.

Google Preview

Un rack de servidores en una cocina

Hace tiempo que llevo con ganas de publicarlo y siempre se me olvida. Hace algún tiempo, mi empresa mudó las oficinas de una plata a otra, haciendo la oficina desde 0. La verdad es que como persona curiosa de cuando en cuando me asomaba a ver como iban las obras, ya que era en el mismo edificio pero otra planta. Al ver que todo el cableado, paredes, mesas, sillas, todo menos los ordenadores era nuevo estábamos todos un tanto expectantes/ilusionados. Al mudarnos en pleno verano y aprovechando el buen tiempo, algunos compañeros nos íbamos a comer a una residencia de ancianos cercana, que nos permitía comer allí y disfrutar aunque sea por un breve espacio de tiempo de sus jardines y poder así relajarnos y desconectar un rato. Es por tanto que en todo el verano algunos compañeros entre los que me incluyo, no llegamos a ver la nueva cocina, denominada por algunos como "la cocina de gran hermano" por el estilo y diseño que tiene. Finalizando el verano, en una oleada de despidos, despidieron a un compañero de departamento y este, en su despedida, trajo algunos aperitivos y cervezas y fuimos todos a la cocina a pasar el rato. Estando allí, un compañero que como yo, aún no había comido nunca allí, fue a abrir lo que pensábamos era una nevera buscando unas cervezas fresquitas y la sorpresa al abrir la supuesta "nevera" fue mayúscula. No comento más, mejor ver las fotos.

Rack de servidores en cocina

Rack de servidores en cocina

Steve Jobs siente miedo por Android

Android vs iPhoneCierto es que iPhone es un gran teléfono móvil con un gran sistema operativo detrás y que la sensación de uso de iPhone es muy superior a la de Android, pero esto no quiere decir que Steve Jobs empiece a sentir miedo por el desarrollo que Android está teniendo en el mercado de la telefonía móvil. Steve Jobs siempre se ha sentido orgulloso de sus productos y salvo cuando realizaba una dura batalla contra IBM y Microsoft, Jobs no se dedicaba a despotricar sobre otros productos sino a alabar los suyos. Desde que se ofrecieron las últimas cifras de mercado, en las cuales Android ya había sobrepasado a iPhone, Steve Jobs esta empezando a preocuparse. Primero fueron declaraciones sobre que su teléfono era mas "puritano" haciendo referencia a la restricción de aplicaciones censurables que realizaba la marca de la manzana y después de varios rifirafes, Steve Jobs se pone en la piel de los desarrolladores criticando la fragmentación que complica el desarrollo de aplicaciones para Android.

Como desarrollador que ha realizado algunas aplicaciones para Android, debo decir que programar para esta plataforma es muy fácil, ya que con unos conocimientos básicos de Java podemos empezar a programar y su desarrollo de interfaz xml que recuerda un poco al html, la verdad es que no es muy complicado. Lo que si he de decir es que la cosa complica un poco cuando tenemos diferentes dispositivos con diferentes características como puede ser con cámara o sin ella, con bluetooth o sin el y mil cosas mas que nos podemos encontrar. La verdad es que esto en iPhone no pasa ya que se trata de un único teléfono que ha ido evolucionando, pero el mundo no se puede detener en un punto y siento tener que decir en contra de las declaraciones de Steve Jobs, que los desarrolladores desde que salieron del DOS, han debido de trabajar para diferentes formatos, escritorios con diferentes velocidades, versiones, resoluciones, colores y no quiero entrar ya en los que realizamos webs para Internet Explorer, Firefox, Safari, Opera, Chorme y un largo etc. Es por ello que un desarrollador que se precie, esta acostumbrado a realizar ciertas modificaciones de fragmentación para diferentes dispositivos.

Las últimas declaraciones de Jobs muestran como su todopoderoso imperio de telefonía con iPhone esta poco a poco cayendo y cada vez mas gente se pasa al más que versátil Android de Google y al no poder alabar sus productos por encima de Android, empieza la encarnizada guerra de criticas contra el rival. Siento ser un poco sensacionalista, y al igual que dije hace algún tiempo que Microsoft llegaba mal y tarde con Windows Phone 7 a esta guerra, tengo que decirle a Jobs que esta guerra la ha perdido pero aún nadie se lo ha dicho. Lo único que puede hacer Apple para mantener viva esta guerra y no acabar perdiendo con el tiempo es un cambio radical en su iPhone como liberar a los desarrolladores de la estricta política de censura o volver a realizar algo revolucionario en el mercado de la telefonía móvil.

Diferentes formas de seleccionar etiquetas hijas en css

Cuando estamos maquetando una web, muchas veces nos vemos en la necesidad o en la comodidad de aplicar estilos a etiquetas o clases hijas directamente pero a veces esto puede convertirse en un problema. Normalmente cuando se maqueta se suele seleccionar directamente todas las etiquetas hija de un tipo por ejemplo, todos los p que haya dentro de un div con una clase, pero que pasa si tenemos una estructura un tanto compleja y no queremos que todas se comporten de una misma manera, como por ejemplo usando listas y sublistas y queremos que las sublistas tengan un margen que la lista normal no queremos que tenga.

En CSS hay varias formas de seleccionar etiquetas hija, la mas común es la de seleccionar todos los hijos de un tipo, como seria el ejemplo:

.clase ul {
    margin: 0px;
    padding: 0px;
    list-style: none;
}

Con esto decimos que todos los li contenidos dentro de un ul, tengan un estilo, pero ¿Y si queremos hacer un listado mas complejo, con sublistados? Lo que debemos de hacer es decirle que aunque los li dentro de ul se comporten de una forma concreta, los primeros li queremos que se comporten de otra forma. En el siguiente ejemplo se usa para formar un listado con li y ul donde queremos que los primeros li no tengan margen alguno, pero que el resto de li que haya tengan un margen a la izquierda para simular un sangrado automático:

.sidebarBox ul > li > ul {
    margin-left: 25px;
}

Y el html sería el siguiente:

  • lista1
    • lista2

Con esto lista1 no tendra sangrado pero lista2 tendra un sangrado de 25px hacia la izquierda. Espero que os sirva de ayuda.

Cuando GMail o GTalk para Android no funcionan

Hace un par de días me dejaron de funcionar las aplicaciones nativas de GMail y GTalk que vienen instaladas por defecto en Android. Puede que otros no las usen, pero para mi el hecho de que GMail y GTalk no funcionaran fue algo que me mató por dentro. GMail por ejemplo me dejó de descargar mensajes y por mucho que le daba a actualizar, no descarga los mensajes nuevos y GTalk directamente no me abría, me cargaba la pantalla de "cargando" y fugazmente desaparecía, es decir, GTalk no se abre. Como solución temporal configuré el correo de HTC e instale el Fring, pero el correo de HTC aunque bastante mejor que GMail, prefiero la ligereza y la velocidad de GMail, y el Fring, directamente no me gusta, ademas de que al rato de tenerlo abierto y estar en la home se me cierra solo no se por que.

Viendo que esto no era algo de algún cambio que estuvieran haciendo desde Google, me decidí a arreglarlo. La solución ha sido bastante mas sencilla de lo que me imaginaba, como siempre, un limpiado del programa es lo mejor, y para ello nos vamos a Ajustes > Aplicaciones > Administrar aplicaciones y una vez aquí, debemos buscar las aplicaciones que se llaman: "GMail", "Almacenamiento de Gmail", "Google Talk" y "Almacenamiento de Google Talk", esta última solo sale "Almacenamiento de Google" pero se ve el icono de GTalk. En cada una de las fichas debemos de borrar los datos del sistema y para ello pulsaremos el botón de "Borrar datos" y listo, pero eso si, en las 2, su programa y su almacenamiento y si os pasa como a mi que no os funcionan ni GMail ni GTalk pues habrá que hacerlo en los 4. Una vez hecho esto, ya podemos abrir de nuevo las aplicaciones y GMail volverá a recibir correos, aunque tendrá que sincronizarse y si tienes muchos correos tardará un ratín, pero el GTalk funcionará a la primera.

Espero que os haya servido esta pequeña ñapa para cuando no funciona GMail para Android o no funciona GTalk para Android.

Publicado el plugin de WordPress UserAgent theme switcher 2.0

UserAgent theme switcherEn este puente del Pilar, cuando deberia de disfrutar de unas vacaciones, he pillado un gripazo que no me deja moverme de la cama, y como no puedo hacer otra cosa, he decidido finalizar el desarrollo del plugin de WordPress User Agent Theme Switcher. El plugin que ya se encuentra en su versión 2.0 trae importantes mejoras frente a su predecesor, ya que ademas de haberlo reescrito desde cero, se ha añadido funcionalidades, se han separado por funcionamiento las páginas, para que sea mas sencillo modificar las opciones y se ha dado soporte a unos cuantos navegadores mas. La lista de cambios respecto a la versión 1.2 es la siguiente:

  • Se ha reescrito todo el código del plugin para aumentar el rendimiento y para facilitar el desarrollo de futuras mejoras
  • Se ha separado la página de administración en 3 páginas, la de temas por navegador, el modo debug y la futura configuración del cache
  • Se han añadido etiquetas a los navegadores, como gecko a Firefox, mobile a Safari Mobile, Opera Mini, etc. para poder asignar un template por etiqueta para por ejemplo un tema para moviles con la etiqueta mobile
  • Se han añadido iconos para los navegadores y las etiquetas.
  • Se ha traducido todo el plugin al ingles para realizar las traducciones en otros idiomas en futuras versiones
  • Se ha añadido un boton para donar.
  • Se ha añadido soporte para Internet Explorer 9
  • Se ha añadido soporte para Camino para Mac
  • Se ha añadido soporte para Opera Desktop
  • Se ha añadido soporte para IceWeasel
  • Se ha actualizado Safari Mobile para que incluya el navegador del IpodTouch

Recuerdo a quien use este plugin, que puede reportar navegadores no soportados con el modo debug, algo que permitirá ir mejorando poco a poco el plugin.

El que quiera descargarlo puede hacerlo desde el administrador de WordPress buscando "User Agent Theme Switcher" o desde la pagina del plugin en WordPress

Algunas capturas:

Skype para Android, todo son problemas

SkypeEstoy muy interesado en poder tener Skype para Android, porque me permitirá realizar llamadas a amigos aprovechando la tarifa plana de 3g y no pagandola, por lo que para mi en algunos casos es interesante. Varias veces a la semana, suelo entrar en el Android Market en busca de la esperadísima versión oficial de Skype y con mas intensidad después de que Skype, en una clara estrategia de eliminación de la competencia ha negado el acceso a Nimbuz, Fring y similares al API de Skype, algo que decía a voces que estaban a punto de sacar la versión oficial.

Mi desilusión viene al ver que por fin esta la aplicación de Skype para Android en el Android Market, pero al intentar instalarla no he podido. Lo habré intentado como 10 veces sin éxito, a lo que automáticamente he ido a la web de Skype para Móviles skype.com/m y me cargaba una página para descargar Skype para Android, pero al pinchar en descargar me aparece una página de error 404. Indignadisimo, al ver que no había manera de bajarse Skype para Android, me he puesto a investigar por varios foros y blogs, encontrando solo quejas de usuarios diciendo que la versión esta muy verde, con muchos fallos y que no funcionaba bien.

Ahora digo yo, que pasa, ¿Que han eliminado la aplicación porque realmente no estaba lista para la puesta en producción? ¿Han sacado Skype para Android antes de tiempo por las criticas recibidas por cortar el servicio a Fring, Nimbuz y similares? Solo se que estoy muy triste, después de esperar con tanta ansia este programa y primero no poder instalarlo y después que no he visto a ningún usuario que no diese alguna queja sobre el programa. La verdad, esperaba mas de una empresa informática no española y mucho menos con tanto nombre como Skype.

Publicada la versión 0.2 de puntoengine

He publicado la nueva versión de Punto Engine PHP, o PEP en su versión 0.2. Esta versión trae importantes mejoras con respecto a la versión anterior, ya que administra mucho mejor el sistema de templates para poder hacer páginas dinámicas mucho mas fácil y rápido. Entre las mejoras cabe destacar:

  • Añadido un archivo de changelog para poder ver las modificaciones.
  • Ahora el Kernel permite recuperar la ruta virtual (la que accede desde el navegador) aparte de la ya implementada ruta física.
  • Los Servlet tienen ahora un atributo de url para poder realizar controles si fuera necesario.
  • En el web.xml se puede configurar el modo debug para poder tener una traza mas detalla del error que se produjo.
  • En el Servlet se ha añadido un atributo debug para en caso de desarrollo, poder realizar trazas si se desea.
  • El metodo SendRedirect para redireccionar la pagina hacia otra, ahora tiene una funcionalidad como .Net donde si añadimos la clave "~/" al principio de la url, esta sera sustituida por la url del proyecto.
  • Ahora los Servlets pueden tener una MasterPage para tener un template base desde el que cargar el contenido.
  • En los templates, si ponemos la clave "~/" en un enlace, css o similar, sustituira esta por la ruta del proyecto.
  • Se han cambiado los mensajes que aun aparecian en los errores de "IDCS Server" por "Punto Engine Server".
  • Se ha cambiado el HomeController por TestController y se han añadido diferentes funcionalidades de MasterPage y diferentes ejemplos a mostrar para ver su funcionamiento.
  • Se ha corregido un error que provocaba que cuando se lanzaba una excepción no fatal, se seguian mostrando otros errores encadenados.
  • Se ha borrado temporalmente el acceso mediante web.xml al PepAdmin ya que es aun no es funcional.

Las mejoras de esta versión son bastante importantes y permiten un desarrollo mas fluido de las páginas. Para quien quiera descargarlo puede hacerlo entrando en la web del proyecto puntoengine.

Namespaces o espacios de nombre virtuales en javascript

En la mayoría de lenguajes de programación relativamente maduros o potentes, existe lo que denominamos namespace o espacio de nombres. Los namespace no son otra cosa que unos contenedores de nombre donde podremos contener clases, funciones y variables que pueden repetirse con el mismo nombre en otros espacios de nombre o namespace sin que ello suponga un error. Un ejemplo claro de cual es la verdadera utilidad organizadora de los namespace o espacios de nombres es en las librerías gráficas de los lenguajes de programación, ya que en estas librerías un elemento muy común suele ser la clase Window que hace referencia a una ventana pero que puede estar dentro de GTK, QT, .Net, API de Windows, etc. (esto no es muy correcto puesto que GTK seria GTKWindow pero es por poner un ejemplo). Javascript, como un lenguaje ya mas que maduro con el paso de los años y relativamente estandarizado por los navegadores modernos, pese a ser un lenguaje de programación multiparadigma, al igual que haga PHP, también tiene namespaces o espacios de nombre, aunque debido a la debilidad de las variables estos namespaces son mas virtuales que reales.

Entendiendo que es y para que sirve un namespace, para declararlo en javascript, lo que debemos de hacer es utilizar arrays para generarlo. Gracias a la debilidad y dinamismo de las variables en javascript, podemos asignar a una variable un array de posiciones por nombre y acceder a estas mediante un signo de puntuación "." y no por su clave común de array ["clave"], por lo que aquí es donde viene el truco. Básicamente lo que hacemos al declarar un namespace en javascript es asignar a un variable un array con las posiciones del namespace y luego ya dentro de estas posiciones, acceder como si desde .Net o Java se tratase. Con un ejemplo se ve mas sencillo.

var Indalcasa = { Utilidades : {} };

Indalcasa.Utilidades.MiClase = function() {
  this.variable = "valor";

  this.metodo = function(parametros) {
    return this.variable + " " + parametros;
  }
};

var iClase = new Indalcasa.Utilidades.MiClase();
iClase.variable = "nuevo valor";
alert(iClase.metodo("prueba"));

El ejemplo anterior mostrará una ventana de alert con un mensaje tal que "nuevo valor prueba", ya que hemos instanciado la clase, le hemos cambiado el valor al atributo de la clase y en el método de la clase, concatenamos el valor del atributo de la clase al parámetros que hemos pasado. Esto es un pequeño y sencillo ejemplo de lo que se puede hacer con javascript, namespaces y clases.

Publicada la version 0.1.1 de puntoengine

Ayer publiqué la versión 0.1.1 de puntoengine. Puntoengine o Punto Engine PHP acortado PEP, es un framework en fase alfa para PHP del tipo MVC o Modelo Vista Controlador. Este framework basa su funcionalidad en una mezcla de diferentes frameworks web como son ASP.Net, Java Servlets y PHP en un antiguo framework propio llamado RLM Engine. Actualmente, pese a estar en una fase de desarrollo muy verde, pero ya es completamente operativo y se pueden construir webs con un sistema de Servlets como se haría una web en Java. La versión 0.1.1 en su revisión 7 de puntoengine se trata de la versión ya publicada 0.1.1 de puntoengine pero con la documentación completa del código, lo que facilita a quien quiera ver y estudiar el código y su funcionamiento, que sea mas fácil de seguir. Para la versión 0.2 de puntoengine se espera la creación de un administrador, actualmente en fase de desarrollo para poder gestionar entre otras cosas los Servlets instalados y la preparación para futuros plugins como puede ser el sistema de CMS.

Este es un proyecto a largo plazo y muy ambicioso que espero llegue lejos y pueda utilizarlo para construir diversas webs que tengo en mente. Según un calculo realizado siguiendo el sistema COCOMO, actualmente el proyecto con casi 1500 lineas de código, tendría un coste privado de unos 6.000€. Para el que quiera echar un vistazo e incluso colaborar con el desarrollo, documentación o aportando incidencias, puede hacerlo en la web del proyecto puntoengine.

Android ya es el segundo sistema operativo móvil en el mundo

Como cito en el título de este post, Android ya es el segundo sistema operativo móvil mas usado en este mundo. Según un estudio que ha realizado la consultora tecnológica Gartner según el crecimiento y uso de cada sistema operativo móvil, Android acaba de superar a BlackBerry, convirtiendose en el segundo sistema operativo móvil mas usado y con una estimación de que en los próximos 4 años alcance a la todopoderosa Nokia y su Symbian, pudiendo superar a esta en 2014. Según este estudio, en la actualidad y como se espera en los próximos años, Nokia con Symbian, seguirá al frente de los dispositivos móviles pero perdiendo cuota de mercado poco a poco frente a Android.

En la actualidad, el listado de sistemas operativos móviles mas usados es el siguiente:

  • Nokia, Symbian: 107.662.400 unidades, 40.1% cuota de mercado
  • Google, Android: 47.462.100 unidades, 17.7% cuota de mercado
  • RIM, Research In Motion, BlackBerry: 46.922.900 unidades, 17.5% cuota de mercado
  • Apple, iOS (Iphone): 41.461.800 unidades, 15.4% cuota de mercado
  • Microsoft, Windows Phone: 12.686.500 unidades, 4.7% cuota de mercado

Según las previsiones de crecimiento, y aunque desconozco si se han contado con los futuros proyectos que Google plantea para Android, como Google TV, se espera que en tan solo 4 años, Android alcance a Symbian, por lo que para 2015 y si las cosas no se tuercen, podríamos ver desbancada a Nokia de la privilegiada primera posición en el mundo de los dispositivos móviles. Las previsiones para 2014 son las siguientes:

  • Nokia, Symbian: 264.351.800 unidades, 30.2% cuota de mercado
  • Google, Android: 259.306.400 unidades, 29.6% cuota de mercado
  • Apple, iOS (Iphone): 130.393.000 unidades, 14.9% cuota de mercado
  • RIM, Research In Motion, BlackBerry: 102.579.500 unidades, 11.7% cuota de mercado
  • Microsoft, Windows Phone: 34.490.200 unidades, 3.9% cuota de mercado

Veremos si la evolución e innovaciones de las compañías hacen de esto una realidad o no. De momento y en opinión de un humilde servidor, Android, si el resto de compañías siguen con sus actuales políticas, se convertirá en breve en el numero uno de los sistemas operativos móviles, ya que Nokia no evoluciona ni innova, estaba genial cuando tenia móviles de toda la vida, pero ha llegado tarde y con grandes tropezones a la carrera de las nuevas tecnologías móviles. BlackBerry que mantendrá su posición corporativa y Apple con iOS y sus políticas restrictivas, no llegaran a donde todos esperan que lleguen. Solo el tiempo dirá que pasara y pondrá a cada compañía en su lugar.