Archive for the ‘Microsoft’ Category

Código fuente del CodeCamp 2010

Sunday, September 5th, 2010

Me olvidé de pasar el código fuente de los ejemplos usados en el CodeCamp 2010 en relación a mi charla sobre Pixel Shader y Silverlight, así que acá les dejo el link para descargalos.

Slides de CodeCamp

Sunday, September 5th, 2010

A continuación les dejo los slides de mi presentación en el CodeCamp 2010.

CodeCamp 2010 Buenos Aires

Tuesday, August 31st, 2010

Este fin de semana estaré dando una charla en el CodeCamp 2010, en Buenos Aires.

Para este caso, estaré hablando de PixelShaders y Silverlight.

Les dejo un video introductorio rápido sobre lo que se verá en el evento.

Mapeo de entidades por decoración

Sunday, June 20th, 2010

Si bien hace mucho que no dedico tiempo a publicar código, más que nada debido a mis estudios en Psicología, y por otra, tratando de criticar un poco el mundo del desarrollo de software por medio de dibujos, hace unos días algunos alumnos me pidieron plantear una forma en la cual se pudiera cargar datos desde una base de datos de una forma simple. Esto es, sin tener la necesidad de crear grandes mapeos o cantidad innumerable de objetos que hicieran una copia uno a uno de los datos recogidos desde un DataReader hacia las propiedades de una entidad.

Aquí les dejo algo del código que podría serles útil en su próxima implementación.

Primero, la clase que nos servirá para decorar las entidades:

[AttributeUsage(AttributeTargets.Property, AllowMultiple= false)]
public class EntityDecorations
: Attribute
{
public EntityDecorations(string mapName, Type convertType)
{
MapName = mapName;
ConvertType = convertType;
}

public string MapName { get; set; }

public Type ConvertType { get; set; }
}

Luego, una entidad para almacenar nuestros datos:

public class UserEntity
{
[EntityDecorations(”Id_User”, typeof(int))]
public int UserId { get; set; }

[EntityDecorations(”Username”, typeof(string))]
public string UserName { get; set; }

[EntityDecorations(”UserPassword”, typeof(string))]
public string Password { get; set; }

[EntityDecorations(”Name”, typeof(string))]
public string Name { get; set; }

[EntityDecorations(”LastName”, typeof(string))]
public string LastName { get; set; }
}

Ahora, una clase para leer los datos desde la base de datos y llenar nuestras entidades:

public class DataBaseProccesor
{
public Collection<T> ExecuteQuery<T>(string query, List<SqlParameter> parameters)
{
Collection<T> returnList = new Collection<T>();

SqlConnection conn = new SqlConnection();
SqlCommand comm = new SqlCommand();

conn.ConnectionString = ConfigurationManager.ConnectionStrings[”DB”].ToString();
comm.Connection = conn;
comm.CommandText = query;

if (parameters != null)
comm.Parameters.AddRange(parameters.ToArray<SqlParameter>());

conn.Open();

SqlDataReader dr = comm.ExecuteReader();

while (dr.Read())
{
T returnObject = Activator.CreateInstance<T>();

foreach (PropertyInfo prop in returnObject.GetType().GetProperties())
{
if (prop.GetCustomAttributes(typeof(EntityDecorations), false).Length != 0)
{
string mapName =
(prop.GetCustomAttributes(typeof(EntityDecorations), true)[0] as EntityDecorations).MapName;
Type castType =
(prop.GetCustomAttributes(typeof(EntityDecorations), true)[0] as EntityDecorations).ConvertType;

prop.SetValue(returnObject,
Convert.ChangeType(dr[mapName],
castType), null);
}
}

returnList.Add(returnObject);
}

dr.Close();
conn.Close();
dr.Dispose();
conn.Dispose();
comm.Dispose();

return returnList;
}
}

Y por último, una llamada para retornar información:

return new DataAccess.DataBaseProccesor().ExecuteQuery<UserEntity>(”select * from UserTable”, null);

Espero les sea de utilidad. Por supuesto, como todo código, siempre puede mejorarse.

Presentaciones varias

Tuesday, February 2nd, 2010

A continuación dejo los slides de presentaciones dadas durante el año 2009. Estas presentaciones pueden verse online.

Silverlight 3

Viviendo Scrum

Juegos y Educación (Jornadas de Civilización Digital)

Juegos y Educación (Jornadas de Civilización Digital)