¿Qué es NoSQL?

Durante los últimos años las bases de datos relacionales han dado soporte a la gran mayoría de las aplicaciones. Con los años se han ido mejorando, normalizandolas en todo lo posible, escalandolas según crece la demanda y utilizando sistemas de persistencia. Pero últimamente, con la aparición de grandes aplicaciones online, como Facebook, Twitter o LinkedIn, se plantea problemas de escalabilidad y rendimientos de las bases de datos relacionales con miles de usuarios concurrentes y con millones de consultas diarias, entonces surge el termino NoSQL, pero ¿qué quiere decir?. Cuando hablamos de NoSQL no nos referimos únicamente a un tipo de…

Continuar

HTML5, primeros pasos – semántica

Comenzar un proyecto en HTML5 es muy sencillo, únicamente tenemos que añadir el siguiente doctype como primera línea de nuestro código. El doctype nos sirve para indicar el tipo de documento:

Aquí empezamos a ver una de las características principales de HTML5, la sencillez. En versiones anteriores de HTML se definían varios tipos de etiquetas doctype, ahora sólo existe una etiqueta y como podéis comprobar mucho más sencilla. Si lo que deseamos es actualizar nuestra página en HTML4 lo único que debemos realizar es el cambio del doctype y ya tendremos nuestra página en HTML5. En HMTL5 algunos elementos…

Continuar

Inyección de Dependencia para Tontos

La Dependencia de Inyección es un concepto muy sencillo: si tienes un objeto que interactua con otros objetos, la responsabilidad de encontrar una referencia a estos objetos en tiempo de ejecución se saca fuera del objeto en si mismo. ¿Qué significa para un objeto “interactuar” con otros objetos? Generalmente significa invocar métodos o leer atributos de estos objetos. Así si tenemos una clase A que invoca el método Calculate de la clase B, podemos decir que A interactua con B. En el siguiente ejemplo se muestra una clase A interactuando con una clase B. También podemos decir que A depende…

Continuar

Reflection API(II) – Utilizando los Constructores

Los constructores son utilizados en la creación de objetos, que son la instanciación de una clase. Por lo general llevan a cabo las operaciones necesarias para inicializar la clase antes de que se invocan los métodos o se acceda a los campos. La Reflexión nos permite conocer y recuperar los constructores de una clase y obtener información de su declaración, como los modificadores, los parámetros, las anotaciones, y excepciones que se producen. También tendremos la posibilidad de instanciar una clase mediante la utilización de estos constructores. El API de Reflexión nos proporciona la clase java.lang.reflect.Constructor para el manejo de los constructores.

Continuar

Modernizr, detectar compatibilidad HTML5

Actualmente no todas las funcionalidades de HTML5 son soportadas por todos los navegadores. Si tenemos alguna duda sobre si nuestro navegador es compatible con alguna de las funcionalidades de HTML5 podemos comprobarlo en las muchas páginas web que nos hacen un resumen de las compatibilidades. Por ejemplo, en findmybyip podemos encontrar una tabla con la compatibilidad para todos los navegadores o también podemos hacer un test a nuestro navegador para comprobar que funcionalidades soporta, la podemos hacer en html5test. Comenzar un proyecto en HTML5 puede llegar a ser un quebradero de cabeza sobre todo cuando necesitamos compatibilidad entre los distintos navegadores. Entonces nos puede surgir la preguntar ¿Cómo puedo comenzar…

Continuar

Reflection API(I) – Manejo de clases

Cuando se compila el código fuente de un programa se pierde la información de la estructura del programa pero se conserva ésta información en forma de metadatos. La reflexión es utilizada principalmente para acceder a esta información en tiempo de ejecución. Podemos acceder a clases, interfaces, métodos o atributos sin conocer su nombre o el tipo de un objeto. De esta manera podremos instanciar clases y llamar a los métodos en tiempo de ejecución. A pesar de todas estas ventajas la reflexión puede generar problemas de seguridad o rendimiento en nuestras aplicaciones. Al poder acceder a todos los atributos y…

Continuar

HTML5 y CSS3, el futuro de la web

¿Qué es HTML5? HTML5 es un conjunto de estándares para el diseño y desarrollo web, incluye desde la especificación del nuevo lenguaje HTML, pasando por el desarrollo de la nueva versión de CSS, hasta la creación de nuevos APIs para el desarrollo de nuevas funcionalidades. Comencemos con un poco de historia: En el año 1999 W3C publica la especificación de HTML 4.0.1. Entre el año 2000 y 2001 se publican las especificaciones de XHTML 1.0 y 1.1. Al año siguiente, 2002, se comienza el trabajo de desarrollo de XHTML 2.0 que pretendía dar un nuevo enfoque al desarrollo Web. Es un lenguaje basado completamente en XML. Pero este nuevo estándar no era…

Continuar

Razón para llamar a .isEmpty en Collections

Yo siempre he visto este código:

Ésto es lo primero que viene a la cabeza de muchos programadores cuando piensan en “no vacía”. Sin embargo, existe un método que es más apropiado en la mayoría de los casos: isEmpty().

Las principales razones, aparte del tamaño, son: Es más expresivo (el código es más fácil de leer y de mantener). Es más rápido, en algunos casos de varios ordenes de magnitud. Dos ejemplos en los que esto es muy visible son las clases ConcurrentLinkedQueue y NavigableMap / NavigableSet.Todas estas clases implementan el método “size” iterando a través de la colección y debido a esto, la llamada al…

Continuar

Manipulando Ficheros en Java 7 (II)

Crear un Fichero Crear un fichero es algo muy sencillo, lo único que tenemos que hacer es llamar al método create.

Borrar un Fichero o Directorio. Se pueden borrar ficheros, directorios o links. Con los links simbólicos, se borra el link y se mantiene el fichero linkado. Si lo que borramos es un directorio, éste debe estar vacío, sino se producirá un error. Tenemos dos métodos para borrar:

Continuar

Manipulando Ficheros en Java 7 (I)

Una de las mejoras que incluye la última versión de Java tiene que ver con el manejo de ficheros. Anteriormente se utilizaba la clase java.io.File para el manejo de archivos, la nueva versión de la JDK nos permite utilizar la clase java.nio.file.Path para manipular las rutas fichero en cualquier sistema de ficheros. Para poder utilizarla en varias implementaciones del sistema de ficheros, esta nueva API se basa en fábricas. De esta manera no nos tenemos que preocupar por la implementación real.En versiones inferiores a la JDK7 un fichero se podía crear así:

Continuar