Mi nuevo blog

jueves, 29 de octubre de 2015


Este post es para informar que me he creado un blog nuevo, la url es www.xurxodev.com, como se puede apreciar en el nombre, es muy parecido a este blog. En mi nuevo blog no pretendo escribir sobre nada diferente de lo que vengo escribiendo aquí, la idea ha sido dar el salto de blogger a un blog con dominio y hosting propio.

Código legible

jueves, 8 de octubre de 2015


Según la Wikipedia la legibilidad del código es:
In computer programming, readability refers to the ease with which a human reader can comprehend the purpose, control flow, and operation of source code. It affects the aspects of quality above, including portability, usability and most importantly maintainability.

Explicado con mis palabras, un código legible es un código que puede ser leido fácilmente por una persona que no lo ha escrito, que pueda seguir el flujo aunque no comprenda todo lo que se hace en él.

Code Tip: Mi experiencia con la marca de orden de bytes (BOM)

jueves, 24 de septiembre de 2015


En este artículo no voy a contar nada muy puntero ni novedoso, además seguramente mucho de vosotros ya conocéis, pero yo no conocía hasta hace unos días. El objetivo es compartir mi experiencia con la marca de orden de bytes y poder ayudar a alguién que se encuentre en la misma situación que yo hace unos días.

Por unas cosas o por otras, pocas veces desde que llevo programando, y van ya 13 años, he tenido la necesidad de tener que enfrentarme a creación de ficheros manualmente utilizando c#. Esta semana ha tocado y me he encontrado con algo que desconocia hasta ahora, la marca de orden de bytes.

En este artículo voy a contar los problemas que me he encontrado y lo que he aprendido en el camino.

Code Tip: test parametrizados con xUnit

viernes, 18 de septiembre de 2015


Hay veces que cuando estamos haciedo test, nos encontramos duplicando test simplemente cambiando los valores a probar. Existe un concepto que se llama test parametrizados que ayuda a reducir el volumen de test a crear porque elimina la duplicación de test donde solo cambian los valores.

No todos los frameworks de test para .Net tienen esta carácteristica. Por ejemplo MSTest no lo tiene, se puede llegar a hacer algo parecido con un componente externo como un excel o algo así pero demasiado complejo para mi gusto. NUnit y xUnit si trae esta carácteristica, vamos a ver como se hace con xUnit.

Page Object Pattern en Android

jueves, 10 de septiembre de 2015



Parge Object Pattern es una patrón de diseño que se utiliza en los test automatizados end-to-end, surgió como un patrón para testear aplicaciones web, de ahí el nombre. Pero en realidad puede aplicar a cualquier tipo de interfaz de usuario como puede ser aplicaciones móviles nativas como Android. Cuando lo utilizo en Android o iOS me gusta llamarlo Screen Object Pattern porque me parece un nombre más apropiado, pero la esencia es la misma.

En este artículo vamos a ver como aplicar este patrón en una aplicación Android.

Code Tip: No devolver null

jueves, 3 de septiembre de 2015



Devolver null en una función es una mala práctica, vamos a ver en este artículo porque es una mala práctica y como podemos evitarlo.

Soporte para test unitarios con JUnit 4 en Android Studio

jueves, 13 de agosto de 2015



Desde la versión 1.1 de Android Studio existe, lo que han llamado desde google, soporte para test unitarios. Esto quiere decir que podemos ejecutar test unitarios sin necesidad de desplegar en un dispositivo o emulador, se van a ejecutar en la maquina virtual de java.

Estos test untarios se conocen también como test locales o test de jvm (java virtual machine).

Cuando creamos un proyecto mediante una de las plantillas de Android Studio, por defecto los test unitarios que vienen son de JUnit 3, vamos a ver que pasos debemos seguir para ejecutar test de JUnit 4.

Developer: El despertar de la fuerza

jueves, 25 de junio de 2015


A estas alturas todos conocemos la película de Star Wars y sabemos que existe el poder de la fuerza y el poder del lado oscuro, bueno pues yo creo que estos conceptos encajan muy bien en la profesión de developer, en este artículo voy a hacer unas reflexiones haciendo un símil con la película.

Code Tip: Extrae los bloques Try/Catch en su propia función

jueves, 18 de junio de 2015


Los bloques Try/Catch son utilizados en lenguajes como Java y C# para manejar excepciones, el problema que suelen tener es que ensucian el código no pudiendo ver claramente el código real del que controla la excepción, vamos a ver como podemos extraer la gestión de errorres en una función dejando el código mucho mas limpio y legible.

Lollipop new features: Floating Action Button

jueves, 4 de junio de 2015


Vamos a continuar con las nuevas características que aparecieron en Lollipop con la aparición de Matrial Design, ya van unos cuantos artículos. En este artículo vamos a ver el Float Action Button, al que llamaremos FAB a partir de ahora.

Lollipop new features: extrayendo colores de una imagen con Palette

jueves, 28 de mayo de 2015


En este artículo vamos a continuar con las novedades de Lollipop, seguimos ampliando la aplicación que empezamos en anteriores artículos. En este artículo vamos a ver como extraer los colores de una imagen utilizando la librería Palette y que uso podemos darle.

Lollipop new features: transiciones de elementos compartidos

jueves, 21 de mayo de 2015


En este artículo vamos a continuar con las novedades de Lollipop, seguimos ampliando la aplicación que empezamos en anteriores artículos. En este artículo vamos a ver transiciones de Lollipop y concretamente transiciones de elementos compartidos.

Lollipop new features: manejando el click en los elementos del RecyclerView

jueves, 14 de mayo de 2015


En este artículo vamos a continuar con las novedades de Lollipop, vamos a continuar con la aplicación que empezamos en el anterior artículo sobre RecyclerView. El control RecyclerView a diferencia de ListView no tiene un OnClickListener y vamos a tener que implementarlo nosotros.

Lollipop new features: RecyclerView

jueves, 7 de mayo de 2015


Con la llegada de Android 5 Lollipop llegaron una serie de novedades a la plataforma que voy a intentar repasar en este y próximos artículos. En vamos a empezar viendo el nuevo widget ReciclerView.

Droidcon Spain 2015 - Madrid

domingo, 26 de abril de 2015


Durante los dias 23, 24 y 25 de abril se ha celebrado el evento Droidcon Spain 2015 en la Universidad Autónoma de Madrid. He asistido por primera vez a este evento y en este artículo quiero compartir con vosotros mis impresiones.

WinRT Tip: Cómo crear imágenes circulares

jueves, 23 de abril de 2015


En el anterior artículo vimos cómo crear imagenes circulares en Android, que esta bastante de moda en el diseño de aplicaciones web y móbiles, ahora vamos a ver como podemos realizar lo mismo en WinRT, la solución que vamos a ver aplica tanto para aplicaciones Windows Phone 8.1 como a Windows 8.1 .

Android Tip: Cómo crear imágenes circulares

jueves, 16 de abril de 2015

Android logo

En el diseño de aplicaciones web y móbiles esta bastante del moda mostrar imágenes circulares, en Android antes era bastante tedioso poder realizar esta tarea, incluso éxisten librerías de terceros que básicamente suelen consistir en un control que hereda de ImageView, con un nombre tipo CircularImageView o RoundedImageView. Esto supone tener que arrastrar el control de una librería externa por todas los layouts que requieran una imagen circular y tener una dependencia tan fuerte de algo externo no es una de mis opciones favoritas.

En este artículo vamos a ver como podemos hacer esta tarea en Android ahora de una forma más sencilla y que viene soportado por el propio framework.

Enlaces interesantes sobre programación para iOS

jueves, 9 de abril de 2015


En este artículo quiero cerrar la serie de artículos que han acompañado mi iniciación en el mundo iOS con una serie de recursos como libros y artículos de otros blogs en los que me he apoyado desde que inicie una aplicación en mi empresa sobre esta plataforma.

Pruebas funcionales en iOS con Kif

jueves, 26 de marzo de 2015


Un tipo de test que podemos realizar a una aplicación iOS son pruebas de interfaz de usuario, al igual que en Android en iOS disponemos de librerías de terceros que nos ayudan en esta tarea. En este artículo vamos a ver cómo podemos realizar pruebas funcionales o de interfaz de usuario utilizando Kif.

Menú de navegación lateral en iOS utilizando SWRevealViewController

jueves, 19 de marzo de 2015


Una característica habitual en la aplicaciones móviles es tener un menú de navegación lateral. La aplicación de Facebook fue la primera que mostró este tipo de menú. Vamos a ver en este artículo un ejemplo de cómo crear un menú lateral utilizando la librería SWRevealViewController.

Errores y excepciones en iOS

jueves, 5 de marzo de 2015


Las excepciones es el método común en C# y Java para gestionar los errores, sin emargo en iOS existen además del concepto de excepción (NSException) el concepto de error (NSError) y cada uno tiene un proposito y una utilidad diferente. En este artículo vamos a ver cuando recomienda Apple utilizar cada tipo de error.

Pruebas unitarias en iOS con OCMock

jueves, 26 de febrero de 2015


Ya había escrito un artículo sobre pruebas unitarias con moq para .Net y pruebas unitarias con Mockito para Android, ahora vamos a ver como podemos hacer pruebas unitarias con mocks en iOS utilizando OCMock, que es una de las liberías que existen para iOS para crear mocks. Existen otras como la versión Mockito para iOS, pero OCMock lleva bastante más tiempo.

iOS para desarrolladores .NET: categorías y extensiones

jueves, 19 de febrero de 2015


Una vez que ya hemos visto como se definen las clases en Objetive-C en anteriores artículos, en este artículo vamos a ver de que forma podemos añadir o extender clases existentes y vamos a compararlo con C# donde también se pueden extender clases.

iOS para desarrolladores .NET: herencia y protocolos

jueves, 12 de febrero de 2015


Una vez que ya hemos visto como se definen las clases en Objetive-C en anteriores artículos, en este artículo vamos a ver de que forma podemos realizar herencia y abstraer clases mediante protocolos, que es un concepto similar a interfaces en C#.

iOS para desarrolladores .NET: Clases en Objetive-C parte 3

jueves, 5 de febrero de 2015


En el anterior artículo vimos como se definen los inicilizadores en una clase y los tipo de inicilizadores que existen.

En este artículo vamos a ver los métodos, como se definen y que tipo de métodos tenemos.

iOS para desarrolladores .NET: Clases en Objetive-C parte 2

jueves, 29 de enero de 2015


En el anterior artículo vimos como se deninen las clases y propiedades comparado con C#.

En este artículos vamos a ver de que forma definimos en una clase como se pueden construir las instancias de objeto.

iOS para desarrolladores .NET: Clases en Objetive-C parte 1

jueves, 22 de enero de 2015


En el anterior artículo empezó esta serie sobre iOS para desarrolladores .NET, donde veíamos una introducción a la historia y las herramientas o lenguaje que vamos a utilizar en la serie.

En esta primera parte sobre clases vamos ver como se definen las clases Objetive-C en comparación a C# y las propiedades dentro de la misma.

En la serie voy a ir comparando Objetive-C y C# pero muchas de las comparaciones se podrán aplicar también a Java porque se parece bastante a C#.

iOS para desarrolladores .NET: Introducción a la serie

jueves, 15 de enero de 2015


Cómo ya comente en la introducción en la anterior serie de artículos sobre programación en Android, en mi empresa me habían puesto en un proyecto de desarrollo de una app Android y fui compartiendo con vosotros los conocimientos que iba adquiriendo y que iba poniendo en práctica en el proyecto. Una vez terminada la aplicación y subida a Google play, me han notificado que el siguiente proyecto donde iba a participar era una aplicación mobile pero esta vez IOS, así que me toca de nuevo volver a reciclarme. No he abierto un Mac en mi vida, imaginaros la idea que tengo yo de programación con Objetive-C.

Así que ahora lo que viene es una serie de artículos de programación para IOS mediante Objetive-C para desarrolladores .Net. Ya que soy un desarrollador .Net el punto de vista y comparaciones apoyandome en C# serán constantes para ayudar a una mejor compresión del lenguaje Objetive-C. En esta ocasión los artículos empezarán desde un nivel más bajo que la serie de Android porque lo que necesito aprender es desde 0.