Featured Post

Introducción a TDD

Dentro del mundo de las metodologías ágiles tenemos varias especialidades. Una de ellas se denomina Extreme Programming, que engloba varias técnicas, siendo una de ellas Test Driven Development, TDD para los amigos. ¿En qué consiste TDD? Muy sencillo. Antes de programar una funcionalidad vamos a...

Read More

HTML5 – Etiqueta hgroup

Posted by Antonio Vidal | Posted in HTML5 | Posted on 27-02-2012

Etiquetas: , ,

1

La etiqueta <hgroup> es otra de las nuevas etiquetas semánticas introducidas en HTML5. La etiqueta <hgroup> es usada para agrupar un conjunto de elementos h1–h6, por ejemplo, cuando tenemos un titulo y a continuación una pequeña descripción o subtitulo. Pero, ¿cuándo debemos utilizar <hgroup>? y ¿cuándo debemos utilizar header?.

Cuando únicamente tenemos un titulo dentro de un articulo o sección no debemos utilizar ni header ni <hgroup>.

Primeros pasos con Android (II). Conceptos básicos.

Posted by kanibalcriticon | Posted in Android, Programación | Posted on 23-02-2012

Etiquetas: , , , , , ,

1

En la anterior entrada vimos como “adecentar” nuestro entorno para poder empezar a desarrollar aplicaciones Android.

En esta entrada vamos a ver los conceptos básicos que componen una aplicación de Android:

  • Activity:  Se podría decir que es lo que “vemos” en la pantalla, aunque esto realmente no es así, ya que las Activities realmente son las diferentes acciones que podemos realizar en nuestra aplicación, ya sea mostrar un dialogo, una pantalla, operaciones ocultas para el usuario,etc… Estas acciones se pueden comunicar con otras a fin de hacer determinadas tareas u obtener diferentes resultados. Una aplicación de Android es realmente un conjunto de pequeñas activity enlazadas.
  • Views:  Son las clases básicas del interfaz de usuario que controlan el layout de la pantalla y la funcionalidad otorgada al usuario, por ejemplo botones, cajas de texto, etc…
  • Services: Son componentes que nos dan la posibilidad de realizar acciones duraderas en un segundo plano y que no ofrecen en si mismas una interfaz de usuario. Estos services pueden ser de dos tipos:
    • Started:  Son iniciados por algún componente y su ejecución es independiente del componente que lo ha iniciado, pudiendo continuar su ejecución aunque el componente que lo ha iniciado ya no exista, por ejemplo una actualización de una aplicación.
    • Bound:  Son iniciados cuando algun componente se “ata” a este service,  y nos proporcionará una suerte de cliente-servidor que permite que los componentes se comuniquen con el service, etc…  Es posible “atar” varios componentes a un mismo service, pero estos services se destruirán cuando el componente al que estaba “atado” se destruya.

HTML5 – Etiqueta Header

Posted by Antonio Vidal | Posted in HTML5 | Posted on 20-02-2012

Etiquetas: , ,

1

Normalmente todas las páginas Web suelen tener una cabecera. Ésta suele encontrarse en la parte superior de la página, y en ella suele aparecer el logo o el título de la página y, a lo mejor, un subtitulo que describe el contenido de la página. En HTML4.01 para definir la cabecera se utilizaban divs y se le asignaba una clase llamada header o similar. De esta manera utilizábamos divs tanto para definir la cabecera como el contenido de la página como el pie de página.

En HTML5 se introduce la etiqueta header, la cual tiene únicamente un valor semántico. header se utiliza para especificar una introducción, o un grupo de elementos de navegación en el documento, normalmente mediante la inclusión de etiquetas de título (h1-h6 o el elemento hgroup). No obstante, también puede ser utilizada para delimitar la tabla de una sección de contenidos, un formulario de búsqueda o logos de cierta importancia, de manera que no sólo la utilizaremos en la cabecera de la página sino que deberá ser utilizada en todas las partes de la página en la que añadamos una cabecera.

Weak Reference o como ayudar al recolector de basura

Posted by kanibalcriticon | Posted in Java, Programación | Posted on 15-02-2012

Etiquetas: , ,

1

Una weak reference o referencia débil es como su propio nombre indica una referencia a un objeto que no impide que el recolector de basura la borre. Normalmente se utilizan referencias fuertes (Strong references) a la hora de definir objetos pero esto puede dar lugar en algunos casos a errores del tipo OutOfMemoryError, debido a que esos objetos no son liberados de memoria.

Para evitar esto se cuenta con estas weak reference que no hacen otra cosa que decirle al recolector de basura que cuando no estén usadas en ese momento, pase a borrarlas.

Primeros pasos con Android (I). Entorno de desarrollo.

Posted by kanibalcriticon | Posted in Android, Java, Programación | Posted on 12-02-2012

Etiquetas: , , ,

3

Vamos a ver que es Android y que debemos hacer para poder llegar a desarrollar una aplicación. Android es un sistema operativo basado en Linux y que cuenta con una interfaz de desarrollo Java. Android permite ejecutar procesos en segundo plano, soporta gráficos en 2D y 3D, ofrece una buena interfaz de usuario y nos proporciona una base de datos SQLite embedida.

Bien, para poder poner nuestro entorno de desarrollo a punto necesitaremos los siguientes componentes:

  • Un IDE de desarrollo, en mi caso Eclipse Indigo.
  • Eclipse Indigo Download

    Fig. 1 - Página descarga Eclipse Indigo

Cargar Scripts en HTML5

Posted by Antonio Vidal | Posted in HTML5 | Posted on 10-02-2012

Etiquetas: , , ,

1

Cuando desarrollamos una página web solemos introducir scripts (normalmente javascript) o librerías para darle ciertas funcionalidades y hacerla más dinámica. Ésto se puede conseguir incluyendo los scripts dentro de la página o importando ficheros externos. Cuando se añaden estos códigos se puede ralentizar la carga de la página o se pueden producir errores cuando se ejecuta el javascript, ésto es debido a la forma que tienen los navegadores de tratar la etiqueta script, y éste suele ser un problema importante en el desarrollo de una página web.

Pero, ¿cómo tratan los navegadores la etiqueta script? Los navegadores parsean el código html que tiene nuestra página y lo hacen de modo secuencial, es decir, van leyendo y tratando las etiquetas, desde la etiqueta <html> a </html>, según van apareciendo en el código. Cuando el navegador se encuentra una etiqueta <script> con el atributo src, el navegador carga el archivo y lo ejecuta. Ésto provoca que si el script es muy lento la página se cargara lentamente o si el script se encarga de modificar algún elemento de la página y el elemento no se ha cargado todavía, no se ejecutará correctamente el script. Este problema se solía solucionar en HTML4 poniendo nuestros scripts al final de la página.

Convertir Add-In de Office 2007 a Office 2010

Posted by kanibalcriticon | Posted in .NET | Posted on 06-02-2012

Etiquetas: ,

0

Si queremos desarrollar un add-in desde cero, sabiendo que va a ser utilizado tanto en Office 2007 como en Office 2010, lo recomendable es hacerlo en .NET 4, ya que simplemente cambiando los requisitos y dependencias podremos usarlo en ambos entornos sin tener que variar ni el código ni los componentes gráficos.

Pero lamentablemente, nos puede suceder que tengamos desarrollado un add-in para Office 2007 y una vez hecho, se quiera que también se pueda utilizar en Office 2010.

Para no tener que volver a hacer el desarrollo completo, que de hacerlo bien lo haríamos ya con .NET 4, tenemos una opción que hará que funcione en ambos entornos sin tener que hacer muchos cambios.

Lo primero será hacernos con un VisualStudio 2010, el cual permite poder alternar entre diferentes versiones del Framework para la compilación.

Reflection API (VII) – Enumerados

Posted by Antonio Vidal | Posted in Java | Posted on 01-02-2012

Etiquetas: , ,

1

Un enumerado es usado para definir tipos de datos que tienen cierto orden, pudiendo ser usados asignando un valor a cada uno de los elementos. Todos los enumerados extienden implícitamente de java.lang.Enum. Los enumerados contienen una o más constantes, que define una única instancia del tipo enumerado. Una definición de un enumerado es muy similar a una clase en el que puede tener campos, métodos y constructores (con algunas restricciones).

Puesto que los enumerados son clases, la reflexión no tiene necesidad de definir explícitamente una clase java.lang.reflect.Enum. En el Reflection API se definen los siguientes métodos para trabajar con tipos enumerados:

  • Class.isEnum(): indica si esta clase representa un tipo enumerado.
  • Class.getEnumConstants(): devuelve la lista de constantes definidas en el enumerado en orden en que fueron declaradas.
  • java.lang.reflect.Field.isEnumConstant(): indica si un atributo representa un elemento de tipo enumerado.