Desarrolladores


Buenas prácticas usando Fragments en Android

Desde que Google incluyó los Fragments en Android, muchos desarrolladores no han sabido terminar de aclararse con el nuevo paradigma de diseño en las aplicaciones. Para los que no los conozcáis, un fragment es un objeto pensado para ser cargado desde un Activity y sustituir a este último como encargado de mostrar la interfaz e incluir el código de la interfaz gráfica. De este modo, dónde antes hacíamos un setContentView() en nuestro Activity, lo que ahora hacemos es «añadir» un Fragment al Activity, que es el que muestra el layout que queremos mostrar. Esto lógicamente tiene muchas implicaciones, pero la [Seguir leyendo…]

Implementar un menú lateral usando NavigationDrawer en Android

Las pestañas se han pasado de moda, o eso parece. Lo que se lleva actualmente en el diseño de aplicaciones para Android son los menús laterales como GMail o la Play Store. Afortunadamente Google ha pensado en todo y nos ha proporcionado un componente nativo para poder implementar este patrón de diseño: El NavigationDrawer. Para implementar el NavigationDrawer de modo correcto, vamos a manejar varias clases: – MainActivity, que será el Activity dónde queremos manejar el NavigationDrawer. – NavigationDrawerFragment que será el Fragment que contendrá el ListView que aparecerá en el menú lateral. Con estos dos componentes podría ser suficiente, [Seguir leyendo…]

Implementar en iOS una lista desplegable

Esta semana vamos a ver cómo podemos implementar en iOS una tabla con secciones desplegables como la que podemos encontrar en el placeline de GPMESS de Android e iOS. Por defecto, las tablas en iOS no poseen ningún mecanismo para ocultar y mostrar el contenido de las diversas secciones que pueden formar la misma, por eso necesitaremos implementar dicho comportamiento con ayuda de un botón en las cabeceras de cada una de las secciones. Veamos en profundidad como podemos hacerlo. Partiremos de un proyecto formado por un vista principal, subclase de UITableViewController. Xcode no nos ofrece ninguna plantilla en el [Seguir leyendo…]

Windows Azure y las notificaciones push

Hoy en día utilizamos nuestro smartphone para todo, y nos gusta que éste nos notifique sobre los acontecimientos importantes que ocurren en nuestras aplicaciones y las notificaciones son el método ideal para ello. Tradicionalmente el modo de recibir notificaciones era haciendo que nuestra aplicación estuviera cada X tiempo conectándose al servidor para comprobar si tenía información nueva para mostrar. Este método, aunque fácil de implementar, produce un gasto innecesario tanto de batería como de datos. Las notificaciones push solventan este problema ya que funcionan en modo de publicador – subscriptor. El dispositivo se subscribe al servidor y espera que a [Seguir leyendo…]

Crear múltiples productFlavors con Android Studio y Gradle

Una de las nuevas funcionalidades clave de Android Studio es el nuevo sistema de compilación que incluye, conocido como Gradle. Si habéis migrado a Android Studio empezaréis a estar familiarizados con él, cada proyecto tiene su archivo build.gradle, así como cada módulo, y en ellos podemos especificar las dependencias que tendrá el proyecto a módulo, la api con la que vamos a compilar, etc. Hoy os voy a hablar de cómo generar distintos «flavors» o sabores usando un mismo proyecto, para que podáis compilar distintos apks desde el mismo proyecto. Para ello, tenemos que ir al archivo build.gradle de nuestro [Seguir leyendo…]

API de Google Maps para JavaScript: Poniendo los yipis sobre el mapa

Hoy vamos a hablar de la API para JavaScript de Google Maps que hemos utilizado recientemente en GPMESS para poder ver los yipis creados sobre un mapa en una página web. Esta API es muy sencilla de utilizar y nos permite dibujar diferentes puntos en el mapa. El primer paso es cargar la API para poder utilizarla, para ello necesitaremos una clave que deberemos obtener desde nuestra cuenta de desarrolladores. Una vez obtenida la clave debemos registrar la API en nuestro HTML: <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=<tu_clave_aquí>&sensor=false" ></script> A continuación ya podemos añadir el script que se encarga de cargar los datos [Seguir leyendo…]

Usando múltiples adapters en un ExpandableListView y ListView

Los ExpandableListView (y también los ListView) rellenan su conjunto de datos usando un adapter. El problema viene dado cuando es necesario utilizar distintos conjuntos de datos para un mismo ExpandableListView o ListView. En el artículo anterior os expliqué cómo solucionar este problema haciendo un pequeño «hack» para crear distintos ExpandableListView que se adaptasen al tamaño total de la lista y meterlos en un ScrollView. Como también os comenté, ésta no es la manera más correcta de solventar este caso, ya que puede provocar errores de dibujado entre otros, por tanto hoy vamos a ver una mejor solución a este problema: [Seguir leyendo…]

Multitarea en Windows Azure: Colas

La escalabilidad es un factor crítico para nosotros, ya que nuestra aplicación está orientada a ser utilizada por millones de usuarios al mismo tiempo, o al menos eso es lo que nos gustaría. Necesitamos ser capaces de dar el mismo servicio a 1.000 usuarios simultáneos que a 1.000.000, por lo que en nuestra labor como programadores de backend debemos tener siempre en cuenta el factor de la escalabilidad. Debemos además poder modificarla de una manera rápida para poder cubrir cualquier necesidad que tengamos. Con Windows Azure esto lo podemos conseguir replicando nuestro WebRol en varias máquinas virtuales, de manera que [Seguir leyendo…]

Paginación en Azure Table Storage

Cuando se trabaja con el Azure Table Storage es habitual querer obtener la información de forma paginada debido a la gran cantidad de datos con la que se suele trabajar. Sin embargo la paginación es ligeramente diferente a la utilizada habitualmente en C# que suele implementarse con los métodos Skip y Take: public IEnumerable<T> GetData(int pageNumber) { if (pageNumber < 0 || pageNumber > PagesCount) { return new T[] { }; } int offset = (pageNumber – 1) * PageSize; return this.collection.Skip(offset).Take(PageSize); } En cambio, en Azure Table Storage esta forma de paginación no es válida al no estar implementada [Seguir leyendo…]

El Storage de Windows Azure y las copias de seguridad

Una de las cosas más básicas que necesitamos cuando estamos desarrollando sobre una base de datos es la copia de seguridad de los mismos para poder reaccionar ante errores que produzcan pérdida de datos. En GPMESS trabajamos sobre Windows Azure, utilizando como base de datos el Storage. El Storage tiene varias ventajas frente a una base de datos SQL convencional, como su fácil escalabilidad o rapidez de acceso a los datos. Como todo sistema, también tiene sus desventajas, y la realización y mantenimiento de copias de seguridad es unas de ellas, ya que Microsoft no proporciona herramientas para poder realizar [Seguir leyendo…]