Articulos

Patrones de diseño. Adapter Pattern

Introducción

El patrón Adapter (o adaptador), también conocido a veces como wrapper realiza la función, como su nombre indica de adaptar (o envolver) una determinada clase cambiando el interfaz de dicha clase y convirtiendolo en algo que se acerque más a nuestras necesidades.

En muchas ocasiones tenemos una clase que hace lo que necesitamos (o se aproxima mucho) y cumple todos los requisitos para que alguna otra clase la use pero, al no implementar un determinado interface o derivar de una determinada clase esto no es posible.

Problema

En un determinado punto del código se espera una instancia de un determinado interfaz o de una determinada clase. Deseamos utilizar una clase distinta que cumple todos los requisitos del interfaz o de la clase concreta que se espera en el código pero que, sin embargo, por las razones que sean no implementa dicho interfaz.

Introducción a .NET

Prólogo

Este artículo es tan solo una somera introducción a la tecnología .NET dando un repaso a sus principales características y explicando de forma breve el funcionamiento del CLR y de los assemblies de .NET de forma que, cuando trabajemos con referencias a ensamblados o bien usemos el System.Reflection tengamos una idea de que estamos haciendo. Buena parte de lo que yo se de este tema viene de dos libros que recomiendo a todo aquel que quiera tener una visión más detallada de .NET (ambos en inglés aunque no se si existen también en español)

  • Professional .NET Framework. Joe Duffy. Yo recomendaría este libro para [b]empezar a conocer los entresijos de .NET[/b], es decir, como funciona el CLR, que es el CIL, las librerías del framework... (aunque es muy recomendable por lo menos conocer c#, que es el lenguaje en el que están la mayoría de los ejemplos, y haber hecho algún programilla aunque sea pequeño)
  • Essential .NET, Volume 1. Don Box. Es un libro bastante exhaustivo que describe los fundamentos de .NET y del CLR con mucha eficacia aunque, como el mismo Don Box advierte en el prefacio, de forma bastante ardua, "poco para principiantes".

Multihilo. Espacios de memoria, código reentrante y código threadsafe.

Introducción

Este artículo sirve de introducción al concepto de espacio de memoria de un proceso para su aplicación al concepto de multihilo de forma que solo da una introducción a los distintos segmentos de memoria y a aspectos como la visibilidad para centrarse en el porque y el cuando de la sincronización en el acceso a datos.

En la mayoría de los sistemas operativos (y para lo que nos ocupa en Windows y en Linux) todo proceso tiene varios segmentos en memoria, en concreto son el segmento de código, el segmento de datos, el segmento de pila y el segmento de heap.

Reference couting (conteo referencial).

Introducción.

¿Qué es reference counting?

Reference counting es una técnica que se utiliza cuando necesitas mantener varias referencias a un mismo sitio, o más concretamente a un mismo objeto sin tener que tener varias copias de dicho objeto en memoria.

El problema derivado de hacer referencia a un objeto desde varios sitios consiste en la liberación del objeto, es decir, en el momento de liberar la memoria del objeto. Dicha liberación no constituye un problema en lenguajes con un buen recolector de basura (como C#) pero puede suponer una enorme fuente de memory leaks en otros proyectos. Por ejemplo, supongamos que tenemos algo como esto (el código es en c++ pero vale igual en delphi)