Hominis tota vita nihil aliud quam ad mortem iter est.
[Toda la vida de los hombres no es más que un camino hacia la muerte]
Séneca

Archivos en la categoría Metodología

Patrones de Diseño - Singleton

El Patrón de Diseño Singleton (en español, Instancia Única) se utiliza para garantizar que una clase sólo tenga una única instancia y para facilitar un punto de acceso global a la misma.

Se utiliza cuando se necesita :

  • que sea un único objeto el que coordine acciones a lo largo de todo el sistema
  • que el objeto posea estado
  • variables globales en el sistema (es más limpio y eficiente utilizar Singleton)

La propia clase es única responsable de crear la única instancia (ocultando al constructor) y de facilitar el acceso global a la instancia. Un ejemplo de implementación en Java :

public class Singleton {

      //Instancia como variable estática

    private static Singleton instanciaUnica;

    //Constructor privado : no se puede acceder desde fuera

    private Singleton() {}

    //Método para obetener una instancia

    public static Singleton getInstancia() {

      synchronized(Singleton.class) {

              if (instanciaUnica == null) {

                  instanciaUnica = new Singleton();

              }

      }

      return instanciaUnica;

    }

}

Es delicado en sistemas multihilo, ya que si dos hilos de ejecución intentarán crear una instancia al mismo tiempo y ésta no existiese todavía, sólo uno de los dos debería de lograrlo. La solución clásica para este problema es utilizar exclusión mutua en el método de creación de la clase que implementa el patrón.

En algunas ocasiones se aplica este patrón de una forma menos restrictiva, permitiendo que exista un número máximo de instancias en lugar de una única.

Cómo hacerse rico

El azar o el destino me han llevado al blog de Mark Cuban, propietario de los Dallas Mavericks (una franquicia de la NBA). Y releyendo sus entradas encontré ésta entrada en la que explica cómo hacerse rico.

Yo no aspiro a ser rico sino a ser feliz (curiosamente cuando he sido más feliz ha sido cuando no tenía dinero), y esta no es la temática de esta bitácora, pero en estos tiempos de crisis deberíamos de recordar cuatro cosillas :

No hay atajos

Si alguien es tan listo y tiene una fórmula mágica (una inversión garantizada de alta rentabilidad sin ningún riesgo) nadie la va a compartir contigo, la utilizará él mismo.

Ahorra dinero

Ahorra cada céntimo que puedas, aplicándote disciplina para comprar lo que necesites de una forma inteligente y no utilizar tarjeta de crédito. Todo lo que ahorres lo puedes poner a depósitos de 6 meses.

If you use a credit card, you dont want to be rich

Esto te permitirá disponer de efectivo disponible para cuando lo necesites.

Aprende

Invertir tiempo en tí es la mejor inversión, aprendiendo un negocio que realmente te guste consiguiendo un trabajo en él (desde un curso o máster pagas por aprender; trabajando te pagan por aprender), no importa en que escalón : como dependiente, comercial … Aprende todo lo que puedas del negocio, leyendo, asistiendo a actos, hablando con la gente…

Espera tu oportunidad

La oportunidad llegará, tardará años, o décadas, todos los negocios son cíclicos con sus tiempos de expansión y contracción.

Estarás listo entonces ?

Patrones de Diseño - Façade

El Patrón de Diseño Façade (o Facade, o en español Fachada) es en mi opinión uno de los más básicos y simples, que todos hemos implementado alguna vez aún sin conocerlo.

Una fachada no se trata más que de un objeto que ofrezca una sencilla interfaz que ocultará uno o varios sistemas más complejos y sus interacciones.

Con este patrón ofrecemos un acceso sencillo y desacoplamos al máximo nuestro sistema cliente (el que accede a la fachada) de los sistemas ocultos.

Típicamente se utiliza en librerías o en sistemas diseñados en capas. Desde luego si estás construyendo un sistema que van a utilizar otros 20 sistemas de tu empresa, implementa una fachada.

Algunas ventajas que disfrutaremos en el propio desarrollo son :

  • Facilitamos la utilización y comprensión (acompañando la interfaz con una documentación mínima) de los sistemas ocultados
  • Los clientes se olvidan de toda la complejidad del negocio, sólo les importa los resultados obtenidos.

Y a la larga, el mantenimiento será más fácil

  • En los clientes reducimos las dependencias del código externo.
  • Aislamos a los clientes de cambios sustanciales en los sistemas ocultos, ya sea un cambio de requisitos, de diseño de base de datos, de tecnología utilizada…
  • Hace el código cliente más legible

Este patrón de diseño se puede implementar como una interfaz o como una clase abstracta, sin detallar los detalles de implementación (es justo lo que queremos ocultar).

Es habitual que se implemente la fachada utilizando también el patrón Singleton (sólo se necesita una fachada).

Como vemos es un patrón de diseño muy simple e intuitivo, que nace del sentido común y experiencia. Los beneficios que nos ofrece son enormes en comparación con su coste de implementación.

Pero ojo, su no utilización nos provocará enormes problemas tanto a la hora de desarrollar como sobre todo en el mantenimiento. Podemos ver algo parecido a lo que te sucederá si no lo utilizas en la viñeta siguiente… Así que no te dejes de utilizarlo !

Software - Numeración en el Control de versiones

numbers.jpgSe llama control de versiones a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo.

Se aplica en informática sobre el código fuente y documentos.

La numeración de las versiones se realiza con tres números, por ejemplo 1.2.3, aplicando la siguiente métodología:

  • El tercer dígito, 3 en el ejemplo, representa correcciones de bugs encontrados.
  • El segundo dígito, 2 en el ejemplo, representa modificaciones funcionales : se han añadido, eliminado o modificado funcionalidades al código.
  • El primer dígito, 1 en el ejemplo, representa cambios en el código que impliquen que el código que utiliza nuestro código debe adaptarse : cambios en los módulos o en las versiones de nuestras librerías pilares (como pasar de Struts 1.3.8 a Struts 2.0)

Normalmente se utiliza 0.x.y para indicar que la versión se considera aún una beta. El paso a 1.0.0 indica el arraque en producción.

[Lyckapedia] - SOA

Ya está disponible en la Lyckapedia una entrada sobre la Arquitectura Orientada a Objetos, SOA. Esta entrada se completa con

  • Servicios Web, que son el elemento principal dentro de esta Arquitectura.
  • SOAP, el principal protocolo de intercambio de datos entre servicios web.
  • WSDL, el lenguaje utilizado en los documentos descriptores de los servicios web.
  • UDDI, utilizado para la catalogación de los servicios web ofrecios.

Estos artículos deben ser mejorados y completados.

Se agradecerán comentarios, sugerencias, aportaciones… 

Technorati Tags: , , , ,