lunes, 5 de noviembre de 2012

The Information: A History, A Theory, A Flood

Del bisonte a la realidad virtual

En la creación de imágenes el ser humano a buscado cada vez estar más cerca de la realidad llegando a engañar y hacer que confundamos la imagen con la realidad sobre todo en la cultura occidental. Platón considera como un engaño a la pintura, posteriormente Lessing diría que es un engaño que agrada. Los seres humanos buscamos una lógica a todo lo que vemos tratando de encontrar patrones que se ven influidos por nuestra sociedad, emociones, conocimientos y cultura. El ser humano tiene la necesidad de dotar de orden al desorden aunque este orden implique un desorden en sí mismo, el auto lo llama pulsión icónica. Algunos test psicológicos se basan en este principio y permiten conocer atreves de como se percibe lo que hay dentro de quien percibe. La percepción es una fenómeno cognitivo y emocional. En cada época las normas que imperan han homogeneizado las representaciones icónicas y los autores han buscado un equilibrio entre la norma y la originalidad. El color también es de gran importancia en la imagen ya que contiene mucha información sobre la imagen que estamos viendo. La imagen escena: Lo que vemos es lo que busca ser no hay significados ocultos, la imagen escena habla el mismo lenguaje de los sueños, de allí su potencial para el engaño y la confusión La imagen laberinto: Es cuando la imagen representa más de lo que es, tiene algo más que un significado directo y obvio.

domingo, 4 de noviembre de 2012

Ley Sarbanes - Oxley

La ley Sarbanes - Oxley nace en estados unidos a raíz de los escándalos ocurridos en 2001 por empresas como Enron, Tyco International, WorldCom y otras. Estos escándalos pusieron en duda la contabilidad y la información que reportaba muchas empresas lo cual causo un gran temor e incertidumbre. Esta ley creo nuevas normas que tiene que cumplir las compañías que participan en la bolsa de valores, el principal fin es proteger al inversionista de fraudes que podrían destruir lo que con años han logrado. Además el fin de esta ley es proporcionar certidumbre en los mercados financieros. La Ley Sarbanes - Oxley creó procedimientos de reportes financieros para compañías y auditores, además a los principales ejecutivos y auditores se les asignaron responsabilidades específicas, con lo cual se busca una mayor responsabilidad ya que su nombre va de por medio. Por ejemplo los reportes financieros se deben elaborar bajo ciertos procedimientos e intervalos de tiempo, los cargos por no cumplir son tanto civiles como penales lo que genera temor y por ende compromiso. Es triste que solo mucha gente sea responsable y honrada cuando hay alguna pena o sanción y no por compromiso, valores y ética.
Con la ley SOX se creó el Consejo de Vigilancia de Contabilidad de las Compañías Públicas. Las firmas contables que no están registradas no pueden auditar a las compañías públicas en EUA Se ha argumentado sobre lo costoso que ha sido la implementación de esta ley y el desempeño que ha tenido, muchos de sus críticos más fervientes comentan que esta ley ahogo a muchos potenciales negocios que se pudieron haber desarrollado. No obstante muchos otros comentan que ha sido benéfica siempre y cuando no haya excepciones y la ley se aplique de forma rigurosa para obtener su máximo beneficio.
A mí parecer esta ley es adecuada siempre y cuando se aplique con integridad. Si bien es cierto que a río revuelto ganancia de pescadores, seguramente muchos hicieron su gran negocio con la llegada de esta ley y lo siguen haciendo.

martes, 20 de septiembre de 2011

Mandar XML a un Procedimiento almacenado y usarlo como tabla

DECLARE @XML XML
SET @XML = CAST(
'

Fernando
Correa


Juan
Camanei


' AS XML)


SELECT
CAST(Filter.Field.query('Campo1/text()') AS VARCHAR(50)) AS Campo1 ,
CAST(Filter.Field.query('Campo2/text()') AS VARCHAR(50)) AS Campo2
FROM
@xml.nodes('/Tabla/Renglon') Filter (Field)
WHERE
Filter.Field.exist('Campo1') = 1

jueves, 25 de septiembre de 2008

Convertir Listas genericas a DataTables y viceversa

Actualmente tengo un servicio de WCF que por definición del arquitecto realiza una consulta a base de datos y devuelve una lista de un tipo (List) , pero yo lo que en realidad necesito para trabajar es un DataTable. Me puse a investigar un poco sobre como podria hacer esto de la manera mas floja y me tope con el blog de TeraBIThia, alli hay un articulo sobre ello.



Para realizarlo se hace uso de tipos genéricos, se creo una clase generica a la cual se le pasa el tipo de objeto que contiene la lista, en dicha clase estableceremos operaciones genericas que aplican a cualquier tipo que le asignemos a la clase.



Aqui tenemos el código






/// <summary>
/// Clase genérica para convertir una Lista Genérica de elementos en
/// un objeto DataTable
/// </summary>
/// <typeparam name="T">Tipo de datos de los elementos de la Lista.
/// Debe ser una clase con un constructor sin parámetros. ver referencia de clases genericas</typeparam>

public static class Convertidor<T> where T : new()

{

/// <summary>
///
/// </summary>
/// <param name="items"></param>
/// <returns></returns>

public static DataTable ListaToDatatable(List<T> items)

{

// Instancia del objeto a devolver

DataTable dataTable = new DataTable();

// Información del tipo de datos de los elementos del List

Type itemsType = typeof(T);

// Recorremos las propiedades para crear las columnas del datatable

foreach (PropertyInfo prop in itemsType.GetProperties())

{

// Crearmos y agregamos una columna por cada propiedad de la entidad

DataColumn column = new DataColumn(prop.Name);

column.DataType = prop.PropertyType;

dataTable.Columns.Add(column);

}



int j;

// ahora recorremos la colección para guardar los datos
// en el DataTable

foreach (T item in items)

{

j = 0;

object[] newRow = new object[dataTable.Columns.Count];

// Volvemos a recorrer las propiedades de cada item para
// obtener su valor guardarlo en la fila de la tabla

foreach (PropertyInfo prop in itemsType.GetProperties())

{

newRow[j] = prop.GetValue(item, null);

j++;

}

dataTable.Rows.Add(newRow);

}

// Devolver el objeto creado
return dataTable;

}



/// <summary>
/// Métod encargado de recorrer el DataTable y asignar propiedades al objeto
/// </summary>
/// <returns>Una lista de objetos T</returns>

public static List<T> DataTableToLista(DataTable tabla)

{

List<T> lista = new List<T>();

T elemento;

for (int i = 0; i < tabla.Rows.Count; i++)

{

// Información del tipo de datos de los elementos del List

Type itemsType = typeof(T);

elemento = new T();



foreach (PropertyInfo prop in itemsType.GetProperties())

{

//Establecemos cada una de las propiedades

prop.SetValue(elemento,ValorDefault(tabla.Rows[i][prop.Name]), null);

}

lista.Add(elemento);



}

return lista;

}



//Esta parte hay que buscar hacerla de una mejor modo
/// <summary>
/// Método que se encarga de validar los DBNull y convertirlos en una cadena vacia
/// </summary>
/// <returns>El mismo objeto de entrada validado</returns>

private static object ValorDefault(object objeto)

{

if (objeto == System.DBNull.Value)

return "";

else

return objeto;

}

}



p>


Como utilizarla:



MiTipo objParte;

List<MiTipo> listaParte = new List<MiTipo>();




DataTable dataTable = Convertidor<MiTipo>.ListaToDatatable(listaParte);

List<MiTipo> lista = Convertidor<MiTipo>.DataTableToLista(dataTable);





Saludos a todos espero les sirva

miércoles, 24 de septiembre de 2008

Primer entrada

Esta es la primer entrada de mi blog, la idea de este blog es publicar los tropezones o éxitos que ocurren a lo largo de mis proyectos, con ello ayudar a alguien que ande más perdido que yo, y tambien que alguien que ande por allí con mas experiencia que yo se tome la molestia de comentar sobre lo que hago.


A estas alturas acabo de terminar la carrera de ingeniería en computación en la UNAM (aún no me titulo, escribire una gran entrada cuando lo haya hecho) y me encuentro en un proyecto muy interesante utilizando WCF, SOA, framework 3.5 de .net, Genéricos Intercambiables (Luego explicare esto), windows office tools, y una pizca de talento.