Entradas

Mostrando entradas de febrero, 2012

Array de Bytes desde URL

En ocasiones necesitamos la información que nos devuelve una URL (ya sea porque esta es una imagen y deseamos guardar el archivo, o por el motivo que sea).  Se puede transformar la información contenida por la URL en un array de bytes y estos guardarlos en un archivo en nuestra máquina. Las funciones para esta transformación serían las siguientes: //obtiene un array de byte de una url/fichero en este caso public byte[] GetBytesFromUrl(string url) { byte[] b; HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url); WebResponse myResp = myReq.GetResponse(); Stream stream = myResp.GetResponseStream(); using (BinaryReader br = new BinaryReader(stream)) { b = br.ReadBytes(500000); br.Close(); } myResp.Close(); return b; } //Funcion para guardar un array de bytes en un fichero public void

Singleton - Java

A veces por motivos de eficiencia necesitamos instanciar un solo objeto de una clase. Esto puede ser posible por ejemplo si necesitamos tener el estado del objeto coordinado. Debido a esta necesidad surge un diseño de clase llamado Singleton . Mediante este diseño conseguiremos que solo exista una instancia de nuestra clase. He visto varios ejemplos diferentes de implementación de Singleton. El mejor ejemplo que he visto, desde mi punto de vista, es el que muestro aquí. Este fue el que me recomendaron en una empresa. Existen otras implementaciones más sencillas de entender, sin embargo está evita problemas en ejecución concurrente. Veamos por fin este diseño, en esta entrada he decidido cambiar y usar Java como lenguaje: public class Singleton { // El constructor debe ser Protected para evitar su acceso desde fuera. protected Singleton() {} // Clase estatica oculta. Tan solo se instanciara el singleton una vez private static class SingletonHolder { // El construc

XNA - Introducción

Imagen
Me gustaría comenzar una serie de entradas acerca de XNA. Microsoft XNA son un conjunto de herramientas que nos ayudan al desarrollo de juegos. Los juegos que podemos desarrollar son: Windows Game,  XBOX y Windows Phone. Las entradas dedicadas a XNA serán un pequeño tutorial para iniciarnos con XNA. La versión que emplearé en estos tutotiales es XNA 4.0. Para emplear esta versión es necesario tener Visual Studio 2010. En caso de ser estudiantes podemos conseguir la versión de Visual Studio 2010 Proffesional y XNA 4.0 podemos descargarlo de https://www.dreamspark.com/ . En caso de no ser estudiante o que nuestro centro no tenga licencias podemos descargar gratuitamente: Visual C# Express y XNA 4.0 . Más información aparte de la que podemos encontrar desde la página de Microsoft. En esta primera entrada veremos como crear el proyecto y sus diferentes partes. Una vez que tenemos todo instalado comenzaremos a crear un proyecto. Para esto ' Archivo>Nuevo>Proyecto '.

Concurrencia - Variables Condicionales

Esta entrada es una continuación de la entrada de mutex y de la entrada acerca de la creación de hilos . En esta entrada hablaré acerca de las variables condicionales. Estas deben usarse conjuntamente a los mutex. Pronto veremos de qué forma nos pueden ser útiles las variables condicionales. Para comenzar con ellas veremos qué es una variable condicional: “Son variables de sincronización asociadas a un mutex” .   Estas variables nos ayudaran a sincronizar nuestros bloqueos entre hilos. Por ejemplo realizamos un bloqueo pero tenemos que esperar a que otro recurso realice una acción, con estas variables podemos esperar esta acción. Estas variables pueden realizar principalmente dos acciones: wait y signal . Las operaciones conviene realizarlas entre lock y unlock de un mutex. Los métodos que podemos usar con estas variables son:   int pthread_cond_init(pthread_cond_t*cond, pthread_condattr_t*attr); o    Inicializa la variable condicional.   int pthread cond destroy(pthrea